语义分割
引导式阅读
Python
语义分割
作者
Codelabs助理
上架时间
2023-04-07 17:11:24

简介

众所周知,在人际交流中需要综合语言通道(verbal)与非语言(non-verbal)通道两方面的信息才能表达完整的交流信息。头部姿态和动作(posture and gesture)作为非语言通道,即形体交流(bodily communication)的重要组成部分,对理解用户的态度和意图具有不可替代的重要作用。头部姿态和动作的识别与理解在多模态人机接口和人际交互下的动作和行为理解等方面具有广泛的应用前景。

本Application支持运行在Atlas 200 DK上,实现了erfnet网络的推理功能并输出带有推理结果的图片。

当前分支中的应用适配1.3.0.01.32.0.0及以上版本的DDK&RunTime

前提条件

部署此Sample前,需要准备好以下环境:

  • 已完成Mind Studio的安装。

  • 已完成Atlas 200 DK开发者板与Mind Studio的连接,SD卡的制作、编译环境的配置等。

  • 由于需要配置开发板联网,默认设置为USB连接,开发板地址为192.168.1.2

样例部署

可以选择如下快速部署或者常规方法部署,二选一即可:

  1. 快速部署,请参考: https://github.com/Atlas200dk/faster-deploy

    > 说明:
    >- 该快速部署脚本可以快速部署多个案例,请选择sample-segmentation-python案例部署即可。
    >- 该快速部署脚本自动完成了代码下载、模型转换、环境变量配置等流程,如果需要了解详细的部署过程请选择常规部署方式。转:2. 常规部署

  2. 常规部署,请参考: https://github.com/Atlas200dk/sample-README/tree/master/sample-segmentation-python

    > 说明:
    >- 该部署方式,需要手动完成代码下载、模型转换、环境变量配置等过程。完成后,会对其中的过程更加了解。

环境部署与准备

  1. 应用代码拷贝到开发板。

    以Mind Studio安装用户进入语义分割网络应用(python)代码所在根目录,如:$HOME/sample-segmentation-python,执行以下命令将应用代码拷贝到开发板。

    scp -r ../sample-segmentation-python/ HwHiAiUser@192.168.1.2:/home/HwHiAiUser/HIAI_PROJECTS

    提示password时输入开发板密码,开发板默认密码为Mind@123,如图 应用代码拷贝

    图 1 应用代码拷贝

在Mind Studio所在Ubuntu服务器中,以HwHiAiUser用户SSH登录到Host侧。

ssh HwHiAiUser@192.168.1.2

切换到root用户,开发板中root用户默认密码为Mind@123

su root

  1. 配置开发板联网。

    请参考https://github.com/Atlas200dk/sample-README/tree/master/DK_NetworkConnect ,进行开发板网络连接配置。

  2. 安装环境依赖。

    请参考https://github.com/Atlas200dk/sample-README/tree/master/DK_Environment ,进行环境依赖配置。

程序运行

  1. 切换HwHiAiUser用户,并进入语义分割网络应用代码所在目录。

    su HwHiAiUser

    cd ~/HIAI_PROJECTS/sample-segmentation-python/segmentationapp

  2. 执行应用程序。

    执行segmentation.py脚本会将推理结果在执行终端直接打印显示。

    命令示例如下所示:

    python segmentation.py

    执行成功后效果如图 推理成功示意图所示。

    图 2 推理成功示意图

  1. 执行结果查看。

执行结果保存在当前目录下的Result目录下,需要在Atlas200DK中用以下命令将结果拷贝到Ubuntu服务器中查看推理结果图片。

scp -r username@host_ip:/home/username/HIAI_PROJECTS/sample-classification-python/Result ~

  • username:开发板用户名,默认为HwHiAiUser。
  • host_ip:开发板ip,USB连接一般为192.168.1.2.网线连接时一般为192.168.0.2。

命令示例:

scp -r HwHiAiUser@192.168.1.2:/home/HwHiAiUser/HIAI_PROJECTS/sample-classification-python/Result ~

该命令会把推理结果拷贝到Mindstudio安装用户的家目录中,可以直接查看。

相关说明

  • 语义分割网络应用(Python)的流程说明如下

    1. 从cityimage目录下读取jpeg图片。
    2. 将读取的jpeg图片调用opencv resize到1024*512,并转换成YUV420SP。
    3. 将转换后的YUV420SP图片数据送入Matrix进行推理。demo采用的是erfnet网络,推理结果是每个像素点的19个分类的置信度
    4. 后处理阶段,每个像素点选取最高置信度的分类,在图片上对同种分类进行涂色。涂色后图片存放在Result目录下。
  • 语义分割网络应用(Python)的文件架构说明如下

    • cityimage:存放输入图片
    • segmentation.py:主程序
    • jpegHandler.py:jpeg图片处理,如resize、色域转换等
    • models:存放模型网络
    • Result:存放标注后的图片