YOLO_V3 实验文档 (Pytorch版本) 训练自己的数据集

YOLO_V3 实验文档

鸣谢:

本文参考了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版本) 训练自己的数据集_第1张图片

 

二、获取YOLO_V3   Pytorch版本源码 以及 实验数据集

       YOLO_V3源码:https://github.com/ultralytics/yolov3

       实验数据集 :      https://github.com/cosmicad/dataset

      说明:YOLO_V3采用的Pytorch版本的源码,torch版本为1.1.0 比较新的一个版本,方便后期学习Pytorch。 实验数据集采用的是一个已经标签好的红细胞识别数据集。

       我们下载源码和数据集,解压分别得到两个文件夹

       YOLO_V3 实验文档 (Pytorch版本) 训练自己的数据集_第2张图片

三、整理数据集

       1、将dataset-master文件夹下两个文件夹Annotations  以及  JPEGImages 复制到 /yolov3-master/data 文件夹下。并在data目录下新建两个文件夹:images  和 ImageSets 两个文件夹。

YOLO_V3 实验文档 (Pytorch版本) 训练自己的数据集_第3张图片

       2、运行根目录下makeTxt.py,将数据分成训练集,测试集和验证集,其中比例可以在代码设置。

(makeTxt.py文件在教程中提供)

        我们在 ImageSets文件夹下可以得到如下几个文件:

           YOLO_V3 实验文档 (Pytorch版本) 训练自己的数据集_第4张图片

      3、运行根目录下voc_label.py得到labels的具体内容以及data目录下的train.txttest.txtval.txt,这里的train.txt与之前的区别在于,不仅仅得到文件名,还有文件的具体路径。voc_label.py文件在教程中提供)

YOLO_V3 实验文档 (Pytorch版本) 训练自己的数据集_第5张图片

       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,配置预测的类别,内容如下

YOLO_V3 实验文档 (Pytorch版本) 训练自己的数据集_第6张图片

       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文件夹下就存放了我们的预测结果。

 

 

大功告成!!!

你可能感兴趣的:(目标检测)