本帖最后由 feixiang20 于 2018-8-20 22:04 编辑
[征集]你玩AI,我送幸运,为AI套件专区添砖加瓦--2
角蜂鸟AI视觉套件:(二)人工智能深度体验
本篇的硬件环境一样,跟着官方的教程来深度体验下角蜂鸟的人工智能的实力。根据官方介绍,角蜂鸟内置的几种深度神经网络模型如下,包括数字识别、人脸识别和物体识别等。 MNIST 数字识别模型 Mobilenet-SSD 人脸检测模型 Mobilenet-SSD VOC物体检测模型 SqueezeNet 图像分类模型 GoogleNet 图像识别模型(特征提取) FaceNet 人脸识别模型(特征提取) SketchGraph 手绘识别模型 OCR 中文文字识别模型 (Work in progress) https://hornedsungem.github.io/Docs/cn/workflow/ 由于在第一讲中已经体验过入门的MNIST手写数字识别了,这里就不做介绍了,官网也有详细解释。 1. 人脸检测使用角蜂鸟和Python调用内置部署的SSD-Mobilenet人脸检测卷积神经网络。检测器分析图片并找出目标的位置和尺寸。 cd ~/hornedSungemSDK/examples/python/ sudo python3 FaceDetector.py
其中SSD [N]中N为检测人脸个数,下一行为人脸检测框Bounding Box的左上角和右下角坐标以及窗的宽高。比如最后一行的几个数表示检测框的左上角在图片坐标系的(175,28),右下角在(245,127),width为245-175=70个像素,height为127-28=99个像素。图片坐标系的原点在图片窗口左上角,横轴为x,纵轴为y。
#! /usr/bin/env python3 # Copyright(c) 2018 Senscape Corporation. # License: Apache 2.0 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) try: 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) finally: net.quit()
来看代码,加上注释,一共二十多行就实现了人脸识别,实时性也很不错,真的很出乎我的意料。这里要给角蜂鸟的程序猿们奖个大香蕉 O(∩_∩)O哈哈~ 再来细看一下 - 人脸识别Python:hornedSungemSDK/examples/python/FaceDetector.py
- 模型文件:hornedSungemSDK/examples/graphs/graph_face_SSD
为什么可以这么简洁呢?设置net参数,调用net.run传入图片,然后就是结果了。在hornedSungemSDK/api/hsapi.py可以看到run函数里确实是加载神经网络模型self.graph.LoadTensor
def run(self, img=None, **kwargs): if img is None: image = self.graph.GetImage(self.zoom) else: if self.isGray: image = cv2.cvtColor(img,cv2.COLOR_RGB2GRAY) else: image = cv2.cvtColor(img,cv2.COLOR_BGR2RGB) img2load = cv2.resize(image,self.netSize).astype(float) img2load *= self.scale img2load -= self.mean self.graph.LoadTensor(img2load.astype(numpy.float16), None) self.imgSize = image.shape[:2] output, _ = self.graph.GetResult() #print(output) for k,v in kwargs.items(): exec('self.'+k+'=v') if self.type in [1,7] : # Classification output = numpy.argmax(output) elif self.type is 2: # SSD Face output = self.getBoundingBoxFromSSDResult(output, self.imgSize)
我们一起在hornedSungemSDK/api/hsapi.py中分析下源码,L485行
def plotSSD(self, result, labels=None): if labels is None: labels = self.labels display_image = result[0] boxes = result[1] source_image_width = display_image.shape[1] source_image_height = display_image.shape[0] self.msg_debug('SSD [%d]: Box values' % len(boxes),'*') for box in boxes: class_id = box[0] percentage = int(box[1] * 100) label_text = self.labels[int(class_id)] + " (" + str(percentage) + "%)" box_w = box[4]-box[2] box_h = box[5]-box[3] if (box_w > self.imgSize[0]*0.8) or (box_h > self.imgSize[1]*0.8): continue self.msg_debug('Box Name: %s' % self.labels[int(class_id)]) self.msg_debug('%d %d %d %d - w:%d h:%d' %(box[2],box[3],box[4],box[5],box_w,box_h))
打印识别结果。 2. 物体检测介绍如何使用角蜂鸟在Python调用内置部署的SSD-Mobilenet物体检测卷积神经网络。检测器分析图片并找出目标的位置和尺寸。 cd ~/hornedSungemSDK/examples/python/ sudo python3 ObjectDetector.py
3. 情景记录器简单来说就是利用神经网络进行特征提取,分类器,目前最多支持五个。 cd ~/hornedSungemSDK/examples/python/ sudo python3 SceneRecorder.py GoogleNet 图像识别模型(特征提取)
这里我是设置两个手势,伸出1根手指和伸出两根手指,分别为场景1和场景2。 按 ‘r’ 将筛选去除每个存档中的冗余图像特征,并生成模型。 按 ’s’ 将存档录入至 /misc/record.dat 文件中。按 ‘l’ 可读档 按 ‘p’ 将重置删除所有存档。 路径和文件- 情景记录器Python:hornedSungemSDK/examples/python/SceneRecorder.py
- 模型文件:hornedSungemSDK/examples/graphs/graph_g - GoogleNet
- 模型文件(备选):hornedSungemSDK/examples/graphs/graph_fn - FaceNet
4.图像识别器(底层API教程)图像识别器,比起检测器,识别器可从图片分析得到较细的分类类别,例如猫、狗的某个品种。 cd ~/hornedSungemSDK/examples/python/ sudo python3 ImageRecognition.py
- 人脸识别Python:SungemSDK/examples/python/ImageRecognition.py
- 模型文件:SungemSDK/examples/graphs/graph_sz
SqueezeNet 图像分类模型
按W和S可以相应的增大或减小ROI区域,这点官网没有提哦。 5. 你画我猜 cd ~/hornedSungemSDK/examples/python/ sudo python3 SketchGuess.py
https://mp.weixin.qq.com/s?__biz=MzA4MzAwNzcyOA==&mid=2650049516&idx=1&sn=bac2233b5e6c8f04e1183e56fe1f1ad1&chksm=87fd2a73b08aa365e5c199926a299382198a9d3cb15c36c22c75b76e1a1a2ae1f9da4f0ef7c3&mpshare=1&scene=23&srcid=07278ZPfI7lINKxvWcwbzmZq#rd 这篇博客详细介绍了整个实现过程 https://blog.csdn.net/weixin_40986174/article/details/80223626
版权声明:本文为博主原创文章,如需转载,请附上文章原文地址。 https://blog.csdn.net/yaked/article/details/81266309
|