1.在/data/VOCdevkit下建立自己的数据集名称如MyDataSet,在MyDataSet目录下需包含Annotations、ImageSets、JPEGImages三个文件夹:

2、ImageSets下建立Main文件夹

3、新建dir.py 写入下面代码

  1. import os
  2. import random
  3.  
  4. trainval_percent = 0.66
  5. train_percent = 0.5
  6. xmlfilepath = 'Annotations'
  7. txtsavepath = 'ImageSets\Main'
  8. total_xml = os.listdir(xmlfilepath)
  9.  
  10. num=len(total_xml)
  11. list=range(num)
  12. tv=int(num*trainval_percent)
  13. tr=int(tv*train_percent)
  14. trainval= random.sample(list,tv)
  15. train=random.sample(trainval,tr)
  16.  
  17. ftrainval = open('ImageSets/Main/trainval.txt', 'w')
  18. ftest = open('ImageSets/Main/test.txt', 'w')
  19. ftrain = open('ImageSets/Main/train.txt', 'w')
  20. fval = open('ImageSets/Main/val.txt', 'w')
  21.  
  22. for i in list:
  23. name=total_xml[i][:-4]+'\n'
  24. if i in trainval:
  25. ftrainval.write(name)
  26. if i in train:
  27. ftrain.write(name)
  28. else:
  29. fval.write(name)
  30. else:
  31. ftest.write(name)
  32.  
  33. ftrainval.close()
  34. ftrain.close()
  35. fval.close()
  36. ftest .close()

4、运行python  dir.py,在ImageSets\Main里有四个txt文件:test.txt train.txt trainval.txt val.txt

5、在caffe-ssd/data目录下创建一个自己的文件夹MyDataSet文件夹,把data/VOC0712目录下的create_list.sh 、create_data.sh、labelmap_voc.prototxt 这三个文件拷贝到MyDataSet下

6、在caffe-ssd/examples下创建MyDataSet文件夹,用于存放后续生成的lmdb文件

7、修改labelmap_voc.prototxt文件(改成自己的类别),以及create_list.sh和create_data.sh文件中的相关路径

  1. #labelmap_voc.prototxt需修改:
  2. item {
  3. name: "none_of_the_above"
  4. label: 0
  5. display_name: "background"
  6. }
  7. item {
  8. name: "aeroplane"
  9. label: 1
  10. display_name: "person"
  11. }
  12.  
  13. #create_list.sh需修改:
  14. root_dir=/home/yi_miao/data/Mydataset/
  15. ...
  16. for name in yourownset
  17. ...
  18. #if [[ $dataset == "test" && $name == "VOC2012" ]]
  19. # then
  20. # continue
  21. # fi
  22.  
  23. #create_data.sh需修改:
  24. root_dir=/home/yi_miao/caffe-ssd
  25. data_root_dir="/home/yi_miao/data/Mydataset"
  26. dataset_name="Mydataset"

8、运行脚本

  1. ./data/mydataset/create_list.sh
  2. ./data/mydataset/create_data.sh

9、训练

caffe/models/VGGNet/VGGNet 预训练模型

2、

  1. 82行:train_data路径;
  2. 84行:test_data路径;
  3. 237-246行:model_namesave_dirsnapshot_dirjob_diroutput_result_dir路径;
  4. 259-263行:name_size_filelabel_map_file路径;
  5. 266行:num_classes修改为1 + 类别数;
  6. 360行:num_test_image:测试集图片数目

另外, 如果你只有一个GPU, 需要修改285行: gpus=”0,1,2,3” ===> 改为”0” ,如果出现 out of memory,则将batch size 相应改小一些。

3、训练

  1. python ./examples/ssd/ssd_pascal.py

4、测试

1.测试单张图片 
测试程序为/examples/ssd/ssd_detect.py,运行之前,我们需要修改相关路径代码,ssd_detect.py作如下修改(#部分为修改内容):

  1. parser.add_argument('--labelmap_file',
  2. default='data/VOC0712/labelmap_voc.prototxt')#**修改为你的路径**
  3. parser.add_argument('--model_def',
  4. default='models/VGGNet/VOC0712/SSD_300x300/deploy.prototxt')#**修改为你的路径**
  5. parser.add_argument('--image_resize', default=300, type=int)
  6. parser.add_argument('--model_weights',
  7. default='models/VGGNet/VOC0712/SSD_300x300/'#**修改为你的路径**
  8. 'VGG_VOC0712_SSD_300x300_iter_120000.caffemodel')
  9. parser.add_argument('--image_file', default='examples/images/fish-bike.jpg')#**修改为你的路径**

Python ./example/ssd/ssd_detect.py

c++测试

  1. cd ssd-caffe
  2. $ build/examples/ssd/ssd_detect.bin models/VGGNet/VOC0712/SSD_300x300/deploy.prototxt models/VGGNet/VOC0712/SSD_300x300/VGG_VOC0712_SSD_300x300_iter_120000.caffemodel examples/images/test.txt

其中test.txt内容为

  1. examples/images/1.jpg
  2. examples/images/2-bike.jpg
  3. examples/images/3.jpg

结果可视化

  1. $ python examples/ssd/plot_detections.py examples/images/result.txt /home/your path/ssd-caffe --labelmap-file data/VOC0712/labelmap_voc.prototxt --save-dir examples/
  1. 找不到
  1. caffe.pb.h
  1. $ protoc src/caffe/proto/caffe.proto --cpp_out=.
  2. $ sudo mkdir include/caffe/proto
  3. $ sudo mv src/caffe/proto/caffe.pb.h include/caffe/proto

参考:https://blog.csdn.net/yu734390853/article/details/79481660

ssd制作数据和训练的更多相关文章

  1. caffe_ssd学习-用自己的数据做训练

    几乎没用过linux操作系统,不懂shell编程,linux下shell+windows下UltraEdit勉勉强强生成了train.txt和val.txt期间各种错误辛酸不表,照着examples/ ...

  2. 如何利用excel中的数据源制作数据地图

    关于这个问题,制作数据地图的方法已不新奇,总体来说有这么几类方案: 一类方案:直接在excel里制作 优势:个人小数据量应用较为方便简单 缺点:需要熟悉VBA,且更强大的功能对VBA水平要求较高 1. ...

  3. Fine-tuning Convolutional Neural Networks for Biomedical Image Analysis: Actively and Incrementally如何使用尽可能少的标注数据来训练一个效果有潜力的分类器

    作者:AI研习社链接:https://www.zhihu.com/question/57523080/answer/236301363来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载 ...

  4. 迁移学习算法之TrAdaBoost ——本质上是在用不同分布的训练数据,训练出一个分类器

    迁移学习算法之TrAdaBoost from: https://blog.csdn.net/Augster/article/details/53039489 TradaBoost算法由来已久,具体算法 ...

  5. kaldi使用thchs30数据进行训练并执行识别操作

    操作系统 : Ubutu18.04_x64 gcc版本 :7.4.0 数据准备及训练 数据地址: http://www.openslr.org/18/ 在 egs/thchs30/s5 建立 thch ...

  6. Python 爬取 热词并进行分类数据分析-[云图制作+数据导入]

    日期:2020.01.28 博客期:136 星期二 [本博客的代码如若要使用,请在下方评论区留言,之后再用(就是跟我说一声)] 所有相关跳转: a.[简单准备] b.[云图制作+数据导入](本期博客) ...

  7. 使用 TensorBoard 可视化模型、数据和训练

    使用 TensorBoard 可视化模型.数据和训练 在 60 Minutes Blitz 中,我们展示了如何加载数据,并把数据送到我们继承 nn.Module 类的模型,在训练数据上训练模型,并在测 ...

  8. LUSE: 无监督数据预训练短文本编码模型

    LUSE: 无监督数据预训练短文本编码模型 1 前言 本博文本应写之前立的Flag:基于加密技术编译一个自己的Python解释器,经过半个多月尝试已经成功,但考虑到安全性问题就不公开了,有兴趣的朋友私 ...

  9. VGGnet——从TFrecords制作到网络训练

    作为一个小白中的小白,多折腾总是有好处的,看了入门书和往上一些教程,很多TF的教程都是从MNIST数据集入手教小白入TF的大门,都是直接import MNIST,然后直接构建网络,定义loss和opt ...

随机推荐

  1. Python3 tkinter基础 Label 显示的文字换行

             Python : 3.7.0          OS : Ubuntu 18.04.1 LTS         IDE : PyCharm 2018.2.4       Conda ...

  2. 我为什么选择Go语言(Golang)

    作为一个以开发为生的程序员,在我心目中编程语言如同战士手里的武器,好与不好主要看使用的人是否趁手.是否适合,没有绝对的高低之分. 从2013年起,学习并使用Golang已经有4年时间了,我想叙述一下我 ...

  3. bzoj1741 [Usaco2005 nov]Asteroids 穿越小行星群 最小点覆盖

    链接 https://www.lydsy.com/JudgeOnline/problem.php?id=1741 思路 消除所有的小行星 每个点(x,y)只有选择x或者y才能被覆盖 二分图最小点覆盖= ...

  4. 【做题】cf603E——线段树分治

    首先感谢题解小哥,他在标算外又总结了三种做法. 此处仅提及最后一种做法. 首先考虑题目中要求的所有结点度数为奇数的限制. 对于每一个联通块,因为所有结点总度数是偶数,所以总结点数也必须是偶数的.即所有 ...

  5. HashMap 和 HashTable 的区别

    1. 存储结构 HashMap HashTable 数组 + 链表/红黑树 数组 + 链表 HashMap的存储规则: 优先使用数组存储, 如果出现Hash冲突, 将在数组的该位置拉伸出链表进行存储( ...

  6. Hyper-v虚拟机

    Hyper-V1:创建和管理虚拟机 Hyper-V2:向VM增加虚拟硬盘 Hyper-V3:虚拟机的配置 使用Hyper-V创建虚拟机 Hyper-v 安装CentOS 7 (其他虚拟机一样参考)

  7. sublime text 中文显示异常

    本文链接:sublime text 中文显示异常 http://www.cnblogs.com/daysme/p/7549857.html 前言 sublime text 3143 用了一年时候,最近 ...

  8. -第3章 jQuery方法实现下拉菜单显示和隐藏

    知识点 jquery 的引入方式 本地下载引入 在线引入 children 只获取子元素,不获取孙元素 show() 显示. hide() 隐藏. 完整代码 <!-- Author: XiaoW ...

  9. Java—网络编程基础

    URL的应用: 获得网页源代码可以用字节流.字符流,流的获取可以用url.openStream(),也可以用con.getInputStream(): 字节流: URL url = new URL(& ...

  10. 无损录制acestream直播流

    很多人选择用acestream收看一些频道,往往比较高清,但很多人不知道如何录制. 其实方法很简单,用ace自带的播放器播放后: 1.打开potplayer,右击->打开链接 2.把当前播放的a ...