Tensorflow 迁移学习 识别中国军网、中国军视网Logo水印

Tensorflow 目标检测项目

图片logo水印识别。识别中国军网、中国军视网Logo水印。

image

image

Step 0 下载项目

git clone https://github.com/tensorflow/models/tree/master/research/object_detection

Step 1 在将项目目录添加到PYTHONPATH

作者bourdakos1整合了tensorflow中的object-detection和slim两个子项目。 设置环境,把当前目录、slim、object_detection 三个目录加到环境变量PYTHONPYTHON。

export PYTHONPATH=/root/workspace/Custom-Object-Detection:/root/workspace/Custom-Object-Detection/slim:/root/workspace/Custom-Object-Detection/object_detection:$PYTHONPATH

Step 2 安装labelImg标注数据

#如果提示缺少组件,逐步安装
pip install labelImg
# 启动
labelImg

Step 3 标注数据

labelImg标注图片,生成xml文件。

  1. /images目录下保存图片文件。
  2. /annotations/label_map.pbtxt,logo标识配置文件:设置军网logo为pic1,军视网logo为pic2。
  3. /annotations/trainval.txt,训练图片列表
  4. /annotations/xmls,保存标注xml文件。

Step 4 转化训练的图片生成record文件

创建好标注文件后,运行下面的文件。

python object_detection/create_tf_record.py
# 运行上面的命令,在项目上生成train.record,val.record两个文件

Step 5 选择网络

作者给出里5种网络结构,本次选用faster_rcnn_reset101。网络性能特点如下表,

Model name

Speed

COCO mAP

Outputs

ssd_mobilenet_v1_coco

fast

21

Boxes

ssd_inception_v2_coco

fast

24

Boxes

rfcn_resnet101_coco

medium

30

Boxes

faster_rcnn_resnet101_coco

medium

32

Boxes

faster_rcnn_inception_resnet_v2_atrous_coco

slow

37

Boxes

Step 6 迁移学习

需要两个文件,(1)config文件和(2)model.ckpt文件。

  • config文件在路径object_detection/samples/configs/下,包含多种网络,config文件中描述了网络参数、训练参数等配置。
  • 下载model文件,解压后将model.ckpt开头的三个文件保存在项目根目录下。下载链接在上表中。

Step 7 训练模型

只需要指明config文件,默认加载根目录下的model.ckpt文件

python object_detection/train.py \
        --logtostderr \
        --train_dir=train \
        --pipeline_config_path=faster_rcnn_resnet101.config

在训练的过程中,会将模型参数保存到train目录下。

Step 8 生成模型,导出图

将train目录下生成的model.ckpt-数字三个文件拷贝到项目根目录,运行命令

python object_detection/export_inference_graph.py \
        --input_type image_tensor \
        --pipeline_config_path faster_rcnn_resnet101.config \
        --trained_checkpoint_prefix model.ckpt-数字 \
        --output_directory output_inference_graph

Step 9 测试

将测试文件放在test_images路径下,运行

python object_detection/object_detection_runner.py
# 结果保存在output文件夹下

Step 10 GPU训练

基于阿里云GN4型服务器1个NVIDIA M40 GPU,训练6000轮,最终得到了较好的识别效果。

image

Step 11 问题

深度神经网络识别Logo水印,方法简单,构建较小数据集,而且训练时间也不是很长。

但预测时间比较长,模型比较大,下一步改用mobilenet,希望能将预测时间降到0.1秒。

如果使用YOLO,模型算法上会比rcnn更快。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏机器学习算法工程师

应用TF-Slim快速实现迁移学习

作者:张旭 编辑:张欢 这是一篇以实践为主的入门文章,目的在于用尽量少的成本组织起来一套可以训练和测试自己的分类任务的代码,其中就会用到迁移学习,TF-Sli...

60860
来自专栏磨磨谈

ceph 的crush算法 straw

很多年以前,Sage 在写CRUSH的原始算法的时候,写了不同的Bucket类型,可以选择不同的伪随机选择算法,大部分的模型是基于RJ Honicky写的RUS...

30520
来自专栏BestSDK

MXNet Scala发布图像分类API|附使用教程

这次发布的 Scala,里面的推理应用程序致力于优化开发者体验。Scala 是一个通用目的程序语言,支持功能性编程和较强的静态类型系统,它被用于平台的高度分布式...

15870
来自专栏人工智能LeadAI

pytorch入门教程 | 第四章:准备图片数据集

在训练神经网络之前,我们必须有数据,作为资深伸手党,必须知道以下几个数据提供源: 1 CIFAR-10 ? CIFAR-10图片样本截图 CIFAR-10是多...

1K80
来自专栏专知

【干货】快速上手图像识别:用TensorFlow API实现图像分类实例

【导读】1月17日,Arduino社区的编辑SAGAR SHARMA发布一篇基于TensorFlow API的图像识别实例教程。作者通过TensorFlow A...

91970
来自专栏ATYUN订阅号

使用Tensorflow对象检测在安卓手机上“寻找”皮卡丘

在TensorFlow的许多功能和工具中,隐藏着一个名为TensorFlow对象探测API(TensorFlow Object Detection API)的组...

51850
来自专栏机器学习实践二三事

使用FCN做图像语义分割(实践篇)

FCN原理 原理我已经在上篇博客说过,大家可以参考FCN原理篇 代码 FCN有官方的代码,具体地址是FCN官方代码 不过我用的不是这个代码,我用的是别人修改...

51670
来自专栏菩提树下的杨过

mxnet安装及NDArray初体验

一、mxnet安装 (以下均为mac环境) 有二种方式: 1.1 用conda安装 1 #创建gluon目录 2 mkdir gluon-tutorial...

30360
来自专栏人工智能LeadAI

TensorFlow分布式全套(原理,部署,实例)

TF的实现分为了单机实现和分布式实现,在分布式实现中,需要实现的是对client,master,worker process不在同一台机器上时的支持。数据量很大...

1.1K60
来自专栏人工智能LeadAI

OpenCV人脸识别之二:模型训练

本系列人脸识别文章用的是opencv2,最新版的opencv3.2的代码请参考文章: OpenCV之识别自己的脸——C++源码放送(请在上一篇文章末尾查看) 在...

1.6K60

扫码关注云+社区

领取腾讯云代金券