介绍
让我们简要回顾一下使用 OpenCV API 进行 TensorFlow 模型转换的管道中涉及的关键概念。将 TensorFlow 模型转换为 cv.dnn.Net 的第一步是获取冻结的 TF 模型图。冻结图定义了模型图结构与所需变量(例如权重)的保留值的组合。冻结的图形保存在 protobuf () 文件中。OpenCV 中有用于读取图形的特殊函数:cv.dnn.readNetFromTensorflow 和 cv.dnn.readNet。.pb
.pb
要求
为了能够试验以下代码,您需要安装一组库。为此,我们将使用 python3.7+ 的虚拟环境:
对于从源代码构建 OpenCV-Python,请遵循 OpenCV 简介中的相应说明。
在开始安装库之前,可以自定义要求 .txt,排除或包含(例如)某些依赖项。以下行将需求安装启动到先前激活的虚拟环境中:opencv-python
实践
在这一部分中,我们将介绍以下几点:
- 创建 TF 分类模型转换管道并提供推理
- 提供推理、过程预测结果
模型准备
本子章中的代码位于模块中,可以使用以下行执行:samples/dnn/dnn_model_runner
以下代码包含 TF SSD MobileNetV1 模型检索的步骤:
在函数中,我们提取模型存档中提供的用于进一步处理:extract_tf_frozen_graph
frozen_inference_graph.pb
# 定义模型归档文件名称tf_model_tar = model_name + '.tar.gz'# 定义用于检索模型存档的链接model_link = DETECTION_MODELS_URL + tf_model_tartf_frozen_graph_name = 'frozen_inference_graph'尝试:urllib.request.urlretrieve(model_link, tf_model_tar)例外情况除外:print(“TF {} 未检索到: {}”.format(model_name, model_link))返回print(“TF {} 被检索到。格式(model_name))tf_model_tar = tarfile.open(tf_model_tar)frozen_graph_path = “”对于 tf_model_tar.getmembers() 中的model_tar_elem:如果tf_frozen_graph_name os.path.basename(model_tar_elem.name):tf_model_tar.extract(model_tar_elem, extracted_model_path)frozen_graph_path = os.path.join(extracted_model_path, model_tar_elem.name)破tf_model_tar.关闭()
成功执行上述代码后,我们将得到以下输出:
为了提供模型推断,我们将使用以下双层巴士照片(在 Pexels 许可下):
要启动测试过程,我们需要提供适当的模型配置。我们将使用 TensorFlow 对象检测 API 中的 ssd_mobilenet_v1_coco.config。TensorFlow 对象检测 API 框架包含用于对象检测模型操作的有用机制。
我们将使用此配置来提供文本图表示形式。为了生成,我们将使用相应的 samples/dnn/tf_text_graph_ssd.py 脚本:.pbtxt
python tf_text_graph_ssd.py --input ssd_mobilenet_v1_coco_2017_11_17/frozen_inference_graph.pb --config ssd_mobilenet_v1_coco_2017_11_17/ssd_mobilenet_v1_coco.config --output ssd_mobilenet_v1_coco_2017_11_17.pbtxt
成功执行后将创建。ssd_mobilenet_v1_coco_2017_11_17.pbtxt
在运行之前,我们先来看看 SSD MobileNetV1 测试进程配置的默认值。它们位于 models.yml 中:object_detection.py
ssd_tf:型号: “ssd_mobilenet_v1_coco_2017_11_17.pb”配置:“ssd_mobilenet_v1_coco_2017_11_17.pbtxt”平均值:[0, 0, 0]比例:1.0宽度: 300高度: 300RGB:真类:“object_detection_classes_coco.txt”示例:“object_detection”
要获取这些值,我们需要提供冻结的图形模型和文本图形:ssd_mobilenet_v1_coco_2017_11_17.pb
ssd_mobilenet_v1_coco_2017_11_17.pbtxt
此行等效于:
结果是:
有几个有用的参数,也可以为结果校正自定义:阈值 () 和非最大抑制 () 值。--thr
--nms
在线教程
- 麻省理工学院人工智能视频教程 – 麻省理工人工智能课程
- 人工智能入门 – 人工智能基础学习。Peter Norvig举办的课程
- EdX 人工智能 – 此课程讲授人工智能计算机系统设计的基本概念和技术。
- 人工智能中的计划 – 计划是人工智能系统的基础部分之一。在这个课程中,你将会学习到让机器人执行一系列动作所需要的基本算法。
- 机器人人工智能 – 这个课程将会教授你实现人工智能的基本方法,包括:概率推算,计划和搜索,本地化,跟踪和控制,全部都是围绕有关机器人设计。
- 机器学习 – 有指导和无指导情况下的基本机器学习算法
- 机器学习中的神经网络 – 智能神经网络上的算法和实践经验
- 斯坦福统计学习
有需要的小伙伴,可以点击下方链接免费领取或者V扫描下方二维码免费领取🆓
人工智能书籍
- OpenCV(中文版).(布拉德斯基等)
- OpenCV+3计算机视觉++Python语言实现+第二版
- OpenCV3编程入门 毛星云编著
- 数字图像处理_第三版
- 人工智能:一种现代的方法
- 深度学习面试宝典
- 深度学习之PyTorch物体检测实战
- 吴恩达DeepLearning.ai中文版笔记
- 计算机视觉中的多视图几何
- PyTorch-官方推荐教程-英文版
- 《神经网络与深度学习》(邱锡鹏-20191121)
- …
第一阶段:零基础入门(3-6个月)
新手应首先通过少而精的学习,看到全景图,建立大局观。 通过完成小实验,建立信心,才能避免“从入门到放弃”的尴尬。因此,第一阶段只推荐4本最必要的书(而且这些书到了第二、三阶段也能继续用),入门以后,在后续学习中再“哪里不会补哪里”即可。
第二阶段:基础进阶(3-6个月)
熟读《机器学习算法的数学解析与Python实现》并动手实践后,你已经对机器学习有了基本的了解,不再是小白了。这时可以开始触类旁通,学习热门技术,加强实践水平。在深入学习的同时,也可以探索自己感兴趣的方向,为求职面试打好基础。
第三阶段:工作应用
这一阶段你已经不再需要引导,只需要一些推荐书目。如果你从入门时就确认了未来的工作方向,可以在第二阶段就提前阅读相关入门书籍(对应“商业落地五大方向”中的前两本),然后再“哪里不会补哪里”。
有需要的小伙伴,可以点击下方链接免费领取或者V扫描下方二维码免费领取🆓