(windows)ssd深度学习2: 训练自己的数据集gpu+ windows11+ anaconda+ pycharm+ RTX3050 笔记(内含单通道灰度图像的训练方法)

前言

  1. 如何在anconda创建ssd虚拟环境和用pycham为项目配置ssd虚拟环境见上一篇(windows)ssd深度学习1:pytorch环境配置gpu+windows11+anaconda+pycharm+RTX3050 笔记_chao_xy的博客-CSDN博客

  1. 配置完成后打开pycharm终端为

  1. ssd链接GitHub - lufficc/SSD: High quality, fast, modular reference implementation of SSD in PyTorch

  1. 如果你的图像为单通道灰度图像(一定要确认!!!我在这里折腾了一天),如果不是则忽略

  1. 转换为三通道图像SSD训练单通道图像_BookIdiot的博客-CSDN博客

  1. 将xml 的 depth 改为3,参考 批量修改xml标注框坐标,类别名称,删除子节点,删除属性列表,根据xml切割图片_xml 批量修改_树和猫的博客-CSDN博客


# coding:utf-8
import os
import os.path
import xml.dom.minidom

path = r'D:\你的xml路径(最好备份一下)'
files = os.listdir(path)  # 得到文件夹下所有文件名称
for xmlFile in files:  # 遍历文件夹
    if xmlFile[-4:] in ['.xml']:
        dom = xml.dom.minidom.parse(os.path.join(path, xmlFile))
        root = dom.documentElement
        # 获取xml中depth对应节点
        name = root.getElementsByTagName('depth')
        for i in range(len(name)):
            if name[i].firstChild.data == '1':
                name[i].firstChild.data = '3'
        # 保存修改到xml文件中
        with open(os.path.join(path, xmlFile), 'w', encoding='UTF-8') as fh:
            dom.writexml(fh, encoding='UTF-8')

正式开始

数据集准备

  1. 在ssd根目录下新建datasets文件夹

  1. 在文件夹中新建VOC2007和VOC2012,VOC2012是VOC2007的复制内容

  1. 确认你的各文件为以下格式,完毕

训练前文件修改

  1. 修改voc.py

根目录ssd/data/datasets/voc.py

找到class_name ,保留__background__,其余改为你自己的种类。种类名不能含大写字母,xml修改方法见前言2.b的参考链接。

  1. 修改defaults.py

根目录ssd/config/defaults.py

找到C.MODEL.NUM_CLASSES

改为你自己的检测种类数+1

  1. 修改nms.py

根目录/ssd/utils/nms.py找到


if torchvision.__version__ >= '0.3.0':

改为


if torchvision.__version__ >= '0.0.0':
  1. 修改vgg_ssd300_voc0712.yaml

根目录configs/vgg_ssd300_voc0712.yaml

找到NUM_CLASSES

改为你自己的检测种类数+1

训练

在终端运行:


python train.py --config-file configs/vgg_ssd300_voc0712.yaml

模型使用

使用demo.py将模型用于图片目标检测。例如
python demo.py --config-file configs/vgg_ssd300_voc0712.yaml --images_dir 图片路径 --ckpt 模型路径/model_final.pth

错误记录

报错1

File"D:\code\SSD\ssd\data\transforms\transforms.py", line 369, in__call__

boxes[:, :2] += (int(left), int(top))

IndexError: toomany indices for array: array is 1-dimensional, but 2 were indexed

ssd需要rgb图像,然而红外图像为灰度图,需要转换为伪彩色(也有可能是标签空白问题)

报错2

(ssd) PSD:\code\SSDL> python train.py --config-file configs/vgg_ssd300_voc0712.yaml

D:\code\SSDL\ssd\utils\nms.py:10:UserWarning: No NMS is available. Please upgrade torchvision to 0.3.0+

warnings.warn('No NMS is available. Pleaseupgrade torchvision to 0.3.0+')

修改nms.py,见上面的修改3

其它问题
SSD数据集训练时出现IndexError: too many indices for array: array is 1-dimensional, but 2 were indexed等-CSDN博客

SSD训练时报错No such file or directory: ‘datasets\\VOC2012\\Annotations\\.xml‘_source = open(source, "rb")-CSDN博客

关于linux上ssd环境配置及训练过程,可以参考:

(linux)ssd深度学习1:pytorch环境配置gpu+anaconda+pycharm+RTX2080ti 笔记_chao_xy的博客-CSDN博客

(linux) ssd-pytorch深度学习2: 训练自己的数据集, gpu+anaconda+pycharm+RTX2080ti 笔记_chao_xy的博客-CSDN博客

评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值