1. 程式人生 > >卷積神經網路CNN(8)—— Pix2Pix Application -- Aerialmap Lane Line Detection (Pix2Pix應用:航拍圖車道線檢測)

卷積神經網路CNN(8)—— Pix2Pix Application -- Aerialmap Lane Line Detection (Pix2Pix應用:航拍圖車道線檢測)

前言

GAN(Generative Adversarial Networks–https://arxiv.org/abs/1406.2661)自問世而來熱度一直無法退減,生成網路G與判別網路D通過相互對抗(原作者比喻成欺騙)訓練網路,最終得到可以生成以假亂真圖片的生成網路G。具有半監督學習能力的生成網路引來了大量研究者,同時產生了很多相關變體。Pix2Pix(Image-to-Image Translation with Conditional Adversarial Networks–https://arxiv.org/pdf/1611.07004v1.pdf)是其中一個,思路很簡單,通過一個GAN使一張圖向另外一張圖作轉換,生成網路G就是實現這個轉換的工具,Pix2Pix開原始碼

github,當然還有很有特色很好玩的應用play,還有老司機專用通道–估計看這個大家都能看懂原理
還是上張圖吧,不然太空泛。
這裡寫圖片描述

Pix2Pix

pix2pix訓練過程如下:
這裡寫圖片描述
判別網路D仍然是與普通的CNN分類模型沒有區別,就是需要知道輸入是否為真正的圖片(非生成圖);生成網路G的訓練就是在網路D的基礎上先產生一張“假圖”,假圖跟真正的label(或者生成的label跟真圖)進入判別網路進行區分,訓練知道判別網路D沒有辦法區分生成網路G產生的圖片為止。
如pix2pix的作者所說,影象語義分割是從影象到label,從而能夠區分不同物體的效果,這實際上是影象與影象之間的轉換,事實上也可以反過來做,就是label到影象,也是一個轉換,這是GAN最大的特色之一,能夠做到之前CNN網路無法實現的事情。

航拍圖車道線檢測

衛星航拍圖就是上圖左下角那張,不過博主不是用pix2pix來劃分區域而是提取車道線。博主使用的航拍圖是經過人工提取道路,所以少了很多其他非路面資訊干擾,但是樹木,車,路面標識等仍然會對檢測產生影響。
部分航拍圖樣本如下(紅色是白線,藍色是黃線),
這裡寫圖片描述

這裡寫圖片描述

這裡寫圖片描述

沒有使用完整的航拍圖進行車道線提取,原因是車道線是圖片部分細節,pix2pix使用的u-net256輸入圖片大小是256x256,這樣resize之後車道線就基本看不見了,這裡的大小是選擇512x512的框擷取航拍圖得到樣本,這樣resize到256x256仍有大量車道線資訊。
訓練資料使用了資料增強,flip,transpose,crop。
訓練圖片約600張,測試圖約50張,測試效果如下:
原圖是real_A,生成網路產生的是fake_B,label是real_B
這裡寫圖片描述


這裡寫圖片描述
這裡寫圖片描述

整體航拍圖效果如下,由於各種原因不能夠提供原始畫素的航拍圖,我也怕警察叔叔把我帶走- -!
這裡寫圖片描述
這裡寫圖片描述

總結

1.在大部分情況,pix2pix確實能夠通過輸入生成召回率與準確率的車道線,尤其是直線情況
2.可以過濾樹,車,大部分的非車道線的路面標識
3.生成的車道線很有可能帶有噪點,同時白線黃線分類有出錯的情況。

by the way,這僅僅是一個簡單的應用,待解決的問題還有非常多。