Yolo v3 学习笔记摘录

作为一名移动端开发人员,我觉得现在是入门深度学习的最佳时机,毕竟tensorflow也发展好几年了,Facebook也推出了pytorch,github上已经有很多开源的各种神经网络的源码,可以比较轻易的实现一些震撼自己的效果。之前在某公司的计算机视觉部工作,受到深度学习工程师的耳濡目染,离职后,自己才真正去尝试数据采集、标注、训练、移植Android端等步骤,算是草草入门了。

下面分享几段学习笔记。

YOLO是一个用于物体检测的深度神经网络,同类型的还有R-CNN系列的如Faster R-CNN、Mask R-CNN。跟R-CNN不一样的地方是,YOLO采用one stage的网络结构,而后者使用two stage,所以yolo的检出速度会相对快一些,但在精准度方面会低一些。

目前yolo有三个版本,v1, v2, v3。v3是18年发布的,跟v2相比,提高了精度,降低了检出速度。github上已经有不少用tensorflow和pytorch实现的yolo v3版本,也有不少能在android上运行的开源项目。

端对端模型

以前的深度学习,需要手动提取特征,用特征去做识别,但特征不好提取,提取优劣直接影响识别准确率。而现在端对端的模型,不需要开发者考虑特征提取,仅需知道输入数据,和获取预测结果,中间过程的提取特征完全由神经网络自己学习。所以端对端模型简化了训练网络模型的方法,把深度学习的学习门槛大大降低了。

yolo预测前,需要对图片进行预处理

首先把输入的图片的宽高resize成inputsize,一般为正方形,如果图片比例不是正方形比例,会resize成小图内置在inputsize的方形框中,空白补上灰色,最后还需要对图片做归一化处理。

非极大值抑制(NMS)

yolo预测的结果会有多个框有重叠部分,需要执行非极大值抑制,目的是去除重复的框。非极大值抑制步骤,从最高分的框开始,遍历其他框,去掉重叠部分大的框,判断阈值为IOU的大小。然后继续迭代得分第二高的框,如此迭代下去。

在这里插入图片描述

实时查看训练信息

这个跟yolo没关,这是tensorflow的功能,可以实时查看训练时loss的变化
tensorboard.exe --logdir=C:/Projects/AI/tensorflow-yolov3-master/data/log

我用i7 CPU训练十个小时,loss下降到2~3,已经可以检出物体了。此后持续几个小时,loss很难再下降。

Add a Comment

电子邮件地址不会被公开。 必填项已用*标注