1、前言
1.1 本文章约定
- 操作 :表示你需要跟着说明进行相应的操作。
- 输入命令
xxxxxx
:表示你需要在控制台键入命令。
1.2 开始条件
若要完全复现该项目,需要先完成:
1、搭建深度学习图像识别开发环境:https://blog.csdn.net/lemon4869/article/details/106818808
2、下载预训练模型并进行迁移学习:https://blog.csdn.net/lemon4869/article/details/107050702
3、一键训练模型:https://blog.csdn.net/lemon4869/article/details/107145398
4、安装 OpenVINO:https://blog.csdn.net/lemon4869/article/details/107145684
5、编写 OpenVINO 应用程序(C++ 版):https://blog.csdn.net/lemon4869/article/details/107145841
本教程需要的文件,请提交下载好,再开始动手实践:
1.3 视频教程
2、新建 OCR 项目
把 ocr_project 拷贝到 E:\1-tf_train\workspaces 目录下。所有的内容都准备好了,训练好的模型也有。
3、数据预处理
3.1 收集数据
我们的目标是:识别图像中出现的字符:1、R、O、9、2、P、8,并用矩形框框出来。
3.2 数据清洗
不合格的图片已经清洗过了,剩下的都是合格的。
3.3 标注数据
图片已经标注好了,共计 54 张,我们就用这 54 张来进行训练。
还有未标注的图像 139 张,不想动手标了。有兴趣的童鞋可以继续标注,然后拿来训练。
4、训练模型
输入命令 python one_command_train.py --steps=5000 --batch_size=6
,启动训练
训练过程截图:
注意:如果出现类似 Allocator (GPU_0_bfc) ran out of memory trying to allocate 806.88MiB. The caller indicates that this 的错误,说明显存不够用,试着尝试减小 batch_size。
5、导出 TensorFlow 冻结图模型
输入命令 python export_inference_graph.py --inpu_type=image_tensor --pipeline_config_path=training\ssd_inception_v2_coco.config --trained_checkponit_prefix=training\model.ckpt-5000 --output_directory=trained_frozen_models\ocr_model
6、测试模型
完成训练之后得到冻结图文件 frozen_inference_graph.pb,接下来我们就利用 frozen_inference_graph.pb 做推理计算,看一看模型的表现情况。
输入命令 python object_detection_example_3.py
,得到的测试截图如下:
7、优化并部署模型
7.1 基于 OpenVINO 工具套件优化并加速模型
输入命令cd C:\Program Files (x86)\IntelSWTools\openvino_2019.3.334\deployment_tools\model_optimizer
,进入 model_optimizer 目录
输入命令 cd mo_tf.py --input_mode=E:\1-tf_train\workspaces\ocr_project\trained_frozen_models\ocr_model\frozen_inference_graph.pb --tensorflow_use_custom_operations_config="C:\Program Files (x86)\IntelSWTools\openvino_2019.3.334\deployment_tools\model_optimizer\extensions\front\tf\ssd_v2_support.json" --tensorflow_object_detection_api_pipeline_configE:\1-tf_train\workspaces\ocr_project\trained_frozen_models\ocr_model\pipeline.config --reverse_input_channels --data_type=FP16 --output_dir=E:\1-tf_train\workspaces\ocr_project\IR_model --model_name=ocr_detector
,对模型进行优化
7.2 基于 OpenVINO 工具套件部署模型
所谓部署模型,就是在我们的应用程序当中调用优化好的模型进行推理。
8、总结
本项目基于预训练模型 ssd_inception_v2_coco ,并借助 TensorFlow Object Detection API 进行迁移学习,然后使用 OpenVINO 对模型进行优化,然后部署优化后的模型到应用当中。