YOLOv3训练自己的数据集pytorch版

源码下载:https://github.com/Lu-tju/YOLOv3_pytorch,这是我的毕设,任务是识别turtlebot,本文简便起见,以红细胞数据集为例。

参考:
Pytorch实现YOLOv3训练自己的数据集
Pytorch实现yolov3的原始地址(ultralytics版)
环境:
win10+python3.6
PyTorch 1.1.0
opencv
tqdm
matplotlib
源码中有requirements.txt,安装直接:

pip3 install -U -r requirements.txt

这里我用的ultralytics的旧版,这个版本不需要 pycocotools,我的win10下运行pip install pycocotools报错:
Microsoft Visual C++ 14.0 is required. 安装还挺麻烦的,就用了这个版本

制作数据集

使用精灵标注助手,傻瓜安装,感觉比labelImge好用。
标注过程简单,不再赘述。
注意,数据存放目录不能有中文!!!不然python中导入时会报错:'gbk' codec can't decode byte 0xa2 in position 47...

导出时,选择VOC格式即可,这里以红细胞数据集为例,导出后大概如下:

...
<size>
    <width>640width>
    <height>480height>
    <depth>3depth>
size>

<segmented>0segmented>
    <object>
    <name>RBCname>
    <pose>Unspecifiedpose>
    <truncated>0truncated>
    <difficult>0difficult>
    <bndbox>
        <xmin>334xmin>
        <ymin>254ymin>
        <xmax>472xmax>
        <ymax>380ymax>
    bndbox>
object>
annotation>

为了方便,我们直接下载标记好的数据集:红细胞检测数据集

数据准备

1、 从数据集下载下来Annotations(标注)、JPEGImages(图片)两个文件夹,将他们复制到YOLOV3工程目录下的data文件夹下,然后将JPEGImages文件夹复制一下,并重命名为images,最后在data下新建两个空文件夹,分别命名为ImageSets和labels,如下:

YOLOv3训练自己的数据集pytorch版_第1张图片
2、运行makeTxt.py,在ImagesSets下生成如下四个文件,存储图片的名称
YOLOv3训练自己的数据集pytorch版_第2张图片
3、运行voc_label.py后,在labels下生成各个图片的标签,例如:

0 0.415625 0.8572916666666667 0.15625 0.21875
0 0.19843750000000002 0.7885416666666667 0.15625 0.21875

每行代表一个目标,各元素分别是:种类+4个坐标
YOLOv3训练自己的数据集pytorch版_第3张图片
同时在data下生成train.txt,test.txt,val.txt,存储图片的具体目录+名称。
4、
在data文件下新建rbc.names,存放种类的列表(此处只有1类RBC),内容如下:

RBC

在data文件下新建rbc.data,存放一些配置信息,内容如下:

classes=1
train=data/train.txt
valid=data/test.txt
names=data/rbc.names
backup=backup/
eval=coco

修改cfg文件

迁移学习,修改cfg文件中网络的结构,主要是yolo层前一层的Conv层的卷积核个数。
需要将filters=255改为filters=18,即: anchor个数3x(种类数+bbox4个坐标+bbox信度)。注意三个尺度都要改!
将yolo层的class=80改为class=1,即类数。

预训练模型

下载官网已经训练好的网络参数yolov3-tiny.weights,放到weights目录下,然后对yolov3-tiny.weights进行改造,冻结前面的层,只训练yolo最后分类几层。下载官网的代码,运行一下脚本得到yolov3-tiny.conv.15:

./darknet partial cfg/yolov3-tiny.cfg yolov3-tiny.weights yolov3-tiny.conv.15 15

(上面并没看懂,雾)我直接下载的yolov3-tiny.conv.15:
链接:https://pan.baidu.com/s/1o6g3jendNfCuoRqdRQ-eUg
提取码:5ufi

训练

修改train.py中main函数的parser参数,主要是yolo.cfg文件位置,rbc.data文件位置,还有epochs、batch size等超参数,直接运行就好了。
测试test.py,测试图片位置默认在data\samples,输出在outputs文件夹

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