前言:本文制作的数据集只有5张,仅供演示使用。
环境搭建请参考前文:
ubuntu18.04环境下的darknet+yolov3搭建及程序演示
本实验平台软硬件环境参数:
-
gpu:GTX 1060
-
cpu:intel i7-7700HQ
-
内存:16GB
-
Ubuntu版本:18.04
-
NVIDIA驱动版本:390.116
-
python:3.6.8
-
cuda版本:cuda_9.0.176_384.81_linux
-
cudnn版本:cudnn-9.0-linux-x64-v7.1
本文使用的标注工具是labelme,来自wkentaro大神。
github:https://github.com/wkentaro/labelme
一 .你可以通过以下步骤对自己的数据集进行训练:(参考至官方文档)
1.为你的数据集创建一个COCO风格的目标检测JSON注释文件。这方面的说明可以参考下面。需要注意的是,我们不使用下列栏目,因此可以省略:
info
liscense
- Under
image
:license, flickr_url, coco_url, date_captured
categories
(我们使用自己的类别格式,见下文)
2.在data/config.py中的dataset_base下为数据集创建definition(有关每个字段的说明,请参阅dataset_base中的注释):
my_custom_dataset = dataset_base.copy({
'name': 'My Dataset',
'train_images': 'path_to_training_images',
'train_info': 'path_to_training_annotation',
'valid_images': 'path_to_validation_images',
'valid_info': 'path_to_validation_annotation',
'has_gt': True,
'class_names': ('my_class_id_1', 'my_class_id_2', 'my_class_id_3', ...)
})
3.两点注意事项
- 注释文件中的Class的ID应该从1开始,并按class_names顺序依次增加。如果您的注释文件(如COCO)不是这样,请参见在
dataset_base中的label_map
。 - 如果不想创建验证数据集,请使用相同的图像路径和注释文件进行验证。默认情况下(请参见python train.py--help),train.py将每隔2个时期输出数据集中前5000个图像的mAP。
4.最后,在同一文件中的yolact_base_config中,将'dataset'的值更改为'my_custom_dataset'或您在上面命名config对象的任何内容。然后您可以使用上一节中的任何训练指令。
二.下载并安装Labelme
1.创建虚拟环境:
conda create -n labelme python=3.6
2.进入虚拟环境:
source activate labelme
3.安装pyqt5和labelme:
sudo apt-get install python3-pyqt5
sudo pip3 install labelme
4.将项目clone至本地:
github链接:https://github.com/wkentaro/labelme
三.创建coco数据集
1.进入lambel文件夹,例如:/home/qrt/Downloads/labelme-master/examples/instance_segmentation
将需要制成数据集的照片放入data_annotated文件夹里面。
2.进入labelme虚拟环境:
source activate labelme
3.输入labelme打开程序
4.点击左侧菜单的OpenDir打开存放数据图像的文件夹,例如:/home/qrt/Downloads/labelme-master/examples/instance_segmentation/data_annotated
5.依次点击:Edit->Create Polygons,然后绘制目标轮廓并创建标签,然后保存,直至绘制完成所有数据集图像。
5.文件夹里面每张图片生成一个对应的.json文件:
6.修改labels.txt文件
7.运行下面代码
./labelme2coco.py data_annotated data_dataset_coco --labels labels.txt
生成图像和标签两个文件夹
四.修改yolact代码,训练数据集。
1.打开/media/qrt/data/yolact/yolact-master/data/config.py![](https://img-blog.csdnimg.cn/2019072214415834.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MTg1MTQzOQ==,size_16,color_FFFFFF,t_70)
如上图,修改训练集路径和标签路径。
2.修改数据名称和num_classes。(num_classes=数据集标签类数+1)![](https://img-blog.csdnimg.cn/20190722144439582.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MTg1MTQzOQ==,size_16,color_FFFFFF,t_70)
3.训练数据。
参考官方说明:
(1)下载预训练权重放至根目录里的weights文件夹下
- For Resnet101, download
resnet101_reducedfc.pth
from here. - For Resnet50, download
resnet50-19c8e357.pth
from here. - For Darknet53, download
darknet53.pth
from here.
(2)在训练过程中按ctrl+c能够保存当前训练权重并保存在weight文件夹里。命名为:<config>_<epoch>_<iter>.pth
(3)训练
使用默认为8的batch size训练:
python train.py --config=yolact_base_config
根据根据实际情况可以适当调节batch size的大小,如果显卡性能低可以减小batch size大小:
python train.py --config=yolact_base_config --batch_size=5
从中断的权重继续训练:
python train.py --config=yolact_base_config --resume=weights/yolact_base_10_32100.pth --start_iter=-1
帮助:
python train.py --help
4.测试
在终端进入yolact项目根目录,然后进入创建好的虚拟环境里面。输入:
python eval.py --trained_model=weights/yolact_base_54_800000.pth --score_threshold=0.3 --top_k=100 --image=my_image.png