SSD训练过程
来源:互联网 发布:js cookie不起作用 编辑:程序博客网 时间:2024/06/05 22:48
SSD 使用自己的数据集训练模型
SSD中预留了多种数据集的训练方式,可在caffe/data目录下看到这些数据集预处理的方式,这里使用VOC0712格式数据集
1、准备原始数据
检查原始数据集是否符合以下规范
dataset (数据集目录)
--Annotations
***.xml (标注的物体信息文件)
--Images
***.jpg (图片集)
--ImageSets
test.txt (测试集) (保存格式为文件名,不带扩展名)
train.txt (训练集) (保存格式为文件名,不带扩展名)
--results
(null) (留作保存结果)
2、生成训练数据集
1. 将VOC0712目录下的create_data.sh labelmap_voc.prototxt create_list.sh三个文件复制到数据集目录下,这几个文件可以根据自己的需要修改文件名。
2. 修改create_data.sh内容
root_dir=/home/sea/caffe (指定SSD目录,最好用绝对路径)
data_root_dir="$HOME/caffe/data/Fruit4" (指定原始数据集路径)
dataset_name="Fruit4" (将要生成的数据集名称)
mapfile="$root_dir/data/$dataset_name/labelmap_fruit4.prototxt"
(标签映射,注意labelmap_***.prototxt要与你修改的文件名称相对应)
其他内容暂时没必要修改
3. 修改create_list.sh内容
root_dir=$HOME/caffe/data/Fruit4 (原始数据集路径)
sub_dir=ImageSets (保存train.txt和test.txt的目录名称)
删除第13行for循环,这个for循环的作用是分别处理voc2007和voc2012两个数据集,这里我们只处理一个数据集,因此只提取for循环中的一次操作 (注意下面还有个done)
sed -i "s/^/\Images\//g" $img_file (保存图片的目录名称)
sed -i "s/^/\Annotations\//g" $label_file (保存标注的目录名称)
if [ $dataset == "test" ] (这里对应的test.txt)
if [ $dataset == "train" ] (这里对应的train.txt)
4. 修改labelmap_***.prototxt内容
没有顺序要求,background不需要动,打开文件就知道怎么改了
5. 运行create_list.sh,会看到数据集目录下生成了test.txt train.txt test_name_size.txt
6. 运行create_data.sh,会看到数据集目录下生成了在文件中指定的新的数据集(例如我指定的Fruit4),这个目录下保存着lmdb文件,并且在example/Fruit4目录下省城了lmdb软链接
3、开始训练
1. 复制一份example目录下的ssd文件夹,这里我重命名为fruit4,修改ssd_pascal.py内容
train_data = "examples/Fruit4/Fruit4_train_lmdb" (保存lmdb的路径)
test_data = "examples/Fruit4/Fruit4_test_lmdb"
job_name = "fruit4_{}".format(resize) (job名称)
model_name = "fruit4_{}".format(job_name) (model名称)
save_dir = "/home/sea/caffe/models/fruit4_models/{}".format(job_name)
(保存model的路径)
snapshot_dir = "/home/sea/caffe/models/fruit4_models/{}".format(job_name)
(保存snapshot的路径)
job_dir = "jobs/fruit4_jobs/{}".format(job_name) (job路径)
output_result_dir = "{}/caffe/data/Fruit4/results/".format(os.environ['HOME']) (保存检测结果)
name_size_file = "data/Fruit4/test_name_size.txt"
(test_name_size.txt路径)
label_map_file = "data/Fruit4/labelmap_fruit4.prototxt"
(labelmap_***.prototxt路径)
num_classes = 5 (目标种类+1)
以上为必须修改的地方,其他参数可以根据需要进行修改
2. 运行python example/fruit4/ssd_pascal.py
可以看到网络已经开始训练,训练模型保存在models/fruit4_models_fruit4_300×300目录下
4、使用模型
1. 修改example/fruit4/ssd_pascal_webcam.py内容
num_classes = 5
label_map_file = "data/Fruit4/labelmap_fruit4.prototxt"
job_name = "fruit4_{}".format(resize)
model_name = "fruit4_{}".format(job_name)
(labelmap_***.prototxt路径)
save_dir = "models/fruit4_models/{}_webcam".format(job_name)
(test.prototxt的路径)
snapshot_dir = "models/fruit4_models/{}".format(job_name)
(model路径)
job_dir = "jobs/fruit4_jobs{}_webcam".format(job_name)
(job路径)
2. 运行python example/fruit4/ssd_pascal_webcam.py
前提是你要有摄像头
5、解释一下什么是job
job相当于一个工程,其中存有训练、测试的脚本和日志,其中的脚本或程序是上述步骤生成的可以独立运行的脚本或程序。
检测:
./build/examples/ssd/ssd_detect.bin models/person2016_models/person2016_300x300/deploy.prototxt models/person2016_models/person2016_300x300/person2016_person2016_300x300_iter_60000.caffemodel /home/chase/caffe-ssd/data/person2016/TEST.txt > logs/person2016.txt
- SSD训练过程
- 训练SSD
- ssd训练kiiti数据集和测试过程
- ssd安装与训练
- SSD 安装、训练
- SSD算法训练
- SSD微调训练
- ssd训练错误
- SSD-Tensorflow训练总结
- SSD(Single Shot MultiBox Detector):绘制训练过程loss,accuracy曲线
- Ubuntu16.04+cuda8.0+cudnnV5.1 caffe SSD配置、训练及测试过程
- ubuntu16.04安装CPU版SSD及caffe配置,训练及测试过程
- SSD 安装 训练数据集
- 使用SSD训练文本检测
- tensorflow ssd mobilenet模型训练
- SSD 训练自己的数据
- Caffe-SSD 安装过程
- SSD(Single Shot MultiBox Detector):ubuntu16安装及训练自己的数据集(VOC2007格式)过程记录
- 【机器学习】K-means聚类算法初探
- kafka性能调优
- Android 自定义控件:打造流布局实现热门搜索标签
- 如何提高程序员的生产率 (2)
- I/O多路转接
- SSD训练过程
- List集合中的对象排序
- (简单DP)HDU 2084 数塔
- 获取不经过压缩的图片,本地保存压缩
- 对结构体联合体的认识
- 高级控件之星际评分条(RatingBar)的使用
- 利用StringEscapeUtils对字符串进行各种转义与反转义(Java)
- Android底部导航栏实现(三)之TextView+LinearLayout
- json知识(1)