文章目录
香橙派AIpro-携手华为-为AI赋能
今天新入手了一款香橙派AIPro,让我们一起跟着文章体验一下不一样的
开箱和功能介绍
开箱
香橙派AIpro包装是比较精致的,一共包含开发板,65W充电器和充电线一根,开发板中有一个32G的内存卡,里面是包含自带的系统。
主板对比,香橙派和我手中现有的AI板 Alinx zynq7000相比,体积更小,且不需要接入外置模块即可使用串口进行通信,整体结构更干净整洁。接通电源之后,香橙派的风扇声音也较小,且正常运行时在我的环境下,感知不到风扇的声音。
功能介绍
OrangePi AIpro(8-12T)采用昇腾AI技术路线,具体为4核64位处理器+AI处理器,集成图形处理器,支持8-12TOPS AI算力,拥有8GB/16GB LPDDR4X,可以外接32GB/64GB/128GB/256GB eMMC模块,支持双4K高清输出。 Orange Pi AIpro引用了相当丰富的接口,包括两个HDMI输出、GPIO接口、Type-C电源接口、支持SATA/NVMe SSD 2280的M.2插槽、TF插槽、千兆网口、两个USB3.0、一个USB Type-C 3.0、一个Micro USB(串口打印调试功能)、两个MIPI摄像头、一个MIPI屏等,预留电池接口,可广泛适用于AI边缘计算、深度视觉学习及视频流AI分析、视频图像分析、自然语言处理、智能小车、机械臂、人工智能、无人机、云计算、AR/VR、智能安防、智能家居等领域,覆盖 AIoT各个行业。 Orange Pi AIpro支持Ubuntu、openEuler操作系统,满足大多数AI算法原型验证、推理应用开发的需求。
- 硬件规格参数:
硬件 | 参数 |
---|---|
CPU | 4核64位处理器+ AI处理器 |
GPU | 集成图形处理器 |
AI算力 | 8-12TOPS算力 |
内存 | LPDDR4X:8GB/16GB(可选),速率:3200Mbps |
存储 | 1.SPI FLASH:32MB SATA/NVME SSD 2.(M.2接口2280) 3. eMMC插槽:32GB/64GB/128GB/256GB(可选),eMMC5.1 HS400 4.TF插槽 |
WIFI+蓝牙 | Wi-Fi 5双频2.4G和5G BT4.2/BLE |
以太网收发器 | 10/100/1000Mbps以太网 |
显示 | 2xHDMI2.0 Type-A TX 4K@60FPS 1x2 lane MIPI DSI via FPC connector |
摄像头 | 2x2-lane MIPI CSI camera interface,兼容树莓派摄像头 |
USB | USB 3.0 HOST x2 USB Type-C 3.0 HOST x1 Micro USB x1 串口打印功能 |
音频 | 3.5mm耳机孔音频输入/输出 |
按键 | 1x关机键、1xRESET键、2x启动方式拨动键、1x烧录按键 |
40PIN | 40PIN 功能扩展接口,支持以下接口类型: GPIO、UART、I2C、SPI、 I2S、PWM |
风扇 | 风扇接口x1 |
预留接口 | 2PIN电池接口 |
电源 | Type-C PD 20V IN ,标准65W |
支持的操作系统 | Ubuntu、openEuler |
产品尺寸 | 107*68mm |
重量 | 82g |
- 产品图
环境搭建
镜像烧录
接下来我们到官网去下载一个镜像,将其烧录到内存卡中,并且等待烧录完成,
注意: 我使用的是win11操作系统,使用香橙派资料提供的烧录工具烧录一直失败。但是也是可以进系统的。记得要使用管理员方式去启动烧写工具,不然可能即使显示烧写成功,也无法进入系统。
香橙派资料下载地址
烧录工具下载地址
进入系统
-
进入系统: 接上电源等待开机之后进入系统,之后输入密码Mind@123即可进入系统,我这里烧录的是香橙派提供的Ubuntu镜像
-
配置WIFI模块:使用图形界面连接上WIFI之后查看对应的地址
- 查看地址并使用远程ssh连接
- 下载pycharm: 测试网络模块,并且下载pycharm,可以看到可以正常进行互联网的访问
- 打开pycharm:香橙派的Ubuntu环境还是比较全的,可以正常的使用MobaXterm进行远程打开pycharm
测试项目YOLOv5
香橙派自带的conda的base安装的python环境是3.9.2,我们这里就使用这个环境来测试,如果你想更换的话请使用下面的命令自行更换环境
shell
conda create -n name python=version
部署YOLOv5识别单张图片
- 先到github上去下载yolov5
- 将下载的zip文件传到香橙派中
- 解压
shell
unzip yolov5-master.zip
cd yolov5-master
- 检查pip位置是否正确
shell
which pip
# (base) HwHiAiUser@orangepiaipro:~/Documents/yolov5-master$ which pip
# /usr/local/miniconda3/bin/pip
- 安装对应的库,这里面的错误我们先忽略。经过实验,这两个错误并不会影响运行。
shell
pip3 install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple/
- 识别单张图片 : 这个里面的yolov5m-seg.pt如果不存在,会自动到github上去下载,但是速度极慢,建议是下载好,然后指定对应路径的pt文件
shell
python segment/predict.py --weights yolov5m-seg.pt --data data/images/bus.jpg
- 观察输出:通过对比识别结果和原始图片,我们会发现YOLOv5模型在识别效率和精度方面表现非常出色。无论是公交车的轮廓还是细节,模型都能够准确地识别并标注出来,显示了其强大的图像处理能力。
shell
# Fusing layers...
# YOLOv5m-seg summary: 301 layers, 21971597 parameters, 0 gradients, 70.8 GFLOPs
# image 1/2 /home/HwHiAiUser/Documents/yolov5-master/data/images/bus.jpg: 640x480 4 persons, 1 bus, 2052.6ms
# image 2/2 /home/HwHiAiUser/Documents/yolov5-master/data/images/zidane.jpg: 384x640 2 persons, 1 tie, 1660.7ms
# Speed: 4.7ms pre-process, 1856.6ms inference, 13.7ms NMS per image at shape (1, 3, 640, 640)
# Results saved to runs/predict-seg/exp3
实时识别视频
- 使用yolo对视频进行实时监测
修改源码detect.py的361行
python
parser = argparse.ArgumentParser()
parser.add_argument("--weights", nargs="+", type=str, default=ROOT / "yolov5s.pt", help="model path or triton URL")
# parser.add_argument("--source", type=str, default=ROOT / "data/images", help="file/dir/URL/glob/screen/0(webcam)")
parser.add_argument("--source", type=str, default=ROOT / "data/video", help="file/dir/URL/glob/screen/0(webcam)")
parser.add_argument("--data", type=str, default=ROOT / "data/coco128.yaml", help="(optional) dataset.yaml path")
parser.add_argument("--imgsz", "--img", "--img-size", nargs="+", type=int, default=[640], help="inference size h,w")
parser.add_argument("--conf-thres", type=float, default=0.25, help="confidence threshold")
parser.add_argument("--iou-thres", type=float, default=0.45, help="NMS IoU threshold")
parser.add_argument("--max-det", type=int, default=1000, help="maximum detections per image")
parser.add_argument("--device", default="", help="cuda device, i.e. 0 or 0,1,2,3 or cpu")
parser.add_argument("--view-img", action="store_true", help="show results")
parser.add_argument("--save-txt", action="store_true", help="save results to *.txt")
parser.add_argument("--save-csv", action="store_true", help="save results in CSV format")
parser.add_argument("--save-conf", action="store_true", help="save confidences in --save-txt labels")
parser.add_argument("--save-crop", action="store_true", help="save cropped prediction boxes")
parser.add_argument("--nosave", action="store_true", help="do not save images/videos")
parser.add_argument("--classes", nargs="+", type=int, help="filter by class: --classes 0, or --classes 0 2 3")
parser.add_argument("--agnostic-nms", action="store_true", help="class-agnostic NMS")
parser.add_argument("--augment", action="store_true", help="augmented inference")
parser.add_argument("--visualize", action="store_true", help="visualize features")
parser.add_argument("--update", action="store_true", help="update all models")
parser.add_argument("--project", default=ROOT / "runs/detect", help="save results to project/name")
parser.add_argument("--name", default="exp", help="save results to project/name")
parser.add_argument("--exist-ok", action="store_true", help="existing project/name ok, do not increment")
parser.add_argument("--line-thickness", default=3, type=int, help="bounding box thickness (pixels)")
parser.add_argument("--hide-labels", default=False, action="store_true", help="hide labels")
parser.add_argument("--hide-conf", default=False, action="store_true", help="hide confidences")
parser.add_argument("--half", action="store_true", help="use FP16 half-precision inference")
parser.add_argument("--dnn", action="store_true", help="use OpenCV DNN for ONNX inference")
parser.add_argument("--vid-stride", type=int, default=1, help="video frame-rate stride")
opt = parser.parse_args()
opt.imgsz *= 2 if len(opt.imgsz) == 1 else 1 # expand
print_args(vars(opt))
return opt
- 执行下面的命令:等待完成
shell
python segment/predict.py --weights ~/Documents/yolov5m-seg.pt --source ~/Downloads/test.mp4
YoloV5测试视频
使用Ascend测试yolov5
shell
# 配置程序编译依赖的头文件与库文件路径
export DDK_PATH=/usr/local/Ascend/ascend-toolkit/latest
export NPU_HOST_LIB=$DDK_PATH/runtime/lib64/stub
# 安装对应的库
apt-get install ffmpeg libavcodec-dev libswscale-dev libavdevice-dev
# 安装ACLLite
# 拉取ACLLite仓库,并进入目录
git clone https://gitee.com/ascend/ACLLite.git
cd ACLLite
# 设置环境变量,其中DDK_PATH中/usr/local请替换为实际CANN包的安装路径
export DDK_PATH=/usr/local/Ascend/ascend-toolkit/latest
export NPU_HOST_LIB=$DDK_PATH/runtime/lib64/stub
# 安装,编译过程中会将库文件安装到/lib目录下,所以会有sudo命令,需要输入密码
bash build_so.sh
# 解压之后进入yolo文件夹
cd EdgeAndRobotics/Samples/YOLOV5MultiInput
export TE_PARALLEL_COMPILER=1
export MAX_COMPILE_CORE_NUMBER=1
# 下载并且转换相关的模型
cd model
wget https://obs-9be7.obs.cn-east-2.myhuaweicloud.com/003_Atc_Models/yolov5s/yolov5s_nms.onnx --no-check-certificate
wget https://obs-9be7.obs.cn-east-2.myhuaweicloud.com/003_Atc_Models/yolov5s/aipp.cfg --no-check-certificate
atc --model=yolov5s_nms.onnx --framework=5 --output=yolov5s_nms --input_shape="images:1,3,640,640;img_info:1,4" --soc_version=Ascend310B4 --insert_op_conf=aipp.cfg
# 准备测试视频
cd ../data
wget https://obs-9be7.obs.cn-east-2.myhuaweicloud.com/003_Atc_Models/yolov5s/test.mp4 --no-check-certificate
# 编译样例源码
cd ../scripts
bash sample_build.sh
# 在HDMI连接屏幕场景,执行以下脚本运行样例。此时会以画面的形式呈现推理效果。
bash sample_run.sh imshow
# 在直连电脑场景,执行以下脚本运行样例。此时会以结果打屏的形式呈现推理效果。
bash sample_run.sh stdout
- 模型转换结果
- 模型输出结果
产品评价
香橙派AiPro是一款功能强大的AI开发板
- 性能强劲:香橙派AiPro采用了昇腾AI技术路线,配备了4核64位处理器+AI处理器,并集成了图形处理器。它支持高达8TOPS的AI算力,并拥有8GB/16GB LPDDR4X内存,可以外接多种容量的eMMC模块12。这些配置使得香橙派AiPro在AI算法原型验证、推理应用开发等方面表现出色。
- 丰富的接口和拓展性:香橙派AiPro配备了相当丰富的接口,包括两个HDMI输出、GPIO接口、Type-C电源接口、支持SATA/NVMe SSD 2280的M.2插槽、TF插槽、千兆网口、USB接口等,还预留了电池接口。这些接口赋予了香橙派AiPro强大的可拓展性,使其能够适应多种应用场景。
- 支持多种操作系统:香橙派AiPro支持Ubuntu、openEuler等操作系统,这为用户提供了更多的选择空间,同时也方便了用户根据自己的需求进行开发和部署。
- 使用体验:香橙派AiPro的包装盒精致小巧,官方提供了完整的配件,包括开发板、适配器和充电器等。开发板上的静音风扇效果良好,开机时噪音短暂,之后几乎无声。WIFI和蓝牙的天线扣设计位置也相对方便。在实际使用中,用户可以通过HDMI接口连接开发板显示,也可以通过SSH等方式远程连接。
综上所述,香橙派AiPro是一款性能强劲、接口丰富、拓展性强、支持多种操作系统的AI开发板。如果你正在寻找一款功能强大的AI开发板,香橙派AiPro是一个不错的选择。