Ubuntu16.04下新版Tensorflow object_detection api使用教程

Tensorflow object_detection api 使用教程

0.前言

实验室里有项目要开始搞,要用到目标检测的方法。所以在这里记录一下搭建的环境以及训练的过程。基于Ubuntu16.04 64位操作系统,GTX Titan X(12g) GPU训练的。
详细的步骤可以到我的个人博客去看:我的博客

1.数据准备

2. 下载object detection的api

  • 运行生成CSV脚本(略)
  • .../models/reseach/object_detection/目录下运行generate_TFR.py文件:
    python generate_TFR.py --csv_input=data/train_data.csv --output_path=data/train_data.record
    然后改一下代码,继续:
    python generate_TFR.py --csv_input=data/test_data.csv --output_path=data/test_data.record

3.训练

依旧是在.../models/reseach/目录下,打开终端,输入如下命令:

python object_detection/model_main.py \
    --pipeline_config_path=object_detection/manhole_rfcn/rfcn_resnet101_coco.config \
    --model_dir=object_detection/manhole_rfcn/  \
    --num_train_steps=50000 \
    --sample_1_of_n_eval_examples=1  \
    --alsologtostderr

如果没有出错,等一会儿就可以看到在迭代了。

如果要两块卡一起跑起来,做了如下修改,

  • 在model_train.py中增加了如下语句:

    # 这里加入代码让两块gpu一起跑起来,显卡序号是0和1,看显卡详情可以在cmd中输入nvidia-smi
    os.environ['CUDA_VISIBLE_DEVICES']='0,1'
    

如何指定显卡跑呢?

  • 在终端执行程序时指定GPU

    CUDA_VISIBLE_DEVICES=1 python your_file.py

    这样在跑你的网络之前,告诉程序只能看到1号GPU,其他的GPU它不可见

    可用的形式如下:

    CUDA_VISIBLE_DEVICES=1  :        	Only device 1 will be seen
    CUDA_VISIBLE_DEVICES=0,1         	Devices 0 and 1 will be visible
    CUDA_VISIBLE_DEVICES="0,1"       	Same as above, quotation marks are optional
    CUDA_VISIBLE_DEVICES=0,2,3       	Devices 0, 2, 3 will be visible; device 1 is masked
    CUDA_VISIBLE_DEVICES=""          	No GPU will be visible
    
  • 在Python代码中指定GPU

    import os
    os.environ["CUDA_VISIBLE_DEVICES"] = "0"
    

训练过程中,可以用tensorboard来观察训练情况,具体操作是在object_detection目录下打开命令行,输入:

tensorboard --logdir=training
就会出来地址,复制地址到浏览器便可以打开,如果不行的话,地址可以改为:localhost:6006,想必应该可以了。

4.导出模型并测试

待训练完毕后,还是在object_detection目录下打开命令行,输入:

python export_inference_graph.py  --input_type image_tensor  --pipeline_config_path training_meter/ssd_mobilenet_v2_coco.config  --trained_checkpoint_prefix training_meter/model.ckpt-200000  --output_directory meter_inference_graph

其中,--trained_checkpoint_prefix training_meter/model.ckpt-200000 --output_directory meter_inference_graph中的model.ckpt-200000要你自己去training_meter文件夹中找一个最大的数字(不是最大也可以),然后更改,meter_inference_graph可以将meter改成别的。

运行之后,在object_detection目录下就出现了一个文件夹meter_inference_graph

将要测试的图片放到object_detection下的test_images下,不过记得先清空里面的文件。

接下来便是测试,同样是在object_detection目录下创建一个.ipynb文件,并在这个目录下打开cmd然后打开jupyter notebook,打开.ipynb文件,笔者的命名为meter_detection.ipynb,具体的代码可以从这里看:meter_detection.ipynb,然后根据注释相应改一下就会出来结果了。

5. 将训练好的模型移植到手机上

6. 参考资料

  1. 目标检测Tensorflow object detection API之构建自己的模型
  2. Tensorflow object detection API 搭建属于自己的物体识别模型(2)——训练并使用自己的模型
  3. 深度学习环境搭建-CUDA9.0、cudnn7.3、tensorflow_gpu1.10的安装
  4. 目标检测第1步-运行tensorflow官方示例
  5. 目标检测第2步-数据准备
  6. 目标检测第3步-模型训练
  7. 目标检测第4步-模型测试
  8. TensorFlow Object Detection API 使用多个GPU
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zedjay_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值