本笔记为自用,倘若没有相关的学习基础,也确实无法看懂文章写的是什么。
近来有点越学越回去的感觉。竟然突然在想,为什么深度学习模型可以对图像进行分类或者语义分割。
可怕的是,当时想到这里,一下子愣住了:是啊,模型是怎么做到的呐?
好在想了一下,又想起来了。好记性不如烂笔头,还是把自己的想法记录下来,希望下次自己再想不起来的时候,能想到自己做了笔记,并且通过看笔记解决问题。
深度学习使用的数据,以MNIST手写字体识别数据和Kaggle平台猫狗识别数据为例——数据可以分成两个:
图像
标签
这里举例的数据使用的标签转换成了One-Hot形式,倘若是语义分割使用图像作为label,也可以按照这个思路来理解
手写字体识别的标签是0-9共10个数字
猫狗识别的标签是dog和cat,在模型中可以以0和1来替代字符串dog和cat
当然最后应当都需要使用One-Hot编码格式
之所以使用One-Hot编码格式,因为深度学习任务中,特征不是连续的值(如dog和cat之类的),将这些数据用数字来表示,执行的效率会高很多
独热编码One-Hot参考下面的网址进行学习,在此不做赘述
机器学习之独热编码(One-Hot)详解(代码解释)
那么,深度学习的模型是如何通过对图像和label的学习,来做到:给定一张模型没有见过的图像,较准确的识别的呐?
以上面图像(猫狗识别为例)的网络模型为例。
图中显示了四个层。从左往右依次可以视作为:输入层——中间隐藏层1——中建隐藏层2——判断层
中间隐藏层可以是全连接,也可是是卷积层。这些并没有什么大碍。在这里理解为是具有学习能力的神经即可。
图像和label一定要一一对应,这些都是可以通过数据处理来做到的。
比如MNIST数据集,可以直接使用深度学习模型框架里现成的数据。
如果是猫狗数据集,我们都知道,存储狗的图像的文件夹的名字就是dog,存储猫的图像的文件夹的名字是cat。不会再有其他额外的文件夹了。那么我们就可以,利用文件夹的名字,与文件的地址相对应(好像记得可以这么做,忘得有点多。),以此来给图片打标签。
我们通过Tensorflow的数据通道,将图像输入到模型中。它的判断流程应当是这样的:
综上,就是我对深度学习的模型可以分类/分割图像的看法。不知道下一次再忘记的时候来回顾的话,还能不能看得懂……