网站建设开发ppt模板,模板王字体网,企业网站建设品牌,千锋培训价目表承接上一篇SSD介绍#xff1a;SSDcaffe︱Single Shot MultiBox Detector 目标检测#xff08;一#xff09; 如果自己要训练SSD模型呢#xff0c;关键的就是LMDB格式生成#xff0c;从官方教程weiliu89/caffe来看#xff0c;寥寥几行code#xff0c;但是前面的数据整理… 承接上一篇SSD介绍SSDcaffe︱Single Shot MultiBox Detector 目标检测一 如果自己要训练SSD模型呢关键的就是LMDB格式生成从官方教程weiliu89/caffe来看寥寥几行code但是前面的数据整理真实要了老命。 教程其实就是一种fine-tuning在VGG基础上进行训练SSD框架。 一般SSD的数据来源看到好多人都在用这款框架进行数据标注BBox-Label-Tool 也有人在这基础上进行简单修改详见博客SSD框架训练自己的数据集 或者用OpenCV重写深度学习ssd配置并在VGG模型上训练自己的数据 还有一些自己开发的小工具图像标注VS2013项目 . 0 官方教程训练过程 1下载VGGNet.caffemodel fully convolutional reduced (atrous) VGGNet 2下载VOC2007 and VOC2012两个数据集放在/caffe/data目录下 3创建LMDB文件 ./data/VOC0712/create_list.sh
./data/VOC0712/create_data.sh1212 4训练 python examples/ssd/ssd_pascal.py11 以上是官方教程常规训练步骤并不难。但是自己训练时候的数据处理比较麻烦。 . 1 数据集准备与形成 1.1 所需准备文件介绍 其中训练所需的文件夹包括三大类 dataset 数据集目录 Annotations *.xml 标注的物体信息文件 Images *.jpg 图片集 ImageSets 保存格式为文件名不带扩展名 训练集 train.txt 训练验证集 trainval.txt 测试集 test.txt 验证集 val.txt 1.2 训练文件介绍 1 create_list.sh:用于生成三类文件列表 - test_name_size测试集图像大小 - test测试集图像-标签一一对应 - trainval训练集图像-标签一一对应 这是将数据集做成方便之后生成lmdb的路径信息文件注意将其中的root_dir和第二个for循环中的变量改为自己的路径就好。 图像-标签一一对应 Images/000112.png Labels/000112.xml
Images/001365.png Labels/001365.xml1212 同时注意名称的一致。 000800 1241 376
006206 1242 3751212 test_name_size里面000800就是图片名称1241*376就是图片尺寸高 长 2create_data.sh 生成LMDB文件以上的create_list准备好之后即可 3labelmap_voc.prototxt 目标检测的标签文件 该文件主要记录需要训练识别的n种对象的信息第一类是background是不变的对于Pascal VOC数据集来说需要识别20种对象所以后面还有20个label。与传统的机器学习不太一样的是以前需要输入正负样本在caffe种不管是faster rcnn还是ssd都是只用对训练图像将识别对象的坐标信息标注即可除了标注信息以外的部分都会当做background去处理。 . 2 数据集生成方案 训练的数据集三种方案 第一保持原来的文件目录结构及文件名不变 只替换里面的数据通用。第二重新新建一个与之前类似的目录结构改成自己命名的文件夹第二种方法有一定的风险性需要修改程序里涉及数据路径的代码。第三txt格式数据变成LMDB参考githubhttps://github.com/jinfagang/kitti-ssd第三种是直接用txt格式保存就可以生成LMDB的办法我觉得这个比较好但是笔者最终没有实验成功…譬如 class_index xmin ymin xmax ymax11 第一种方案里面的一些小技巧 1还有将txt变成xml格式的小工具见博客将数据集做成VOC2007格式用于Faster-RCNN训练 2将BBox-Label-Tool下的txt格式保存的bounding box信息转换成VOC数据格式下以xml方式表示:见博客SSD框架训练自己的数据集 3将csv变成xml文件类型 luuuyi/umdfaces2VOC2007 2.1 训练流程 本节参考SSD框架训练自己的数据集 - 第一步create_list.sh生成test_name_size.txt、test.txt、trainval.txt - 第二步修改labelmap_voc.prototxt标签文件同时需要注意标签文件必须多一个background的标签作为编号0 - 第三步create_data.sh生成LMDB - 第四步修改ssd_pascal.py 主要修改点1train_data和test_data修改成指向自己的数据集LMDBtrain_data examples/indoor/indoor_trainval_lmdbtest_data examples/indoor/indoor_test_lmdb
2 num_test_image该变量修改成自己数据集中测试数据的数量
3num_classes 该变量修改成自己数据集中 标签类别数量数 1123456123456 第五步训练 python examples/ssd/ssd_pascal.py 2.2 训练脚本内容存储 会在相应的路径下生成jobs文件夹其中包含了这一次训练的脚本文件并且会记录caffe执行只一次训练的日志信息。 参考Ubuntu上用caffe的SSD方法训练Pascal VOC数据集 jobs文件夹下有 .log文件运行记录时间迭代次数等信息 .caffemodel文件权重文件 deploy.prototxt、train_val.prototxt等 . 参考 深度学习ssd配置并在VGG模型上训练自己的数据 SSD 安装、训练 Ubuntu上用caffe的SSD方法训练umdfaces数据集 重点参考 使用faster rcnn训练umdfaces数据集 将数据集做成VOC2007格式用于Faster-RCNN训练 Caffe-SSD 训练自己的数据集教程 SSD框架训练自己的数据集 . 报错一 cudasucess(10vs0)11 解决修改pythonssd_pascal.py文件gpus’0,1,2,3’,如果有一块GPU,则删除123有两块则删除23 . 延伸一大致的运算效率 K80-单GPU-一天可以迭代1w次 6天将近7w次 每1w次迭代之后会计算一个mAP 数据来源Ubuntu上用caffe的SSD方法训练umdfaces数据集 TX.P笔者自己训练大概的运算效率是5千/小时运行官方教程时