0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

用AI及OpenVINO™寻找失落的侏罗纪

英特尔物联网 来源:英特尔物联网 2023-01-06 09:45 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

在世界各地,当你走进博物馆,看到巨大的恐龙标本展示,你有没有想过古生物学家是如何发现它们的?

有趣的是,我们的一位好朋友兼同事,英特尔的技术布道师 Bob Chesebrough,在闲暇时间和他的儿子们一起出去寻找尚未被发现的恐龙化石。他向我们展示了如何做到这一点,以及我们如何使用 AI 和 OpenVINO 来明显简化这一过程

Bob 向我们解释说,古生物学家和考古学家必须首先找到这些地点,其地质历史不仅揭示了化石的创造过程,而且还表明了发现化石的机会。传统上,这是通过扫描航拍图像来发现特定的地形纹理,或岩层的颜色和方向,然后构建像这样的“可能性地图”来完成(如图1所示)。

d47c4e7c-8d5d-11ed-bfe3-dac502259ad0.png

图1. 恐龙化石可能性地图示例

你可以在图片中看到可能发现恐龙化石的所有位置。你可以想象的是,即使是由专家亲自完成,绘制这样一张地图也需要花费大量的时间和精力。但是,由于 Bob 已经了解了 AI 的力量,他想知道是否可以开发一种能够自动创建这些地图的 AI 模型。他做到了!

在他的最初尝试中,他发现 AI 软件运行良好,但在野外创建地图花费了太长时间,而当你在野外并依赖笔记本电脑电池时,这是一个问题。然后,他想知道如果他使用无人机拍摄高分辨率航拍照片是否会有所帮助,但不幸的是,这也行不通,因为这仍然需要他回家上传这些照片。

因此,他与我们(Raymond Lo 和武卓博士)以及英特尔的其他 AI 布道师一起提出了一个解决方案,使他能够在几分钟内(通常这需要几个小时)从任意组合的视频中创建这样的可能性地图。

我们很高兴向你展示我们做了什么以及如何使用OpenVINO,但在我们继续之前,请注意,虽然狩猎恐龙化石听起来是一种有趣和令人兴奋的爱好,但在美国和大多数其它地方,恐龙化石的实际采集受到严格监管,如果不是完全禁止的话。因此,如果你亲自尝试,而且你确实发现了化石的话,我们强烈建议你拍照并向当地有关部门报告你的这一发现。

狩猎开始了!

现在让我们开始吧!首先,我们将解释寻找恐龙化石的不同阶段,然后我们将深入了解具体的步骤是怎么做的。

具体的创建可能性地图的步骤可以参考这里:

https://www.intel.com/content/www/us/en/developer/articles/technical/intel-ai-step-by-step-guide-for-hunting-dinosaurs.html#gs.cg9z4m

(如图2所示),包括:

d4ba2274-8d5d-11ed-bfe3-dac502259ad0.png

图2. 创建恐龙化石可能性地图的一般步骤

第一阶段和第二阶段:收集数据并对其进行分类,包括获取已知恐龙骨床(示例中为新墨西哥州)化石的实际发现的 GPS 坐标,并根据它们之间的接近程度对它们进行聚类。我们使用 Intel机器学习库 Scikit learn 做到了这一点。

第三阶段:标记数据。我们将聚类的结果和 Intel Deep Neural Network Library 应用于标记为“无化石”、“极有可能找到化石”或“可能找到化石”的相同位置的航拍图像,并将这些图像合并起来,得到该区域的化石可能性地图。

第四阶段和第五阶段:训练数据并通过将标记的航拍图像转换为张量来构建模型,每个张量都具有与概率分数或置信水平相对应的类名(例如,0表示“绝对没有化石”,1表示“有可能找到化石”,2表示“发现化石”),以使用 PyTorch 构建残差神经网络(ResNet)。

第六阶段:最后,评分阶段,通过使用前面步骤中准备的模型,利用 OpenVINO推理引擎分析航拍照片,创建其它地方的化石可能性地图!

放“码”过来!

实现上述过程的代码由一系列 Jupyter Notebook 提供:

https://github.com/IntelSoftware/Jurassic/blob/main/09_Dino_bone_find_OpenVINO.ipynb

这里,我们描述了最重要的部分,如图3所示,将 PyTorch 模型转换为 OpenVINO中间表示(IR)格式并分析图像。

d500a88e-8d5d-11ed-bfe3-dac502259ad0.png

图3. PyTorch 模型转换为 OpenVINO IR 格式

加载OpenVINO推理引擎只需要一条指令:

from openvino.runtime import Core

向右滑动查看完整代码

加载所有必要的库后,Notebook 定义了先前以 PyTorch 格式训练得到的化石寻找模型的路径,并定义了两个新模型的位置,以创建一个以 ONNX 格式,另一个以 OpenVINOIR 格式的模型,原因我们稍后将解释。

DIRECTORY_NAME = “models”


BASE_MODEL_NAME = DIRECTORY_NAME + f”/bc_resnet18_simple_NOIPEX_6Epochs_StateDict_gold”


# Paths where PyTorch, ONNX and OpenVINO IR models will be stored
model_path = Path(BASE_MODEL_NAME).with_suffix(“.pt”)
onnx_path = model_path.with_suffix(“.onnx”)
ir_path = model_path.with_suffix(“.xml”)

向右滑动查看完整代码

生成 ONNX 模型后,再使用 OpenVINO模型优化器(MO)构建命令,将其转换为 FP16 精度的OpenVINOIR 格式:

# Construct the command for Model Optimizer
mo_command = f”””mo
   --input_model “{onnx_path}”
   --input_shape “[1,3, {IMAGE_HEIGHT}, {IMAGE_WIDTH}]”
   --data_type FP16
   --output_dir “{model_path.parent}”
   “””
   
mo_command = “ “.join(mo_command.split())

向右滑动查看完整代码

在使用 ONNX 模型对测试图像运行推理(此处未显示)后,在同一图像上重复该过程,但使用 OpenVINO IR 格式模型,因为在 OpenVINO推理引擎上执行两个模型显示了如何在 CPUGPU 设备上可互换地运行模型推理。

# Load the network in Inference Engine
core = Core()
model_ir = core.read_model(model=ir_path)
compiled_model_ir = core.compile_model(model=model_ir, device_name=”CPU”)


# Get input and output layers
output_layer_ir = compiled_model_ir.output(0)


# Run inference on the input image
res_ir = compiled_model_ir([x_test2])[output_layer_ir]

向右滑动查看完整代码

上面的前几行代码加载OpenVINO推理引擎,将OpenVINOIR 模型传递给它,然后提取其输入和输出层。最后一行代码是在先前使用 ONNX 模型分析的同一图像(“x_test2”)上实际运行推理引擎的代码。

接下来,程序打印出模型推理的结果;即该图像所属的类(0、1或2),然后继续使用 PyTorch 模型重复该过程。

代码的最后部分做了两件事:

1)它运行 OpenVINO和 PyTorch 模型,对几百张图像进行分类,并对所使用的三种模型的性能进行近似比较。

2)它将所有这些图像合并到一张地图中,如图1所示,并通过将 PyTorch 结果与 OpenVINO 结果进行比较得出结论,以验证准确性没有损失。为了简洁起见,这里我们只包含一段不言自明的片段:

if “GPU” in core.available_devices:
 num_images = 2000


compiled_model_onnx_gpu = core.compile_model(model=model_onnx, device_name=”GPU”)
#warm up
compiled_model_onnx_gpu([input_image])

向右滑动查看完整代码

使用 OpenVINO的好处不仅在于我们可以获得加速,还在于能够根据你选择的硬件优化模型,并充分利用你手边可用的硬件!

后续步骤

整个的步骤就是这样!现在你是一个现代寻宝者,能够使用 OpenVINO为你的寻找侏罗纪之旅创建和更新可能性地图。

这是一个很好的例子,说明 OpenVINO如何让每个人无论做什么都能更容易地使用人工智能

你可以轻松地将此方法用于任何需要从航拍照片中检测某些区域的情况,例如防火、可再生能源发电等关键领域,甚至其它星球上的生命!

审核编辑 :李倩

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • AI
    AI
    +关注

    关注

    89

    文章

    38090

    浏览量

    296488
  • 模型
    +关注

    关注

    1

    文章

    3648

    浏览量

    51710
  • pytorch
    +关注

    关注

    2

    文章

    813

    浏览量

    14694

原文标题:用 AI 及OpenVINO™ 寻找失落的侏罗纪 | 开发者实战

文章出处:【微信号:英特尔物联网,微信公众号:英特尔物联网】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    请问OpenVINO™ 是否支持 Rust 绑定?

    无法确定OpenVINO™是否支持 Rust 绑定。
    发表于 06-25 07:45

    无法将Openvino™ 2025.0与onnx运行时Openvino™ 执行提供程序 1.16.2 结合使用,怎么处理?

    使用OpenVINO™与英特尔 i5-8500 CPU 和超核处理器 630 iGPU 一起部署模型。 使用了 Microsoft.ML.OnnxRuntime.OpenVino
    发表于 06-24 06:31

    为什么无法通过“pip install openvino-dev==2025.0.0”安装 2025.0 OpenVINO™?

    通过“pip install openvino-dev==2025.0.0OpenVINO™ 2025.0 安装。 收到的错误: ERROR: No matching distribution found for openvino
    发表于 06-23 08:13

    使用OpenVINO™进行推理时的内存泄漏怎么解决?

    使用 OpenVINO™ 进行推理时,内存会随着时间的推移而增加,并导致程序崩溃。
    发表于 03-06 08:29

    如何部署OpenVINO™工具套件应用程序?

    编写代码并测试 OpenVINO™ 工具套件应用程序后,必须将应用程序安装或部署到生产环境中的目标设备。 OpenVINO™部署管理器指南包含有关如何轻松使用部署管理器将应用程序打包并部署到目标主机的详细信息。 注意:OpenVIN
    发表于 03-06 08:23

    如何使用OpenVINO™运行对象检测模型?

    无法确定如何使用OpenVINO™运行对象检测模型
    发表于 03-06 07:20

    请问使用2022.2时是否可以读取模型OpenVINO™层?

    使用 2020.3 时,使用 net.layers 和 layers.blob 读取模型OpenVINO™层。 OpenVINO™自 2021.2 OpenVINO™起,使用 2022.2 作为 net.layers 和 la
    发表于 03-06 06:37

    如何修复IR版本与OpenVINO™工具套件版本不匹配问题?

    执行 Raspberry Pi 4 OpenVINO™工具套件示例来自RPI4_NCS2并遇到以下错误: DeprecationWarning:InferRequest 的“输出”属性被弃。相反
    发表于 03-05 09:04

    安装OpenVINO™ 2023.2使用pip install openvino-dev命令的开发工具后报错怎么解决?

    安装OpenVINO™ 2023.2 使用 pip install openvino-dev 命令的开发工具。 遇到错误: ModuleNotFoundError: 没有名为 \'distutils\' 的模块
    发表于 03-05 08:39

    OpenVINO™是否与TensorFlow集成支持Raspberry Pi?

    无法确定OpenVINO™是否与 TensorFlow* 集成支持 Raspberry Pi。
    发表于 03-05 08:26

    通过Docker映像OpenVINO™ DL Workbench OpenVINO™安装,无法上传模型怎么解决?

    通过 Docker 映像OpenVINO™ DL Workbench OpenVINO™安装。 无法上传模型: Model cannot be downloaded due to network
    发表于 03-05 08:08

    如何下载 OpenVINO™ 工具套件?

    需要下载用于开发工作的 OpenVINO™ 工具套件。
    发表于 03-05 06:49

    C#集成OpenVINO™:简化AI模型部署

    在开源测控、机器视觉、数采与分析三大领域中,如何快速将AI模型集成到应用程序中, 实现AI赋能和应用增值? 最容易的方式是:在C#中,使用 OpenVINO工具套件 集成AI模型。 1
    的头像 发表于 02-17 10:03 2508次阅读
    C#集成<b class='flag-5'>OpenVINO</b>™:简化<b class='flag-5'>AI</b>模型部署

    C#中使用OpenVINO™:轻松集成AI模型!

    与分析三大领域中,如何快速将AI模型集成到应用程序中,实现AI赋能和应用增值?最容易的方式是:在C#中,使用OpenVINO™工具套件集成AI模型。 一,什么是
    的头像 发表于 02-07 14:05 1642次阅读
    C#中使用<b class='flag-5'>OpenVINO</b>™:轻松集成<b class='flag-5'>AI</b>模型!

    使用OpenVINO™条件编译功能,压缩Windows应用体积

      作者: 杨亦诚 英特尔 AI 软件工程师 在 OpenVINO 编译过程中,我们可以根据应用对于硬件平台的需求,关闭或开指定推理后端的编译,以达到简化 OpenVINO 运行库的目的,例如
    的头像 发表于 01-13 10:26 831次阅读
    使用<b class='flag-5'>OpenVINO</b>™条件编译功能,压缩Windows应用体积