1. 程式人生 > >Euphrates: Algorithm-SoC Co-Design for Low-Power Mobile Continuous Vision

Euphrates: Algorithm-SoC Co-Design for Low-Power Mobile Continuous Vision

(這篇部落格不設計文中的硬體部分)

這篇文章同樣也講述瞭如何在live video中應用motion estimation的演算法,通過應用上下幀之間的相似資訊來加速detection並且維持較高的accuracy。

文中列了一張不同的object detection演算法的效率和準確率的比較的圖。

在通常的live video的處理當中,大致的一個模組分佈如下圖所示:

其中的imge sensing部件就是用來就收從攝像頭傳來的影象流;IPS模組用來對得到的原始的攝像頭影象做一些處理;後端的部分就需要從加工過的圖片中提取出有用的資訊。

在這篇文章中,ISP處理影象得到的motion的資訊不像其他的一些演算法一樣使用過之後就簡單的丟棄,Eupharates會儲存下來進一步提升整個motion estimation的準確性。

同樣的這篇文章使用的motion estimation的演算法也是block matching。將整張image分成若干個L\times{L}個mrcroblocks,然後衡量匹配差距的標準被定義為:Sum of Absolute Differences(SAD)。對於每個MB,搜尋的範圍就是水平和垂直方向上的2d+1的範圍,如下圖所示。

這個演算法的時間複雜度很好計算,每個L\times{L}的MB需要L^2(2d+1)^2次計算;但是文中指出了另外一個更快的近似演算法叫做TSS(Three Step Search),對於每個MB只需要做L^2(1+8\log_2(d+1))的複雜度。

最終BM演算法會為每個MB生成一個motion vector,代表MB之間的位移和其與前一幀之間最接近的block。

演算法將video的幀分為兩類:Inference frameExtracpolation frame。前者經過完整的CNN網路,後者則是通過motion estimation來估計物體的位置。

在一個視野當中所有pixel的唯一的平均值在一定程度上能夠代表這個感受野當中物體的全域性位移,所以演算法的第一步就是對於一個給定的POI,計算畫素層的平均位移(式1),正如上文所提到的,這些位移都是MB-based的位移計算而來的。平均的位移很容易受到物體變形(肢體活動)的影響,所以需要增加除躁的步驟。

對於每個MV,計算其置信值,這個置信值的是高度依賴於SAD的,原因非常直觀啦。式2給出了置信值的計算方式,限制在了[0,1]的範圍內,最後對於每個ROI的置信值,只需要計算其所包含的MV的置信值的均值即可。

最終可以對置信度高的位移施加更大的權重,如式3所示,我們發現是應用到了之前位移的效應。

最後為了更好地解決物體形變(跑步運動員的擺手等)的問題,將每個ROI拆分成若干個sub-ROI,然後每個sub-ROI使用上述相同的方法,最後計算能夠將所有sub-ROI都涵蓋的最小的bounding box就好了。

就如何選擇I-frame提出了兩種方案,一種是簡單的constant方案,每隔一定的幀數選擇一張作為I-frame;還有一種自適應的方案,對哪個兩幀之間的差距超過一定的threshold的時候減小中間的間隔,否則增大間隔。