基于MMDetection训练VOC格式数据集
一 环境说明
基于前述安装MMDetection,数据集为VOC格式,主要版本如下:
Python:3.7.8
CUDA:11.3
cuDNN:8.4.0
torch:1.12.0
torchvision:0.13.0
mmcv-full:1.6.0
MMDetection:2.25.3
二 数据集准备
使用VOC格式进行模型训练,利用labelimg对图像进行标注,生成xml文件,准备好图片和标注文件,并对数据集进行划分,文件目录如下图所示。
mmdetection
├── mmdet
├── tools
├── configs
├── dataset
│ ├── ACID # 自己给数据集取名字
│ │ ├── VOC2007
│ │ │ ├── Annotations # xml文件
│ │ │ ├── JPEGImages # 图片文件
│ │ │ ├── ImageSets
│ │ │ │ ├── Main
│ │ │ │ │ ├── test.txt
│ │ │ │ │ ├── trainval.txt
三 修改默认labels
1、在 .\mmdetection-v2.25.3\mmdet\core\evaluation\class_names.py中,修改函数
voc_classes下面的默认类别,修改为自己标注的类别。
def voc_classes():# return [# 'aeroplane', 'bicycle', 'bird', 'boat', 'bottle', 'bus', 'car', 'cat',# 'chair', 'cow', 'diningtable', 'dog', 'horse', 'motorbike', 'person',# 'pottedplant', 'sheep', 'sofa', 'train', 'tvmonitor'# ]# SODA的数据标签,一共 15 个# 把配电箱 ebox,写成了 electric box,一直报错,所以要先检查labels# return [# 'person', 'vest', 'helmet', 'board', 'wood',# 'rebar', 'brick', 'scaffold', 'handcart', 'cutter',# 'ebox', 'hopper', 'hook', 'fence', 'slogan'# ]# ACID数据集标签,一共3个return ['excavator', 'dump_truck', 'concrete_mixer_truck']
2、在 .\mmdetection-v2.25.3\mmdet\datasets\voc.py中,修改默认的VOC CLASSES为自己标注的类别,如下图所示。
class VOCDataset(XMLDataset):# CLASSES = ('aeroplane', 'bicycle', 'bird', 'boat', 'bottle', 'bus', 'car',# 'cat', 'chair', 'cow', 'diningtable', 'dog', 'horse',# 'motorbike', 'person', 'pottedplant', 'sheep', 'sofa', 'train',# 'tvmonitor')# 修改为 SODA的类别# CLASSES = ('person', 'vest', 'helmet', 'board', 'wood',# 'rebar', 'brick', 'scaffold', 'handcart', 'cutter',# 'ebox', 'hopper', 'hook', 'fence', 'slogan')# ACID的类别,3个 'excavator', 'dump_truck', 'concrete_mixer_truck'CLASSES = ('excavator', 'dump_truck', 'concrete_mixer_truck')
四 选择模型
在 .\mmdetection-v2.25.3\configs文件夹下,有很多模型,到底选择哪一个,到底那个支持VOC格式进行直接训练呢?
目前,支持VOC直接训练的模型在 .\mmdetection-v2.25.3\configs\pascal_voc文件夹下,模型的数量不多,主要模型如下图所示。
默认都是COCO格式的,COCO格式的模型也是可以手动改为VOC格式的,那个后面再说。
【 刚开始以为随便一个模型都可以用来训练数据,结果报莫名其妙的错误 】
五 生成模型全部配置文件
当选择好模型后,需要对进行模型的参数进行配置,一种比较好的方法是生成单独的全部的配置文件,具体操作方法如下:
python tools/train.py configs/pascal_voc/faster_rcnn_r50_fpn_1x_voc0712.py --work-dir VOC_SSD300
生成的配置文件在定义的工作目录下,下一步对配置文件进行配置即可。
六 配置文件修改
重点修改标注的类别数,数据的路径,结果保存路径,大部分都不需要修改了。
num_classes=3 # 类别数dataset_type = 'VOCDataset'
data_root = 'dataset/A/'ann_file='dataset/A/VOC2007/ImageSets/Main/test.txt'
img_prefix='dataset/A/VOC2007/',work_dir = 'VOC_SSD300' # 工作目录load_from = None # 预训练模型
七 预训练模型下载
训练时通常加载预训练模型,一种方法是直接取model zoo下载,另一种是使用命令直接下载,指定配置文件名称和下载路径即可。
mim download mmdet --config yolov3_mobilenetv2_mstrain-416_300e_coco --dest checkpoints
八 训练模型
模型训练的脚本就比较简单了,指定你配置文件的路径和结果保存路径即可,如下:
python tools/train.py my_config\ssd300_voc0712.py --work-dir VOC_SSD300
LAST 可能会遇到的问题
1、class_names.py和voc.py中的类别都改了,但训练的时候还是报错:
AssertionError: The `num_classes` (15) in SSDHead of MMDataParallel does not matches the length of `CLASSES` 20) in RepeatDatasetn
你定义的类别数和默认的VOC的20个类别不一致,但是你已经改了文件,就是不起作业,解决方法见下图,将修改好的2个文件替换到安装包里的。
2、待补充
基于MMDetection训练VOC格式数据集相关推荐
- SSD-MobileNetv2之Ubuntu18.04训练VOC格式数据集-超详细
Ubuntu** python3.6 tensorflow1.15.0 TensorFlow Object Detection API下载 https://github.com/tensorflow/ ...
- YOLOv5手把手教你制作VOC格式数据集与模型训练
引言 2020年2月YOLO之父Joseph Redmon宣布退出计算机视觉研究领域,2020 年 4 月 23 日YOLOv4 发布,2020 年 6 月 10 日YOLOv5发布. YOLOv5源 ...
- 【机器学习】 - 目标检测 - VOC格式数据集介绍与自己制作
一.VOC数据集 PASCAL VOC 挑战赛主要有 Object Classification .Object Detection.Object Segmentation.Human Layout. ...
- 玩转肺癌目标检测数据集Lung-PET-CT-Dx ——④转换成PASCAL VOC格式数据集
文章目录 关于PASCAL VOC数据集 目录结构 ①创建VOC数据集的几个相关目录 XML文件的形式 ②读取dcm文件与xml文件的配对关系 ③创建VOC格式数据集 ④创建训练.验证集 本文所用代码 ...
- yolov7运行自己的VOC格式数据集
yolov7运行VOC格式数据集 代码下载 测试开发环境 使用自己的VOC格式数据集训练 修改配置文件yolov7.yaml 修改配置文件voc.yaml VOC格式数据集转换COCO格式 开始训练 ...
- 制作VOC格式数据集的train.txt、val.txt文件
一.前言 在以前的文章中已经聊过 VOC数据集的组织结构 和 VOC格式数据集转yolo(darknet)格式. 当我们按照组织结构将自己的图片和xml标注文件放在指定文件夹下之后,在转换时我们还需要 ...
- VOC格式数据集操作类构建-2.统计数据集各类别标签数目和剪裁图像中标注框并保存图片
总目标:建立VOC格式数据集类以及操作内置函数 github项目地址(附有使用说明书): https://github.com/A-mockingbird/VOCtype-datasetOperati ...
- 基于darknet-yolov4训练自己的数据集
基于darknet-yolov4训练自己的数据集 一.环境配置 git clone http://github.com/pjreddie/darknet.gitcd darknetmake 二.训练自 ...
- 利用COCO API测试自己数据集训练的YOLOv3模型的mAP(VOC格式数据集)
目录 工具 前言 生成标注集的json文件 数据集准备 将voc注解格式数据集的注解转换成txt注解格式 自定义数据集的注解转换成coco的注解格式 生成结果集的json文件 安装darknet 获取 ...
最新文章
- Microsoft NLayerApp案例理论与实践 - 项目简“.NET研究”介与环境搭建
- sql语句里的limit使用方法
- php 上传大文件涉及的配置,upload_max_filesize,post_max_size
- git使用:本地分支merge到远程分支
- cisco 2911 GRE ***
- 聚类算法 距离矩阵_模糊聚类算法
- [POJ2888] Magic Bracelet
- Spring Boot EasyPoi导出Excel下载
- 老罗Android开发视频教程( android解析json数据 )4集集合
- java实现线性回归(简单明了,适合理解)
- mysql alter例子,mysql alter语句用法实例
- 谈谈java中成员变量与成员方法继承的问题
- Java学习之接口概念
- 小例子(三)、winform控件的移动
- 5.Django|模型层--多表关系
- pta 是否完全二叉搜索树_23.二叉搜索树的后序遍历序列
- 微博登录设备有python_Python搜寻器如何登录新浪微博并获取内容?
- uniapp 前端获取历史搜索记录
- mac、windows 配置python国内镜像源
- 20211129编译RK3399的Android发生编译服务器的CPU看门狗软件死锁的问题
热门文章
- 电脑录音软件哪个好 内部声音如何录
- 应用实践 | 物易云通基于 Apache Doris 的实时数据仓库建设
- WebRTC 学习资料整理一
- html蛋糕首页代码,HTML红色欧美形式蛋糕信息网页模板代码
- 小学创客教室设计方案
- 基于MATLAB的平面刚架有限元分析,根据MATLAB的平面刚架静力分析.doc
- 【简洁】三步开启QQ邮箱SMTP服务并获取授权码
- 关于php使用sendmail发送邮件时中文附件名乱码问题解决方法
- 解决笔记本电脑更新驱动Windows10系统驱动之后相机无法使用问题
- c语言负数左移右移_C语言位运算符:与、或、异或、取反、左移和右移!