之前一直做稀疏表示,最近在学深度学习有关的有关方向,先从YOLO入手。
YOLO(You Only Look Once)从2016年开始到现在已经有众多博客、公众号、知乎文章等进行讲解。
主要参考:
深入浅出Yolo系列之Yolov3&Yolov4&Yolov5&Yolox核心基础知识完整讲解
https://zhuanlan.zhihu.com/p/143747206 作者江大白
该文讲了一些基础知识,相当于论文翻译,可以适当看看,不理解的就看论文原文。
yolo系列之yolo v3【深度解析】
https://blog.csdn.net/leviopku/article/details/82660381 作者木盏
用了一个网络可视化工具Netron来直观展示网络结构,同时也采用keras框架实现了代码,讲解较为清晰。
总结下来:
V1采用图像分块形式,预测框中心在哪一个图像块,该图像块就负责预测;
V2采用anchor box机制,采用不同尺度的box对目标框进行直接预测,可连同Fast-RCNN的RPN机制统一理解该思想。
V3沿用了anchor box的机制,但是将大尺度小通道的图像转换成小尺度大通道的图像,取消了中间层中的尺化层和全连接层,并且引入了Batch Normalization。所以针对与权值训练更方便。稀疏学习中也用到了BN。
到这里有了新的想法,众多博客都提到了何凯明(http://kaiminghe.com/)的ResNet(https://github.com/KaimingHe/deep-residual-networks#models)。这个思想可以说很简单但是很巧妙,如果说深度学习网络越深越好的话,那300层的网络训练结果好还是先用200层网络训练一个结果再用100层的网络继续训练所得的结果好呢?
如果200层的网络已经能得出较好的结果,那附加的100层就算没有进步,效果应该也不会变差。但是实验结果显示按传统卷积、池化、全连接层堆积起来,层数300以上结果反而会变差,回想神经网络训练过程,采用梯度下降法更新权值,其计算的前后两次的数值之间的导数,所以但凡数值有变化其最终结果就会受到影响,但是ResNet采用对残余值进行差值计算,这样即使网络层较深,后面的网络也就相当于一个直连层,不会对前面的结果有什么影响,这个巧妙的设计可以将网络设计的更深。
V4(https://github.com/pjreddie/darknet)
V5(https://github.com/ultralytics/yolov5)
YOLOv5学习总结(持续更新)_dididi的博客-CSDN博客_yolov5
深度残差网络的思想可以借鉴一下
迭代重加权