本人耗费数日时间,成功完成了windows与ubuntu系统下caffe-ssd环境的搭建、脚本优化,并最终整合出一套高效且可自定义训练的完整项目包。该方案极大简化了训练流程,用户在配置好caffe-ssd环境后,无需再繁琐地编写或修改大量脚本,也不必进行复杂的数据格式转换,即可快速启动自己的数据集训练任务。虽然不敢称专家,但对整个流程已相当熟悉,所有核心脚本均为本人亲手编写。先展示一张在windows系统中训练自定义数据时的运行界面:

再来看一张Ubuntu系统下CPU版Caffe-SSD的训练截图:

两个平台的整体流程基本一致,但在脚本实现上略有差异:Windows主要依赖bat批处理文件,而Ubuntu则以Python和Shell脚本为主。接下来将分别介绍两个平台的使用方法。
Windows平台使用说明:
本方案的一大优势是高度自动化,只需将项目放置指定路径,几乎无需手动修改代码即可运行。
实验环境:
- Windows 10 专业版 64位
- Caffe-SSD CPU版本
操作步骤:
-
将源码解压至
D:\caffe-ssd-microsoft
目录下,并将myproj
文件夹复制到该目录中,与主Caffe文件夹同级。
-
进入
D:\caffe-ssd-microsoft\myproj\data\VOCdevkit\VOC2012
目录:- 将自己的
.jpg
图像文件放入JPEGImages
文件夹; - 对应的XML标注文件放入
Annotations
文件夹。
- 将自己的
删除
D:\caffe-ssd-microsoft\myproj\lmdb
目录下的train_lmdb
和test_lmdb
文件夹,避免后续生成LMDB时出错。-
打开
bat
文件夹,其中包含一个xml2txt.py
脚本,用于将XML标注转换为训练所需的文本列表。- 打开命令行窗口,切换至
bat
目录; - 执行命令:
python xml2txt.py
; - 此时会在
txt
文件夹中生成train.txt
和test.txt
,格式为:图片名.xml名
; - 默认按80%训练集、20%测试集划分,如需调整比例,可修改脚本内参数。
- 打开命令行窗口,切换至
-
继续在
bat
目录执行:python get_name_size.py
;- 生成
test_name_size.txt
文件,内容为:文件名(无后缀) 高度 宽度。
- 生成
双击运行
create_lmdb.bat
,自动完成训练与测试LMDB数据库的生成。
⚠️ 注意:请确保之前已删除旧的train_lmdb
和test_lmdb
文件夹,否则会报错。最后双击
starttrain.bat
,即可启动模型训练流程。
Ubuntu平台使用说明:
由于Linux系统多采用绝对路径,因此需要根据实际用户名进行一次路径替换,其余部分基本无需更改。
实验环境:
- Ubuntu 16.04
- Caffe-SSD CPU版本
操作步骤:
-
在
/home
下新建caffe-ssd
目录,将Caffe-SSD主程序放入其中,并将myproj
文件夹与其置于同一层级。

-
进入
/home/fut/caffe-ssd/myproj/data/VOCdevkit/VOC2012
:- 图像放入
JPEGImages
; - XML标注放入
Annotations
。
- 图像放入
清空
/home/fut/caffe-ssd/myproj/lmdb
中的train_lmdb
和test_lmdb
文件夹。-
打开
script/xml2txt.py
,将其中的用户名(如fut
)替换为当前系统的用户名,建议使用全局替换方式批量修改路径;- 切换到
script
目录,运行:python xml2txt.py
; - 生成
train.txt
和test.txt
,格式同上,划分比例可在脚本中调整。
- 切换到
-
修改
get_name_size.py
中的用户名路径,保存后执行:python get_name_size.py
;- 生成
test_name_size.txt
,记录测试集图像尺寸信息。
- 生成
-
在终端执行:
python train_lmdb_gen.py
,生成训练用LMDB数据;- 输出路径为
lmdb/train_lmdb
。
- 输出路径为
-
执行:
python test_lmdb_gen.py
,生成测试用LMDB数据;- 输出路径为
lmdb/test_lmdb
。
- 输出路径为
-
最后运行:
python ssd_pascal.py
开始训练;- 该脚本中多数参数均可自定义,只需确保用户名路径正确即可;
- 此配置适用于目标检测任务。
若在Caffe-SSD安装配置过程中遇到问题,可私信联系,提供有偿技术支持。
目前因设备限制暂未部署GPU版本,但基于现有结构,迁移至GPU环境难度不大,属于常规操作范畴。











