点击蓝字
关注我们,让开发变得更有趣
作者:康瑶明 英特尔边缘计算创新大使
英特尔开发套件 AIxBoard 介绍
01
背景
英特尔开发套件 AIxBoard(爱克斯板)由2023年蓝蛙智能推出的人工智能嵌入式开发板,是英特尔开发套件官方序列中的一员,专为支持入门级人工智能应用和边缘智能设备而设计。它体积小巧功能强大,是一款面向专业创客、开发者的功能强大的小型计算机,借助 OpenVINO™ 工具套件,CPU、iGPU 都具备强劲的 AI 推理能力,支持在图像分类、目标检测、分割和语音处理等应用中并行运行多个神经网络。
02
配置
03
算力
借助 OpenVINO™ 工具套件,能够实现 CPU + iGPU 异构计算推理,IGPU 算力约为 0.6 TOPS。
04
优势
-
开箱即用,不需要额外购买配件,不需要烧写系统,通电即用
-
性价比高,板载 8G 内存,64GB 存储,Wi-Fi6 千兆无线网卡,CPU + iGPU 异构计算
-
通用性好,流畅运行 Win10/Win11,桌面 Linux,软件兼容性好
-
易用性佳,提供丰富的案例资源,学习门槛低
-
官方认证,英特尔官方推荐开发套件,品质有保证
-
个性定制,可更换开机 Logo,产品个性化定制
05
实物图
环境配置
01
下载安装 Anaconda
推荐使用国内清华源,可以加速下载(复制地址到浏览器打开):
https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/
根据提示安装完成后,打开anaconda:
点击命令行工具如下图:
更新 conda
pip更换清华源:
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
向右滑动查看完整代码
02
安装 OpenVINO™ package
详情可参见官网(复制地址到浏览器打开或点击阅读原文):
https://www.intel.cn/content/www/cn/zh/developer/tools/openvino-toolkit/download.html?ENVIRONMENT=DEV_TOOLS&OP_SYSTEM=WINDOWS&VERSION=v_2023_0_1&DISTRIBUTION=PIP&FRAMEWORK=ONNX%2CPYTORCH%2CTENSORFLOW_2
pip install openvino-dev[ONNX,pytorch,tensorflow2]==2023.0.1
向右滑动查看完整代码
03
检查是否安装成功
使用以下命令可以查看到 OpenVINO™ 识别到支持的设备为 CPU 和 GPU。如下图所示,此时说明安装成功,可以找到推理设备。
benchmark_app --help
U2-Net 模型的图像分割和背景替换演示
下载仓库:
git clone https://github.com/openvinotoolkit/openvino_notebooks.git
向右滑动查看完整代码
01
模型介绍
U2-Net 在 RSU 的基础上开发的,用于显著目标检测(SOD),解决了在保持高分辨率特征图的同时,以较低的内存和计算成本使网络变得更深。U2 网络是一个两层嵌套的U型结构,如下图所示。它的 top-level 是一个由11个阶段组成的大U型结构(图中的立方体)。每一阶段都由一个配置良好的残差 Ublock(RSU)(bottom level U结构)填充。因此,嵌套 U 结构能够更有效地提取阶段内多尺度特征和聚合阶段间多级特征。
02
模型下载
u2net_lite = model_config(
name="u2net_lite",
url="https://drive.google.com/uc?id=1rbSTGKAE-MTxBYHd-51l2hMOQPT_7EPy",
model=U2NETP,
model_args=(),
)
model_path = Path(MODEL_DIR) / u2net_model.name / Path(u2net_model.name).with_suffix(".pth")
向右滑动查看完整代码
执行上述代码,下载原模型文件。
03
导出 onnx
加载模型和预训练的权重文件,导出到 onnx 格式。Pytorch 把所有的模型参数用一个内部定义的 dict 进行保存,称为 state_dict。
net = u2net_model.model(*u2net_model.model_args)
net.eval()
print(f"Loading model weights from: '{model_path}'")
net.load_state_dict(state_dict=torch.load(model_path, map_location="cpu"))
torch.onnx.export(net, torch.zeros((1,3,512,512)), "u2net.onnx")
向右滑动查看完整代码
04
转化为 IR 格式
使用模型优化器 Python API 将 Pytorch 模型转换为 OpenVINO™ IR 格式,精度为 FP16。将平均值添加到模型中,并使用带有 scale_values 参数的标准偏差缩放输入。使用这些选项,无需在通过网络传播输入数据之前对其进行规范化。平均值和标准偏差值可以在 U2-Net 存储库的 dataloader 文件中找到,并乘以255以支持像素值为0-255的图像。
model_ir = mo.convert_model(
"u2net.onnx",
mean_values=[123.675, 116.28 , 103.53],
scale_values=[58.395, 57.12 , 57.375],
compress_to_fp16=True
向右滑动查看完整代码
05
图片预处理
OpenVINO™ IR 模型需要 RGB 格式的图像。将图像转换为 RGB,将其大小调整为 512 x 512,并将尺寸转置为 OpenVINO™ IR 模型所需的格式。
IMAGE_URI = "https://storage.openvinotoolkit.org/repositories/openvino_notebooks/data/data/image/coco_hollywood.jpg"
image = cv2.cvtColor(
src=load_image(IMAGE_URI),
code=cv2.COLOR_BGR2RGB,
)
resized_image = cv2.resize(src=image, dsize=(512, 512))
input_image = np.expand_dims(np.transpose(resized_image, (2, 0, 1)), 0)
向右滑动查看完整代码
06
执行推理
加载模型网络到 OpenVINO™ Runtime,device_name 指定为 CPU 设备进行推理。
ie = Core()
compiled_model_ir = ie.compile_model(model=model_ir, device_name="CPU")
input_layer_ir = compiled_model_ir.input(0)
output_layer_ir = compiled_model_ir.output(0)
start_time = time.perf_counter()
result = compiled_model_ir([input_image])[output_layer_ir]
end_time = time.perf_counter()
print(
f"Inference finished. Inference time: {end_time-start_time:.3f} seconds, "
f"FPS: {1/(end_time-start_time):.2f}."
)
向右滑动查看完整代码
推理完成后,可以看到打印的执行时间和 FPS 值,如下图:
设备切换为 GPU 后可以看到推理时间缩短了近10倍, FPS 也提高了近10倍。然而看到任务管理器 GPU 利用率才50%左右,这说明 GPU 的加速效果还是很可观的。
07
结果可视化
经过 OpenCV 处理后,从左到右分别是原始图像、分割结果和去除背景的原始图像。
resized_result = np.rint(
cv2.resize(src=np.squeeze(result), dsize=(image.shape[1], image.shape[0]))
).astype(np.uint8)
bg_removed_result = image.copy()
bg_removed_result[resized_result == 0] = 255
fig, ax = plt.subplots(nrows=1, ncols=3, figsize=(20, 7))
ax[0].imshow(image)
ax[1].imshow(resized_result, cmap="gray")
ax[2].imshow(bg_removed_result)
for a in ax:
a.axis("off")
向右滑动查看完整代码
08
添加背景
通过 cv2.cvtColor 方法,读取到新的长城背景图片,经过转置等操作,给狗狗替换了新的长城背景图片。
background_image = cv2.cvtColor(src=load_image(BACKGROUND_FILE), code=cv2.COLOR_BGR2RGB)
background_image = cv2.resize(src=background_image, dsize=(image.shape[1], image.shape[0]))
background_image[resized_result == 1] = 0
new_image = background_image + bg_removed_result
new_image_path = Path(f"{OUTPUT_DIR}/{Path(IMAGE_URI).stem}-{Path(BACKGROUND_FILE).stem}.jpg")
cv2.imwrite(filename=str(new_image_path), img=cv2.cvtColor(new_image, cv2.COLOR_RGB2BGR))
fig, ax = plt.subplots(nrows=1, ncols=2, figsize=(18, 7))
ax[0].imshow(image)
ax[1].imshow(new_image)
for a in ax:
a.axis("off")
plt.show()
向右滑动查看完整代码
结论
英特尔开发套件 AI 爱克斯开发板,板载 8G 内存, 64GB 存储,Wi-Fi6 千兆无线网卡,CPU + iGPU 异构计算,还有一个 M.2 插槽支持可扩展硬盘。搭载的 Intel Celeron N5105 是 Jaser Lake 系列的四核处理器,被定位为嵌入式 CPU,不管是性能,还是功耗,散热都做的非常不错。在测试中,内置的集成显卡可以在 U2-Net 模型的加速推理时间缩短近10倍,FPS 也提高了近10倍。然而 GPU 利用率才50%左右,这说明 GPU 的加速效果还是很可观的,还有潜力进一步释放算力,是 AI 开发者的趁手利器。
--END--
你也许想了解(点击蓝字查看)⬇️
➡️ OpenVINO™ DevCon 2023重磅回归!英特尔以创新产品激发开发者无限潜能
➡️ 5周年更新 | OpenVINO™ 2023.0,让AI部署和加速更容易
➡️ OpenVINO™5周年重头戏!2023.0版本持续升级AI部署和加速性能
➡️ OpenVINO™2023.0实战 | 在 LabVIEW 中部署 YOLOv8 目标检测模型
➡️ 开发者实战系列资源包来啦!
➡️
以AI作画,祝她节日快乐;简单三步,OpenVINO™ 助你轻松体验AIGC
➡️
还不知道如何用OpenVINO™作画?点击了解教程。
➡️
几行代码轻松实现对于PaddleOCR的实时推理,快来get!
➡️
使用OpenVINO 在“端—边—云”快速实现高性能人工智能推理
➡️
图片提取文字很神奇?试试三步实现OCR!
➡️
【Notebook系列第六期】基于Pytorch预训练模型,实现语义分割任务
➡️
使用OpenVINO™ 预处理API进一步提升YOLOv5推理性能
扫描下方二维码立即体验
OpenVINO™ 工具套件 2023.0
本文分享自微信公众号 - OpenVINO 中文社区(openvinodev)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。