用深度學習玩圖像的七重關卡

第一個重境界: 圖像識別

如果你開始了解深度學習的圖像處理, 你接觸的第一個任務一定是圖像識別 :

比如把你的愛貓輸入到一個普通的CNN網路里, 看看它是喵咪還是狗狗。

一個最普通的CNN, 比如像這樣幾層的CNN鼻祖Lenet, 如果你有不錯的數據集(比如kaggle貓狗大戰)都可以給出一個還差強人意的分類結果(80%多準確率), 雖然不是太高。

當然,如果你再加上對特定問題的一些知識, 也可以順便識別個人臉啥的,開個startup叫face 減減什麼:

會玩的, 也可以順別識別個豬臉什麼噠(我覺得長得都一樣哦), 這樣搞出來每個豬的身份, 對於高質量豬肉的銷售, 真是大有裨益的。

或者看看植物都有個什麼病害什麼的,像這樣不同的病斑, 人都懶得看的, 它可以給你看出來。 植物保護的人可以拿著手機下田了。

Ronneberger, Olaf, Philipp Fischer, and Thomas Brox. "U-net: Convolutional networks for biomedical image segmentation." International Conference on Medical Image Computing and Computer-Assisted Intervention. Springer, Cham, 2015.

雖然植物保護真的很好用,分類問做就了還真是挺無聊的。

我們進化的方向,也就是用更高級的網路結構取得更好的準確率,比如像下圖這樣的殘差網路(已經可以在貓狗數據集上達到99.5%以上準確率)。分類做好了你會有一種成為深度學習大師,拿著一把斧子眼鏡里都是釘子的幻覺。 分類問題之所以簡單, 一要歸功於大量標記的圖像, 二是分類是一個邊界非常分明的問題, 即使機器不知道什麼是貓什麼是狗, 看出點區別還是挺容易的, 如果你給機器幾千幾萬類區分, 機器的能力通過就下降了(再複雜的網路,在imagenet那樣分1000個類的問題里,都很難搞到超過80%的準確率)。

He, Kaiming, et al. "Identity mappings in deep residual networks." European Conference on Computer Vision. Springer International Publishing, 2016.

第二重境界 : 物體檢測

很快你發現,分類的技能在大部分的現實生活里並沒有鳥用。因為現實中的任務啊, 往往是這樣的:

或者這樣的:

那麼多東西在一起,你拿貓狗大頭照訓練的分類網路一下子就亂了陣腳。 即使是你一個圖片里有一個貓還有一個狗,甚至給貓加點雜訊,都可以使你的分類網路分寸大亂。

現實中, 哪有那麼多圖片, 一個圖裡就是一個貓或者美女的大圖,更多的時候, 一張圖片里的東西, 那是多多的, 亂亂的,沒有什麼章法可言的, 你需要自己做一個框, 把你所需要看的目標給框出來, 然後, 看看這些東西是什麼 。

於是你來到機器視覺的下一層挑戰 - 目標檢測(從大圖中框出目標物體並識別), 隨之而來的是一個新的網路架構, 又被稱為R - CNN, 圖片檢測網路 , 這個網路不僅可以告訴你分類,還可以告訴你目標物體的坐標, 即使圖片里有很多目標物體, 也一一給你找出來。

Ren, Shaoqing, et al. "Faster R-CNN: Towards real-time object detection with region proposal networks." Advances in neural information processing systems. 2015.

萬軍斬你首級那是杠杠的,在眾多路人甲中識別嫌疑犯,也是輕而易舉, 安防的人聽著要按捺不住了。

今年出現的YOLO演算法更是實現了快速實時的物體檢測,你一路走過就告訴你視線里都有什麼在哪裡,要知道這在無人駕駛里是何等的利器。

YOLO快速檢測法Redmon, Joseph, et al. "You only look once: Unified, real-time object detection." Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. 2016.

當然, 到這裡你依然最終會覺得無聊, 即使網路可以已經很複雜, 不過是一個CNN網路(推薦區域),在加上一層CNN網路做分類和回歸。 能不能幹點別的?

第三重境界 : 圖像切割

啊哈, 這就來到了第三個關卡, 你不僅需要把圖片中邊邊角角的物體給檢測出來, 你還要做這麼一個猛料的工作, 就是把它從圖片中扣出來。 要知道, 剛出生的嬰兒分不清物體的邊界, 比如桌上有蘋果這種事, 什麼是桌子,什麼是蘋果,為什麼蘋果不是佔在桌子上的? 所以, 網路能不能把物體從一個圖裡摳出來, 事關它是否真的像人一樣把握了視覺的本質。 這也算是對它的某種「圖靈測試」 。 而把這個問題簡化,我們無非是在原先圖片上生成出一個原圖的「mask」, 面具,有點像phtoshop里的蒙版的東西。

所謂摳圖

Drozdzal, Michal, et al. "The importance of skip connections in biomedical image segmentation." International Workshop on Large-Scale Annotation of Biomedical Data and Expert Label Synthesis. Springer International Publishing, 2016.

注意,這個任務里,我們是要從一個圖片里得到另一個圖片哦! 生成的面具是另一個圖片, 這時候,所謂的U型網路粉墨登場,注意這是我們的第一個生成式的模型。 它的組成單元依然是卷積,但是卻加入了maxpooling的反過程升維採樣。

這個Segmentation任務, 作用不可小瞧哦, 尤其對於科研口的你, 比如現在私人衛星和無人機普及了,要不要去看看自己小區周圍的地貌, 看是不是隱藏了個金庫? 清清輸入, 衛星圖片一欄無餘。 哪裡有樹, 哪裡有水,哪裡有軍事基地,不需要人,全都給你摳出來。

如果你要數個細胞啥的 ,都是挺容易的,給它變成這樣的輪廓不就你得了。

第四重境界:

我們開始fashion起來, 如果你是淘寶服裝小店的老闆 ,想讓客戶輸入一張服裝的圖片,然後得到一組推薦的服裝, 來個以圖搜圖的功能怎麼搞呢? 注意啊,我可以從網路上爬一大堆圖出來,但是這些數據是沒有標註的。怎麼辦? 鐵哥告你還是有的搞,這個搞法,就是聚類。

鐵哥教你最簡單的一招聚類哦,那就是, 把圖片統統放進卷積網路,但是我們不提取分類,而只是提取一些網路中間層的特徵, 這些特徵有點像每個圖片的視覺二維碼,然後我們對這些二維碼做一個k-means聚類, 也會得到意想不到的效果。 為什麼要深度? 因為深度提取的特徵,那是與眾不同的。

然後以圖搜圖呢? 不過是找到同一聚類里的其它圖片啊。

在聚類的基礎上, 就可以做個搜索!

第五層境界 :

我們開始晉陞為仰望星空的人, 之前那些分類賺錢的應用太無聊了。 機器視覺搞科學怎麼港? 作為一群仰望星空後觀察細胞的人,我們最常發現的是我們得到的天文或者細胞圖片的雜訊實在太大了, 這簡直沒法忍啊, 然後, 深度學習給了你一套降噪和恢復圖像的方法。 一個叫auto-encoder的工具, 起到了很大的作用 , 刷的一下,圖像就清楚了。

這還不是最酷炫的,那個應用了博弈理論的對抗學習, 也可以幫你謀殺噪點! 如果你會對抗所謂GAN, 也是一種圖像生成的工具, 讓網路去掉雜訊的圖片,與沒有雜訊的自然圖片, 連卷積網路都判別不出來,對, 就是這樣!

Schawinski, Kevin, et al. "Generative adversarial networks recover features in astrophysical images of galaxies beyond the deconvolution limit." Monthly Notices of the Royal Astronomical Society: Letters 467.1 (2017): L110-L114.

第六重境界 :

在工業界賺夠了錢,科學也太nerd了, 我們來玩藝術思考哲學 ,第一招, 圖像風格遷移,請見鐵哥之前的文章:

然而真正能玩好這一事項的,還是那個剛剛提過的對抗學習GAN, 比如大名鼎鼎的CycleGAN, 幾乎可以實現一種你自定義的「圖像翻譯」 功能,而且你不用做標註哦, 拿出冬天和夏天的兩組圖片, 它會自動的在兩組圖片中找出對應來。

Zhu, Jun-Yan, et al. "Unpaired image-to-image translation using cycle-consistent adversarial networks." arXiv preprint arXiv:1703.10593 (2017).

第七重境界:

圖像翻譯也懶的玩了, 你神經網路不是號稱能夠理解圖像,看你來個無中生有,在雜訊里生成圖片來?

對,依然是GAN,而且是最基礎的卷積GAN (DCGAN)就可以給你干出來。

看看GAN所幻想的賓館情景, 你能想到是計算機做的圖嗎? 哈哈哈!

Goodfellow, Ian, et al. "Generative adversarial nets." Advances in neural information processing systems. 2014.

寫到這裡, 我自己都覺得GAN是非常有前途的,有前途的,有前途的,以前我還以為只是好玩呢。

這裡展示的七級浮屠,也不過深度學習被人類discover的冰山一角, 醉卧沙場君莫笑, 古來征戰幾人回。

給你一個稍微清晰一些的大綱:

如果對基礎理論部分有不熟悉,請返迴文章你不能不知道的CNN,當然它只是冰山一角, 了解更多並挨個實戰請關註:巡洋艦的深度學習實戰課程, 手把手帶你進行深度學習實戰, 課程涵蓋機器學習,深度學習, 深度視覺, 深度自然語言處理, 以及極具特色的深度強化學習,看你能不能學完在你的領域跨學科的應用深度學習驚艷你的小夥伴,成為身邊人眼中的大牛。剛剛講的方法都將在課程里詳細展開。

目前課程線下版本已經基本報名完畢(特殊申請可加一到兩個名額), 為了緩解眾多異地學員的需求, 我們提出一個線上加線下的課程簡版, 課程包括全部課程視頻, notebook作業, 和一個課程模塊的來京線下實踐機會, 名額限5名,預報從速,詳情請聯繫陳欣(cx13951038115)。

推薦閱讀:

Coursera吳恩達《卷積神經網路》課程筆記(1)-- 卷積神經網路基礎
「深度學習+自然語言處理(NLP)」專欄索引
看我AK甩槍,舊文重讀《Playing FPS Games with Deep Reinforcement Learning》
【恢復更新】寫給大家看的機器學習書(第八篇)——線性回歸(下)
cs.CL weekly 2016.09.26-2016.09.30

TAG:深度学习DeepLearning | 人工智能 | 机器学习 |