HaaS Python 云端一体AI 车型识别功能

简介: HaaS Python 云端一体AI 车型识别功能

车型识别系统

  车型识别是识别汽车图片(完整或部件图片)的类型,目前有小轿车、多用途汽车、SUV等类别。


  本案例导学步骤如下图所示。




背景知识

  根据拍摄照片,快速识别图片中车辆的品牌型号,提供针对性的信息和服务,可用于相册管理、图片分类打标签、电子汽车说明书、一键拍照租车等场景。以及在监控高速路闸口、停车场出入口的进出车辆,识别详细车型信息,结合车牌、车辆属性对车辆身份进行校验,形成车辆画像。本案例采用M5Stack Core2开发板,结合摄像头实时拍照,将图片发送到HaaS云端进行识别,并返回识别的车型。


场景功能拆解

  实验整体步骤如下:


连接硬件

开通HaaS增值服务

设备端开发

设备运行

准备

M5Stack Core2开发板 一套

M5Stack Unit CAM摄像头 一个

连接线 若干

涉及到的硬件购买链接如下,仅供参考,不负责商家发货的品质保障等问题!


名称 数量 参考链接

M5Stack Core2开发版 1 M5Stack Core2

microUSB数据线 1 M5Stack Core2开发套件自带

摄像头 1 M5Stack Unit CAM摄像头

连接线 1条 M5Stack GROVE连接线 请选用10cm长即可

  硬件连线图如下图所示:




云端平台功能开通

在本案例中涉及到云端平台功能都聚合在HaaS云端积木中,所以无需单独使用 对象存储OSS 和 视觉智能开发平台。案例整个步骤分为:


注册阿里云账号并登录阿里云账号;

在HaaS官网中的云端积木控制台创建设备;

推送脚本到M5Stack Core2并运行车型识别;

注册阿里云账号

  进入阿里云官网,注册阿里云账号 。如果您已经有阿里云账号,请忽略该步骤,直接进入下一步。


开通HaaS增值服务

登录HaaS官网

  进入HaaS官网 。




进入HaaS云端积木控制台

  如上图所示,点击右上角的“控制台”,进入HaaS云端积木的控制台页面。




创建设备

  在左侧导航栏设备管理中,可以看到产品和设备选项,点击“产品”,可以看到平台默认创建了“haas_正式游客产品”这个产品; 所以开发者只需要创建设备即可。点击“批量添加”, 添加方式为“自动生成”, 申请数量可填为“1”个,即可完成新设备的创建。






获取设备的三元组

  在设备的列表中,新创建的设备上点击“查看”,就可以获得设备的三元组信息,之后这个三元组信息会在设备端代码中使用到。






  完成以上步骤表示开通了HaaS增值服务,您可以拿到生成的三元组进行设备端开发,连接云端进行识别。


设备端开发

开发环境

  在进行下一步之前请确保M5StackCore2开发环境已经搭建完毕。详情请参考M5StackCore2快速开始的说明。


创建解决方案

  如下图所示,打开VS Code之后在新建一个基于helloworld的python工程,设定工程名称(“vehicle_type_recognization”)及工作区路径之后,硬件类型选择M5Stack Core2,点击立即创建,创建一个Python轻应用的解决方案。




下载设备端代码并解压,将解压后的所有脚本复制替换“vehicle_type_recognization”工程根目录下的所有文件,然后进行如下设定完成设备端代码的开发。具体目录和要修改的参数设置如下图:




Python脚本的详细说明请参考脚本内嵌的文字注释


修改路由器名称及密码

  修改vehicle_type_recognization工程里main.py中SSID和PWD的值为读者实际要连接的路由器的名称及密码(请注意名称和密码都需要放在''符号中间)。


# Wi-Fi SSID和Password设置

SSID='Your-AP-SSID'

PWD='Your-AP-Password'

  修改完成之后connect_wifi函数就会连接读者自己设定的路由器。


修改设备的三元组信息

  将上面步骤获取的三元组信息,填入main.py中:


# HaaS设备三元组

productKey = "Your-ProductKey"

deviceName  = "Your-devicename"

deviceSecret  = "Your-deviceSecret"

运行

烧录代码

  烧录代码到设备上之后,在网络连接成功时,屏幕上将打印出IP地址和"NTP Done",如果迟迟不能显示“NTP Done”,请长按电源键关机同时拔掉USB线重新上电运行。之后串口会周期性的打印如下日志,并且识别到车型后在屏幕上显示红色XXXX Detected的字样。具体log如下:


Wi-Fi is connecting...

Wi-Fi is connecting...

Wi-Fi is connecting...

Wi-Fi is connecting...

Wi-Fi is connecting...

Wi-Fi is connecting...

Wi-Fi is connecting...

Wi-Fi is connected

IP: xxx.xxx.xxx.xxx

NTP start

NTP done

establish tcp connection with server(host='a1mdXrPhrZM.iot-as-mqtt.cn-shanghai.aliyuncs.com', port=[443])

tcp_connect: can only connect from state CLOSED

success to establish tcp, fd=54

link platform connected

{'ext': '{"items":[{"name":"car","score":0.0339},{"name":"MPV_mian","score":0.0152},{"name":"others","score":0.0209},{"name":"SUV","score":0.93}],"result":"success"}', 'commandName': 'recognizeVehicleReply', 'commandType': 'haas.faas', 'argInt': 1}

detect: SUV

get response time : 2157

Vehicle Detected!!!

Vehicle Detected!!!

Vehicle Detected!!!

get response time : 383

Vehicle Detected!!!

{'ext': '{"items":[{"name":"car","score":0.0199},{"name":"MPV_mian","score":0.0153},{"name":"others","score":0.0255},{"name":"SUV","score":0.9393}],"result":"success"}', 'commandName': 'recognizeVehicleReply', 'commandType': 'haas.faas', 'argInt': 1}

detect: SUV

Vehicle Detected!!!

Vehicle Detected!!!

get response time : 367


  设备显示识别中...




  识别成功




  目前代码中设置的识别可信度超过85%认为识别成功,可以自行修改代码中的可信度参数,具体修改如下:


def cb_lk_service(data):

   global g_lk_service, g_score, detected, name

   # dev.publish(compare_reply)

   # print(data)

   #resp = json.loads(data)

   if data != None:

       params = data['params']

       params_dict = json.loads(params)

       print(params_dict)

       ext = params_dict['ext']

       ext_dict = json.loads(ext)

       result = ext_dict['result']

       if result == 'success':

           i = 0

           item_list = ext_dict['items']

           detected = False

           while (i < len(item_list)) :

               g_score = item_list[i]['score']

               name = item_list[i]['name']

               # 这里可以修改识别的可信度,目前设置返回可信度大于85%才认为识别正确

               if g_score > 0.85 and name != 'others':

                   print('detect: ' + name)

                   detected = True

                   break

               i += 1

           if detected == False:

               print('do not detect!')

       else:

           print('do not detect!')

           detected = False

   g_lk_service = True



————————————————

版权声明:本文为CSDN博主「HaaS技术社区」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/HaaSTech/article/details/124660061

相关文章
|
12天前
|
缓存 监控 测试技术
Python中的装饰器:功能扩展与代码复用的利器###
本文深入探讨了Python中装饰器的概念、实现机制及其在实际开发中的应用价值。通过生动的实例和详尽的解释,文章展示了装饰器如何增强函数功能、提升代码可读性和维护性,并鼓励读者在项目中灵活运用这一强大的语言特性。 ###
|
15天前
|
缓存 开发者 Python
探索Python中的装饰器:简化代码,增强功能
【10月更文挑战第35天】装饰器在Python中是一种强大的工具,它允许开发者在不修改原有函数代码的情况下增加额外的功能。本文旨在通过简明的语言和实际的编码示例,带领读者理解装饰器的概念、用法及其在实际编程场景中的应用,从而提升代码的可读性和复用性。
|
21天前
|
设计模式 缓存 测试技术
Python中的装饰器:功能增强与代码复用的艺术####
本文将深入探讨Python中装饰器的概念、用途及实现方式,通过实例演示其如何为函数或方法添加新功能而不影响原有代码结构,从而提升代码的可读性和可维护性。我们将从基础定义出发,逐步深入到高级应用,揭示装饰器在提高代码复用性方面的强大能力。 ####
|
23天前
|
人工智能 C语言 Python
AI师傅+通义灵码=零基础小白上手python真·不是梦
作为一名不懂编程的设计师,我一直渴望掌握AI辅助设计。在快刀青衣的推荐下,我尝试了AI师傅和通义灵码,成功写出了第一个Python程序,并理解了编程的基本概念。通过AI师傅的引导和通义灵码的帮助,我顺利完成了Coursera上的Python课程,获得了两张证书。这种学习方式让编程变得不再遥不可及,为我的未来学习打开了新大门。
|
22天前
|
缓存 测试技术 数据安全/隐私保护
探索Python中的装饰器:简化代码,增强功能
【10月更文挑战第29天】本文通过深入浅出的方式,探讨了Python装饰器的概念、使用场景和实现方法。文章不仅介绍了装饰器的基本知识,还通过实例展示了如何利用装饰器优化代码结构,提高代码的可读性和重用性。适合初学者和有一定经验的开发者阅读,旨在帮助读者更好地理解和应用装饰器,提升编程效率。
|
29天前
|
开发者 Python
探索Python中的装饰器:简化代码,增强功能
【10月更文挑战第22天】在Python的世界里,装饰器是一个强大的工具,它能够让我们以简洁的方式修改函数的行为,增加额外的功能而不需要重写原有代码。本文将带你了解装饰器的基本概念,并通过实例展示如何一步步构建自己的装饰器,从而让你的代码更加高效、易于维护。
|
30天前
|
开发框架 Python
探索Python中的装饰器:简化代码,增强功能
【10月更文挑战第20天】在编程的海洋中,简洁与强大是航行的双桨。Python的装饰器,这一高级特性,恰似海风助力,让代码更优雅、功能更强大。本文将带你领略装饰器的奥秘,从基础概念到实际应用,一步步深入其内涵与意义。
|
1月前
|
人工智能 自动驾驶 搜索推荐
【通义】AI视界|苹果AI本周正式上线,将引入四大功能
本文由【通义】自动生成,涵盖苹果AI上线、特斯拉被华尔街重新评估、谷歌开发控制计算机的AI、Meta与路透社合作及Waymo获56亿美元融资等科技动态。点击链接或扫描二维码获取更多信息。
|
1月前
|
云计算 Python
用python给你写个简单的计算器功能网页啊
这张图片展示了阿里巴巴集团的组织架构图,涵盖了核心电商、云计算、数字媒体与娱乐、创新业务等主要板块,以及各板块下的具体业务单元和部门。
下一篇
无影云桌面