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

Posted HaaS技术社区

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HaaS Python 云端一体AI 车型识别功能相关的知识,希望对你有一定的参考价值。

来这里发现更多有趣案例

HaaS开发框架HaaS积木方案,赋能生态开发者,让您快速找到自己需要的解决方案,硬件主板与外设,以及各种应用组件。https://haas.iot.aliyun.com/solution

车型识别系统

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

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

背景知识

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

场景功能拆解

   实验整体步骤如下:

  1. 连接硬件
  2. 开通HaaS增值服务
  3. 设备端开发
  4. 设备运行

准备

  1. M5Stack Core2开发板 一套
  2. M5Stack Unit CAM摄像头 一个
  3. 连接线 若干

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

名称数量参考链接
M5Stack Core2开发版1M5Stack Core2
microUSB数据线1M5Stack Core2开发套件自带
摄像头1M5Stack Unit CAM摄像头
连接线1条M5Stack GROVE连接线 请选用10cm长即可

   硬件连线图如下图所示:

云端平台功能开通

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

  1. 注册阿里云账号并登录阿里云账号;
  2. 在HaaS官网中的云端积木控制台创建设备;
  3. 推送脚本到M5Stack Core2并运行车型识别;

注册阿里云账号

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

开通HaaS增值服务

  1. 登录HaaS官网

   进入HaaS官网

  1. 进入HaaS云端积木控制台

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

  1. 创建设备

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

  1. 获取设备的三元组

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

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

设备端开发

开发环境

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

创建解决方案

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

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

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

  1. 修改路由器名称及密码

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

# Wi-Fi SSID和Password设置
SSID='Your-AP-SSID'
PWD='Your-AP-Password'

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

  1. 修改设备的三元组信息

   将上面步骤获取的三元组信息,填入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

2022深度学习开发者峰会 5月20日13:00让我们相聚云端,共襄盛会!

以上是关于HaaS Python 云端一体AI 车型识别功能的主要内容,如果未能解决你的问题,请参考以下文章

毕设参考HaaS Python 云端一体AI手势识别窝在家里看电视不想动?想换台懒得找遥控器?试试解锁智能设备新玩法

使用 ESP32 + HaaS Python 打造云端一体车牌识别系统

HaaS Python + AI 隆重登场 使用 ESP32 + 摄像头 机器视觉实现水果识别

如何用几行Python代码在物联网设备上实现语音AI自动识别?

HaaS100 云端钉一体智能语音播放器设计

HaaS AI应用实践之 老板来了