今天送上有三AI學院第一個github項目

01 項目背景

目前深度學習框架呈百家爭鳴之態勢,光是為人熟知的就有caffe,tensorflow,pytorch/caffe2,keras,mxnet,paddldpaddle,theano,cntk,tiny-dnn,deeplearning4j,matconvnet等,一個合格的深度學習演算法工程師怎麼著都得熟悉其中的3個以上吧。

而且,學習不應該停留在官方的demo上,而是要學會從自定義數據的讀取,自定義網路的搭建,模型的訓練,模型的可視化,模型的測試與部署等全方位進行掌握

因此,我們開設了這個github項目,以圖像分類任務為基準,帶領大家一步一步入門,後續會增加分割,檢測等任務。

當前的圖像分類任務為二分類的表情分類任務,為微笑與非微笑兩個類別,案例樣本如下。

無表情

微笑

02 框架簡介

總的來說,深度學習系統通常有兩種編程方式,一種是聲明式編程(declarative programming),用戶只需要聲明要做什麼,而具體執行則由系統完成。以Caffe,TensorFlow的計算圖為代表。優點是由於在真正開始計算的時候已經拿到了整個計算圖,所以可以做一系列優化來提升性能。實現輔助函數也容易,例如對任何計算圖都提供forward和backward函數,另外也方便對計算圖進行可視化,將圖保存到硬碟和從硬碟讀取。缺點是debug很麻煩,監視一個複雜的計算圖中的某個節點的中間結果並不簡單,邏輯控制也不方便。

一種是命令式編程(imperative programming),以numpy,torch/pytorch為代表,每個語句按照原來的意思順序執行。它 的特點是語義上容易理解,靈活,可以精確控制行為。通常可以無縫地和主語言交互,方便地利用主語言的各類演算法,工具包,debug和性能調試器,但是實現統一的輔助函數和提供整體優化都很困難。

綜上,各有優劣,自由選擇,這裡不是為了給大家詳細介紹框架,而是快速掃盲,更多請閱讀對應文章和官方文檔,相關代碼進行學習。

2.1 caffe

Caffe是伯克利的賈揚清主導開發,以C++/CUDA 代碼為主,最早的深度學習框架之一,比 TensorFlow、Mxnet、Pytorch 等都更早,需要進行編譯安裝。

支持命令行、Python和Matlab介面,單機多卡、多機多卡等都可以很方便的使用,快速入門見下文。

【caffe速成】caffe圖像分類從模型自定義到測試?

mp.weixin.qq.com

2.2 tensorflow

TensorFlow是Google brain推出的開源機器學習庫,與Caffe一樣,主要用作深度學習相關的任務。與Caffe相比TensorFlow的安裝簡單很多。

TensorFlow = Tensor + Flow,Tensor 就是張量,代表N維數組,這與Caffe中的blob是類似的;Flow即流,代表基於數據流圖的計算。

TensorFlow最大的特點是計算圖,即先定義好圖,然後進行運算,所以所有的TensorFlow代碼,都包含兩部分:

(1) 創建計算圖,表示計算的數據流。它做了什麼呢?實際上就是定義好了一些操作,你可以將它看做是Caffe中的prototxt 的定義過程。

(2)運行會話,執行圖中的運算,可以看作是Caffe中的訓練過程。只是TensorFlow的會話比Caffe靈活很多,由於是Python 介面,取中間結果分析,Debug等方便很多,快速入門見下文。

【tensorflow速成】Tensorflow圖像分類從模型自定義到測試?

mp.weixin.qq.com

2.3 mxnet

mxnet是amazon的官方框架,它嘗試將上面說的兩種模式無縫的結合起來。在命令式編程上MXNet提供張量運算,進行模型的迭代訓練和更新中的控制邏輯;在聲明式編程中MXNet支持符號表達式,用來描述神經網路,並利用系統提供的自動求導來訓練模型,快速入門見下文。

【mxnet速成】mxnet圖像分類從模型自定義到測試?

mp.weixin.qq.com

2.4 pytorch

一句話總結Pytorch = Python + Torch。

Torch是紐約大學的一個機器學習開源框架,幾年前在學術界非常流行,包括Lecun等大佬都在使用。但是由於使用的是一種絕大部分人絕對沒有聽過的Lua語言,導致很多人都被嚇退。後來隨著Python的生態越來越完善,Facebook人工智慧研究院推出了Pytorch並開源。Pytorch不是簡單的封裝Torch 並提供Python 介面,而是對Tensor以上的所有代碼進行了重構,同TensorFlow一樣,增加了自動求導。

後來Caffe2全部併入Pytorch,如今已經成為了非常流行的框架。很多最新的研究如風格化、GAN等大多數採用Pytorch源碼,快速入門見下文。

【pytorch速成】Pytorch圖像分類從模型自定義到測試?

mp.weixin.qq.com

2.5 paddlepaddle

正所謂google有tensorflow,facebook有pytorch,amazon有mxnet,作為國內機器學習的先驅,百度也有PaddlePaddle,其中Paddle即Parallel Distributed Deep Learning(並行分散式深度學習),整體使用起來與tensorflow非常類似,可參考下文。

【paddlepaddle速成】paddlepaddle圖像分類從模型自定義到測試?

mp.weixin.qq.com

2.6 keras

Keras是一個非常流行、簡單的深度學習框架,它的設計參考了torch,用Python語言編寫,是一個高度模塊化的神經網路庫,能夠在TensorFlow,CNTK或Theano之上運行。 Keras的特點是能夠快速實現模型的搭建,是高效地進行科學研究的關鍵,可參考下文。

【Keras速成】Keras圖像分類從模型自定義到測試?

mp.weixin.qq.com
圖標

2.7 其他

除了以上最常用的框架,還有theano,cntk,tiny-dnn,deeplearning 4j,matconvnet等,我們後續會補充教程,增強github案例,歡迎大家關注,下面是github項目鏈接,歡迎來做貢獻。

以及與該項目配套的教程,前十名轉發截圖到後台,可找我領取免費碼。


推薦閱讀:
相关文章