一 环境说明

基于前述安装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格式数据集相关推荐

  1. SSD-MobileNetv2之Ubuntu18.04训练VOC格式数据集-超详细

    Ubuntu** python3.6 tensorflow1.15.0 TensorFlow Object Detection API下载 https://github.com/tensorflow/ ...

  2. YOLOv5手把手教你制作VOC格式数据集与模型训练

    引言 2020年2月YOLO之父Joseph Redmon宣布退出计算机视觉研究领域,2020 年 4 月 23 日YOLOv4 发布,2020 年 6 月 10 日YOLOv5发布. YOLOv5源 ...

  3. 【机器学习】 - 目标检测 - VOC格式数据集介绍与自己制作

    一.VOC数据集 PASCAL VOC 挑战赛主要有 Object Classification .Object Detection.Object Segmentation.Human Layout. ...

  4. 玩转肺癌目标检测数据集Lung-PET-CT-Dx ——④转换成PASCAL VOC格式数据集

    文章目录 关于PASCAL VOC数据集 目录结构 ①创建VOC数据集的几个相关目录 XML文件的形式 ②读取dcm文件与xml文件的配对关系 ③创建VOC格式数据集 ④创建训练.验证集 本文所用代码 ...

  5. yolov7运行自己的VOC格式数据集

    yolov7运行VOC格式数据集 代码下载 测试开发环境 使用自己的VOC格式数据集训练 修改配置文件yolov7.yaml 修改配置文件voc.yaml VOC格式数据集转换COCO格式 开始训练 ...

  6. 制作VOC格式数据集的train.txt、val.txt文件

    一.前言 在以前的文章中已经聊过 VOC数据集的组织结构 和 VOC格式数据集转yolo(darknet)格式. 当我们按照组织结构将自己的图片和xml标注文件放在指定文件夹下之后,在转换时我们还需要 ...

  7. VOC格式数据集操作类构建-2.统计数据集各类别标签数目和剪裁图像中标注框并保存图片

    总目标:建立VOC格式数据集类以及操作内置函数 github项目地址(附有使用说明书): https://github.com/A-mockingbird/VOCtype-datasetOperati ...

  8. 基于darknet-yolov4训练自己的数据集

    基于darknet-yolov4训练自己的数据集 一.环境配置 git clone http://github.com/pjreddie/darknet.gitcd darknetmake 二.训练自 ...

  9. 利用COCO API测试自己数据集训练的YOLOv3模型的mAP(VOC格式数据集)

    目录 工具 前言 生成标注集的json文件 数据集准备 将voc注解格式数据集的注解转换成txt注解格式 自定义数据集的注解转换成coco的注解格式 生成结果集的json文件 安装darknet 获取 ...

最新文章

  1. Microsoft NLayerApp案例理论与实践 - 项目简“.NET研究”介与环境搭建
  2. sql语句里的limit使用方法
  3. php 上传大文件涉及的配置,upload_max_filesize,post_max_size
  4. git使用:本地分支merge到远程分支
  5. cisco 2911 GRE ***
  6. 聚类算法 距离矩阵_模糊聚类算法
  7. [POJ2888] Magic Bracelet
  8. Spring Boot EasyPoi导出Excel下载
  9. 老罗Android开发视频教程( android解析json数据 )4集集合
  10. java实现线性回归(简单明了,适合理解)
  11. mysql alter例子,mysql alter语句用法实例
  12. 谈谈java中成员变量与成员方法继承的问题
  13. Java学习之接口概念
  14. 小例子(三)、winform控件的移动
  15. 5.Django|模型层--多表关系
  16. pta 是否完全二叉搜索树_23.二叉搜索树的后序遍历序列
  17. 微博登录设备有python_Python搜寻器如何登录新浪微博并获取内容?
  18. uniapp 前端获取历史搜索记录
  19. mac、windows 配置python国内镜像源
  20. 20211129编译RK3399的Android发生编译服务器的CPU看门狗软件死锁的问题

热门文章

  1. 电脑录音软件哪个好 内部声音如何录
  2. 应用实践 | 物易云通基于 Apache Doris 的实时数据仓库建设
  3. WebRTC 学习资料整理一
  4. html蛋糕首页代码,HTML红色欧美形式蛋糕信息网页模板代码
  5. 小学创客教室设计方案
  6. 基于MATLAB的平面刚架有限元分析,根据MATLAB的平面刚架静力分析.doc
  7. 【简洁】三步开启QQ邮箱SMTP服务并获取授权码
  8. 关于php使用sendmail发送邮件时中文附件名乱码问题解决方法
  9. 解决笔记本电脑更新驱动Windows10系统驱动之后相机无法使用问题
  10. c语言负数左移右移_C语言位运算符:与、或、异或、取反、左移和右移!