机器智能-高频问题:目标检测经典算法(YOLO算法)
2、YOLO算法:
a、核心思想:
输入:利用整张图作为网络的输入
输出:直接在输出层回归bounding box的位置和bounding box所属的类别
b、不用单独提取候选区域,速度快
c、bounding box:包括四个坐标(x,y,w,h),人为设置的真实框,类似于数据标签。
d、真实框:人工标注的包含有对象的bounding box
e、锚框(anchor):人为构造出来的假想框。其长宽是认为设置的,用于解决对象的多尺度问题,类似于机器学习里面的样本。以某个中心点(神经网络随机得到)为中心,以人工设置的长宽(可多个)所描绘的框。
f、用锚框去匹配bounding box,将学习问题转换为求两个框之间的差值(δx,δy之类的)
g、锚框是设置的初始参数(包括锚框的大小,长宽比,数量),然后通过训练,对这个参数进行优化(中心点的距离和宽和高的差别)。先生成很多个框,最开始先选一个最优的,然后再学习去调整这个框
h、训练过程:
①、网络化的图片
②、生成锚框:在每个网格的中心点以一定的长宽生成多个锚框
③、候选区域生成:对于每个真实框,找到重叠度(IoU)最大的锚框作为正样本,随机挑选低重叠的锚框作为负样本;
④、模型训练:模型训练:通过模型参数的更新学习使得候选区域和真实框位置(类似于给图片的标签)尽可能重叠,类别尽可能一致。
重叠度:
i、步骤:
j、候选区域生成:找出真实框中心点所在的小方块区域,从这个区域的3个锚框中挑出跟他最匹配的锚框。
k、候选区域包含的参数:
①、objectness: 是否包含对象,+1表示包含对象;
②、class:对象的类别;
③、location:位置坐标(x,y,w,h)。
l、模型训练:正负候选区域传递给深度学习网络进行参数学习。
正:最接近真实框的锚框
负:随机得到的锚框
目标:
1:正候选区域输出的objectness输出为1;
2:正候选区域的class输出正确;
3:正候选区域的位置进行微调与真实区域尽可能重合。
m、位置微调:
令Cx,Cy表示候选区域的左上角x,y坐标,Pw,Ph表示候选区域的宽和高,模型训练通过对上述参数进行微调使得候选区域与真实区域尽可能重叠。
中心点的微调不大,而长宽的变化是比较大的。
n、损失函数:
Output:S x S x (5*B+C)的一个tensor
B:(x, y, w, h, confidence)
C:Pi© of Category
误差 = 定位误差 + 包含目标的框置信度误差 + 不包含目标的框置信度误差 + 分类误差