MobileNetv2-SSDlite训练自己的数据集(二)——训练MSSD

本文详细介绍了如何使用MobileNetv2-SSDlite训练自定义数据集,包括编译caffe-ssd、下载代码、数据集转换为VOC格式、制作lmdb及解决训练中遇到的问题。重点强调了数据集格式的正确性和bndbox参数为整数的重要性。
摘要由CSDN通过智能技术生成

一、编译caffe-ssd

关于如何编译caffe-ssd,可以参考我的上一篇文章《MobileNetv2-SSDlite训练自己的数据集(一)——配置安装caffe-ssd》

二、下载MobileNetv2-SSDlite代码

你可以在github上下载chuanqi305的MobileNetv2-SSDlite代码

git clone https://github.com/chuanqi305/MobileNetv2-SSDLite.git

三、将你的数据集转换为VOC数据集格式

MSSD代码提供了使用VOC数据集训练的方法。如果你要使用自己的数据集训练MSSD,那么你需要先把数据集转换为VOC数据集格式
由于这一部分是由我的队友负责,在这里我就不详细说明了
需要特别注意的是,xml文件中bndbox参数必须为整数。否则,虽然制作lmdb时不会报错,但是训练时会发现loss一直是0,无法训练

四、制作lmdb

caffe-ssd提供了通过VOC数据集制作lmdb的方法
首先,移动到对应目录

cd ~/caffe/data/VOC0712

修改labelmap_voc.prototxt

这个文件由若干个一下模块构成

item {
  name: "none_of_the_above"
  label: 0
  display_name: "background"
}

保持第0项背景类不变,把下面的模块依次改为你的数据集中需要检测的类别,并删除多余的项
如果你的数据集要检测10类物体,那么你的labelmap_voc.prototxt中需要有11个item模块,包括一个背景类和十个物体类,label从0到10

修改creat_list.sh和creat_data.sh

将里面的root_dir改为你的VOC数据集位置,并确保你的数据集已经被重命名为VOC2007
例如,我的数据集地址为/home/bmelab/data/VOCdevkit/VOC2007
那么我的root_dir就是$HOME/data/VOCdevkit/
如果没有VOC2012目录,运行creat_list.sh时会提示

cp: 无法获取'/home/bmelab/data/VOCdevkit//VOC2012/ImageSets/Main/trainval.txt' 的文件状态(stat): 没有那个文件或目录
sed: 无法读取 /home/bmelab/caffe/data/VOC0712/trainval_img.txt: 没有那个文件或目录
sed: 无法读取 /home/bmelab/caffe/data/VOC0712/trainval_img.txt: 没有那个文件或目录
cp: 无法获取'/home/bmelab/data/VOCdevkit//VOC2012/ImageSets/Main/trainval.txt' 的文件状态(stat): 没有那个文件或目录
sed: 无法读取 /home/bmelab/caffe/data/VOC0712/trainval_label.txt: 没有那个文件或目录
sed: 无法读取 /home/bmelab/caffe/data/VOC0712/trainval_label.txt: 没有那个文件或目录
paste: /home/bmelab/caffe/data/VOC0712/trainval_img.txt: 没有那个文件或目录

不过并不影响后面的操作,可以忽略

运行creat_list.sh和creat_data.sh

现在你的V

SELECT TOP 10 tag_id, tag_code, RFID, storage_stock_id, material_id, material_code, data_status, material_name, spec, model, factory_name, supplier_id, supplier_name, lot_number, valid_to_date, material_type, pack_id, unit_code, unit, pack_type, sub_unit_code, sub_unit, dept_name, sub_conversion_rate, conversion_rate, status, original_barcode, udi, create_time, min_material_code, insurance_id, insurance_spec_code, order_in_code, order_in_id, is_used FROM ( SELECT ROW_NUMBER ( ) OVER ( ORDER BY create_time DESC ) PAGE_ROW_NUMBER, tag_id, tag_code, RFID, storage_stock_id, material_id, material_code, data_status, material_name, spec, model, factory_name, supplier_id, supplier_name, lot_number, valid_to_date, material_type, pack_id, unit_code, unit, pack_type, sub_unit_code, sub_unit, dept_name, sub_conversion_rate, conversion_rate, status, original_barcode, udi, create_time, min_material_code, insurance_id, insurance_spec_code, order_in_code, order_in_id, is_used FROM ( SELECT mt.tag_id, mt.tag_code, mt.RFID, mt.storage_stock_id, mss.material_id, mss.material_code, mt.data_status, mi.material_name, mi.spec, mi.model, mi.factory_name, mss.supplier_id, mss.supplier_name, mt.lot_number, mt.valid_to_date, mi.material_type, mss.pack_id, mss.unit_code, CASE WHEN mi.material_type = 'MAT-GZ' THEN mp.pack_unit ELSE mt.unit + '(' + CONVERT ( VARCHAR ( 10 ), mtd.quantity ) + mtd.unit + '/' + mt.unit + ')' END AS unit, mp.pack_type, mss.sub_unit_code, mss.sub_unit, sd.dept_name, mp.sub_conversion_rate, mp.conversion_rate, mt.status, mt.original_barcode, mt.udi, mt.create_time, mi.min_material_code, mi.insurance_id, mi.insurance_spec_code, mssd.order_in_code, mssd.order_in_id, mt.is_used FROM material_tag mt LEFT JOIN material_tag_detail mtd ON mtd.tag_id = mt.tag_id LEFT JOIN material_storage_stock_detail mssd ON mssd.stock_detail_id = mtd.stock_detail_id LEFT JOIN material_storage_stock mss ON mss.stock_id = mssd.storage_stock_id LEFT JOIN material_pack mp ON mp.pack_id = mss.pack_id LEFT JOIN material_info mi ON mi.material_id = mss.material_id LEFT JOIN sys_dept sd ON sd.dept_id = mss.store_dept_id LEFT JOIN material_storage_stock_batch mssb ON mssb.stock_id = mss.stock_id LEFT JOIN order_in oi ON oi.order_in_code = mssb.batch_no LEFT JOIN material_pack mpk ON mpk.material_id = mss.material_id AND mpk.is_purchase_unit = 1 WHERE mt.hospital_id = 1 AND mss.store_dept_id = 367 ) AS PAGE_TABLE_ALIAS ) AS PAGE_TABLE_ALIAS WHERE PAGE_ROW_NUMBER > 0 ORDER BY PAGE_ROW_NUMBER查询速度19秒如何添加索引
06-09
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值