上手体验

外观


有幸拿到X3Pi的内测版本, 在树莓派疯狂涨价的这个大背景下, 一个有树莓派基本全部功能
+AI加速器BPU的X3Pi售价仅为树莓派的一半, 可以说是性价比非常高了.
先说外观: 尺寸上和树莓派保持一致, 外设接口详见如下表格.



值得注意的是, 虽然基本尺寸和树莓派一致, 但是一些接口位置和大小有所不同, 导致我手
上的两个树莓派的盒子都不能成功套在X3Pi上, 不过官方开发者论坛里已经有人放出了X3Pi
盒子的3D打印模型了, 有条件的可以自行打印.

性能


功耗上, usb-c口5V2A供电, 实测CPU空载时功率不到5W, 相比树莓派4B 5V3A的供电, 功
耗上的优势还是非常明显的. 较低的功耗不论时对于智能家居系统这种需要7x24在线的常
见, 还是移动小车无人机等电池供电功耗敏感的应用都是非常重要的.
CPU和内存方面基本能够应付日常使用, 我手上拿到的是2GB内存的版本, 有时候本地编译可
能会遇到内存不够的情况, 可能需要交叉编译, 有条件建议选择4GB的版本.
BPU推理引擎方面测试了官方提供的FCOS检测模型, 实测512x512输入.


部署实测


作为一个Home Assistant玩家, X3 Pi这个配置和加个其实完全切中了一个HA盒子的需求.这
里先简单介绍一下Home Assistant(HA), 这是一个开源的智能家居管理平台, 通过HA可以本
地接入包括米家, 涂鸦在内的各品牌智能家居配件, 打破厂家设定的生态壁垒. 它可以运行
在各种载体上: 树莓派, 群晖, 服务器等等. 首先, 作为一项服务(service), 它必须7x24
不间断运行, 因此硬件载体的功耗就是一个很重要的考虑因素, X3Pi 不足5W的待机功耗在
这一点上十分吸引人.
另外, HA社群种大家有一个很大的难题就是监控视频的AI检测: 在家里或者门口装监控摄像
头, 大家都很注重隐私, 一般会选择基于标准视频传输协议的摄像头, 避免了比如米家等大
厂的摄像头把数据上传. 而本地监控摄像头缺乏一个检测监控功能, 目前要么是通过联网
API接口, 要么是通过一些偏向传统的CV检测算法或者是用CPU硬跑AI推理, 不论是实时性还
是精度都不尽如人意. X3 Pi的出现完美解决了这个需求, 通过接受摄像头的RTSP视频流,内
置的BPU直接处理实时低延迟的处理这些信息, 把有用的检测信息推送的HA系统中.

下面我按照这个思路实现了一个简单的例子, 抛砖引玉:



安装教程



1. 安装Simple RTSP Server
只要直接去github下载打包文件到X3Pi上解压就可以运行, 注意选择armv 版本
2. 从官网下载OpenCV, 编译时开启GStreamer, 这一步有几个坑:
a. 2GB内存上源码OpenCV比较慢有点难度, 可以选择交叉编译, 懒得搞交叉编译的我这里提供一个方法:
编译的时候关闭其他不必要测试和文档:
```
cmake -D BUILD_EXAMPLES=OFF -D BUILD_opencv_apps=OFF -D BUILD_DOCS=OFF -D BUILD_PERF_TESTS=OFF -D BUILD_TESTS=OFF -D CMAKE_INSTALL_PREFIX=/usr/local/ -D WITH_GSTREAMER=ON ....
```
b. python调用的时候, 如果之前有通过pip包安装的opencv, python会默认使用pip包的, 这时候需要先写在pip安装的:
```pip uninstall opencv-python```
c. 最后测试一下python 的opencv是不是能够使用gstreamer了:
```python -c "import cv2;print(cv2.getBuildInformation())"```
如图所示, GStreamer这里如果显示NO就说明没有安装成功, 必须是YES才行


3. 下面以MIPI相机为例, 给出一个打开相机->FCOS检测->推流的代码例子
a. 首先新建一个terminal, 运行rtsp-simple-server, 注意需要保持这个service处于运行状态.
b. 接好F37相机, 同时结合官方给出的MIPI相机+FCOS例子, 把渲染后的检测结果推流到rtsp相机种.
具体代码如下见附件, 这里提一句, gstreamer的RTSP推流是需要稳定的帧率的,

所以代码里设定了一个比较低的帧率, 然后在while循环中动态判断sleep时间以达到稳定帧率的效果
c. 如果一切顺利的话, 可以在利用VLC或者PotPlayer打开查看, 或者直接在浏览器打开
其中http是可以直接在浏览器打开的: http://192.168.0.115:8888/mystream/

RTSP协议可以在VLC或者PotPlayer中打开rtsp://192.168.0.115:8554/mystream/



使用示例
1. 可以通过Home Assistant官方的Stream插件直接接入RTSP流, 可以在网页端实时查看


2. 既然已经接入了Home Assistant, 如果是苹果用户的话, 把摄像头接入Homekit就不在话下了, 这样可以
3. 可以在Python脚本里加入MQTT, 把检测到的人脸/人体信息发送到MQTT服务器, 成为Home Assistant的人体传感器

本文转自地平线开发者社区

原作者:manymuch

原链接:https://developer.horizon.ai/forumDetail/98129467158916262