HaaS轻应用(Python):基于HaaS-AI的图像分类

简介: HaaS 即 Hardware as a Service, 它是加速AIoT开发者创新的一个积木平台。Python轻应用是跑在HaaS积木平台上的一套应用框架。他是基于MicroPython进行开发,继承了python优美简介的语法,同时提供了便捷的嵌入式硬件操作库。

1、序言

HaaS 即 Hardware as a Service, 它是加速AIoT开发者创新的一个积木平台。

Python轻应用是跑在HaaS积木平台上的一套应用框架。他是基于MicroPython进行开发,继承了python优美简介的语法,同时提供了便捷的嵌入式硬件操作库。

HaaS100作为阿里云智能IoT团队推出的一款 IoT 开发板,它适配了MicroPython的运行引擎, 提供了各种丰富的硬件操作接口,同时提供阿里云物联网平台和云端AI相关的能力。

本文将介绍怎么基于Python轻应用框架, 来实现图像分类功能。

2、方案

2.1、总体思路

方案涉及主要涉及Minicv,Alibaba Cloud SDK 等功能模块.

MiniCV 是一套轻量级视觉框架,支持数据获取,图像处理,图像编解码,视频编解码,机器学习,UI呈现。

Alibaba Cloud SDK是阿里达摩院视觉智能开放平台的端上的引覆盖人脸、人体、视频、文字等150+场景。

关于视觉视觉智能平台的详细信息可以参考官网:https://vision.aliyun.com/

数据处理流程为:

通过MiniCV模块,完成数据源的封装处理,图片的解码,图片数据的格式转换和缩放等功能,最后将处理好的数据喂给ML 模块,ML 模块通过Alibaba Cloud SDK引擎和达摩院的视觉开放智能平台进行交互,得到预期结果.

由于HaaS100的板子默认没有配置LCD, 所以为了方便开发者使用,通过打印LOG 的方式将结果输出.

image.png

2.2、具备功能

检测图像中的物体。可识别90类物体,例如:人体、椅子、篮球、摩托车、旗帜、斑马等。

2.3、效果呈现

测试资源图片:"/data/python-apps/ml/object-detect/res/test.jpg"

image.png

输出结果:

# -------------------Welcome HaasAI MicroPython--------------------
 
-----ml ucloud ObjectDet demo start-----
 
object num:4
 
Object Detect type: flower
 
Object Detect type: flower
 
Object Detect type: plants pot/vase
 
Object Detect type: laptop
 
 
 
bytearray(b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00')
 
-----ml ucloud ObjectDet demo end-----

3、图像分类技术介绍

3.1、常见机器视觉技术

图像分类、目标定位、目标检测、实例分割是机器视觉中最常用的技术,其中,图像分类技术是其他几种技术的基础。

image.png

3.2、常见图像分类算法介绍

  • AlexNet(ILSVRC-2012):AlexNet 是LeNet的更深、更宽版本,深度达到了8层。推动卷积神经网络的普及。AlexNet首次在CNN中成功应用了RELU、Dropout和LRN等激活函数
  • ZF Net(ILSVRC-2013):是调整过架构超参数的AlexNet改进型。
  • VGGNet(ILSVRC-2014亚军):展示了网络的深度是良好表现的关键因素,VGG网络深度达到了19层。 自此,深度学习模型的分类准确率已经达到了人类的水平(5%~10%)。
  • GoogleNet(ILSVRC-2014):其主要贡献是研发了Inception Module,大幅减少了网络中的参数数量(四百万,相比AlexNet的六千万), Inception-v1同时也被称为googleNet,在后续几年中,google也相继提出了性能更好的Inception-v2和Inception-V3。
  • ResNet(ILSVRC-2015) 引入在在训练时更容易收敛的残差网络,网络深度达到了152,更高的精度。
  • Trimps-Soushen(ILSVRC-2016):以Top-5 2.99%的准确率获得冠军
  • SENet(ILSVRC-2017):以Top-5 2.25%的准确率获得冠军 ,SENet的卷积操作融合了空间和特征通道信息。

3.2.1、ImageNet系列算法

从AlexNet到RestNet,网络深度不断增加,识别准确率得到了大幅提高,下图是基于ImageNet数据集top5错误率

image.png

3.2.2、MobileNet

Google于2017年提出了更轻量的MobileNet-V1,并在后续几年提出了性能更好的MobileNet-V2, MobileNet-3; MobileNet在目标检测、细粒度分类、人脸属性和大规模地理定位等方面都体现出了非常好的实践效果,在详细介绍MobileNet之前,先对比一下GoogleNet,ResNet,MobileNet的算力开销。

image.png

image.png

3.2.3、MobileNet-V1

创新点1:使用深度可分离卷积,在低精度损失情况下有效减少了参数数量和算力开销

image.png

  • 设定DF为特征图尺寸,DK为卷积核尺寸,M为输入通道数,N为输出通道数。
  • 传统卷积计算量为: DF∗DF∗DK∗DK∗M∗N
  • 深度可分离卷积计算量为: DK∗DK∗M∗DF∗DF+1∗1∗M∗N∗DF∗DF

image.png

创新点2:使用了relu6作为激活函数

image.png

创新点3:增加两个超参数,称为Width Multiplier (α 超参数)和 Resolution Multiplier(ρ 超参数)

image.png

3.2.4、MobileNet-V2

  • 创新点1:引入了残差网络,使得训练时候更容易收敛
  • 创新点2:在进行depthwise之前先进行1x1的卷积增加feature map的通道数,实现feature maps的扩张,提升了精度,但是增加了一定的计算量。pointwise结束之后弃用RELU6激活函数,改用Linear激活函数,来防止RELU对特征的破坏

image.png

相对于MobileNet-V1 28层的网络深度,MobileNet-V2的网络深度达到了54层,延时也低了很多

image.png

3.2.5、MobileNet-V3

  • 对V2输出层的改造:
  • 将平均池化层提前。在使用1×1卷积进行扩张后,就紧接池化层-激活函数,最后使用1×1的卷积进行输出,通过这一改变,能减少10ms的延迟,提高了15%的运算速度,且几乎没有任何精度损失。

image.png

image.png

准确率和计算速度都高于MobileNet-V2,延时也不断下降

image.png

4、Demo体验

4.1、代码下载和编译

参考《HaaS100快速开始》下载,编译,烧录,AliOS Things代码.(解决方案选择:py_engine_demo)

烧录完成,启动设备,通过串口输入:

(命令中的 ssid password 是开发者自己工作环境的wifi 用户名和密码)

python /data/python-apps/wifi/main.py ssid  password
 
python /data/python-apps/ml/object-detect/main.py

4.2、示例代码

from minicv import ML
 
print("-------------------Welcome HaasAI MicroPython--------------------")
 
 
 
print("-----ml ucloud ObjectDet demo start-----")
 
#下面的这几个xxx 账号值,是阿里云官网系统按照4.3涨价的设备端配置一步步得到的,详细步骤参考4.3章节
 
OSS_ACCESS_KEY = "xxxx"    #"Your-Access-Key"
 
OSS_ACCESS_SECRET = "xxxx" #"Your-Access-Secret"
 
OSS_ENDPOINT = "xxxx"      #"Your-OSS-Endpoint"
 
OSS_BUCKET = "xxxx"        #"Your-OSS-Bucket"
 
 
 
ml = ML()
 
ml.open(ml.ML_ENGINE_CLOUD)
 
ml.config(OSS_ACCESS_KEY, OSS_ACCESS_SECRET, OSS_ENDPOINT, OSS_BUCKET, "NULL")
 
ml.setInputData("/data/python-apps/ml/object-detect/res/test.jpg")
 
ml.loadNet("ObjectDet")
 
ml.predict()
 
responses_value = bytearray(10)
 
ml.getPredictResponses(responses_value)
 
print(responses_value)
 
ml.unLoadNet()
 
ml.close()
 
print("-----ml ucloud ObjectDet demo end-----")

4.3、设备端配置

4.3.1、账号注册

注册链接:https://www.aliyun.com/

点击红色框圈中的“立即注册”按钮进行注册.

image.png

4.3.2、OSS参数获取

使用OSS功能的时候涉及到四个配置参数:AccessKeyId,AccessKeySecret,Endpoint,BucketName.

AccessKey 获取:

登录https://ram.console.aliyun.com/账号管理平台查看AccessKeyId,AccessKeySecret(账号为上一节中注册的账号)

点击账号头像框中的"AccessKey管理"按钮.

image.png

点击按钮"查看Select",获取AccessKeyId,AccessKeySecret

image.png

Bucket账号获取:

登陆OSS控制台https://oss.console.aliyun.com/创建Bucket,创建时地域一定要选择上海

image.png

image.png

image.png

在Bucket创建好后,从上图我们可以看到:

Endpoint:oss-cn-shanghai.aliyuncs.com

BucketName就是我们创建Bucket取的名字oss-ai-dev-one

4.3.3、Bucket文件夹创建

image.png

4.3.4、Bucket文件夹权限

创建好文件夹后,记住一定要修改文件夹权限,否则访问失败.

image.png

开发者技术支持

Python轻应用继承了Python易学易用的特点,同时提供了基于嵌入式硬件的基础库封装,让开发者可以很方便的通过交互式的环境,实时进行嵌入式开发,让嵌入式开发也变得简单方便。

如需更多技术支持,可加入钉钉开发者群,获取一对一的技术支持!

image.png

更多技术与解决方案介绍,请访问HaaS官网 https://haas.iot.aliyun.com/

相关实践学习
对象存储OSS快速上手——如何使用ossbrowser
本实验是对象存储OSS入门级实验。通过本实验,用户可学会如何用对象OSS的插件,进行简单的数据存、查、删等操作。
相关文章
|
5月前
|
监控 数据可视化 数据挖掘
Python Rich库使用指南:打造更美观的命令行应用
Rich库是Python的终端美化利器,支持彩色文本、智能表格、动态进度条和语法高亮,大幅提升命令行应用的可视化效果与用户体验。
442 0
|
6月前
|
数据采集 监控 Java
Python 函数式编程的执行效率:实际应用中的权衡
Python 函数式编程的执行效率:实际应用中的权衡
312 102
|
4月前
|
人工智能 缓存 自然语言处理
Java与多模态AI:构建支持文本、图像和音频的智能应用
随着大模型从单一文本处理向多模态能力演进,现代AI应用需要同时处理文本、图像、音频等多种信息形式。本文深入探讨如何在Java生态中构建支持多模态AI能力的智能应用。我们将完整展示集成视觉模型、语音模型和语言模型的实践方案,涵盖从文件预处理、多模态推理到结果融合的全流程,为Java开发者打开通往下一代多模态AI应用的大门。
457 41
|
5月前
|
机器学习/深度学习 算法 安全
【强化学习应用(八)】基于Q-learning的无人机物流路径规划研究(Python代码实现)
【强化学习应用(八)】基于Q-learning的无人机物流路径规划研究(Python代码实现)
387 6
|
5月前
|
设计模式 缓存 运维
Python装饰器实战场景解析:从原理到应用的10个经典案例
Python装饰器是函数式编程的精华,通过10个实战场景,从日志记录、权限验证到插件系统,全面解析其应用。掌握装饰器,让代码更优雅、灵活,提升开发效率。
392 0
|
6月前
|
数据采集 存储 数据可视化
Python网络爬虫在环境保护中的应用:污染源监测数据抓取与分析
在环保领域,数据是决策基础,但分散在多个平台,获取困难。Python网络爬虫技术灵活高效,可自动化抓取空气质量、水质、污染源等数据,实现多平台整合、实时更新、结构化存储与异常预警。本文详解爬虫实战应用,涵盖技术选型、代码实现、反爬策略与数据分析,助力环保数据高效利用。
376 0
|
6月前
|
存储 程序员 数据处理
Python列表基础操作全解析:从创建到灵活应用
本文深入浅出地讲解了Python列表的各类操作,从创建、增删改查到遍历与性能优化,内容详实且贴近实战,适合初学者快速掌握这一核心数据结构。
618 0
|
6月前
|
中间件 机器人 API
Python多态实战:从基础到高阶的“魔法”应用指南
Python多态机制通过“鸭子类型”实现灵活接口,使不同对象统一调用同一方法,自动执行各自行为。它简化代码逻辑、提升扩展性,适用于数据处理、策略切换、接口适配等场景。掌握多态思维,能有效减少冗余判断,使程序更优雅、易维护。
321 0
|
6月前
|
存储 监控 安全
Python剪贴板监控实战:clipboard-monitor库的深度解析与扩展应用
本文介绍了基于Python的剪贴板监控技术,结合clipboard-monitor库实现高效、安全的数据追踪。内容涵盖技术选型、核心功能开发、性能优化及实战应用,适用于安全审计、自动化办公等场景,助力提升数据管理效率与安全性。
244 0
|
7月前
|
存储 监控 安全
Python剪贴板监控实战:clipboard-monitor库的深度解析与扩展应用
本文介绍如何利用Python的clipboard-monitor库实现剪贴板监控系统,涵盖文本与图片的实时监听、防重复存储、GUI界面开发及数据加密等核心技术,适用于安全审计与自动化办公场景。
280 0

推荐镜像

更多