IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> 学习实践案例:YOLOv3实现目标检测 -> 正文阅读

[人工智能]学习实践案例:YOLOv3实现目标检测

YOLO网络介绍

????????YOLO是单阶段方法的开山之作。它将检测任务表述成一个统一的、端到端的回归问题,并且以只处理一次图片同时得到位置和分类而得名。

  • YOLOV1是典型的目标检测one stage方法,用回归的方法去做目标检测,执行速度快,达到非常高效的检测。YOLOV1的基本思想是把一副图片,首先reshape448×448大小(由于网络中使用了全连接层,所以图片的尺寸需固定大小输入到CNN中),然后将划分成SxS个单元格(原文中S=7),如果目标中心点在某个单元格内,该单元格就负责预测该目标。输出层的大小为7x7,通道数为307x7可以看作将原图分为7x7的网格,而每个格子中有30个数。这三十个数分别对应了两组(意味着每个网格尝试着预测两个边界框)的位置信息+置信度以及20个类别(VOC数据集中有20个类别)。
  • YOLOV2,选择5个锚作为召回率和模型复杂度之间的良好折衷。其关键特点:
  • 1Batch Normalization: YOLOv1没有使用BN层,而YOLOv2在每一层卷积层后都使用了BN层,BN层通过训练数据学习每一层每个神经元的缩放比例,进行标准化。BN层可以帮助网络进行训练,卷积层后加了BN层时,卷积层可以不使用偏置值。
  • 2High Resolution Classifier: YOLOV2,预训练之后,在ImageNet数据集上,用448*448大小的图片对分类网络进行微调,大约10epoches,其目的是让网络先学习一下高分辨率的图片,之后再应用到检测网络中,mAP提升大概4%
  • 3Convolutional With Anchor Boxes: YOLOv1并没有使用锚点,而是直接预测x,y,w,h,而YOLOv2引用了Faster RCNNSSD模型中的锚点,预测的位置是相对预置的锚点的。通过使用锚点,mAP下降了0.3%mAP,但是召回率增加了7%,虽然mAP下降了,但是更高的召回率意味着模型的上限更高。
  • 4Dimension Cluster: 对网络来说,如果能够选择合适的anchor尺寸,网络更加容易学习并且预测出更好的结果,使用k-means算法在训练集上的边界框中自动选择合适的box dimensions
  • 5Direct location prediction: x,y,w,h进行归一化(在输出层代表位置信息的部分使用sigmoid激活函数)。置信度也需要进行归一化(输出层代码置信度的位置加sigmoid激活函数)。这样可以是的网络在训练过程中更加稳定。通过Dimension ClustersDirect location prediction可以使模型提高5%mAP
  • 6Fine-Grained Features:13*13特征图上进行目标检测,对于一些大的目标是足够的,但是对于小物体的检测还需要细粒度的特征,为此YOLOV2添加一个passthrough layer,将浅层的特征和深层的特征,两个不同尺寸的特征按通道维度拼接起来。代码实现中,PassThrough层的输入为26x26x64,输出为13x13x256。而YOLOv2的最终网络结构如图所示。
  • 7 Multi-Scale training:从上面的结构图可以看到,YOLOv2相比YOLOv1,去掉了全连接层,所有带参数的网络层均为卷积层和BN。卷积层和BN层都不会受到输入图像大小的影响(如果网络有全连接层,输入图像的大小必须是一致的)。因此,在训练模型时可以使用不同尺度的图像进行训练来保证模型对大目标和小目标都能达到不错的效果。由于网络的输入图像的大小为输出大小的32倍,输入图像的大小为{320352...608},每十个batch换一组尺寸。
  • YOLOv3相比YOLOv2最大的改进点在于借鉴了SSD的多尺度判别,即在不同大小的特征图上进行预测。对于网络前几层的大尺寸特征图,可以有效地检测出小目标,对于网络最后的小尺寸特征图可以有效地检测出大目标。此外,YOLOv3backbone选择了DarkNet53网络,网络结构更深,特征提取能力更强了。
  • YOLOv3网络结构需注意:

? 1.??? 由于网络较深,使用了残差结构。

? 2.??? DarkNet53网络用步长为2的卷积代替了池化层。

? 3.??? 所有的网络层不包含全连接层,因此,输入图像的大小也是可以调整的,而输入图像的大小同样是最小的输出特征图的32倍。

? 4. ???YOLOv3分别在三个尺寸的特征图进行了预测,每个尺寸的特征图使用了3个锚点。因此,输出层的维度计算方法为:(4+1+80)x3=255,因此,最后一层1x1的卷积层的数量为255

??5.??? 13 x 13的特征图会通过上采样层和之前的26 x 26的特征图在通道维度拼接在一起,26 x 26的特征图再经过上采样和52 x 52的特征图拼接。

在进行实践案例的代码运行时,不知因何种原因一直出现kernel terminating问题,导致代码从第一部便无法运行,身为小白的我也未找到问题出在哪里。

运行代码定义数据处理相关函数--定义网络--定义评价指标--定义相关超参数--定义训练网络的函数--开始训练--测试网络模型。

代码对于小白的我难以理解,几乎所有的东西都需要查询,这也给了我学习的方向。加油。。

?

?

?

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2022-09-04 01:12:01  更:2022-09-04 01:14:40 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/28 20:02:13-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计