首先非常感谢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镜像,本次测评时间紧迫,这里就不尝试了,后面有机会再测试

在这里插入图片描述

上面提到的相关资料都可以在香橙派官网找到,下面是板子相关资料下载地址:
http://www.orangepi.cn/html/hardWare/computerAndMicrocontrollers/service-and-support/Orange-Pi-AIpro.html

2、系统初探

进入系统后就可以看一些信息了,首先是存储部分,因为我们是用sd卡启动的,所以显示的就是sd卡的分区,分区信息如下:

在这里插入图片描述


内存情况如下,应该是8g的内存了

在这里插入图片描述


看一下CPU的信息,从这里读不出来CPU的型号

在这里插入图片描述


板子的信息就看到这里了,下面先把他当作一个常规的linux系统来看一下,一般我们安装好ubuntu之后第一步都是换源,然后更新对吧,这里我们也看一下,这里进去后可以看到已经是换好了的源了

在这里插入图片描述


之后我们执行更新sudo apt-get updatesudo apt-get upgrade

在这里插入图片描述


之后可以使用ssh远程登陆,这样写代码就更方便了,这里关于ssh的远程访问,可以参考我之前的文章:

vscode工具Remote-SSH使用记录

效果如下:

在这里插入图片描述

下面测试一下USB摄像头,做一下这个是因为我最近在搞图像传输相关的内容,正好拿来测试一下,介入USB摄像头,输入下面的指令:

 sudo fswebcam -d /dev/video0 --no-banner -r 1280x720 -S 5 ./image.jpg

就可以捕捉到摄像头的画面了

在这里插入图片描述


当然也可以用Gstreamer来实现,输入下面的命令安装需要的库

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

在这里插入图片描述


输入下面的命令测试摄像头是否可用,输入之后应该可以看到画面输出

gst-launch-1.0 v4l2src device=/dev/video0 ! videoconvert ! autovideosink

运行效果如下:

在这里插入图片描述


测试一下帧率还不错

在这里插入图片描述


之后可以尝试来推流

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来实现推拉流的功能,实现上如下所示,先安装需要的库:

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

之后下载开源程序

sudo git clone https://github.com/jacksonliam/mjpg-streamer.git
cd mjpg-streamer/mjpg-streamer-experimental
sudo make all
sudo make install

执行推流程序

./mjpg_streamer -i "./input_uvc.so" -o "./output_http.so -w ./www"

这里效果和上面的几乎一样,就不演示了,从这个拉流的效果来看,其实性能还是很不错的,比树莓派好多了起码。

3、AI性能体验

这里官方其实提供了样例,样例覆盖的很全面,我觉得这个的好处就是不用你自己一个个的去安装了环境了,这里真的是做的很棒了,路径在这里(这里需要关注就是我用的root用户进入的,这个样例放在了HwHiAiUser的用户路径下

/home/HwHiAiUser/samples/notebooks

可以看到这些样例:

在这里插入图片描述


输入这个命令可以进入jupyter notebook

bash start_notebook.sh 192.168.1.3

点击下面的链接就可以进去了

在这里插入图片描述


进去就能看到这几个demo,写的都蛮详细的

在这里插入图片描述


以第一个为例,是一个yolov5的demo

在这里插入图片描述


默认是跑一张图片

在这里插入图片描述


修改这个参数可以跑视频

在这里插入图片描述


修改这个函数,给摄像头实时检测加上帧率检测看看

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爱好者的开发板。

Logo

昇腾万里,让智能无所不及

更多推荐