比较流行的算法可以分为两类
CNN算法采用滑动窗口方式进行目标检测,需要选择合适嘚比例和步长会产生很多的子区域,并且都要经过分类器去做预测这需要很大的计算量,所以你的分类器不能太复杂因为要保证速喥。
另一类是YoloSSD这类one-stage算法,其仅仅使用一个CNN网络直接预测不同目标的类别与位置第一类方法是准确度高一些,但是速度慢但是第二类算法是速度快,但是准确性要低一些
YOLO算法是将原始图片分割成互不重合的小方块,然后通过卷积最后生产特定大小的特征图特征图的烸个元素也是对应原始图片的一个小方块,然后用每个元素来可以预测那些中心点在该小方格内的目标速度更快。
Yolo的CNN网络将输入的图片汾割成S×S网格然后每个单元格负责去检测那些中心点落在该格子内的目标,如图所示可以看到狗这个目标的中心落在左下角一个单元格内,那么该单元格负责预测这个狗每个单元格会预测BB个边界框(bounding box)以及边界框的置信度(confidence score)。所谓置信度其实包含两个方面一是这個边界框含有目标的可能性大小,二是这个边界框的准确度前者记为Pr(object),当该边界框是背景时(即不包含目标)此时Pr(object)=0。而当该边界框包含目标时Pr(object)=1。边界框的准确度可以用预测框与实际框(ground truth)的IOU(intersection over union交并比)来表征,记为IOUtruthpred因此置z信度可以定义为Pr(object)?IOUtruthpred。很多人可能将Yolo的置信喥看成边界框是否含有目标的概率但是其实它是两个因子的乘积,预测框的准确度也反映在里面
边界框的大小与位置可以用4个值来表征:(x,y,w,h),其中(x,y)是边界框的中心坐标而w和hh是边界框的宽与高。还有一点要注意中心坐标的预测值(x,y)是相对于每个单元格左上角坐标点的偏移徝,并且单位是相对于单元格大小的单元格的坐标定义如图6所示。而边界框的w和h预测值是相对于整个图片的宽与高的比例这样理论上4個元素的大小应该在[0,1]范围。这样每个边界框的预测值实际上包含5个元素:(x,y,w,h,c),其中前4个表征边界框的大小与位置而最后一个值是置信度。