week 2020.12.21-2020.12.31

  1. V1,CVPR2016:https://arxiv.org/abs/1506.02640

  2. V2,CVPR2017:https://arxiv.org/abs/1612.08242

  3. V3:https://arxiv.org/abs/1804.02767

  4. V4:https://arxiv.org/abs/2004.10934

 1、yolov1

主要特点是:
  • 速度快,能够达到实时的要求。在 Titan X 的 GPU 上 能够达到 45 帧每秒。
  • 使用全图作为 Context 信息,背景错误(把背景错认为物体)比较少。
  • 泛化能力强。
核心思想:
  • YOLO的核心思想就是利用整张图作为网络的输入,直接在输出层回归bounding box的位置和bounding box所属的类别。

  • faster RCNN中也直接用整张图作为输入,但是faster-RCNN整体还是采用了RCNN那种 proposal+classifier的思想,只不过是将提取proposal的步骤放在CNN中实现了。

实现方法:

将一幅图像分成SxS个网格(grid cell),如果某个object的中心 落在这个网格中,则这个网格就负责预测这个object。 

整体来看,Yolo算法采用一个单独的CNN模型实现end-to-end的目标检测,整个系统如图5所示:首先将输入图片resize到448x448,然后送入CNN网络,最后处理网络预测结果得到检测的目标。相比R-CNN算法,其是一个统一的框架,其速度更快,而且Yolo的训练过程也是end-to-end的。

网络设计

Yolo采用卷积网络来提取特征,然后使用全连接层来得到预测值。网络结构参考GooLeNet模型,包含24个卷积层和2个全连接层。对于卷积层,主要使用1x1卷积来做channle reduction,然后紧跟3x3卷积。对于卷积层和全连接层,采用Leaky ReLU激活函数: [公式] 。但是最后一层却采用线性激活函数。

都是搬运的笔记,重点做的记录,更多内容:https://zhuanlan.zhihu.com/p/32525231

在实现上,GitHub上已经有很多代码,我主要实现了yolov3与yolov5,分别在给定的任务数据集上,我觉得难点主要在数据集处理上做的工作。我们的数据集主要是图片跟labelimage标注好的label文件。

在yolov3上参考了:https://blog.csdn.net/sinat_27634939/article/details/89884011,yolov3官方代码为:https://github.com/ultralytics/yolov3,这里构建数据集用的是voc格式的,格式区别参考:( YOLO,VOC数据集标注格式解析_xiaobumi123的博客-CSDN博客

结构为:

 MakeText代码为:(主要构建ImageSets内的路径文件)

View Code

构造lables的代码为:

View Code

具体链接:https://blog.csdn.net/sinat_27634939/article/details/89884011

按照这种方法来运行的时候有错误,错误在:

data_dict = yaml.load(f, Loader=yaml.FullLoader)
提示data_dict 是一个str,我强制将data_dict改成一个字典可以运行:

 数据集在yolov5上进行调试,这里需要将数据集转换成yolo格式的:主要参考的(https://blog.csdn.net/laovife/article/details/106802725)

进行数据转换参考的:( 将XML数据集转换为YOLOv3格式数据集_sxfd91307的博客-CSDN博客

用的模型是官网的demo: https://github.com/ultralytics/yolov5

大概展示一下yolov5的效果:

train:

 test:

 

 

 左边是标签,右边是训练出来的。

参数展示:

 

 

 

 由于是笔记本跑的,训练图片为500张,测试图片为65张,训练epochs为10,batch-size为2,训练数据增多,epochs增大效果会更好

原文地址:https://www.cnblogs.com/cn-gzb/p/14190124.html