深度学习

YOLOv1 随笔

2020-10-17  本文已影响0人  zidea

YOLO 系列

<img src="./image/../images/ironman_evolution.jpg">

YOLOv1

<img src="images/yolov1_cover.jpeg">

计算机视觉

随着深度学习中卷积神经网络的发展,掀起了一次目标检测的浪潮,逐渐趋近于成熟

目标检测

<img src="images/object_detector_01.jpeg">

单目标

我们要做目标检测,先看一下计算机视觉可以做那些图像那些识别问题。目标检测从 2012 年目标检测人提升了一倍,图像目标是什么,还需要对其进行定位,单目标任务,同时输出 1000

可以选择一个,然后分出两个 head 分别做分类任务和回归任务,可以定位
<img src="images/object_detector_02.png">

多目标(区域)

adaboost 就足够快可以通过滑动窗口来做人脸检测

目标检测任务
目标检测思路
滑动窗口(slide window)

这种方式进行目标检测的缺点很明显,运算量大,所以耗时在当前算力下无法投入到生产,对于每张图片都等同生成一个小型的数据集.

<img src="images/yolov2_001.jpeg">

目标检测中的问题和难点

我们如何将这生成局部区域图像和对区域图像进行分类两个任务结合在一起,如何更精准地生成区域图像。其实图像检测一路走来大家对生成区域图像花费很多心思。
<img src="./images/yolov1_cover_02.jpeg">

YOLOv1

如何准备数据集

网络结构

训练

训练网络,多组输出与位置强相关, 按空间位置来映射 N = W^{\prime} \times H^{\prime}

用每一个对应框进行预测,只需要

loss_total = 0
for img in images:
    for i in range(0,7):
        for j in range(0,7):
            loss_ij = (c_hat - c_true)**2 + 
            c_true (x_hat - x_true)**2 +  
            c_true (y_hat - y_true)**2 +  
            c_true (w_hat - w_true)**2 +  c_true(h_hat - h_true)**2
            loss_total + loss_ij

<img src="images/yolov1_007.png"/>
<img src="images/yolov1_008.png"/>
<img src="images/yolov1_009.png"/>
<img src="images/yolov1_011.png"/>

loss = (\hat{c} - c^{*})^2 + c^{*}(\hat{x} - x^{*}) + c^{*}(\hat{y} - y^{*}) + c^{*}(\hat{w} - w^{*}) + c^{*}(\hat{h} - h^{*})

loss = \lambda(\hat{c} - c^{*})^2 + c^{*}(\hat{x} - x^{*}) + c^{*}(\hat{y} - y^{*}) + c^{*}(\hat{w} - w^{*}) + c^{*}(\hat{h} - h^{*})
而且这里 w 和 h 与 x 和 y 也表示不同属性还需要进一步进行处理

loss = \lambda(\hat{c} - c^{*})^2 + c^{*}(\hat{x} - x^{*}) + c^{*}(\hat{y} - y^{*}) + c^{*}( \sqrt{\hat{w}} - \sqrt{w^{*}} ) + c^{*}( \sqrt{\hat{h}} - \sqrt{h^{*}})

因为只需要计算有物体的放框

IOU和NMS

<img src="images/iou_001.jpg">
可能输出预测框数量要大于实际目标数量,可以通过 IOU 可以去掉一些冗余的候选框,通过将两个重合度比较高的候选框计算为一个候选框。我们实际上可以用 IOU 来判断两个框。

找到置信度最高框,然后利用 IOU 去掉与置信度最高框(抑制掉),还剩下没有被抑制掉,然后在没有被抑制掉的框找到置信度最高的框,然后计算 IOU 来去掉和这个框,NMS(非极大值抑制)

多分类

loss = \lambda(\hat{c} - c^{*})^2 + c^{*}(\hat{x} - x^{*}) + c^{*}(\hat{y} - y^{*}) + c^{*}( \sqrt{\hat{w}} - \sqrt{w^{*}} ) + c^{*}( \sqrt{\hat{h}} - \sqrt{h^{*}}) + c^{*}\sum_i^cls (\hat{y_i} - y_i^{*})^2

<img src="images/yolov1_003.jpeg"/>

<img src="images/yolov1_002.jpeg"/>

损失函数

<img src="images/yolov1_006.png">

YOLOv1 中的问题

上一篇 下一篇

猜你喜欢

热点阅读