1. 程式人生 > >[乾貨]一張地鐵圖看懂人工智慧演算法發展(含程式碼)---轉自AlphaTree

[乾貨]一張地鐵圖看懂人工智慧演算法發展(含程式碼)---轉自AlphaTree

 或許你曾經困擾過:明明自家產品有自己的資料,明明演算法模型很多開源,可為什麼開發起來卻問題多多? 要麼拿到問題無從下手?

每一個大廚,心中都有自己的菜譜。要烹製一桌山珍海味,美味佳餚,自然要熟知三件事,原料(模型),調料(優化演算法)和祕籍菜譜(這裡常常只paper:paper會告訴你解決什麼問題用什麼模型與演算法)。有了這三樣,還要基本功紮實,拌、醃、炒、燒、蒸、炸、煮、煲基本手法樣樣不能少。(基本功紮實才能模型復現)

如果 你說 我只是個小學徒啊,廚藝小白,想自己學可怎麼做,那就照著大廚的菜譜學著做。

如果 你說 我是個AI小白,也想了解人工智慧深度學習,尤其是想解決應用方面的問題,那就照著下面這張地鐵圖,按不同方向,來學習菜譜,原料,調料和基本功吧。

01

地鐵圖總覽

從AI研究的角度來說,AI的學習和跟進是有偏向性的,更多的精英是擅長相關的一到兩個領域,在這個領域做到更好。而從AI應用的角度來說,每一個工程都可能涉及很多個AI的方向,而他們需要了解掌握不同的方向才能更好的開發和設計。因此我們從應用的角度 提出一個 roadmap ,描述不同方向的經典演算法模型發展,以及應用上熱門的演算法。

第一個版本涉及的是 人,物 與藝術,三個大的部分。主要包括了影象方向的十二個子方向,裡面列的模型除了商業化的部分外,其他大部分具有相關的開源演算法與模型。

詳細演算法,文章,開原始碼等具體可以參見網址,如果喜歡別忘記右上角star一下哦:


大圖連結 

02


 當我們談論萬物時,也許在談論整個世界

成千上萬的物體組成我們的世界,我們能夠區分萬物,也希望人工智慧能夠像我們一樣理解這個世界。也就有了物體相關的演算法發展。

最基礎的是物體分類Object Classification。深度學習的發展證明它非常擅長解決分類問題。Object Classification 是所有發展的基礎,很多其他方向的模型都是基於這個主線來改進的。

為什麼演算法都從影象領域發展而來?由於影象的資料最為豐富,卷積神經網路在影象上分類的穩定有效,1998年,LeNet,這個商用的手寫數字識別網路就做出了有力的證明。而到了2012年,Alex Krizhevsky 設計了AlexNet 在當年的ImageNet影象分類競賽中下第一,開始了深度學習的黃金時代。

學術界發表的paper一般可以分為兩大類,一類是網路結構的改進,一類是訓練過程的改進,如droppath,loss改進等。而網路結構設計發展主要有兩條主線,

一條是Inception系列(即上面說的複雜度),從GoogLeNet 到Inception V2 V3 V4,Inception ResNet。 Inception module模組在不斷變化,

一條是VGG系列(即深度),用簡單的結構,儘可能的使得網路變得更深。從VGG 發展到ResNet ,再到DenseNet ,DPN等。


最終Google Brain用500塊GPU訓練出了比人類設計的網路結構更優的網路NASNet。

此外,應用方面更注重的是,如何將模型設計得更小,這中間就涉及到很多卷積核的變換。這條路線則包括 SqueezeNet,MobileNet V1 V2 Xception shuffleNet等。ResNet的變種ResNeXt 和SENet 都是從小模型的設計思路發展而來。

Object Detection 與Object Segmentation

對世界的理解僅僅通過分類知道這張圖是關於什麼的,是遠遠不夠的,而物體檢測和物體分割才能夠達到對世界進行與人類似的理解。物體檢測和語義分割,以及分割加檢測結合的例項分割各發展了幾年,但是最終發展到MaskRCNN演算法對物體同時完成檢測與分割的任務,並且有更優的表現。


人類文明的傳承,離不開的是文字。文字的識別和理解在應用上有著特別的意義。傳統的文件識別,早就有了相對穩定的解決方案,開源的Tesseract 是常用的方法,收費的ABBYY則一直效果處於世界前列。而複雜環境中的文字識別則隨著DL的發展有著不錯的進展。一方面是還是獨立的檢測與識別,一方面是也有了兩者聯合的端對端網路的探索。這一塊國內白翔老師組 喬宇老師組都有一些模型在應用上效果不錯。


03


 當我們談論人時,也許在嘗試瞭解自己

能讓人工智慧像我們一樣理解我們自身,能夠認識他是誰,理解他表達的喜怒哀樂,能夠知道他在做什麼,一直就是讓人著迷的事情。一直以來,無數科研工作者都在相關方向上奮鬥。而DL模擬人類視覺系統,首先取得較好成績的也是在人臉相關的領域。

人臉相關領域在應用上的主要有:

1 人臉檢測與追蹤

2 人臉矯正與關鍵點檢測

3 表情,性別,年齡,種族分析

4 人臉畫素基本解析

5 人臉識別

6 活體檢測與驗證

7 大規模人臉檢索

8 人臉的3D重建

其中 表情,性別,年齡,種族分析 就是基本分類問題,使用Object Classification中的方法就可以解決。而活體檢測與驗證一般通過增加其他裝置,使用結構光,如紅外,iphonex的FaceID,或者增加活體行為來進行,如常用的點頭,眨眼,張嘴等。 而後者的基礎,還是在 2 人臉矯正和關鍵點檢測上。大規模人臉檢索是在人臉識別的基礎上更加工程化的工作。因此在這裡我們選擇了1 2 5 8 等四個方面來進行分析。


對於人的理解,還有一個關鍵,就是Pose Estimation 姿態估計

單人演算法發展,2016年 stacked hourglass 演算法的提出,是一個重要標誌,它結構簡單,可擴充套件性強,效能優越,當時就拿下了MPII姿態分析競賽 的冠軍。即便到今天(2018/05/30),這個比賽單人組現在的第一名也是在它的基礎上進行改進。

多人的演算法,分成兩個方向,一個自頂向下 top-down,主要關注上海交大 盧策吾組的RMPE/AlphaPose, 一個自底向上,bottom-up,主要關注CMU的 OpenPose。

此外,基於Pose相關的Segment也在發展,從2D到3D則有DensePose-RCNN。


04


藝術

 藝術,改變的是你看世界的方式

藝術是人類對世界的表達,以及我們對虛擬世界的創造。

用科技探索藝術是一件非常有意思的事情,而這些在應用上往往也能產生很好的產品。最知名的就是風格轉換 (Neural Style),而探索的方法 有的基於基本的DL網路,有的基於GAN對抗生成網路。因此在這裡用漸變色的綠色繪製了這個獨特的軌道。深綠色是各種應用,淺綠色則代表了GAN的發展路線。


這裡列出了很多很酷的應用,譬如說

Neural Doodle 使用深度神經網路把你的二流塗鴉變成藝術品。

Deep Painterly Harmonization 深度學習的一鍵P圖

Deep Photo Style Transfer 風格轉換的變種:照片風格轉換

自動上色 等等

程式碼均可在下面網址找到

https://github.com/weslynn/AlphaTree-graphic-deep-neural-network

05


關於AlphaTree

AI中每一個領域都在日新月異的成長,而每一位研究人員寫paper的風格都不一樣,相似的模型,為了突出不同的改進點,他們對模型的描述和圖示都可能大不相同。

為了幫助更多的人在不同領域能夠快速跟進前沿技術,我們構建了“AlphaTree計劃”,對上面提到的文章會對應開原始碼,進行統一的圖示,便於大家對模型的理解。模型的繪製設計 受到Fjodor van Veen所作的A mostly complete chart of Neural Networks 和 FeiFei Li AI課程中對模型的畫法的啟發

將一個深度神經網路模型簡化成下圖:

裡面用到的圖示有:


其實 簡單來說 ,為了方便記憶,重要的結構只會選用七種彩虹色。 紅橙黃綠藍靛紫。 由於相容Fjodor van Veen的設定,輸入和輸出暫時佔用了兩種顏色。 如果根據需求後期可能將輸入輸出改成其他不重要的顏色。

紫色(這裡用的紫紅色)為卷積,

紅色為pooling,

綠色為全連線,

藍色為Memory Cell,

靛(深藍色)是反捲積。

現在Object Classificaiton部分裡面涉及到的模型都根據原始碼繪製完成了。

2018/05/30 目前object classification 主幹部分基本完成 包括 LeNet, AlexNet, GoogLeNet, Inception V3,Inception-Resnet-V2, VGG, ResNet ,ResNext, DenseNet ,DPN等。

2018/06/15 完成 MobileNet 與 MobileNet V2.

其他: Face : mtcnn

OCR : CRNN CTPN Textboxes Textboxes++

Object Detection:ssd

譬如LeNet結構如下,一目瞭然,三層卷積層,進行了兩次maxpooling,兩層全連線層,最後輸出接softmax:


下面一行是輸入的影象 經過每一層後輸出的尺寸。每個模型也會有對應paper中的結構介紹。歡迎大家圍觀,也歡迎大家加入。

如果有幫助,記得右上角star哦~ ღ( ´・ᴗ・` )比心

06


最後的最後

為什麼要畫這個?現在畫合適嗎?

其實 整理髮展趨勢,跟進論文的事情 一直在做,而圖示各種模型的想法也早就有了。但是之前演算法更新迭代非常迅速,很多發展方向都沒有穩定下來,所以這件事情一直也沒有著手去做。

平時溝通中,通過圖示模型的表達也幫助過一些人理解,包含CEO,產品經理,程式設計師,AI小白…… 總體反響還不錯,但是之前沒有完整系統的輸出。之前都是簡版的溝通,也擔心大家覺得看懂了圖示,但覺得和paper的表達會不會有差距,就乾脆圖示和paper,程式碼做到了對應。

但是2017年年底 nasnet出來,機器設計的深度神經網路在效能上已經超越了人工設計的網路,在我看來,這是個很重要的訊號。AI 從某種意義上來說,成為真正的AI。而以後人們常用的模型結構可能都是神經網路自我設計,或者teaching-student模型學習出來,裡面的結構再也不是人類所能理解的。而一個優秀的新模型的誕生,是巨頭們計算裝置的比拼。

而對於很多公司,重心將轉移到如何利用現有的模型,結合自己的資料,設計出最適合自己的模型。全民AI的時代正在到來。

最後,無論是想撩一撩,想加入AlphaTree ,想得到更多資訊,更多福利資訊,教學視訊,都可以去公眾號找哦~