序号 | 修订内容 | 修订时间 |
1 | 增加了几个图,增加了4.1 权重的下载 | 2020.01.06 |
2 | 由于官网版本去掉了config,增加yml配置,所以重新进行了修订 | 2020.01.07 |
一、情况说明
1、源代码和数据集
使用的源代码是https://github.com/ultralytics/yolov3,使用的数据集是COCO。
2、环境
操作系统是win7,CPU模式(没有独立显卡),内存8G。
Python环境使用的是Python3.7,anaconda环境,IDE使用的是Pycharm社区版2020。
二、环境准备
0、如果高兴,创建一个新的虚拟环境,然后需要在Pycharm中指定Python interpreter使用这个虚拟环境
conda create -n yolo python=3.7
conda activate yolo
1、下载源代码到本地
git clone https://github.com/ultralytics/yolov3
2、打开Pycharm,打开Project,然后开始安装所缺少的库
这个可能每个人不一样,把train.py、detect.py和test.py这几个文件点开,看有什么红的,或者看Pycharm的提示进行安装。
也可以按照源代码作者的意思,pip install去安装那个requirement.txt。
3、下载COCO数据集(我用的2014的)
http://images.cocodataset.org/zips/train2014.zip
http://images.cocodataset.org/zips/val2014.zip
https://pjreddie.com/media/files/coco/labels.tgz
https://pjreddie.com/media/files/coco/5k.part
https://pjreddie.com/media/files/coco/trainvalno5k.part
将两个.part文件后缀修改为txt,然后按照如下格式来放(注意两个shapes文件是后来自己生成的)。这个coco目录具体放哪里问题不大,但是需要调整data目录下的train2014.data文件中的路径。理论上,COCO数据集和权重文件,都可以通过运行getxxxx.sh文件自动获得,但是一个是国内要翻墙,另外windows7上跑不起来sh文件。
4、下载预训练权重文件(这个有很多种,和cfg目录下的配置文件一一对应的,可以自己尝试修改下面链接最后的文件名)
注意,代码中默认是使用的yolov3-spp的这个。
https://pjreddie.com/media/files/yolov3-tiny.weights
https://pjreddie.com/media/files/yolov3-spp.weights
4.1、通过研究ultralytics在utils/google_utils.py里的代码,发现也可以直接去下载如下的权重文件。
注意,这里ultralytics的代码里是写的v1.0,据说有个v9.0是为了能和yolov5匹配的最新版本,选择哪个自己决定吧。
如果在这里直接下载的pt文件,就可以跳过 5、转换权重文件
(另外,如果你直接运行detect.py,也会自动去帮你下载对应的pt文件)
https://github.com/ultralytics/yolov3/releases/download/v1.0/yolov3.pt
https://github.com/ultralytics/yolov3/releases/download/v1.0/yolov3-tiny.pt
https://github.com/ultralytics/yolov3/releases/download/v1.0/yolov3-spp.pt
5、转换权重文件
下载的权重文件是darknet格式的,需要手工转换成.pt的pytorch格式。当然,也可以直接去网上搜索yolov3-spp-ultralytics.pt这个文件,不过大多需要积分下载。
源代码中在models.py里提供了一个convert函数,可以将weights文件转换成pt文件。
转换好的pt文件,修改名称为yolov3-spp-ultralytics.pt后,放到weights目录下去。
四、使用预训练的权重文件进行推理
1、原始图片准备
在data/samples目录下有两张用于推理的测试文件,如果你需要使用自己的文件、视频进行目标检测,直接放在这个目录下即可(视频我使用的mp4文件是没有问题的)。
2、运行detect.py
这个不需要进行训练,直接到output目录下去看结果。运行前,先检查你的权重文件是否已经下载并放在正确的位置,检查你要进行推理的图片的位置是否正确。
比如我这里的权重文件,就是放在根目录下的,而不是weights目录下的,因为我前面放到了weights目录下,这里就需要更改。
五、使用COCO数据集进行训练
1、下载coco数据集
首先,现在真的没有必要使用coco2014了,直接上coco2017吧。根据scripts/get_coco.sh中指明的下载路径和解压路径,去下载和解压train2017.zip等文件。如果你自行下载,放置的位置不同,需要修改yml配置文件。
https://github.com/ultralytics/yolov5/releases/download/v1.0/coco2017labels.zip
http://images.cocodataset.org/zips/train2017.zip
http://images.cocodataset.org/zips/val2017.zip
http://images.cocodataset.org/zips/test2017.zip
1、修改配置文件
老版本的yolov3有一个cfg目录,下面是cfg的配置。不过最新的版本在data目录下放置yml文件作为配置,我们按照最新的来说。
在train.py中,默认使用的coco128.yml,这个coco128是一个小型的数据集,是从coco中取的前128张图片组成的。
如果是按照默认的位置下载的,会自动解压到正确的位置,手工下载的请按照coco.yml或者coco128.yml配置文件的配置路径放置文件。
需要放置在其他地方的,则修改coco.yml或者coco128.yml文件里的配置。
2、修改train.py文件
源代码默认是使用的coco128数据集,这里需要注意权重文件的位置,使用的数据集文件位置。
然后就可以开始运行train.py了,我的机器尝试了一下,基本上没七八个月是跑不完的。所以真的要想训练这个,一张好一点的显卡还是必须的。
3、如果像我一样没有显卡的,可以把那个提示Apex的告警屏蔽掉
六、一些问题说明
1、安装cv2
如果直接在PyCharm中老安装失败,就到anaconda命令行下直接安装吧(不要告诉我你没有清华源):conda install opencv
2、页面文件太小
在笔记本上运行报这个错,把--workers从8修改小后,仍然提示:buy new RAM。只能说如果要进行深度学习,一台好电脑是必备的。