多任务学习
什么时候多任务学习有意义:
能从共享低级特征中获益;每个任务拥有的数据相当相似;训练一个足够大的神经网络用于所有任务。
目标定位:
分类定位(单个对象)与检测不同(多个对象)
识别物体,并画出框,需要更多输出,如图四个标签,是个变量
地标检测:
标签需要再不同的照片中保持一致性
目标检测:用卷积神经网络和滑动窗口检测的算法进行
利用有标签的数据训练神经网络后,遍历所有红色窗口的图像,每次滑动都需要输入神经网络运行,之后取一个稍微大一点的区域的框,根据网络要求调整区域大小。
缺点:计算成本很大,因为剪出了很多不同的正方形图像。
利用卷积神经网络实现滑动窗口(滑动窗口的卷积方式实现)
将神经网络的全连接层转化为卷积层
其中:FC第一层,用400个5X5X16个滤波器。
对滑动窗口的卷积方式实现,是让卷积神经网络向前运算共享计算过程,运行卷积神经网络,用同样的参数,和滤波器
精确的预测边界框:
并交化:评价目标检测算法
非极大值抑制:输出有最大可能性的分类判断,抑制那些非最大可能性的临近的方框。
目前所学到的算法可能会对同一目标有多次检测,非极大值抑制确保算法只对每个对象得到一个检测的方法。
锚框
目前对象检测的问题,每个单元网格只能检测一个对象,一个单元网格需要检测多个对象怎么办。
首先定义两个不同形状的锚框,接着要能将两个预测跟两个锚框关联起来,需要定于交叉标签
使用锚框之前,需要将训练集的每一个对象及训练集图像都做一遍,将训练图像上的对象指定给对应的目标中心点的网格单元。
使用锚框时,每个对象都被指定给之前一样的网络单元,被指定含有对象中心点的网络单元,但现在被指定给一个lou值最高,具有对象形状的锚框,对象不仅分给格子,还分给与对象边界框lou值最高的锚框,将对象转换为目标标签(输出的标签随着对象种类增多维数增加)。
YOLO
如何构架训练集,假设要训练一个算法检测三个目标,行人,汽车,摩托车,不需要为背景分配第四个标签,假设有两个锚框,需要遍历九个网络构造适合的目标向量y
区域推荐网络:
候选区域
利用卷积代替滑动窗口的缺陷是,在没有目标的区域内进行了多次卷积计算,因此提出了伴随区域的卷积网络R-CNN。他尝试抓取少数有意义的区域,运行整块区域的运算,候选区域,通过分割算法实现,但是此算法的运行速度很慢。算法对每一个区域输出一个标签,同输出一个边界框,如果区域内真有目标,可以得到一个准确的边界框
有很多改进工作加速算法
语义分割
课程学习了目标识别,目标检测,进一步需要进行语义分割,判断检测到的对象周围的仔细轮廓。确切知道那个像素属于对象,哪个不属于。将目标识别网络更改为转置卷积入下所示:
转置卷积
转置卷积是单元架构的关键部分,将小的输入变成大的输出
单元架构的结构灵感(U-Net)
跳跃连接使得这一层具有低分辨率但高层次、空间的上下文信息,同时具有低层次但详尽的纹理信息,以便决定每一个像素是否为猫的一部分。
U-Net工作原理