webstorm 不识别.config文件_深度学习tensorflow object detect 之手势识别

d6b54bc4a7964efafa3cc9c1edd692c5.png

今天我来带大家做一个有趣的事情,识别“啪”的手势,使用tensorflow object detect api来检测

标注

首先我们使用标注工具来进行标注

6ae1df62bbfef64796ee88c393d4f20f.png

此工具是C#写的,只能用在windows环境下,输入图片的地址,按“导入”。

27b90563230a3a578a7b2b23de5ebb3e.png

还有一种方法就是直接从网上找图片,输入关键字,点击启动,等待进度条完成后,导入到标注文件就好。(爬取的照片准确度不是很高,所以我拿的是自己拍的)

9b1315c3b979ad5518f17b6cbbd8b7e5.png

导入图片后我们在右侧输入要标注物体的tag,在图片上从左向右下角将识别的物体框住就好。

c7ce0829c12a6b57b940bbcd80176ddf.png

标注完在右下角可以看到具体的标注信息

59837bd09d7af15db2ac417b19b993c4.png

标注完后打开图片文件夹就能看到标注的位置了

a2a24ce4059fbf0c79b09f14d04f55a7.png

把手势全部标注完。其产生的的“label_map.pbtxt”“image”就是我们需要的:

71a9aa4ce6cc8ef49bdf14e829d97b6e.png

安装tensorflow object detec api(ubuntu)

现在我们来安装tensorflow object detec api(ubuntu)基于我们已经安装好了tensorflow:

#在根目录下创建一个output目录
 mkdir /output
 cd /output/

 #下载tensorflow object detec api 代码git clone https://github.com/tensorflow/models.git

 #安装依赖项
 pip install Cython
 pip install pillow
 pip install lxml
 pip install jupyter
 pip install matplotlib
 pip install opencv-python
 pip install pycocotools

 cd /output/models/research/
 #编译
 protoc object_detection/protos/*.proto --python_out=.
 #安装export PYTHONPATH=$PYTHONPATH:`pwd`:`pwd`/slim
 #验证python object_detection/builders/model_builder_test.py
 ```

最后打印出“OK”即说明安装API成功
(代码来自https://github.com/sanfooh/tensorflow_object_detection_api_demo)
***

### 下载项目
```python
#下载图片及标注文件
cd /output
git clone https://github.com/sanfooh/tensorflow_object_detection_api_demo.git

下载这个项目之后,将项目中的“label_map.pbtxt”“image”文件夹删掉,然后把第一步产生的“label_map.pbtxt”“image”放进去。

我们还需要下载一个预训练项目

#下载预训练文件
cd /output/tensorflow_object_detection_api_demo
wget  http://download.tensorflow.org/models/object_detection/ssd_mobilenet_v1_coco_2017_11_17.tar.gz
tar -xzvf ssd_mobilenet_v1_coco_2017_11_17.tar.gz
rm -r ssd_mobilenet_v1_coco_2017_11_17.tar.gz

生成tfrecord

#生成tfrecord数据集
python create_tf_record.py

5a78eaf4e0e15c3cda455bcd81f9f13a.png

388e4be7a98733dde1de12c7b179f14d.png

生成之后我们可以看到如下的文件(train.recordval.record

af116067de1e43ec92e83ee0338ad21f.png

训练

接下来我们就开始训练

#训练
mkdir mytrain
python3 /output/models/research/object_detection/legacy/train.py --train_dir=mytrain/ --pipeline_config_path=/output/tensorflow_object_detection_api_demo/net.config --logtostderr

a8983d174e62ac90886c3432eb77fbbc.png

bb66d5bf369067c94f142c479c8c6e4e.png

遇到缺乏'nets'解决方法,添加到环境变量中去就好

#缺乏'nets'
cd /output/models/research/
export PYTHONPATH=$PYTHONPATH:`pwd`:`pwd`/slim

9f34ffbed6547478c2b9a69af110948a.png

317fd4f1f884d2d65d97ee83dda32d08.png

f3d6dada4797cbd81d46626108f03061.png

查看训练情况

#查看训练情况cd /home/aiguodong/.local/lib/python3.6/site-packages/tensorboard3python3 main.py --logdir=/output/tensorflow_object_detection_api_demo/mytrain

打开浏览器http:/xxxx:6006就可查看训练情况

d035e94f730f460f72531cd0b5504150.png

在训练的过程中(训练不要停),使用eval.py来评估验证集

首先,为了避免评估争抢gpu的资源,让eval只在cpu运行就好了,找到/output/models/research/object_detection/legacy/eval.py文件在开始的地方添加 os.environ['CUDA_VISIBLE_DEVICES'] = '-1'

423d36fc12e5994d87fab758bd571f0a.png

PS:把/output/tensorflow_object_detection_api_demo下的net.config文件复制到/output/tensorflow_object_detection_api_demo/mytrain 文件夹下(两个文件一样 可以省去这步在下面代码中修改路径就好)

运行如下代码开始评估

#开始评估cd /output/tensorflow_object_detection_api_demo
mkdir eval
python3 /output/models/research/object_detection/legacy/eval.py --logtostderr --pipeline_config_path=net.config --checkpoint_dir=mytrain/ --eval_dir=eval/

a46ecf762e81cd65e5ff506040524bab.png

7e20caf908d4adf0c8af061bf0a0f200.png

2c7da4bec2d92369c7feb2e101707d6b.png

运行后它不会退出,当有新的检查点文件产生时,它会重新评估,也就是说它是在训练的同时运行,需要注意net.config文件中eval部分是这样设置的

30dbc32a58b44f487a96aba4a9c30ed6.png

不然会报错(ValueError:Image with id b'xxx.jpg' already added

评估时,会在eval目录下生成形如events.out.tfevents.XXX的文件

274d27ef7c3c8a9446b72ea90b18f651.png

这时我们需要再使用tensorboard来查看图片情况:

#查看图片情况cd /output/tensorflow_object_detection_api_demo
tensorboard --logdir "/output/tensorflow_object_detection_api_demo/eval"

9cb5c826d49182fc5e10fcf3895c0424.png

训练完成后我们就可以发布了(注意修改13108)

#开始评估python3 /output/models/research/object_detection/export_inference_graph.py 
--input_type image_tensor 
--pipeline_config_path /output/tensorflow_object_detection_api_demo/net.config 
--trained_checkpoint_prefix /output/tensorflow_object_detection_api_demo/mytrain/model.ckpt-13108 6--output_directory /output/tensorflow_object_detection_api_demo/mymodel

caf6a942cd4b5c9cb42f531edd6c4066.png

86ec389ce0f48c1bb445a3bafcb97a99.png

mymodel下生成如下文件,其中frozen_inference_graph.pb就是我们要的文件

cb9d44649bfe4e6eacdbfe1542ce6282.png

发布

有了.pb文件以后,我们就可以发布模型了:

#利用Flask来发布模型
pip install flask
pip install flask_wtf
#启动服务python3 /output/tensorflow_object_detection_api_demo/web/app.py

5516242d23d8a5b93fa489f54d35370f.png

bb1e9ac70ef02277e28041ae2999c74f.png

最后用浏览器打开8000端口可以看到如下效果:

837ecc590b0835a2700fbd5d716bcc2f.png

如果大家在训练中遇到什么问题,可以私信我交流!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值