代码:1、GitHub - lavendelion/YOLOv1-from-scratch: YOLOv1-from-scratch或者
2、项目目录预览 - YOLOv1-from-scratch - GitCode(打开更快)
数据:The PASCAL Visual Object Classes Challenge 2012 (VOC2012) (ox.ac.uk)
选择第一个下载即可。
参考博客:动手学习深度学习pytorch版——从零开始实现YOLOv1_自己实现的yolov-CSDN博客
1、数据集介绍:
下载完成,解压VOC2012后有五个文件夹。
Annotations:保存的是xml文件,里面存放的是对应照片的标注信息。
ImageSets里面有四个文件夹:
保存的是txt文件。我们关注的是Main里面的train.txt和val.txt。
JPEGImages:保存的是对应的图片。
剩下两个跟分割有关,暂时不管。
2、操作步骤:
(1)、将下载好的VOC2012文件夹放到与程序在同一个目录下,并在VOC2012文件夹下面建一个空文件夹,命名为voc2012_forYolov1;
(2)、找到prepare_data.py,修改数据保存地址,将里面数据path全部改成实际的地址。
(3)、运行prepare_data.py程序
运行完后,在新建文件夹下就会生成一些图片和文件。
(4)执行train.py程序
设置参数:
batch_size=32,lr=1e-4。lr不能设置的太大,会出现loss=Nan的情况。
优化器设置为SGD,不能使用Adam。
如果执行时,提示预训练报错,把默认值设置为default=None就可以了。程序从头开始训练。
设置完成后就开始执行程序。
输出:
运行到50个epoch之后,loss基本不下降,维持到0.1左右。
(5) 执行test.py测试程序
执行前,先将my_arguments.py程序中权重加载进来,使用的就是在(4)里面保存的pkl文件。
报错:If you are on Ubuntu or Debian, install libgtk2.0-dev and pkg-config, then re-run cmake or configure script in function 'cvShowImage'
解决办法:先卸载原来的opencv
pip uninstall opencv-python
然后重新安装。
pip install opencv-contrib-python
结果能显示,但是精度不高。