用于实时实例分割的Deep Snake算法
? 第一部分:創新及其優點
? 第二部分:算法原理
? 第三部分:實驗過程
? 第四部分:程序邏輯
?
1?創新及其優點
Deep Snake算法建立在傳統Snake算法的基礎上,將snake算法做成了輪廓結構化特征學習的方法,使用了循環卷積取得了比通用的圖卷積能更好的挖掘輪廓的周期圖結構。
? Deep Snake算法克服了建立在圖像檢測器給出便捷方框不準確造成實例分割產生誤差的缺陷;優化了將圖像邊框表示成密集二進制帶來復雜的后期處理的缺點;同時相比在RGB圖中進行輪廓回歸更充分的利用了輪廓的特殊拓撲。
?
2 算法原理
?
snake是一種主動輪廓模型,它需要一個初始輪廓,以其為輸入進行逐步迭代,從而達到調整圖像輪廓使其更精確的目的。
snake在逐步迭代優化過程中的目標是能量函數最小化,這個能量函數值輪廓能量和圖像能量的總和,其能量函數如下:
??? ?指當前輪廓本身能量(內部能量), 指圖像輪廓對應點的能量(外部能量),?表示其方差的相關項。其中內部能量由兩部分組成:一階導數的模(稱為彈性能量)和二階導數的模(彎曲能量)
其中內部能量由兩部分組成:一階導數的模(稱為彈性能量)和二階導數的模(彎曲能量)[這里需要記住為什么],在迭代過程中,彈性能量能快速的把輪廓壓縮成光滑的圓;彎曲能量將輪廓拉成光滑的曲線或直線,他們的作用是保持輪廓的光滑和連續性。通常alpha越大,輪廓收斂越快;beta越大,輪廓越光滑。
外部圖像能量分三種:線性能量(通常更亮度相關);邊緣能量(圖像的邊緣組成);終端能量。在迭代優化過程中,外部能量會使輪廓朝(灰度)高梯度位置靠近。而通常梯度高的位置都是圖像中前景與背景的界限或者物體與物體之間、物體內部不同部分的界限,適合用于分割。在逐步迭代優化過程中的目標是能量函數最小化,這就是snake算法調整實例輪廓的方法和過程。
?
Deep Snake與snake算法類似,分割實例分為兩步:初始化輪廓和輪廓變形,然后進行迭代使得實列分割邊界更加準確。
? ? ? (1) 初始化輪廓:檢測包圍框初始邊緣上的四個中性點的菱形輪廓,然后以菱形為輸入,輸出四個頂點到對象極值的偏量,構造出八邊形作為初始輪廓。
? ? ? (2) 輪廓變形:先沿初始化八角形輪廓均勻的采樣N個點,通過學習特征和頂點坐標的級聯[F(xi):xi](F是特征映射)構造頂點xi得輸入特征。在給定輪廓上定義的輸入特征后移入特征學習的循環卷積,得到輪廓的輸出特征并預測輪廓點與目標點之間的偏移,最后進行不斷迭代得到實例的更優輪廓。從而解決了傳統snake算法中只能達到局部最優的缺點
不同于snake算法的是,snake算法將頂點的坐標作為一組變量并將變量用于優化能量函數中使其中最小進而達到調整輪廓的目的,而deep snake直接學會以端到端的方式進行輪廓變形.
?
循環卷積不同于線性卷積的一種卷積運算,是周期卷積的一種。其公式如下:
?
循環卷積
RN(n)代表只取長度為n的主值序列,其計算過程如下:
藍色為輸入特征、黃色為核函數,令右圖所示狀態為
n=0,將輸入特征變量與核函數變量做乘積得到輸出
變量y(0),當n=1時,將核函數逆時針旋轉一個單位得
到y(1),不斷旋轉直到算出y(n),這樣就算出了輸入輪
廓的輸出特征,最后根據輸出特征對初試輪廓進行
調整,從而完成deep snake算法第二步。
值得一提的是由于實例輪廓多是封閉的回路,因此這里運用循環卷積比一般卷積更能運用這種特殊的拓撲結構。
?
3 實驗過程
4 程序邏輯
?
以上就是本人對deep Snake相關知識點的創新、原理、實驗過程、程序邏輯的個人看法,歡迎指正。
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
總結
以上是生活随笔為你收集整理的用于实时实例分割的Deep Snake算法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 工具方法:java读取Excel合并单元
- 下一篇: nginx源码安装及配置https自签名