一、源码下载
可以从下方的链接下载SSD-Pytorch源码
https://github.com/bubbliiiing/ssd-pytorchhttps://github.com/bubbliiiing/ssd-pytorch
二、环境配置
1、创建环境
使用anaconda进行环境配置,创建一个ssd的环境:
conda create -n ssd python=3.8 -y
2、进入环境
激活anaconda环境:
conda activate ssd
3、torch安装
安装torch和torchvision,我所使用的torch版本为1.9.1+cu111,对应的torchvision版本为0.10.1+cu111:
pip install torch==1.9.1+cu111 torchvision==0.10.1+cu111 -f https://download.pytorch.org/whl/torch_stable.html
4、其他依赖包安装
由于SSD开发时间较早,很多依赖包版本已经过时,建议不要通过requirements.txt安装,自己一个一个安装包,下方就是SSD所需要的所有依赖包:
scipy
matplotlib
opencv_python
tqdm
Pillow
h5py
5、测试配置
需要在SSD代码根目录创建weights文件夹,通过下方链接下载预训练权重并放入文件夹。
运行predict.py,在终端输入img/street.jpg:
最终的检测结果弹窗显示:
至此,SSD全部前置配置全部完成
6、预测过程中出现的问题
6.1 AttributeError: 'ImageDraw' object has no attribute 'textsize'
这是由于Pillow版本过高,已经移除了textsize参数,可以通过降低Pillow版本解决错误
pip install Pillow==9.5.0
三、自己的数据集制作
1、根目录创建文件夹
Annotations文件夹存放所有xml(VOC)格式的标签,ImageSets文件夹创建Main文件夹,YOLO文件夹存放所有YOLO格式(txt)标签
2、修改标签类型
在model_data文件夹内创建txt文件,将自己数据集的标签类型写入:
3、划分数据集,生成索引文件
修改标签文件路径和训练集比例后,运行voc_annotation.py,生成索引文件,索引文件保存在VOCdevkit\VOC2007\ImageSets\Main文件夹内。
4、补全索引文件路径
由于索引文件只生成了图片的名称,没有路径和后缀,所以要通过一个脚本对索引文件进行修改:
def process_txt_file(input_file, output_file):
with open(input_file, 'r') as f_in, open(output_file, 'w') as f_out:
for line in f_in:
line = line.strip() # 去除每行两边的空白符
#填相对路径
new_line = 'VOCdevkit/VOC2007/JPEGImages/' + line + '.jpg\n'
f_out.write(new_line)
# 替换 'input.txt' 和 'output.txt' 为你实际的文件相对路径
process_txt_file('VOCdevkit/VOC2007/ImageSets/Main/val.txt', 'VOCdevkit/VOC2007/ImageSets/Main/output.txt')
四、训练
在train.py文件内修改参数
1、修改标签文件路径
2、修改预训练权重路径
3、修改训练轮数
4、修改线程数和数据集路径
5、开始训练
使用命令开始训练。
python train.py