鸣谢:
本文参考了CSDN上很多成熟的文章,在此放出博客连接(其中大部分由参考),如有侵权,请联系博主删除!!
https://blog.csdn.net/sinat_27634939/article/details/89884011
感谢博主: mumumuyanyanyan 的文章贡献!
https://blog.csdn.net/lilai619/article/details/79695109
https://blog.csdn.net/john_bh/article/details/80625220
本文对应教程文档与数据、脚本下载地址:https://download.csdn.net/download/nclgsj1028/11241011
一、准备环境
1、新建python3.7的conda环境: conda create -n your_env_name python3.7
2、source activate your_env_name 进入环境
3、依次安装
numpy
torch >= 1.1.0
opencv-python
tqdm
matplotlib
pycocotools
4、在环境下输入:conda list 我们可以看到所有环境安装的包
二、获取YOLO_V3 Pytorch版本源码 以及 实验数据集
YOLO_V3源码:https://github.com/ultralytics/yolov3
实验数据集 : https://github.com/cosmicad/dataset
说明:YOLO_V3采用的Pytorch版本的源码,torch版本为1.1.0 比较新的一个版本,方便后期学习Pytorch。 实验数据集采用的是一个已经标签好的红细胞识别数据集。
我们下载源码和数据集,解压分别得到两个文件夹
三、整理数据集
1、将dataset-master文件夹下两个文件夹Annotations 以及 JPEGImages 复制到 /yolov3-master/data 文件夹下。并在data目录下新建两个文件夹:images 和 ImageSets 两个文件夹。
2、运行根目录下makeTxt.py,将数据分成训练集,测试集和验证集,其中比例可以在代码设置。
(makeTxt.py文件在教程中提供)
我们在 ImageSets文件夹下可以得到如下几个文件:
3、运行根目录下voc_label.py,得到labels的具体内容以及data目录下的train.txt,test.txt,val.txt,这里的train.txt与之前的区别在于,不仅仅得到文件名,还有文件的具体路径。(voc_label.py文件在教程中提供)
labels文件下的具体labels信息
4、将JPEGImages文件夹下的所有文件拷贝到images文件夹下
四、配置文件
1.在data目录下新建rbc.data,配置训练的数据,内容如下
classes=1
train=data/train.txt
valid=data/test.txt
names=data/rbc.names
backup=backup/
eval=coco
2.在data目录下新建rbc.names,配置预测的类别,内容如下
3.网络结构配置,在原工程下cfg目录下有很多的yolov3网络结构,我们本次采用的是yolov3-tiny.cfg,配置好的文件在教程文档中
4.获取官网已经训练好的网络参数yolov3-tiny.weights(已经保存在教程文档)
修改train.py文件 118行 将参数改为yolov3-tiny.weights
一切准备妥当,我们打开进入源码文件夹,从终端打开,激活环境,我们就可以开始训练了,训练脚本如下:
python train.py --data-cfg data/rbc.data --cfg cfg/yolov3-tiny.cfg --epochs 10
说明:这里--epochs 10 是指只训练了10个批次,如果要提高精度我们可以设置的更高 如100或者1000
训练10个批次后得到的权重参数在weights文件夹下的best.pt 文件。
我在教程文件中放了一个训练了18590个批次的权重参数backup18590.pt,为了提高精度
使用我们训练好的权重文件来实验检测数据
1、将需要检测的数据放到data/samples目录下,这里我们从images文件夹下复制几张图片到samples目录下
2、们打开进入源码文件夹,从终端打开,激活环境,我们就可以开始预测了,预测脚本如下:
python detect.py --data-cfg data/rbc.data --cfg cfg/yolov3-tiny.cfg --weights weights/backup18590.pt
注意我要在预测脚本的最后修改下我们到底用那个权重文件来预测,这里我们修改成backup18590.pt
3、运行结束,在源码目录下 output文件夹下就存放了我们的预测结果。
大功告成!!!