以人臉識別驗票機為例,通義靈碼如何助力嵌入式軟硬件開發中的快速功能驗證
作者:郭永磊,阿里巴巴智能互聯技術專家
今天非常榮幸能在這里與大家分享主題——通義靈碼如何助力嵌入式軟硬件開發。通過今天的分享,大家可以看到通義靈碼在嵌入式領域 C++ 編程方面的一些實際表現,以及它在提效方面的能力。
功能需求
軟硬一體產品的開發流程中,前期技術方案的可行性驗證是非常重要的。如果沒有做好充分的驗證,是很有可能導致項目中途失敗的。受硬件成本和開發周期的影響,這也會給公司帶來極大的損失。
接下來,讓我們設想開發一款基于人臉識別的驗票機(應用場景:機場、車站、景點等的人證合一驗證),我們已經完成了初步市場調研,并發現了一家供應商提供的人臉比對云端 API 服務。接下來的任務是針對這個 API 進行一系列的功能性驗證測試,以確保它能滿足我們的項目需求。具體來說,我們將重點關注以下幾個方面:
1. 時延測試:考慮到考勤機需要快速響應用戶請求,因此我們需要評估該 API 處理人臉比對請求的速度。這包括從圖像上傳到返回結果所需的時間。理想的狀況下,整個過程應該盡可能快,以便給用戶提供流暢無阻的體驗。
2. 穩定性檢查:穩定性是指 API 在長時間運行過程中保持正常工作的能力。我們需要模擬不同的使用場景(如高并發訪問)來測試其性能表現,并監控是否有異常情況發生,比如錯誤代碼返回、服務中斷等現象。
3. 準確率分析:對于任何一個人臉識別系統而言,其識別精度都是非常關鍵的一個指標。我們將通過大量不同類型的照片樣本(不同光照條件、角度變化、面部遮擋等情況)來檢驗該 API 能否準確地完成人臉匹配任務。此外,還應考慮誤報率和漏報率等因素,以全面評價系統的可靠性。
4. 安全性考量:除了上述技術層面的要求外,數據安全也不容忽視。必須確保供應商采取了適當的安全措施保護用戶隱私信息不被泄露或濫用。例如,查看他們是否遵循 GDPR 等相關法律法規,以及如何存儲和傳輸個人敏感數據等。
5. 成本效益分析:最后,還需綜合考慮使用該 API 的成本與收益之間的平衡點。比較不同供應商提供的價格方案,同時結合預期的服務水平協議(SLA)條款,確定最合適的合作伙伴。
綜上所述,通過對這些關鍵維度進行全面細致的評估,可以幫助我們更好地理解所選 API 的實際效果及其適用性,從而為后續項目的順利推進奠定堅實基礎。
通義靈碼AI程序員助力快速原型驗證
接下來,我們將利用通義靈碼這一強大的 AI 程序員工具來快速實現并運行這個 API。通過這種方式,我們可以迅速搭建起一個初步的 demo,使得 API 能夠立即投入使用。這不僅能夠幫助我們驗證技術方案的可行性,還能讓我們在實際操作中發現可能存在的問題,并及時進行調整和優化。
此外,借助于通義靈碼的強大功能,即使是復雜的編程任務也能被簡化處理,從而大大提高了開發效率。這樣一來,我們就能夠在較短的時間內完成 API 的基礎建設工作,為后續更深入的功能開發與測試打下堅實的基礎。
2.1 安裝通義靈碼
以 VScode 為例,直接在應用商店搜索 lingma,找到插件進行安裝即可。

2.2 登錄賬號
安裝完成后,在左側打開通義靈碼的入口,點擊登錄按鈕,根據提示登錄阿里云賬號即可使用。

3.3 分析 API
人臉比對的 API 接口說明如下圖所示,可以知道:
- API 地址:https://netocr.com/verapi/verFaceImage.do
- 接口請求方式:POST
- 請求參數:一共有 6 個且都是必選項。其中:
- img1 和 img2 是需要拿來做比對的圖片,需要將圖片轉為 base64 格式。
- key 和 secret 是平臺分配的秘鑰信息,固定信息,平臺已提供。key 為 C92HMRaM3uXMPj266DsEf2,secret 為 e0952efd41fd4dc1bf0d3c6528fef13d。
- typeId 為 21,對應的就是人臉比對功能,也是固定值。
- format 用于指定返回格式,支持 xml 或者 json,對嵌入式開發來說,json 更友好,我們固定為 json。

分析到這里,我們的需求也就清晰了,主要分 2 個點:
-
需要編寫代碼,實現圖片文件轉 base64。
-
需要編寫代碼,實現該 api 的請求。
接下來,我們就使用通義靈碼來一一實現。
3.4 實現 base64 編碼接口
prompt:使用 C 語言實現 base64 編解碼接口,并給出測試函數。

實現的代碼:

根據 AI 程序員給出的使用說明,嘗試編譯運行測試,發現有錯誤。

不用慌,把錯誤告訴 AI 程序員,讓 AI 程序員來解決:

再次編譯,成功通過。

運行 demo,驗證 base64 接口是否正常工作。

目前的接口還不支持對文件 base64 編碼,擴展下該功能。

再次編譯運行驗證,新增 API 和 linux base64 命令對同一個文件的 base64 編碼結果一致。

3.5 實現 API 請求代碼
接下來,我們把之前整理的 API 信息告訴 AI 程序員,讓它幫我生成對應的 C 語言請求代碼。

編譯運行,再次遇到錯誤,直接把報錯信息交給 AI 程序員,它寫的錯誤代碼,就該由它來解決。


解決后繼續嘗試編譯運行,再次遇到錯誤,再次把報錯信息交給 AI 程序員來解決。

根據指引,安裝 libcurl 的開發庫,繼續嘗試編譯運行,通過!

嘗試運行,繼續報錯:

手動修改為正確的文件路徑,并注釋掉 base64 測試函數。再次編譯運行,發現接口通了但是返回了錯誤。

根據問題猜測,讓 AI 程序員嘗試修改一個版本,再次編譯運行。使用 2 張同一個人的照片進行比對,成功得到結果,比對結果為一致。

更換 2 張不同的圖片,重新運行,結果為否,不一致。

因此,借助通義靈碼,我們已經能夠迅速完成人臉比對 API 的代碼實現。之后,我們就可以根據當前的能力進行相關實驗,測試穩定性、準確率等。通過進一步的代碼迭代,我們可以得到更詳細和全面的測試結果。此外,我們還可以根據其他方面的衡量標準獲取相應信息,并通過各個維度的數據進行全面的可行性評估,以確定該 API 是否滿足我們的項目需求。
通義靈碼在整個過程中主要起到的作用是提高效率,使我們能夠將精力集中在更有價值的地方。

浙公網安備 33010602011771號