前言
-
如何在anconda创建ssd虚拟环境和用pycham为项目配置ssd虚拟环境见上一篇(windows)ssd深度学习1:pytorch环境配置gpu+windows11+anaconda+pycharm+RTX3050 笔记_chao_xy的博客-CSDN博客
-
配置完成后打开pycharm终端为
-
如果你的图像为单通道灰度图像(一定要确认!!!我在这里折腾了一天),如果不是则忽略
-
转换为三通道图像SSD训练单通道图像_BookIdiot的博客-CSDN博客
-
将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')
正式开始
数据集准备
-
在ssd根目录下新建datasets文件夹
-
在文件夹中新建VOC2007和VOC2012,VOC2012是VOC2007的复制内容
-
确认你的各文件为以下格式,完毕
训练前文件修改
-
修改voc.py
根目录ssd/data/datasets/voc.py
找到class_name ,保留__background__,其余改为你自己的种类。种类名不能含大写字母,xml修改方法见前言2.b的参考链接。
-
修改defaults.py
根目录ssd/config/defaults.py
找到C.MODEL.NUM_CLASSES
改为你自己的检测种类数+1
-
修改nms.py
根目录/ssd/utils/nms.py找到
if torchvision.__version__ >= '0.3.0':
改为
if torchvision.__version__ >= '0.0.0':
-
修改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
关于linux上ssd环境配置及训练过程,可以参考:
(linux)ssd深度学习1:pytorch环境配置gpu+anaconda+pycharm+RTX2080ti 笔记_chao_xy的博客-CSDN博客
(linux) ssd-pytorch深度学习2: 训练自己的数据集, gpu+anaconda+pycharm+RTX2080ti 笔记_chao_xy的博客-CSDN博客