YoloV5的原理与实现-开源TensorFlow版

在这里插入图片描述

  • YOLO总体特点:

相比先提出候选框再做检测的two-stage方法,yolo是一种one-stage的检测方法,所以具有速度优势。

将物体检测转化为回归问题,输出每个网格对应的归一化 xywh+置信度+类别onehot

feature map,每个网格的feature map对应输出的回归 y

损失函数:分类损失+有目标损失+无目标损失+矩形框损失

  • YOLOV1:

对PASCAL VOC数据划分7*7网格,每个网格预测两个框xywh,但只能预测一个class

最小物体检测效果欠佳

  • YOLOV2:

FCN全卷积层,无dropout,采用BN

anchor机制以解决每个网格只能预测一个class的缺点,k-means聚类得到anchors size

分类误差,softmax->logistic

  • YOLOV3:

Darknet-53 网络

多尺度检测,8倍下采样的feature map适合检测小物体

开源

自从yolov5开源以来,(不管因为啥原因算是)深受瞩目,最近我用tensorflow实现了其主要部分。就孤陋的我看来,是第一个纯正的tensorfow2版本,欢迎try and star:
https://github.com/LongxingTan/Yolov5

之前在工作中接触过yolov3(跑过demo应该就算接触过了),效果惊艳。我在视觉领域只是个新人(悲伤的是我一个中年人却在哪儿哪儿都TM是新人),能力有限,疏漏难免。从头开始实现,对我来说是一次不错的经历,遇到和解决了一些细节问题。
在这里插入图片描述

如readme中所指出的,主要特点如下:

  • 纯tensorflow2的实现
  • 用yaml文件来配置模型和控制模型大小
  • 支持自定义数据训练
  • 马赛克数据增强
  • 通过iou或长宽比匹配anchor
  • 相邻正样本增强
  • 支持多GPU训练
  • 相对详细的代码注释
  • 缺点多,提升空间巨大

原理

结合代码简单回顾一下其主要原理和改进。当然知乎上已经有不少非常不错的解析文章可以参考,尤其是下面列举的。当然,如有可能,读代码应该是更清晰、细节的了。

  • https://zhuanlan.zhihu.com/p/172121380
  • https://zhuanlan.zhihu.com/p/183838757
  • https://mp.weixin.qq.com/s/yXcoRK6btznOdxMjAncIlQ

损失函数部分,还没有完全和v5的设置一样。v5中做了一些优化,如不同scale的平衡,如目标confidence损失的权重等。

效果

如果想要效果最佳,还是推荐原版pytorch,毕竟一直在更新中,v4和v5的作者也一直还在发力优化。如果对tensorflow有谜之爱好,或者想通过代码了解yolov5,我觉得我的版本写的更清楚一些(与之相应的代价是可能有细节遗漏甚至不对的地方),总之欢迎大家尝试。
在MNIST检测数据上的效果:
在这里插入图片描述

在voc2012数据集上的效果(效果还有待加强):
在这里插入图片描述
在这里插入图片描述

再大的数据集我就跑不动啦,毕竟只有1080Ti可用。

联系方式

公众号搜索:YueTan

  • 7
    点赞
  • 50
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

YueTann

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值