PART I:儀表探測
* 方式1: 接入實(shí)時(shí)巡檢視頻流,生成帶有儀表盤的順序截圖
a. 從視頻中detect儀表,并用bounding box標(biāo)出, 使用Faster_rcnn_resnet101網(wǎng)絡(luò)訓(xùn)練,為提高計(jì)算速度,每1秒取一幀畫面就可以,因?yàn)闄C(jī)器人移動速度很慢,在表盤的停留時(shí)間夠長
b. 因?yàn)樽x表盤示數(shù)對表盤大小&清晰度要求較高,只有當(dāng)探測圖像占據(jù)的面積達(dá)到畫面一定比例以上時(shí),且位置相對居中,才符合截圖條件
c. 為避免重復(fù)截圖,時(shí)序上連續(xù)符合條件的截圖只保留一張,但要注意聚焦問題,(cv.Laplacian(image, cv2.CV_64F).var() < threshold, then blur)與運(yùn)行軌跡對應(yīng)可以將儀表圖片對號入座
Test 1
2018/08/24中午11點(diǎn)半左右開始,機(jī)器人具體出庫時(shí)間不詳,程序共運(yùn)行62.5分鐘
其中在48.6分鐘內(nèi)檢測到18塊儀表,發(fā)現(xiàn)三個(gè)誤判
(編號空白因?yàn)闆]有截到儀表編號/儀表沒有編號)

Cropped示例 & 識別示例 & 三個(gè)誤判::



* 方式2: 調(diào)取API接口傳入圖片,得到圖片是否包含儀表盤的判斷
對gauge_detection model使用falsk進(jìn)行封裝,圖片地址是以img_addr=XXX 的形式嵌入在請求中的,需要把其中的”=”全部用”%26”替換,否則會影響識別,對”img_addr=”中的”=”造成混淆
接口返回值示例:

code部分為識別結(jié)果
0:存在可讀數(shù)儀表盤;1:圓盤定位故障;2:復(fù)雜表盤讀數(shù)故障;3:數(shù)字&角度validate失敗
4:讀數(shù)故障;5:不存在可讀數(shù)儀表盤
msg部分為讀數(shù)結(jié)果
讀數(shù)精確到小數(shù)點(diǎn)后一位
PART II:儀表讀數(shù)
難點(diǎn)分析:表盤種類繁多,有的還為多指針

Step1: 用深度學(xué)習(xí)識別數(shù)字

Step2: 根據(jù)數(shù)字位置定位表盤及圓心

Step3: 定位指針角度

Step4: Generate readings
測試結(jié)果示例:
準(zhǔn)確度還是比較高的,對于開*視頻流中唯一一種復(fù)雜表盤,無法用以上通用讀法攻克,單獨(dú)做了應(yīng)對處理。

PART III : PROJECT PROGRESS
2018/10/12
兩個(gè)場地的測試樣本接收,4500條
2018/10/13 -?2018/10/25
一輪一輪的調(diào)試優(yōu)化代碼
2018/10/26?
識別及讀數(shù)效果統(tǒng)計(jì)



2018/10/29
場地三測試樣本接收,10000條
2018/10/30 -
因?yàn)樾碌臏y試樣本中有很多表盤帶有小數(shù)點(diǎn),更新算法以解決小數(shù)點(diǎn)的問題
source code: https://git.c.citic/lijy/GaugeReading (Private,未對外開設(shè)權(quán)限)