开源
自从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可用。
欢迎关注