文章目录
首先非常感谢csdn以及香橙派能够提供这样一个平台,可以测试OrangePi AIpro这样一块开发板,这块板子给我的感觉还是非常不错的,非常适合用来作为嵌入式学习的板子,性能也达到了一定要求,可以跑一些深度学习的任务了。
下面的文章我将总结我使用这块板子做的一些事情。
1、外观部分
先看官方宣传图吧,香橙派风格,但是一看就是高端的规格了,我之前也写过一些香橙派的应用文章,手上也有好几块不同的香橙派的板子,但一看到这个板子,感觉就是高端,用料明显好了很多,2个HDMI输出,然后usb口都是3.0,8T大算力芯片,wifi和蓝牙的芯片也还不错。整体上来看算是一款高端产品了。
板子到手是这样的
拆开风扇可以看到主芯片是华为的HI1910,非常的nice啊
官方送了一个5v3a的电源供电,默认里面是刷了一个官方系统,应该是魔改的ubuntu的系统,选好启动模式就可以上电体验了,启动模式的选择在官方手册中有说明,如下图所示:
启动模式说明:
拨码开关 BOOT1 | 拨码开关 BOOT2 | 对应的启动设备 |
---|---|---|
左 | 左 | 未使用 |
右 | 左 | SATA SSD 和 NVMe SSD |
左 | 右 | eMMC |
右 | 右 | TF 卡 |
这里官方给的是sd卡,因此这里将这两个boot都切换到右边即可
之后接上hdmi就可以点亮了(tips:这里一定注意,接hdmi的接上远离供电的那个hdmi口才行 ),效果如下:
至于用户名和密码,这个在官方手册也有说明,就是Mind@123
当然,总是套着个hdmi屏幕也很难受的,主要是房子太小,也没地方放这么多屏幕,这个板子也是延续了香橙派一贯的系统作风,给开了ssh的远程访问权限,接根网线到路由器上就行
之后就是登陆了,登陆这里需要账号密码,这个查文档也可以知道了
这里我们用root进入
登陆后就可以进入系统了
当然这个板子还支持openeuler镜像,本次测评时间紧迫,这里就不尝试了,后面有机会再测试
上面提到的相关资料都可以在香橙派官网找到,下面是板子相关资料下载地址:
2、系统初探
进入系统后就可以看一些信息了,首先是存储部分,因为我们是用sd卡启动的,所以显示的就是sd卡的分区,分区信息如下:
内存情况如下,应该是8g的内存了
看一下CPU的信息,从这里读不出来CPU的型号
板子的信息就看到这里了,下面先把他当作一个常规的linux系统来看一下,一般我们安装好ubuntu之后第一步都是换源,然后更新对吧,这里我们也看一下,这里进去后可以看到已经是换好了的源了
之后我们执行更新sudo apt-get update
,sudo apt-get upgrade
之后可以使用ssh远程登陆,这样写代码就更方便了,这里关于ssh的远程访问,可以参考我之前的文章:
效果如下:
下面测试一下USB摄像头,做一下这个是因为我最近在搞图像传输相关的内容,正好拿来测试一下,介入USB摄像头,输入下面的指令:
sudo fswebcam -d /dev/video0 --no-banner -r 1280x720 -S 5 ./image.jpg
就可以捕捉到摄像头的画面了
当然也可以用Gstreamer来实现,输入下面的命令安装需要的库
c
sudo apt update
sudo apt install gstreamer1.0-tools gstreamer1.0-plugins-base gstreamer1.0-plugins-good gstreamer1.0-plugins-bad gstreamer1.0-plugins-ugly gstreamer1.0-libav
sudo apt install libgstrtspserver-1.0-dev
查看一下本机的摄像头名称,我这里是video0
输入下面的命令测试摄像头是否可用,输入之后应该可以看到画面输出
c
gst-launch-1.0 v4l2src device=/dev/video0 ! videoconvert ! autovideosink
运行效果如下:
测试一下帧率还不错
之后可以尝试来推流
c
gst-launch-1.0 -v v4l2src device=/dev/video0 ! 'video/x-raw,width=640,height=480,framerate=30/1' ! videoconvert ! x264enc tune=zerolatency bitrate=1000 speed-preset=superfast ! rtph264pay ! udpsink host=192.168.2.163 port=5600
可以再电脑端在执行拉流,使用vlc拉流,效果如下:
当然也可以用mjpeg来实现推拉流的功能,实现上如下所示,先安装需要的库:
c
sudo apt-get update
sudo apt-get install subversion
sudo apt-get install libjpeg8-dev
sudo apt-get install imagemagick
sudo apt-get install libv4l-dev
sudo apt-get install cmake
sudo apt-get install git
之后下载开源程序
c
sudo git clone https://github.com/jacksonliam/mjpg-streamer.git
cd mjpg-streamer/mjpg-streamer-experimental
sudo make all
sudo make install
执行推流程序
c
./mjpg_streamer -i "./input_uvc.so" -o "./output_http.so -w ./www"
这里效果和上面的几乎一样,就不演示了,从这个拉流的效果来看,其实性能还是很不错的,比树莓派好多了起码。
3、AI性能体验
这里官方其实提供了样例,样例覆盖的很全面,我觉得这个的好处就是不用你自己一个个的去安装了环境了,这里真的是做的很棒了,路径在这里(这里需要关注就是我用的root用户进入的,这个样例放在了HwHiAiUser的用户路径下)
c
/home/HwHiAiUser/samples/notebooks
可以看到这些样例:
输入这个命令可以进入jupyter notebook
c
bash start_notebook.sh 192.168.1.3
点击下面的链接就可以进去了
进去就能看到这几个demo,写的都蛮详细的
以第一个为例,是一个yolov5的demo
默认是跑一张图片
修改这个参数可以跑视频
修改这个函数,给摄像头实时检测加上帧率检测看看
c
def infer_camera(model, labels_dict, cfg):
"""外设摄像头实时推理"""
def find_camera_index():
max_index_to_check = 10 # Maximum index to check for camera
for index in range(max_index_to_check):
cap = cv2.VideoCapture(index)
if cap.read()[0]:
cap.release()
return index
# If no camera is found
raise ValueError("No camera found.")
# 获取摄像头
camera_index = find_camera_index()
cap = cv2.VideoCapture(camera_index)
# 初始化可视化对象
image_widget = widgets.Image(format='jpeg', width=1280, height=720)
fps_widget = widgets.Label()
display(image_widget, fps_widget)
while True:
start_time = time.time()
# 对摄像头每一帧进行推理和可视化
ret, img_frame = cap.read()
if not ret:
break
image_pred = infer_frame_with_vis(img_frame, model, labels_dict, cfg)
image_widget.value = img2bytes(image_pred)
# 计算帧率
end_time = time.time()
fps = 1 / (end_time - start_time)
fps_widget.value = f"FPS: {fps:.2f}"
加上帧率显示,大概是19帧左右的样子,说实话感觉慢了,不知道是不是因为用的python的原因。
第二个例子是文本识别,跑一张图,然后识别里面的文字和位置
我又跑了一张我自己的,对比看看,还是有点误识别,参数还有优化空间,后续我再改一下,效果如下
第三个样例是一个图片分类的样例,实用的resnet的网络,这个网络也比较经典,这里就直接看样例吧,不赘述了
第四个样例是一个调节曝光参数的算法,这个算法我之前也没有了解过,但是感觉可能在家用监控摄像头上会有应用空间,针对阴天这种光线不足的场景是不是能提高视频图像画质呢?
第五个样例是一个风格化的样例,用的是gan网络,说实话体验到这里,我觉得这个板子的ai可玩性真的很高,这么多网络都能跑起来,而且效率也很高
第六个样例是一个分类的网络,这个也没接触过,他能实现的效果大概就是计算一些特征的占比
第七个是一个分割网络,用的是很经典u-net网络,这个网络在医学数细胞这里很流行,其实这个网络在建筑结构检测也用的很多,针对裂缝这样的模型。
第八个也是一个分割网络,用的是protrainnet网络,主要是进行人像分割,然后换了一下背景,这个也没研究过
最后一个是一个音频网络,语音转文字的,现在语音识别也很火,这个模型可以很准确的识别出来语音,但是这个领域我也没研究过,感觉还是很强
4、总结
一开始我以为我应该用这个板子去测一些linux的三件套,编个ubbot,内核,文件系统啥的。真正用起来我被这个的ai性能惊艳到了,这种的板子更适合做应用层的开发,特别是这个系统刷完就配置好了环境,跑ai真的是太方便了。可以接触到这么多新的热门的ai模型,一个个的过一遍都能学到不少东西。总的来说,这块板子是一块很适合ai爱好者的开发板。