ssd制作数据和训练
1.在/data/VOCdevkit下建立自己的数据集名称如MyDataSet,在MyDataSet目录下需包含Annotations、ImageSets、JPEGImages三个文件夹:
2、ImageSets下建立Main文件夹
3、新建dir.py 写入下面代码
- import os
- import random
- trainval_percent = 0.66
- train_percent = 0.5
- xmlfilepath = 'Annotations'
- txtsavepath = 'ImageSets\Main'
- total_xml = os.listdir(xmlfilepath)
- num=len(total_xml)
- list=range(num)
- tv=int(num*trainval_percent)
- tr=int(tv*train_percent)
- trainval= random.sample(list,tv)
- train=random.sample(trainval,tr)
- ftrainval = open('ImageSets/Main/trainval.txt', 'w')
- ftest = open('ImageSets/Main/test.txt', 'w')
- ftrain = open('ImageSets/Main/train.txt', 'w')
- fval = open('ImageSets/Main/val.txt', 'w')
- for i in list:
- name=total_xml[i][:-4]+'\n'
- if i in trainval:
- ftrainval.write(name)
- if i in train:
- ftrain.write(name)
- else:
- fval.write(name)
- else:
- ftest.write(name)
- ftrainval.close()
- ftrain.close()
- fval.close()
- 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文件中的相关路径
- #labelmap_voc.prototxt需修改:
- item {
- name: "none_of_the_above"
- label: 0
- display_name: "background"
- }
- item {
- name: "aeroplane"
- label: 1
- display_name: "person"
- }
- #create_list.sh需修改:
- root_dir=/home/yi_miao/data/Mydataset/
- ...
- for name in yourownset
- ...
- #if [[ $dataset == "test" && $name == "VOC2012" ]]
- # then
- # continue
- # fi
- #create_data.sh需修改:
- root_dir=/home/yi_miao/caffe-ssd
- data_root_dir="/home/yi_miao/data/Mydataset"
- dataset_name="Mydataset"
8、运行脚本
- ./data/mydataset/create_list.sh
- ./data/mydataset/create_data.sh
9、训练
caffe/models/VGGNet/VGGNet 预训练模型
2、
- 82行:train_data路径;
- 84行:test_data路径;
- 237-246行:model_name、save_dir、snapshot_dir、job_dir、output_result_dir路径;
- 259-263行:name_size_file、label_map_file路径;
- 266行:num_classes修改为1 + 类别数;
- 360行:num_test_image:测试集图片数目
另外, 如果你只有一个GPU, 需要修改285行: gpus=”0,1,2,3” ===> 改为”0” ,如果出现 out of memory,则将batch size 相应改小一些。
3、训练
- python ./examples/ssd/ssd_pascal.py
4、测试
1.测试单张图片
测试程序为/examples/ssd/ssd_detect.py,运行之前,我们需要修改相关路径代码,ssd_detect.py作如下修改(#部分为修改内容):
- parser.add_argument('--labelmap_file',
- default='data/VOC0712/labelmap_voc.prototxt')#**修改为你的路径**
- parser.add_argument('--model_def',
- default='models/VGGNet/VOC0712/SSD_300x300/deploy.prototxt')#**修改为你的路径**
- parser.add_argument('--image_resize', default=300, type=int)
- parser.add_argument('--model_weights',
- default='models/VGGNet/VOC0712/SSD_300x300/'#**修改为你的路径**
- 'VGG_VOC0712_SSD_300x300_iter_120000.caffemodel')
- parser.add_argument('--image_file', default='examples/images/fish-bike.jpg')#**修改为你的路径**
Python ./example/ssd/ssd_detect.py
c++测试
- cd ssd-caffe
- $ 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内容为
- examples/images/1.jpg
- examples/images/2-bike.jpg
- examples/images/3.jpg
结果可视化
- $ 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/
- 找不到
- caffe.pb.h
- $ protoc src/caffe/proto/caffe.proto --cpp_out=.
- $ sudo mkdir include/caffe/proto
- $ sudo mv src/caffe/proto/caffe.pb.h include/caffe/proto
参考:https://blog.csdn.net/yu734390853/article/details/79481660
ssd制作数据和训练的更多相关文章
- caffe_ssd学习-用自己的数据做训练
几乎没用过linux操作系统,不懂shell编程,linux下shell+windows下UltraEdit勉勉强强生成了train.txt和val.txt期间各种错误辛酸不表,照着examples/ ...
- 如何利用excel中的数据源制作数据地图
关于这个问题,制作数据地图的方法已不新奇,总体来说有这么几类方案: 一类方案:直接在excel里制作 优势:个人小数据量应用较为方便简单 缺点:需要熟悉VBA,且更强大的功能对VBA水平要求较高 1. ...
- Fine-tuning Convolutional Neural Networks for Biomedical Image Analysis: Actively and Incrementally如何使用尽可能少的标注数据来训练一个效果有潜力的分类器
作者:AI研习社链接:https://www.zhihu.com/question/57523080/answer/236301363来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载 ...
- 迁移学习算法之TrAdaBoost ——本质上是在用不同分布的训练数据,训练出一个分类器
迁移学习算法之TrAdaBoost from: https://blog.csdn.net/Augster/article/details/53039489 TradaBoost算法由来已久,具体算法 ...
- kaldi使用thchs30数据进行训练并执行识别操作
操作系统 : Ubutu18.04_x64 gcc版本 :7.4.0 数据准备及训练 数据地址: http://www.openslr.org/18/ 在 egs/thchs30/s5 建立 thch ...
- Python 爬取 热词并进行分类数据分析-[云图制作+数据导入]
日期:2020.01.28 博客期:136 星期二 [本博客的代码如若要使用,请在下方评论区留言,之后再用(就是跟我说一声)] 所有相关跳转: a.[简单准备] b.[云图制作+数据导入](本期博客) ...
- 使用 TensorBoard 可视化模型、数据和训练
使用 TensorBoard 可视化模型.数据和训练 在 60 Minutes Blitz 中,我们展示了如何加载数据,并把数据送到我们继承 nn.Module 类的模型,在训练数据上训练模型,并在测 ...
- LUSE: 无监督数据预训练短文本编码模型
LUSE: 无监督数据预训练短文本编码模型 1 前言 本博文本应写之前立的Flag:基于加密技术编译一个自己的Python解释器,经过半个多月尝试已经成功,但考虑到安全性问题就不公开了,有兴趣的朋友私 ...
- VGGnet——从TFrecords制作到网络训练
作为一个小白中的小白,多折腾总是有好处的,看了入门书和往上一些教程,很多TF的教程都是从MNIST数据集入手教小白入TF的大门,都是直接import MNIST,然后直接构建网络,定义loss和opt ...
随机推荐
- Python3 tkinter基础 Label 显示的文字换行
Python : 3.7.0 OS : Ubuntu 18.04.1 LTS IDE : PyCharm 2018.2.4 Conda ...
- 我为什么选择Go语言(Golang)
作为一个以开发为生的程序员,在我心目中编程语言如同战士手里的武器,好与不好主要看使用的人是否趁手.是否适合,没有绝对的高低之分. 从2013年起,学习并使用Golang已经有4年时间了,我想叙述一下我 ...
- bzoj1741 [Usaco2005 nov]Asteroids 穿越小行星群 最小点覆盖
链接 https://www.lydsy.com/JudgeOnline/problem.php?id=1741 思路 消除所有的小行星 每个点(x,y)只有选择x或者y才能被覆盖 二分图最小点覆盖= ...
- 【做题】cf603E——线段树分治
首先感谢题解小哥,他在标算外又总结了三种做法. 此处仅提及最后一种做法. 首先考虑题目中要求的所有结点度数为奇数的限制. 对于每一个联通块,因为所有结点总度数是偶数,所以总结点数也必须是偶数的.即所有 ...
- HashMap 和 HashTable 的区别
1. 存储结构 HashMap HashTable 数组 + 链表/红黑树 数组 + 链表 HashMap的存储规则: 优先使用数组存储, 如果出现Hash冲突, 将在数组的该位置拉伸出链表进行存储( ...
- Hyper-v虚拟机
Hyper-V1:创建和管理虚拟机 Hyper-V2:向VM增加虚拟硬盘 Hyper-V3:虚拟机的配置 使用Hyper-V创建虚拟机 Hyper-v 安装CentOS 7 (其他虚拟机一样参考)
- sublime text 中文显示异常
本文链接:sublime text 中文显示异常 http://www.cnblogs.com/daysme/p/7549857.html 前言 sublime text 3143 用了一年时候,最近 ...
- -第3章 jQuery方法实现下拉菜单显示和隐藏
知识点 jquery 的引入方式 本地下载引入 在线引入 children 只获取子元素,不获取孙元素 show() 显示. hide() 隐藏. 完整代码 <!-- Author: XiaoW ...
- Java—网络编程基础
URL的应用: 获得网页源代码可以用字节流.字符流,流的获取可以用url.openStream(),也可以用con.getInputStream(): 字节流: URL url = new URL(& ...
- 无损录制acestream直播流
很多人选择用acestream收看一些频道,往往比较高清,但很多人不知道如何录制. 其实方法很简单,用ace自带的播放器播放后: 1.打开potplayer,右击->打开链接 2.把当前播放的a ...