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
    +关注

    关注

    91

    文章

    41137

    浏览量

    302608
  • 模型
    +关注

    关注

    1

    文章

    3818

    浏览量

    52269
  • pytorch
    +关注

    关注

    2

    文章

    813

    浏览量

    14923

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

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

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    【「AI芯片:科技探索与AGI愿景」阅读体验】+AI的科学应用

    是一种快速反应能力,是直接的感知;灵感是一种通过思考和探索获得的创造性想法,是一种创意。 AI怎么模拟直觉与灵感呢?四、AI代替人类的假说 这可能吗? 机器来生成假说: 1、直接生成 生成式
    发表于 09-17 11:45

    无法在NPU上推理OpenVINO™优化的 TinyLlama 模型怎么解决?

    在 NPU 上推断 OpenVINO™优化的 TinyLlama 模型。 遇到的错误: get_shape was called on a descriptor::Tensor with dynamic shape
    发表于 07-11 06:58

    无法将Tensorflow Lite模型转换为OpenVINO™格式怎么处理?

    将 Tensorflow Lite 模型转换为 OpenVINO™ 格式。 遇到的错误: FrontEnd API failed with OpConversionFailure:No translator found for TFLite_Detection_PostProcess node.
    发表于 06-25 08:27

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

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

    无法运行Whisper Asr GenAI OpenVINO™ Notebook怎么解决?

    冉小 声说-asr-genai OpenVINO™笔记本。 遇到的错误: Port for tensor name cache_position was not found.
    发表于 06-25 07:41

    请问如何优化OpenVINO™工具套件中的内存使用?

    运行OpenVINO™推断时找不到优化内存使用情况的方法。
    发表于 06-25 06:56

    请问是否可以在通用Windows平台中构建OpenVINO™ GenAI C++ 应用程序?

    无法在通用 Windows 平台中构建OpenVINO™ GenAI C++ 应用程序
    发表于 06-24 07:35

    请问Openvino是否支持 Risc-V (riscv64) 架构?

    在spacemit k1型板(bpi-f3)上编译OpenVINO™,但失败。 使用 riscv64 构建OpenVINO™并崩溃。
    发表于 06-24 07:26

    请问如何通过OpenVINO™加速启用稳定的扩散 Web UI?

    无法运行具有OpenVINO™加速的稳定扩散 Web UI。
    发表于 06-24 06:48

    使用Openvino™ GenAI运行Sdxl Turbo模型时遇到错误怎么解决?

    使用 OpenVINO™ GenAI 运行 SDXL Turbo 模型。 遇到的错误: RuntimeError :- Check ov_tokenizer || ov_detokenizer Neither tokenizer nor detokenizer models were provided
    发表于 06-24 06:38

    无法将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

    Intel OpenVINO™ Day0 实现阿里通义 Qwen3 快速部署

    本文将以 Qwen3-8B 为例,介绍如何利用 OpenVINO 的 Python API 在英特尔平台(GPU, NPU)Qwen3 系列模型。
    的头像 发表于 05-11 11:36 1884次阅读
    Intel <b class='flag-5'>OpenVINO</b>™ Day0 实现阿里通义 Qwen3 快速部署

    OpenVINO C#如何运行YOLO11实例分割模型

    代码是我在OpenVINO-CSharp-API作者开源的YOLOv8对象检测的代码基础上修改而成。
    的头像 发表于 04-29 09:30 2234次阅读
    <b class='flag-5'>OpenVINO</b> C#如何运行YOLO11实例分割模型

    英特尔OpenVINO 2025.1版本发布

    我们很高兴地宣布 OpenVINO 2025 的最新版本正式发布!本次更新带来了来自工程团队的更多增强功能和新特性。每一次发布,我们都在不断适应日新月异的 AI 发展趋势,迎接层出不穷的新机遇与复杂
    的头像 发表于 04-29 09:27 1276次阅读