使用SSD训练文本检测
来源:互联网 发布:淘宝如何买岛国动作片 编辑:程序博客网 时间:2024/06/05 22:37
0 介绍
根据李斯琦操作步骤总结如下:
- 原项目地址:weiliu89/caffe
- 所用数据地址:Robust Reading Competition Challenge 2: Reading Text in Scene Images 本文以此数据为例,生成ssd训练所用的lmdb格式。
- 使用ssd进行文本检测的项目:chenxinpeng/SSD_scene_text_detection
- 使用ssd进行文本检测的博客 SSD: Signle Shot Detector 用于自然场景文字检测
注意:
(1)我没有直接将此项目中文件放入ssd weiliu89/caffe的目录中,而是把此项目放入ssd同级目录下,这样比较清楚。当然路径要注意修改。
(2)所有代码及说明已经放到github上。地址:ZhangXinNan/SSD_scene_text_detection
(3)我的目录结构如下:
github caffe_ssd SSD_scene_text_detection
1 SceneText数据介绍
下载数据解压后,有两个文件夹,test-textloc-gt和train-textloc,我们把它放到 xx/SSD_scene_text_detection/data/scenetext下边。目录结构如下
SSD_scene_text_detection data scenetext test-textloc-gt train-textloc
那两个文件夹下分别有xxx.jpg和gt_xxx.txt,xxx代表一个数字,gt_xxx.txt代表xxx.jpg所对应的标注数据,例如less data/scenetext/train-textloc/gt_100.txt
158,128,412,182,"Footpath"442,128,501,170,"To"393,198,488,240,"and"63,200,363,242,"Colchester"71,271,383,313,"Greenstead"
每一行代表一个字符区域的标信息,每行有5列,用逗号分隔,前4列代表坐标,最后1列代表字符内容。
2 生成转lmdb所用文件
2.1 生成trainval.txt和test.txt
2.1.1 生成标注的xml文件
先将给定的 gt_**.txt 标签文件转换为 Pascal VOC XML 格式。
见代码create_xml.py
代码中是把xml文件也放到了jpg和txt文件所放目录。例如:
data/scenetext/test-textloc-gt/156.jpgdata/scenetext/test-textloc-gt/156.xmldata/scenetext/test-textloc-gt/gt_156.txt
2.1.2 生成文件列表
见代码create_train_test_file.py
生成的文件trainval.txt和test.txt直接放到了data/scenetext目录下
SSD_scene_text_detection data scenetext test-textloc-gt train-textloc test.txt trainval.txt
2.2 生成test_name_size.txt
见代码test_name_size.py,得到train_name_size.txt和test_name_size.txt
SSD_scene_text_detection data scenetext test-textloc-gt train-textloc test.txt trainval.txt test_name_size.txt train_name_size.txt
2.3 生成labelmap_voc_scenetext.prototxt
创建文件labelmap_voc_scenetext.prototxt,填写如下:
item { name: "none_of_the_above" label: 0 display_name: "background"}item { name: "text" label: 1 display_name: "text"}
3 生成lmdb
sh create_lmdbdata_scenetext.sh
注意:
1. 修改一下caffe_root的路径(编译caffe版ssd的目录)。
例如:caffe_root=/data/zhangxin/github/caffe_ssd
2. 设置caffe/python的目录
例如: export PYTHONPATH=/data/dmcvcache/zhangxin/caffe_ssd/python
3. 如果遇到ImportError: No module named skimage.io
则:安装 一下, pip install scikit-image
4. 需要在caffe_ssd/models/VGGNet/目录下存放下载好的VGG_ILSVRC_16_layers_fc_reduced.caffemodel文件。
5. 错误:
F0628 14:18:57.290895 33280 relu_layer.cu:26] Check failed: error == cudaSuccess (11 vs. 0) invalid argument*** Check failure stack trace: *** @ 0x7fdf009ffe6d (unknown) @ 0x7fdf00a01ced (unknown) @ 0x7fdf009ffa5c (unknown) @ 0x7fdf00a0263e (unknown)F0628 14:18:57.298449 33281 relu_layer.cu:26] Check failed: error == cudaSuccess (11 vs. 0) invalid argument*** Check failure stack trace: *** @ 0x7fdf0a9b0ea0 caffe::ReLULayer<>::Forward_gpu() @ 0x7fdf009ffe6d (unknown) @ 0x7fdf0a796435 caffe::Net<>::ForwardFromTo() @ 0x7fdf00a01ced (unknown) @ 0x7fdf0a7967a7 caffe::Net<>::Forward() @ 0x7fdf009ffa5c (unknown)F0628 14:18:57.298449 33281 relu_layer.cu:26] Check failed: error == cudaSuccess (11 vs. 0) invalid argumentF0628 14:18:57.304498 33225 relu_layer.cu:26] Check failed: error == cudaSuccess (11 vs. 0) invalid argument*** Check failure stack trace: *** @ 0x7fdf00a0263e (unknown) @ 0x7fdf0a907ba8 caffe::Solver<>::Step() @ 0x7fdf009ffe6d (unknown) @ 0x7fdf0a90da66 caffe::P2PSync<>::InternalThreadEntry() @ 0x7fdf00a01ced (unknown) @ 0x7fdf0a9b0ea0 caffe::ReLULayer<>::Forward_gpu() @ 0x7fdf0a8feea0 caffe::InternalThread::entry() @ 0x7fdf009ffa5c (unknown) @ 0x7fdf0a796435 caffe::Net<>::ForwardFromTo() @ 0x7fdefed0224a (unknown) @ 0x7fdf00a0263e (unknown) @ 0x7fdefb853df3 start_thread @ 0x7fdf0a7967a7 caffe::Net<>::Forward() @ 0x7fdf0a9b0ea0 caffe::ReLULayer<>::Forward_gpu() @ 0x7fdefb5813dd __clone^C[1]+ Done nohup python ssd_icdar_scenetext.pyYou have mail in /var/spool/mail/root
解决方法:
I added the following lines to commands using multiple “arch” flags in Nvidia's NVCC compiler, and the error does not occur anymore.-gencode=arch=compute_20,code=\"sm_20,compute_20\"-gencode=arch=compute_30,code=\"sm_30,compute_30\"-gencode=arch=compute_35,code=\"sm_35,compute_35\"-gencode=arch=compute_50,code=\"sm_50,compute_50\"
4 训练
python ssd_icdar_scenetext.py
5 检测
使用ssd_detect.py,根据caffe_ssd目录下 examples/ssd_detect.ipynb 重写。
使用方法:
python ssd_detect.py \ --gpu_id 0 \ --labelmap_file data/scenetext/labelmap_voc_scenetext.prototxt \ --model_def models/VGGNet/scenetext/SSD_300x300/deploy.prototxt \ --image_resize 300 \ --model_weights models/VGGNet/scenetext/SSD_300x300/VGG_scenetext_SSD_300x300_iter_50000.caffemodel \ --image_file data/scenetext/test-textloc-gt/101.jpg
- 使用SSD训练文本检测
- 使用SSD检测训练自己的数据
- 利用caffe-ssd训练物体检测模型
- Windows下使用SSD检测
- 训练SSD
- mxnet 之 目标检测数据集制作+SSD 模型训练
- SSD区域检测网络配置+训练自己的数据
- 深度学习ssd检测模型训练自己的数据集
- 目标检测SSD:训练自己的数据集
- 基于SSD的图片文本检测及快速方法
- SSD人脸检测安装:SSD训练自己的数据集
- 使用keras实现目标检测之SSD
- 如何使用ssd训练自己的数据(windows下)
- 使用SSD基于caffe框架训练自己的数据
- ssd安装与训练
- SSD训练过程
- SSD 安装、训练
- SSD算法训练
- 文章标题
- 基于 rabbitmq 实现延迟队列
- 深度学习在目标跟踪中的应用
- Leetcode Binary Tree Zigzag Level Order Traversal
- Session&Cookie详解
- 使用SSD训练文本检测
- 解决:MacOS下配置Hadoop及Hive单机遇到的问题(们)
- Windows7下caffe+GPU的详细配置及编译
- Property follows Cocoa naming convention for returning 'owned' objects
- 遍历文件夹和遍历文件
- MSQL之CONCAT函数简单使用
- 图片加载避免OOM+代码示例
- 六月英语总结
- Unity扩展Editor菜单:提供一个统一的接口,来让策划调节prefab里相关脚本的数值