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/

相关实践学习
通义万相文本绘图与人像美化
本解决方案展示了如何利用自研的通义万相AIGC技术在Web服务中实现先进的图像生成。
相关文章
|
2月前
|
监控 数据可视化 数据挖掘
Python Rich库使用指南:打造更美观的命令行应用
Rich库是Python的终端美化利器,支持彩色文本、智能表格、动态进度条和语法高亮,大幅提升命令行应用的可视化效果与用户体验。
212 0
|
3月前
|
数据采集 监控 Java
Python 函数式编程的执行效率:实际应用中的权衡
Python 函数式编程的执行效率:实际应用中的权衡
267 102
|
1月前
|
人工智能 缓存 自然语言处理
Java与多模态AI:构建支持文本、图像和音频的智能应用
随着大模型从单一文本处理向多模态能力演进,现代AI应用需要同时处理文本、图像、音频等多种信息形式。本文深入探讨如何在Java生态中构建支持多模态AI能力的智能应用。我们将完整展示集成视觉模型、语音模型和语言模型的实践方案,涵盖从文件预处理、多模态推理到结果融合的全流程,为Java开发者打开通往下一代多模态AI应用的大门。
315 41
|
2月前
|
人工智能 数据安全/隐私保护 异构计算
桌面版exe安装和Python命令行安装2种方法详细讲解图片去水印AI源码私有化部署Lama-Cleaner安装使用方法-优雅草卓伊凡
桌面版exe安装和Python命令行安装2种方法详细讲解图片去水印AI源码私有化部署Lama-Cleaner安装使用方法-优雅草卓伊凡
391 8
桌面版exe安装和Python命令行安装2种方法详细讲解图片去水印AI源码私有化部署Lama-Cleaner安装使用方法-优雅草卓伊凡
|
4月前
|
存储 数据可视化 BI
Python可视化应用——学生成绩分布柱状图展示
本程序使用Python读取Excel中的学生成绩数据,统计各分数段人数,并通过Matplotlib库绘制柱状图展示成绩分布。同时计算最高分、最低分及平均分,实现成绩可视化分析。
351 0
|
1月前
|
机器学习/深度学习 人工智能 自然语言处理
python编写AI生常用匡架及使用指令集
本文介绍Python中常用AI框架,包括TensorFlow、PyTorch、Scikit-learn、Hugging Face、spaCy、OpenCV及XGBoost等,涵盖安装指令与基础代码示例,适用于机器学习、深度学习、自然语言处理与计算机视觉等领域,助力快速入门与应用开发。(238字)
324 7
|
2月前
|
机器学习/深度学习 算法 安全
【强化学习应用(八)】基于Q-learning的无人机物流路径规划研究(Python代码实现)
【强化学习应用(八)】基于Q-learning的无人机物流路径规划研究(Python代码实现)
200 6
|
3月前
|
人工智能 自然语言处理 安全
Python构建MCP服务器:从工具封装到AI集成的全流程实践
MCP协议为AI提供标准化工具调用接口,助力模型高效操作现实世界。
768 1
|
2月前
|
设计模式 缓存 运维
Python装饰器实战场景解析:从原理到应用的10个经典案例
Python装饰器是函数式编程的精华,通过10个实战场景,从日志记录、权限验证到插件系统,全面解析其应用。掌握装饰器,让代码更优雅、灵活,提升开发效率。
235 0
|
4月前
|
数据采集 人工智能 API
推荐一款Python开源的AI自动化工具:Browser Use
Browser Use 是一款基于 Python 的开源 AI 自动化工具,融合大型语言模型与浏览器自动化技术,支持网页导航、数据抓取、智能决策等操作,适用于测试、爬虫、信息提取等多种场景。
767 4
推荐一款Python开源的AI自动化工具:Browser Use

推荐镜像

更多