yolo算法_基于YOLO算法的装维质检目标检测(三)

接上期的《基于YOLO算法的装维质检目标检测(二)》

这一期主要为大家讲解YOLO算法的的流程和实际建模过程

0b3ae3e60b3cc6f0b4c35da047ab70f5.png

【YOLO 算法】

YOLO introduction

YOLO

是RBG继RCNN,fast-RCNN,faster-RCNN以后,又一力作。针对目标检测中,无法实现实时性检测的问题,独辟蹊径,开创了目标检测的新思路,直接将目标检测转化到回归上,直接用一张图片得到bounding box和所属类别。在针对质检选择One-stage中的算法考虑到速度以及YOLO算法的快速发展,目前以及发展到YOLOv3版本,识别Object已超过9000种,准确性也有了很大提升。图1展示经典目标检测在准确性和速度上的表现

efc271d189e804479f5790e6f15c67b2.png

设计理念

YOLO算法采用一个单独的CNN模型实现段对端的目标检测。就是从利用整张图像作为网络的输入,直接在输出层回归boundingbox的位置和bounding box所属的类别,把ObjectDetection的问题直接转化为一个回归问题

算法特点

①速度快,能够达到实时的要求。在Titan X的GPU上能够达到45帧每秒

②使用全图作为Context信息,背景错误(把背景错认为物体)比较少

③泛化能力强

算法流程

YOLO直接从一张图像中提取特征,来预测每个bounding box,最小化和fccad2a01ee4a3c1a2f0b71c2ddf9d47.png的误差。由于YOLO是一个端对端的训练,并且没有中间的d034d1793d1660af16c7ac2ec4d963c5.png生成,所以在速度上有了很大的提升。大致流程为:

①YOLO的CNN网络将输入的图片分割得到S*S网格(cell)。某个物体落入S*S中某个网格中,该网格就负责预测这个物体,并且每个网络只预测一种Object

②每个单元格会预测B个边界框15f361575fc5375d491431afdf56704b.png,每个15f361575fc5375d491431afdf56704b.png除了要回归自身的位置以外,还要预测边界框的置信度c7738967393c06eda15a4d622de87843.png。所谓置信度其实包含两个方面,一是这个边界框含有目标的可能性大小,记为:74131a70ee8121c93821bf6aaf2692ec.png;当该边界框是背景时(即不包含目标),此时e10f9e46ccf955c4ed47eacd6cffd21a.png。而当该边界框包含目标时0d384348d0b38db2939758698a94437a.png。二是这个边界框的准确度,边界框的准确度可以用预测框与实际框fccad2a01ee4a3c1a2f0b71c2ddf9d47.png03b36868be204441cce5fce2868cfd67.png交并比)来表征,记为acccfc9858e2e0c5c8d34bb5044ef998.png,因此置信度可以定义为:74131a70ee8121c93821bf6aaf2692ec.png*acccfc9858e2e0c5c8d34bb5044ef998.png。边界框的大小和位置是通过4个值来表征:8bab3cc4b0d47123b6306ec0d8c440a1.png,其中e70baeb13e9d57c3a58f9e1a517a3c86.png是边界框的中心位置,是相对于每个单元格左上角坐标点的偏移值,并且单位是相对于单元格大小的。和是边界框的宽和高,边界框的和预测值是相对于整个图片的宽和高的比例

③每个网格还要预测C个ced58e752fdd63ce95077bd49f8e7e00.png(条件类别概率):,记为C类。则S*S个网格中,每个网格要预测B个15f361575fc5375d491431afdf56704b.png,还要预测C个类别,输出就是S*S(5*B+C)

④测试时,对于每个网格预测的class信息和15f361575fc5375d491431afdf56704b.png预测的confidence信息得到每个15f361575fc5375d491431afdf56704b.png74298c3e10e6f46e749ecaacda8e58cd.png以后,设置阈值,过滤掉得分低的boxes,对保留的boxes进行非最大抑制(NMS)处理,就得到最终的检测:

a686e887ffc513475ec0155b365ef1f3.png

检测结果

网络结构

YOLO 网络架构通过该修改GoogleNet,网络总共24层,前22层卷积层,用来提取特征,最后2层全连接层用来预测概率和坐标。网络的结构如下图所示:

a2431c5c64f84c327177941309c6ab64.png

网络结构图

网络输出7*7*30的三维特征。

结果测试

YOLO算法网络最终不仅要预测类别,还要预测坐标。YOLO全部使用了均值和误差作为loss函数,由三部分组成:坐标误差、IOU误差和分类误差

d1f03a98c399a9d91f5a3b9c8f05076d.png

在坐标预测中,使用平方损失函数的话,大的boxes比小的boxes权重要大,为了消除这个缺陷,对高度和宽度进行求根。损失函数:

31c304705d308cfe6a0edfe04c4f5dcc.png

上公式中e098c467db51d9b04661252d72e3351e.png代表有物体出现在7c91cc2e555852e06c3421f7ebd5468f.png中;fb155dd59fe441364224bd3387b98a4e.png代表7c91cc2e555852e06c3421f7ebd5468f.png中的第j个15f361575fc5375d491431afdf56704b.png预测是否合理。上述的d5ec050ed0d61effbb11c95c97aebecb.png如果物体在cell中,只会惩罚错误的分类。如果预测的合理,对坐标的差异对进行惩罚。最小化上述d5ec050ed0d61effbb11c95c97aebecb.png,就可以得到最优的预测结果

建模过程分析

Modeling process analysis

输入

读取图片

图像预处理

适配算法的代码

训练样本集

(1) 原图(4908张)

(2) xml文档,是对原图通过标注工具(ImageLabel)生成的xml文档

(3) txt文档,对xml文档进行解析,生成存放类别及对应边框信息txt文档,以及存放每张图像具体地址的txt文档。见下图展示:

4d204022008f4587caecef6bb1232c08.png

参数设置:

Batch=256; Subdivisions=64; learning_rate=0.001; max_batches=20000

测试:dc64ce5735db5faba9319ddceaa92bbd.png

#结果生成txt文档,包括类别、置信度等。

END

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值