ssd安装

本文记录了使用SSD模型进行目标检测的训练过程,包括创建LMDB数据集、解决训练中遇到的问题如修正base_lr避免损失值溢出,并提供了解决mbox_loss出现nan值的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

github地址:

https://github.com/weiliu89/caffe/tree/ssd


Create the LMDB file.

需要修改相对应的图像文件的存储位置

./data/VOC0712/create_data.sh
会报错,'module' object has no attribute 'LabelMap' 

参考https://github.com/weiliu89/caffe/issues/4


Train your model and evaluate the model on the fly.

直接执行

python examples/ssd/ssd_pascal.py
训练后,得到下面的结果

 Learning Rate Policy: multistep
I0216 10:14:54.943616 16036 solver.cpp:243] Iteration 0, loss = 22.6308
I0216 10:14:54.943655 16036 solver.cpp:259]     Train net output #0: mbox_loss = 22.6308 (* 1 = 22.6308 loss)
I0216 10:14:54.943709 16036 sgd_solver.cpp:138] Iteration 0, lr = 0.001
I0216 10:15:13.904834 16036 solver.cpp:243] Iteration 10, loss = 17.3445
I0216 10:15:13.904867 16036 solver.cpp:259]     Train net output #0: mbox_loss = 16.4141 (* 1 = 16.4141 loss)
I0216 10:15:15.818320 16036 sgd_solver.cpp:138] Iteration 10, lr = 0.001
I0216 10:15:33.259543 16036 solver.cpp:243] Iteration 20, loss = 17.2321
I0216 10:15:33.259728 16036 solver.cpp:259]     Train net output #0: mbox_loss = 19.3067 (* 1 = 19.3067 loss)
I0216 10:15:35.130200 16036 sgd_solver.cpp:138] Iteration 20, lr = 0.001
I0216 10:15:53.582626 16036 solver.cpp:243] Iteration 30, loss = 15.4459
I0216 10:15:53.582665 16036 solver.cpp:259]     Train net output #0: mbox_loss = 13.2875 (* 1 = 13.2875 loss)
I0216 10:15:54.733492 16036 sgd_solver.cpp:138] Iteration 30, lr = 0.001
I0216 10:16:12.849376 16036 solver.cpp:243] Iteration 40, loss = 15.5455
I0216 10:16:12.849567 16036 solver.cpp:259]     Train net output #0: mbox_loss = 16.904 (* 1 = 16.904 loss)
I0216 10:16:14.618623 16036 sgd_solver.cpp:138] Iteration 40, lr = 0.001
I0216 10:16:30.597581 16036 solver.cpp:243] Iteration 50, loss = 19.9011
I0216 10:16:30.597620 16036 solver.cpp:259]     Train net output #0: mbox_loss = 21.5839 (* 1 = 21.5839 loss)
I0216 10:16:31.513517 16036 sgd_solver.cpp:138] Iteration 50, lr = 0.001
I0216 10:16:50.461427 16036 solver.cpp:243] Iteration 60, loss = nan
I0216 10:16:50.461556 16036 solver.cpp:259]     Train net output #0: mbox_loss = nan (* 1 = nan loss)
I0216 10:16:51.435171 16036 sgd_solver.cpp:138] Iteration 60, lr = 0.001
I0216 10:17:10.880903 16036 solver.cpp:243] Iteration 70, loss = nan
I0216 10:17:10.880944 16036 solver.cpp:259]     Train net output #0: mbox_loss = nan (* 1 = nan loss)
I0216 10:17:10.881077 16036 sgd_solver.cpp:138] Iteration 70, lr = 0.001

损失值溢出,从网上找来的意见是修改base_lr,乘以0.1,改为0.0001

只是修改solver.prototxt中的参数,重新执行后base_lr没有改变,但是mbox_loss没有再出现=nan的情况


ctrl+c中断程序后,再重新执行,需要删除/home/idc/deep/gjj/caffe/models/VGGNet/VOC0712/SSD_300x300路径下的临时文件,不然会从中断点继续执行。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值