Auto Byte

专注未来出行及智能汽车科技

微信扫一扫获取更多资讯

Science AI

关注人工智能与其他前沿技术、基础学科的交叉研究与融合发展

微信扫一扫获取更多资讯

角蜂鸟AI视觉套件:为边缘设备提供即插即用的卷积网络计算单元

在树莓派这样的边缘设备部署预训练模型一直很多开发者与爱好者所关心的内容,我们希望借助这种轻量级计算设备实现模型的本地化推断,并应用到各种有意思的任务中。但树莓派这种以CPU为计算核心的设备很难运行深度学习模型,很多实时推断甚至需要使用云计算资源。因此,近日触景无限发布了一款加载了Intel Movidius 卷积神经网络加速芯片的视觉套件,我们可以在树莓派或笔记本等平台将深度学习模型的计算分配给它。本文介绍了角蜂鸟这一视觉开发套件及其简要的使用方法,感兴趣的读者也可以尝试动手构建实时的目标检测或人脸识别等任务。


角蜂鸟官网:http://www.hornedsungem.org/


角蜂鸟Horned Sungem嵌入式AI视觉套件是触景无限打造的一款即插即用人工智能视觉套件,致力于为大众提供学习、使用及创造AI应用的机会。角蜂鸟Horned Sungem集成了Intel Movidius MA245X卷积神经网络(CNN)加速芯片,体积小、功耗低、算力高。它还支持多系统如Windows(开发中)、macOS、Linux(Ubuntu,Raspbian)、Android等,对Host系统要求极低。



目前,角蜂鸟 Horned Sungem 内嵌了7种基础的神经网络模型,可以完成人脸检测、人脸识别、物体识别等功能。角蜂鸟 Horned Sungem 还可以简单地更换内嵌模型,如果用户手中已拥有训练完成的 TensorFlow、Caffe、Darknet 等神经网络模型,可直接通过角蜂鸟 Horned Sungem 的线上模型转换工具,转换为角蜂鸟 Horned Sungem 专用的神经网络模型。


角蜂鸟的安装和使用都非常简单,基本来说只需要从GitHub下载对应的SDK包,并使用命令行安装就行了。例如在Mac上运行以下命令就能安装SungemSDK:

git clone https://github.com/HornedSungem/SungemSDK.git
cd SungemSDK/installer/OSX
bash ./install.sh tuna

目前角蜂鸟有7个内置的预训练模型,我们可以借助这些模型快速玩转边缘设备上的计算机视觉任务。这些针对不同任务的预训练模型包括MNIST 手写数字识别模型、Mobilenet-SSD 人脸检测模型、Mobilenet-SSD VOC 物体检测模型、SqueezeNet 图像分类模型、GoogleNet 图像识别模型、FaceNet 人脸识别模型和 SketchGraph 手绘识别模型等。它们的使用都非常简单快捷,以下我们将介绍MNIST手写数字识别与 Mobilenet-SSD 人脸识别两个模型。


对于手写数字识别来说,在 /SungemSDK/examples/python 目录下执行以下命令行就能得到已有手写数字的识别:

python3 Hello2018.py

如果一切正常,将会得到以下结果:

| ======= Horned Sungem ======== |
 |        Device found [0]        |
 |     Model loaded to Python     |
 |   Model allocated to device    |
 | ============================== |
 Hello
 [2]
 [0]
 [1]
 [8]

在上面运行的 Hello2018.py 文件中,首先需要加载 OpenCV、NumPy 以及角蜂鸟 HSAPI,然后再将 CNN 加载到设备并设置图像的根目录:

# Import libs
 import cv2, sys, numpy as np
 sys.path.append('../../api/')
 import hsapi as hs
 
 # Load CNN to device and set scale / mean
 net = hs.HS('mnist')
 imgRoot = '../misc/2018_mnist/%d.jpg'

后面就只需要从 imgRoot 中读取图像,并馈送到模型 hs.HS('mnist') 就能完成预测:

print('Hello')
 for n in [1,2,3,4]:
      imgname = imgRoot % n
      img = cv2.imread(imgname)
      result = net.run(img)
      print(result[1])

如同手写数字识别一般,人脸识别的用法基本相同,只不过在运行文件中会用一些参数控制识别的行为。如上同样在/SungemSDK/examples/python目录下运行命令行python3 FaceDetector.py就能实现实时人脸识别,如果图像中包含人脸,则可得到输出:

* *****SSD [1]: Box values****** *
 *         Box Name: Face         *
 * 360 106 591 361 - w:231 h:255  *

其中SSD [N]中N为检测人脸个数,下一行为人脸检测框Bounding Box的左上角和右下角坐标以及窗的宽高。


FaceDetector.py 文件中的代码如下所示:

import numpy as np, cv2, sys
 sys.path.append('../../api/')
 import hsapi as hs
 
 WEBCAM = False # Set to True if use Webcam
 net = hs.HS('FaceDetector', zoom = True, verbose = 2, threshSSD=0.55)
 if WEBCAM: video_capture = cv2.VideoCapture(0)
 
 while True:
     if WEBCAM: _, img = video_capture.read()
     else: img = None
     result = net.run(img)
     img = net.plotSSD(result)
     cv2.imshow("Face Detector", img)
     cv2.waitKey(1)

其中变量WEBCAM表示是否使用外接USB摄像头,使用的话则需要调用OpenCV。加载预训练模型FaceDetector时,参数zoom如果配置为True,则表示输出图像缩放为640*360,否则为1920*1080。verbose为2表示输出所有信息,而threshSSD则控制了人脸检测的阈值,提高阈值会减少错检但增加漏检。之后就是利用已训练模型做推断,其中result包含检测置信度和边界框位置等信息。如下是人脸检测的输出实例:


* *****SSD [9]: Box values****** *
 *         Box Name: Face         *
 * 167 103 307 262 - w:140 h:159  *
 *         Box Name: Face         *
 *  29 114 140 272 - w:111 h:158  *
 *         Box Name: Face         *
 * 344 101 446 239 - w:102 h:138  *
 *         Box Name: Face         *
 * 349 255 474 365 - w:125 h:110  *
 *         Box Name: Face         *
 *  507 93 611 225 - w:104 h:132  *
 *         Box Name: Face         *
 *  205 280 313 362 - w:108 h:82  *
 *         Box Name: Face         *
 *   19 2 119 109 - w:100 h:107   *
 *         Box Name: Face         *
 *   189 4 290 99 - w:101 h:95    *
 *         Box Name: Face         *
 *    334 0 425 92 - w:91 h:92    *


重要的是,角蜂鸟可以插入安卓设备中,并作为视觉系统的扩展。此外,在角蜂鸟的现场Demo展示中,它已经嵌入到了很多很有意思的实现里。包括能检测并追踪目标的树莓派小车、能识别人脸并打招呼的改装奥松机器人、智能台灯及情景记录仪等。这些应用都非常有意思,且角蜂鸟也提供了官方教程。



未来,角蜂鸟Horned Sungem将上线模型市场,会发布一些高质量模型供给用户兑换使用,而用户本身也可以上传自己训练的模型售卖。除此之外,角蜂鸟Horned Sungem在未来还将提供完善的应用/套件商店、交流互动社区、模型变现渠道等。


最后,角蜂鸟Horned Sungem嵌入式AI视觉套件于5月25日正式发布,官方购买渠道为“角蜂鸟HornedSungem”公众号/角蜂鸟小程序,微信搜索角蜂鸟即可。

产业计算机视觉卷积神经网络边缘设备硬件
相关数据
深度学习技术

深度学习(deep learning)是机器学习的分支,是一种试图使用包含复杂结构或由多重非线性变换构成的多个处理层对数据进行高层抽象的算法。 深度学习是机器学习中一种基于对数据进行表征学习的算法,至今已有数种深度学习框架,如卷积神经网络和深度置信网络和递归神经网络等已被应用在计算机视觉、语音识别、自然语言处理、音频识别与生物信息学等领域并获取了极好的效果。

参数技术

在数学和统计学裡,参数(英语:parameter)是使用通用变量来建立函数和变量之间关系(当这种关系很难用方程来阐述时)的一个数量。

人脸识别技术

广义的人脸识别实际包括构建人脸识别系统的一系列相关技术,包括人脸图像采集、人脸定位、人脸识别预处理、身份确认以及身份查找等;而狭义的人脸识别特指通过人脸进行身份确认或者身份查找的技术或系统。 人脸识别是一项热门的计算机技术研究领域,它属于生物特征识别技术,是对生物体(一般特指人)本身的生物特征来区分生物体个体。

TensorFlow技术

TensorFlow是一个开源软件库,用于各种感知和语言理解任务的机器学习。目前被50个团队用于研究和生产许多Google商业产品,如语音识别、Gmail、Google 相册和搜索,其中许多产品曾使用过其前任软件DistBelief。

张量技术

张量是一个可用来表示在一些矢量、标量和其他张量之间的线性关系的多线性函数,这些线性关系的基本例子有内积、外积、线性映射以及笛卡儿积。其坐标在 维空间内,有 个分量的一种量,其中每个分量都是坐标的函数,而在坐标变换时,这些分量也依照某些规则作线性变换。称为该张量的秩或阶(与矩阵的秩和阶均无关系)。 在数学里,张量是一种几何实体,或者说广义上的“数量”。张量概念包括标量、矢量和线性算子。张量可以用坐标系统来表达,记作标量的数组,但它是定义为“不依赖于参照系的选择的”。张量在物理和工程学中很重要。例如在扩散张量成像中,表达器官对于水的在各个方向的微分透性的张量可以用来产生大脑的扫描图。工程上最重要的例子可能就是应力张量和应变张量了,它们都是二阶张量,对于一般线性材料他们之间的关系由一个四阶弹性张量来决定。

计算机视觉技术

计算机视觉(CV)是指机器感知环境的能力。这一技术类别中的经典任务有图像形成、图像处理、图像提取和图像的三维推理。目标识别和面部识别也是很重要的研究领域。

机器人技术技术

机器人学(Robotics)研究的是「机器人的设计、制造、运作和应用,以及控制它们的计算机系统、传感反馈和信息处理」 [25] 。 机器人可以分成两大类:固定机器人和移动机器人。固定机器人通常被用于工业生产(比如用于装配线)。常见的移动机器人应用有货运机器人、空中机器人和自动载具。机器人需要不同部件和系统的协作才能实现最优的作业。其中在硬件上包含传感器、反应器和控制器;另外还有能够实现感知能力的软件,比如定位、地图测绘和目标识别。之前章节中提及的技术都可以在机器人上得到应用和集成,这也是人工智能领域最早的终极目标之一。

神经网络技术

(人工)神经网络是一种起源于 20 世纪 50 年代的监督式机器学习模型,那时候研究者构想了「感知器(perceptron)」的想法。这一领域的研究者通常被称为「联结主义者(Connectionist)」,因为这种模型模拟了人脑的功能。神经网络模型通常是通过反向传播算法应用梯度下降训练的。目前神经网络有两大主要类型,它们都是前馈神经网络:卷积神经网络(CNN)和循环神经网络(RNN),其中 RNN 又包含长短期记忆(LSTM)、门控循环单元(GRU)等等。深度学习是一种主要应用于神经网络帮助其取得更好结果的技术。尽管神经网络主要用于监督学习,但也有一些为无监督学习设计的变体,比如自动编码器和生成对抗网络(GAN)。

卷积神经网络技术

卷积神经网路(Convolutional Neural Network, CNN)是一种前馈神经网络,它的人工神经元可以响应一部分覆盖范围内的周围单元,对于大型图像处理有出色表现。卷积神经网路由一个或多个卷积层和顶端的全连通层(对应经典的神经网路)组成,同时也包括关联权重和池化层(pooling layer)。这一结构使得卷积神经网路能够利用输入数据的二维结构。与其他深度学习结构相比,卷积神经网路在图像和语音识别方面能够给出更好的结果。这一模型也可以使用反向传播算法进行训练。相比较其他深度、前馈神经网路,卷积神经网路需要考量的参数更少,使之成为一种颇具吸引力的深度学习结构。 卷积网络是一种专门用于处理具有已知的、网格状拓扑的数据的神经网络。例如时间序列数据,它可以被认为是以一定时间间隔采样的一维网格,又如图像数据,其可以被认为是二维像素网格。

OpenCV技术

OpenCV的全称是Open Source Computer Vision Library,是一个跨平台的计算机视觉库。OpenCV是由英特尔公司发起并参与开发,以BSD许可证授权发行,可以在商业和研究领域中免费使用。OpenCV可用于开发实时的图像处理、计算机视觉以及模式识别程序。

推荐文章
暂无评论
暂无评论~