Gaussian-YOLOv3
Gaussian-YOLOv3
是YOLOv3
的改进版,它利用高斯分布的特性(也叫正态分布,详见参考资料),改进YOLOv3
,使得网络能够输出每个检测框的不确定性,从而提升了网络的精度。
关于YOLOv3
的相关知识,可以参考我之前的两篇文章,Darknet基本使用和YOLOv3训练自己的检测模型。
YOLOv3
识别出的目标类别是有置信度的,但目标框只有位置而没有置信度,也就是说,从结果中无法预知当前目标框的可靠性。基于这一点,Gaussian-YOLOv3
利用Gaussian
模型来对网络输出进行建模,在基本不改变YOLOv3
网络结构和计算量的情况下,能够输出每个预测框的可靠性,并且在算法总体性能上提升了3个点的mAP
。
代码实践
Gaussian-YOLOv3
的源码已经在Github
上开源,可以直接clone
下来
git clone https://github.com/jwchoi384/Gaussian_YOLOv3
cd Gaussian_YOLOv3
make
CUDA
的安装可以参考这篇安装CUDA,如果缺少opencv
相关的库,可以通过sudo apt-get install libopencv-dev
来安装
测试之前需要下载个训练好的weights
文件,地址是https://drive.google.com/file/d/1Eutnens-3z6o4LYe0PZXJ1VYNwcZ6-2Y/view,它是由Berkeley Deep Drive
数据集训练而来,这个数据集的下载地址是https://bdd-data.berkeley.edu/。
最后,来张图片测试一下
./darknet detector test cfg/BDD.data cfg/Gaussian_yolov3_BDD.cfg Gaussian_yolov3_BDD.weights data/example.jpg
另外,像配置文件的修改、模型的训练、模型的验证等操作跟YOLOv3
基本是一模一样的,本文就不赘述了,不了解的话,可以看看参考资料中的链接。
如果无法访问谷歌云盘,请到这里下载weights
文件。
参考资料
- https://arxiv.org/abs/1904.04620
- https://github.com/jwchoi384/Gaussian_YOLOv3
- https://github.com/pjreddie/darknet
- https://zh.wikipedia.org/wiki/%E6%AD%A3%E6%80%81%E5%88%86%E5%B8%83
- https://xugaoxiang.com/2019/12/16/darknet-basic/
- https://xugaoxiang.com/2019/12/16/how-to-train-your-yolov3-weights/
- https://xugaoxiang.com/2019/12/13/ubuntu-cuda/