深度学习图像目标检测:读懂目前工业界最青睐的YOLO V3

You Only Look Once,YOLO.

深度学习图像目标检测:读懂目前工业界最青睐的YOLO V3

YOLO 的核心思想:利用整张图作为网络的输入,直接在输出层回归 bounding box(边界框) 的位置及其所属的类别。

yolo虽然有三个版本,由于yolo v3在性能和准确性基本上秒杀前两个版本,甚至官网都没有给出下载老版本的链接。因此,我们仅需读懂yolo v3模型结构即可。

细节:

  • 卷积的本质是提取图片的特征,分类是其他层做的事情。
  • 通过划分单元格做检测。
  • 多尺度训练。
  • 端到端训练,只使用一个loss funtion。即只关注输入和输出
  • 使用激活函数:“leaky ReLU”。
  • 使用batch normalization作为正则化、加速收敛和避免过拟合的方法。后文简写为BN。
  • 新的基本单元DarknetConv2D_BN_Leaky,即卷积+BN+leaky ReLU(激活函数)。
  • 残差单元resblock=DarknetConv2D_BN_Leaky+...+DarknetConv2D_BN_Leaky +add
  • 残差单元体resblock_body。zeropadding+DarknetConv2D_BN_Leaky+resblock。
  • anchors的9个参数是用聚类方式获得,格式为w_1,h_1,w_2,h_2,...w_9,h_9。
  • 结构中没有池化和全连接层,使用步长为2的卷积达到图片缩小的目的。
  • 输入图片尺寸固定416*416。
  • 主干网络是darknet-53,共252层。

结构:

  1. 如下图所示,输入416*416图片。经过尺寸为3*3的32个卷积DarknetConv2D_BN_Leaky层。
  2. 依次经过重复单元依次为1、2、8、8、4的5个残差体(resblock_body)。
  3. 残差体中DarknetConv2D_BN_Leaky单元的步长为2。
  4. 经过残差体的2次步长为2的卷积,图片尺寸缩小为以前的1/32。
  5. 生成y1、y2、y3三个结果。
  6. 输出尺寸分别为13*13*255、26*26*255、52*52*255。
  7. 输出深度为255=3*(5+80),每个单元3个box,box有(x, y, w, h, confidence)五个基本参数,coco数据集的种类是80.
  8. 中间层和后面的某一层的上采样进行拼接。拼接的操作和残差层add的操作是不一样的,拼接会扩充张量的维度,而add只是直接相加不会导致张量维度的改变。
深度学习图像目标检测:读懂目前工业界最青睐的YOLO V3

yolo v3 基本结构

实现:

darknet官网

pjreddie.com/darknet/

keras实现yolo3

github.com/qqwweee/keras-yolo3

tensorflow实现yolo3

github.com/wizyoung/YOLOv3_TensorFlow

You Only Live Once.


分享到:


相關文章: