使用labelimg制作voc数据集 https://blog.csdn.net/qq_41251963/article/details/111190442
在mmdetection文件夹下新建data文件夹,存放训练数据;(使用kaggle(猫狗分类)数据集 【网盘下载:https://pan.baidu.com/s/1ZmyGPUp1jOHoNE24V0YAKw 提取码:je6k】,进行标注)
本次标注猫狗各150张训练;
新建myself文件夹,作为自己的工作目录;
创建好的数据集:
运行voc2.py 生成txt文件
import os
import random
random.seed(0)
xmlfilepath=r'./Annotations'
saveBasePath=r"./ImageSets/Main/"
trainval_percent=1
train_percent=1
temp_xml = os.listdir(xmlfilepath)
total_xml = []
for xml in temp_xml:
if xml.endswith(".xml"):
total_xml.append(xml)
num=len(total_xml)
list=range(num)
tv=int(num*trainval_percent)
tr=int(tv*train_percent)
trainval= random.sample(list,tv)
train=random.sample(trainval,tr)
print("train and val size",tv)
print("traub suze",tr)
ftrainval = open(os.path.join(saveBasePath,'trainval.txt'), 'w')
ftest = open(os.path.join(saveBasePath,'test.txt'), 'w')
ftrain = open(os.path.join(saveBasePath,'train.txt'), 'w')
fval = open(os.path.join(saveBasePath,'val.txt'), 'w')
for i in list:
name=total_xml[i][:-4]+'\n'
if i in trainval:
ftrainval.write(name)
if i in train:
ftrain.write(name)
else:
fval.write(name)
else:
ftest.write(name)
ftrainval.close()
ftrain.close()
fval.close()
ftest .close()
将configs/faster_rcnn/faster_rcnn_r50_fpn_1x_coco.py 文件复制到myself文件夹下,并在datasets/voc0712中注释掉VOC2012;
myself文件夹下faster_rcnn_r50_fpn_1x_coco.py配置文件更改如下:
_base_ = [
'../configs/_base_/models/faster_rcnn_r50_fpn.py',
'../configs/_base_/datasets/voc0712.py',
'../configs/_base_/schedules/schedule_1x.py', '../configs/_base_/default_runtime.py'
]
更改mmdet/datasets文件夹下的voc.py
将class改为自己的类;
将configs/_base_/models/faster_rcnn_r50_fpn.py 中的num_classes 改为2.
将mmdet\core\class_names.py中的类改成自己的类;
使用tools文件夹下的train.py 进行训练;传入相应的参数; --work-dir为工作环境。--gpus为gpu个数。
python tools\train.py myself\faster_rcnn_r50_fpn_1x_coco.py --gpus 1 --work-dir myself
如果遇到编码问题,则到相应的文件下更改:
如下面错误:则找到提示未知
在with open()函数中加encoding='utf-8'
运行成功:
自动下载预训练模型。
myself目录下会生成配置文件及日志信息;
测试训练的模型:
python demo\image_demo.py demo\cat-dog.jpg myself\faster_rcnn_r50_fpn_1x_coco.py myself\epoch_1.pth
只训练一个epoch,效果不是很好!!