有時候,結果錯並不完全是壞事--至少它讓我們有重新審視演算法的機會,並更加了解AI模型做了什麼和沒做到什麼。
Image Not Showing
Possible Reasons
- The image was uploaded to a note which you don't have access to
- The note which the image was originally uploaded to has been deleted
Learn More →
這張圖片是一個使用OpenVINO的範例,它的功能是讀取照片中gauge(中文多稱為儀表)的數值。我們可以簡單想像,如果一間傳統工廠並不想大幅度的更新他們的儀表系統,又想讓AMR進工廠做定時的抄表作業時,這個已經量化過的程式就可能派上用場。
當然,眼尖的各位肯定發現問題了,這個讀值並不準確--實際上或許36.3會比較正確?
發生錯誤時,我們首先檢視演算法:一張照片經過三個步驟來判讀數據,第一個步驟是抽取出包含儀表的區域(SSD);第二個步驟是將指針和刻度標記出來,這會使用到圖像分割技術;第三個步驟就很單純了,把分割完的部分拉平,計算是第幾個刻度。我們使用手動指定刻度的上下限(因OCR本身運算太耗時):上限120下限0,共60個刻度,讓計算加速到可以邊緣部署的等級。
我們看到流程之後首先可以確定,SSD部分肯定是沒有問題的。因此,嘗試檢查圖像分割的部分,我們分別用白色顯示被標記為刻度的像素,並以紅色顯示被標記為指針的像素:
Image Not Showing
Possible Reasons
- The image was uploaded to a note which you don't have access to
- The note which the image was originally uploaded to has been deleted
Learn More →
恩,發現問題了,我們注意到在圖片的左下角,也就是圖片中的這個地方:
Image Not Showing
Possible Reasons
- The image was uploaded to a note which you don't have access to
- The note which the image was originally uploaded to has been deleted
Learn More →
這邊由於使用方框代表0刻度,致使實際上的刻度和我們手動指定的有落差,而要修正這個錯誤有幾個方式可以進行:
- 將影像分割能讀取到的刻度範圍設為上限120下限2,共59個刻度
- 加入OCR,以區間的方式讀取刻度。以這例子為例就是OCR後,知道指針在20~40間,10個刻度的第8個刻度後一點點。
- 如果有額外資訊,比方說位置資訊,加上額外的演算法在這類儀表讀取時補上一個刻度
- 直接把錶面那格塗黑(?)
- 依靠OCR取出最大最小值的角度,再抓指針的角度內插數據
當然,我們可以依照實際狀況選擇使用哪一種方式來補全這個漏洞,而這就是人類能做GPT很難做到的事情了。