HaaS Python 云端一体AI 车型识别功能
來這里發現更多有趣案例
HaaS開發框架HaaS積木方案,賦能生態開發者,讓您快速找到自己需要的解決方案,硬件主板與外設,以及各種應用組件。https://haas.iot.aliyun.com/solution
車型識別系統
?? 車型識別是識別汽車圖片(完整或部件圖片)的類型,目前有小轎車、多用途汽車、SUV等類別。
?? 本案例導學步驟如下圖所示。
背景知識
?? 根據拍攝照片,快速識別圖片中車輛的品牌型號,提供針對性的信息和服務,可用于相冊管理、圖片分類打標簽、電子汽車說明書、一鍵拍照租車等場景。以及在監控高速路閘口、停車場出入口的進出車輛,識別詳細車型信息,結合車牌、車輛屬性對車輛身份進行校驗,形成車輛畫像。本案例采用M5Stack Core2開發板,結合攝像頭實時拍照,將圖片發送到HaaS云端進行識別,并返回識別的車型。
場景功能拆解
?? 實驗整體步驟如下:
準備
涉及到的硬件購買鏈接如下,僅供參考,不負責商家發貨的品質保障等問題!
| 名稱 | 數量 | 參考鏈接 |
| M5Stack Core2開發版 | 1 | M5Stack Core2 |
| microUSB數據線 | 1 | M5Stack Core2開發套件自帶 |
| 攝像頭 | 1 | M5Stack Unit CAM攝像頭 |
| 連接線 | 1條 | M5Stack GROVE連接線 請選用10cm長即可 |
?? 硬件連線圖如下圖所示:
云端平臺功能開通
在本案例中涉及到云端平臺功能都聚合在HaaS云端積木中,所以無需單獨使用 對象存儲OSS 和 視覺智能開發平臺。案例整個步驟分為:
注冊阿里云賬號
?? 進入阿里云官網,注冊阿里云賬號 。如果您已經有阿里云賬號,請忽略該步驟,直接進入下一步。
開通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 = 0item_list = ext_dict['items']detected = Falsewhile (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 = Truebreaki += 1if detected == False:print('do not detect!')else:print('do not detect!')detected = Falseg_lk_service = True總結
以上是生活随笔為你收集整理的HaaS Python 云端一体AI 车型识别功能的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: TCP/IP、Http的区别--(转自任
- 下一篇: SetTimer函数和 KillTime