一、准备自己的数据
以nwpu数据集为例,nwpu数据集文件夹的内容如下:
images文件夹:存储数据图像
labelTxt文件夹:包含标记信息。 images文件夹中的每个图像都存储在txt文件中。 图像与标记文件具有相同的名称
test.txt和train.txt :记录训练集和测试集的影像名称
二、转换为voc格式数据集
在转换过程中,为了简化操作,将create_dir.py和creat_annotations.py复制到存储voc数据集的目录(VOCdevkit )下,然后提供以下两个脚本
1、编制目录
在根目录./VOCdevkit中输入命令行命令python create_dir.py
将创建以下样式的目录结构:
( VOCdevkit #根目录
( VOC2007
保存annotations#XML文件,与JPEGImages图像一一对应,解释图像内容等
ImageSets
()行动
() Layout
() Main
() Segmentation
保存JPEG images #源图像
SegmentationClass #中保存有图像,与语义分割相关
( SegmentationObject #存储图像,与实例拆分有关
2、复印图片
将所有图像复制到JPEGImages
或者,创建与JPEGImages的软连接
也就是说,使单击JPEGImages文件夹后的内容成为数据集的图像
3、生成Annotations文件夹内的xml文件
在根目录./VOCdevkit中输入命令行命令$ python create_annotations.py
PS :首先需要修改文件的内容。 (标记在代码行之后。)
导入操作系统,sys
导入全局
来自pil导入图像
label_lists=[]
img_lists=[]
src _ label _ dir='/mnt/b/nwpu/labeltxt/' # #指向您数据集的label txt文件夹
src _ img _ dir='/mnt/b/nwpu/images/' # #指向您数据集的images文件夹
out _ XML _ dir='/mnt/d/yuangan/datasets/nwpu/VOC 2007/annotations/' # # VOC数据集的annotations文件夹
# write in xml file
# OS.mknod (src _ XML _ dir '/' img '.XML ' ) )
XML _ file=open ((out _ XML _ dir '/' name '.XML ' )、' w ' ) )
XML_file.write('n ' )。
XML_file.write(VOC2007(n ) ) ) ) ) )。
XML_file.write(''str(name ).png' 'n ' ) ##如果准备的图像是jpg格式,则将png替换为jpg
XML_file.write('n ' )。
XML_file.write('str ) (n ) )。
XML_file.write(''str(height ) 'n ' ) )。
XML_file.write('3n ' ) )。
XML_file.write('n ' )。
xml_file.close (
for label _ iteminlabel _ lists :
4、确定voc数据集的训练集和测试集
将自己数据集的test.txt和train.txt复制到/ImageSets/Main下,并将test.txt改名为testval.txt
数据集格式转换到此完成
二、用mm检测训练faster_rcnn和固态硬盘网络
以下操作均在访问mmdetection项目目录./mmdetection的过程中进行
1、修改轮廓
1.1、配置检查类别
打开mmdet/datasets/voc.py
将红色框的内容更改为数据集类别
1.2、配置图片格式
打开mmdet/datasets/xml_style.py
红框的内容将按照图像是jpg格式还是png格式进行修正
2、训练方法
训练很简单,利用官方给出的命令:
python tools/train.py $ { config _ file }
{CONFIG_FILE}文件存储在configs/pascal_voc中
例如faster_rcnn网络训练:
python tools/train.py configs/Pascal _ VOC/faster _ rcnn _ r50 _ fpn _ 1x _ VOC 0712.py
通过固态硬盘培训:
python tools/train.py configs/Pascal _ VOC/SSD 512 _ VOC.py
3、更改培训模型的保管目录
默认情况下,训练的网络目标位于mmdetection/work_dir中,要指定目标目录,请在命令后添加--work_dir ${YOUR_WORK_DIR}
例如:
python tools/train.py configs/Pascal _ VOC/faster _ rcnn _ r50 _ fpn _ 1x _ VOC 0712.py-- work _ dir/home /