文章目录[隐藏]
目标检测是计算机视觉中比较简单的任务,用来在一张图篇中找到某些特定的物体,目标检测不仅要求我们识别这些物体的种类,同时要求我们标出这些物体的位置。其中类别是离散数据,位置是连续数据。
目标检测是基于监督学习的,每张图片的监督信息是它所包含的N个物体,每个物体的信息有五个,分别是物体的中心位置(x,y)和它的高(h)和宽(w),最后是它的类别。
算法原理介绍
YOLO的全称是you only look once,指只需要浏览一次就可以识别出图中的物体的类别和位置。因为只需要看一次,YOLO被称为Region-free方法,相比于Region-based方法,YOLO不需要提前找到可能存在目标的Region。也就是说,一个典型的Region-base方法的流程是这样的:先通过计算机图形学(或者深度学习)的方法,对图片进行分析,找出若干个可能存在物体的区域,将这些区域裁剪下来,放入一个图片分类器中,由分类器分类。
因为YOLO这样的Region-free方法只需要一次扫描,也被称为单阶段(1-stage)模型。Region-based方法方法也被称为两阶段(2-stage)方法。
-
以下是YOLO算法遵循的确切维度和步骤:
- 准备对应的图像(608,608,3);
- 将图像传递给卷积神经网络(CNN),该网络返回(19,19,5,85)维输出;
- 输出的最后两个维度被展平以获得(19,19,425)的输出量:
- 19×19网格的每个单元返回425个数字;
- 425=5 * 85,其中5是每个网格的Anchor Boxes数量;
- 85= 5+80,其中5表示(pc、bx、by、bh、bw),80是检测的类别数;
- 最后,使用IoU和非极大值抑制去除重叠框。
CornerNet是Princeton University的Hei Law的作品。(2018.8)
CornerNet认为Two-stage目标检测最明显的缺点是在Region Proposal阶段需要提取anchor boxes。这样做导致两个问题:
- 提取的anchor boxes数量较多,比如DSSD使用40k,RetinaNet使用100k,anchor boxes众多造成正负样本不均衡。
- Anchor boxes需要调整很多超参数,比如anchor boxes数量、尺寸、比率,影响模型的训练和推断速率。
上图是CenterNet的网络结构图。
正如之前提到的,框对于物体来说不是一个最好的表示。同理,Corner也不是什么特别好的表示:绝大多数情况下,Corner同样是远离物体的。也正是由于Corner和物体的关联度不大,CornerNet才发明了corner pooling操作,用以提取Corner。
但是即使这样,由于没有anchor的限制,使得任意两个角点都可以组成一个目标框,这就对判断两个角点是否属于同一物体的算法要求很高,一但准确度差一点,就会产生很多错误目标框。
有鉴于此,CenterNet除了Corner之外,还添加了Center的预测分支,也就是上图中的center pooling+center heatmap。这主要基于以下假设:如果目标框是准确的,那么在其中心区域能够检测到目标中心点的概率就会很高,反之亦然。因此,首先利用左上和右下两个角点生成初始目标框,对每个预测框定义一个中心区域,然后判断每个目标框的中心区域是否含有中心点,若有则保留该目标框,若无则删除该目标框。
为了和CornerNet做比较,CenterNet同样使用了Hourglass Network作为骨干网络。并针对中心点和角点的提取,提出了Center pooling和Cascade corner pooling操作。这里不再赘述。
版权声明:本文为CSDN博主「Vine955」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_40389065/article/details/122288383
暂无评论