如何快捷高效地開發智能圖像識別產品
本文將結合筆者多次智能圖像識別產品、OCR識別項目開發經歷,從工程技術角度對這一流程進行總結和介紹
明確識別任務
在項目開發之前,要明確產品需求,即識別任務到底是什麼。
例如在做身份證信息識別之前,需要溝通如下內容:
- 識別應用的場景如何,用戶通過API調用我們的雲端識別服務程序,還是識別程序直接在移動端直接部署
- 用戶上傳的身份證圖像是規範矯正過的,還是隨意角度放置的
- 用戶需要識別哪些關鍵字段,身份證反面需不需要識別
確定工程技術路線
在瞭解大概的識別任務後,可以着手進行工程技術路線調研和設計了。
開發分兩條線,工程一條線,技術一條線。
技術線先行,在確定了技術可行,原型通過驗證後,可快速啓動工程線。
毫無疑問技術線是智能圖像識別產品的開發重點。
例如在身份證識別項目中,我結合使用場景設計了目標檢測,校正,文本檢測,文本識別和信息抽取等幾個步驟。
對於每塊內容需要進行技術調研和評估:
- 目標檢測的方法如YOLO、Faster RCNN、SSD等有哪些有缺點 校正。
- 如何進行透視變換,求解變換矩陣。
- 如何進行文本檢測,CTPN有哪些限制。
- 文本識別需要多少樣本,樣本如何獲取。
- 信息如何抽取,需不需要NLP支持。
工程線:重要的是規劃
工程線需要設計前後端架構,明確開發要點。
本文着重從技術實現方向介紹智能圖像識別產品的開發流程
數據準備
數據準備包含以下步驟內容:
- 原始數據收集
由於原始數據內容可能涉及隱私,比如身份證,銀行卡圖像,
在不觸犯法律情況下可通過內部資源貢獻,或者通過網絡途徑獲取。- 數據標籤化
對獲取的原始圖集進行打標籤,可交由外包專業團隊。
這部分需要設計標籤的格式以及儲存方式。建議採用 labelme 進行標註
例如可以使用create polygons 創建文本檢測和識別標籤,使用create points 創建關鍵點標籤
- 增強數據
由於原始數據集規模有限,需要通過透視變換,模糊,抖動,背景融合進行圖像增強,提升訓練效果。- 數據生成(部分情況可用)
對於印刷文字識別等,可通過工具機器生成出以假亂真的字符文本圖像集。一個比較好用的 工具 。
模型訓練
從數據集中分割出訓練,測試用數據,使用訓練數據集進行模型測試。
對於某個產品的開發過程,可能需要訓練多個模型來滿足功能需求。
例如在身份證識別應用中,我們需要訓練一下模型:
- 目標定位模型,實現身份證目標的位置大小座標檢測。
- 關鍵點檢測模型,實現身份證關鍵點的座標檢測,求解透視變換矩陣,校正圖像。
- 文本檢測模型,實現文本區域的定位。
- 文本識別模型,實現文本區域內字符序列的預測。
各個模型需要根據具體場景選擇合適的開發算法。
模型訓練可能持續一天甚至一週,需要不時觀察模型訓練輸出,根據loss變化調整訓練姿勢。
測試評估
這裏的測試評估不僅關注單模型的表現效果,同時對模型集成後的表現效果進行測試
對建立的測試集進行測試,評估單模型精度和集成後整體精度。
模型發佈
在測試集上表現出色的可以進行模型發佈。
一般需要freeze graph,將模型文件和權重文件整合合併爲一個文件,便於發佈。
一些應用場景,還需要對模型進行壓縮,向目標設備進行適配。
多模型發佈需要根據技術路線和方案進行集成,以實現完整的產品能力。
可通過建立開放平臺對外提供識別服務,對外輸出AI能力。
總結
好啦, 如何快捷高效地開發智能圖像識別產品,你學會了嗎??
歡迎同學們訪問如下鏈接,測試評估交流!!
Email:[email protected]