参考文章
整个项目代码(包括models和android,不包括编译的tensorflow):代码地址
项目中数据只有一类手势,android里面有量化和非量化两种模型
环境准备
克隆models
新建mobile_ssd_tf文件夹,git clone https://github.com/tensorflow/models 放到mobile_ssd_tf下面
编译tensorflow
git clone https://github.com/tensorflow/tensorflow,安装protobuf,bazel等
tensorflow编译参考
tensorflow 1.13.1,bazel 0.19.1(注意tf和bazel版本对应,不然出错)
cd tensorflow/
bazel build tensorflow/python/tools:freeze_graph
bazel build tensorflow/contrib/lite/toco:toco
数据制作
进入models/research/object_detection目录,下面工作基本都在这个目录下进行
mkdir ssd_data
labelImg工具标注数据集,jpg格式图片放到VOCdevkit/VOC2007/JPEGImages目录下,xml文件放到VOCdevkit/VOC2007/Annotations文件夹下面
train_test_split.py把xml分为train,test,val三部分,
xml2csv.py把xml转csv
gen_tfrecords.py生成tfrecord
在ssd_data下面新建label_map.pbtxt
item {
id: 1 #id从1开始编号
name: 'name of class1'
}
item {
id: 2
name: 'name of class2'
}
最终目录如下
训练
进入models/research/object_detection目录
下面在这个目录下进行工作
mkdir ssd_model
从samples/config下面拷贝一个配置文件(就是要训练的模型),放到ssd_model下面(我选的是ssd_mobilenet_v2_coco.config,还有其他各种版本的,看需要选择),修改这个配置文件
num_classes:前景类别数目+1(背景)