ImageNet冠軍帶你入門計算機視覺:卷積神經網絡

2021-03-02 AI前線

編輯|Vincent,Emily

AI 前線導語: 在第一篇文章《ImageNet 冠軍帶你入門計算機視覺:監督學習與神經網絡的簡單實現》中,我們介紹了神經網絡的基本概念以及 Tensorflow 的基本用法。 本文為系列的第二篇文章,將會介紹卷積神經網絡。重點介紹經典的卷積神經網絡,全卷積網絡的基本概念和基本單元,以及卷積神經網絡與神經網絡的異同。最後通過實現一個在實際中有廣泛應用的人臉關鍵點檢測算法,介紹如何用 TensorFlow 構建卷積神經網絡。

更多乾貨內容請關注微信號「AI 前線」,ID:ai-front

卷積神經網絡(Convolutional Neural Network, CNN)的起源可以追溯到上世紀 60 年代。生物學研究表明,視覺信息從視網膜傳遞到大腦中是通過多個層次的感受野 (Receptive Field) 激發完成的,並提出了 Neocognitron 等早期模型。1998 年,深度學習三巨頭之一的 Lecun 等,正式提出了 CNN,並設計了如下圖所示的 LeNet-5 模型。該模型在手寫字符識別等領域取得了不錯的結果。

由於計算資源等原因,CNN 在很長時間內處於被遺忘的狀態。二十多年後的 ImageNet 比賽中,基於 CNN 的 AlexNet 在比賽中大放異彩,並引領了 CNN 的復興,此後 CNN 的研究進入了高速發展期。目前卷積神經網絡的發展有兩個主要方向:

如何提高模型的性能。這個方向的一大重點是如何訓練更寬、更深的網絡。沿著這一思路湧現出了包括 GoogleNet,VGG,ResNet,ResNext 在內的很多經典模型。

如何提高模型的速度。提高速度對 CNN 在移動端的部署至關重要。通過去掉 max pooling,改用 stride 卷積,使用 group 卷積,定點化等方法,人臉檢測、前後背景分割等 CNN 應用已經在手機上大規模部署。

目前,CNN 是計算機視覺領域最重要的算法,在很多問題上都取得了良好的效果。因為篇幅關係,本文將主要介紹卷積神經網絡的基礎知識。

上篇文章中我們介紹了神經網絡。神經網絡在大數據處理,語言識別等領域都有著廣泛的應用。但在處理圖像問題時會許多問題:

以 200x200x3 的圖像為例,如果輸入層之後的 hidden layer 有 100 個神經元,那麼參數量會達到 200x200x3x100=1200 萬。顯然有如此多參數的模型是難以訓練且容易過擬合的。

對很多圖像問題,我們希望模型滿足一定的平移不變性。 例如對圖像分類問題,我們希望物體出現在圖片的任何位置上,模型都能正確識別出物體。

在大數據等問題中,輸入維度之間不存在顯式的拓撲關係,因此適合使用神經網絡(全連接層)進行建模。但對於計算機視覺的問題,輸入圖片的相鄰像素之間存在天然的拓撲關係。例如,判斷圖片中某個位置是否有物體時,我們只需要考慮這個位置周邊的像素就可以了,而不需要像傳統神經網絡那樣將圖片中所有像素的信息作為輸入。

為了克服神經網絡的上述問題,在視覺領域,我們需要一種更合理的網絡結構。卷積神經網絡,在設計時通過局部連接和參數共享的方式,克服了神經網絡的上述問題,因而在圖像領域取得了驚人的效果。接下來我們將詳細介紹卷積神經網絡的原理。

卷積神經網絡和傳統神經網絡的整體結構大致相同。如下圖所示,含有 2 層全連接層的傳統神經網絡和含有 2 層卷積層的卷積神經網絡都是由基本單元堆疊而成,前一層的輸出作為後一層的輸入。最終層的輸出,作為模型的預測值。二者的主要差別在於基本單元不同,卷積神經網絡使用卷積層代替了神經網絡中的全連接層。

和全連接層一樣,卷積層中也含有可以學習的參數 weight 和 bias。模型的參數,可以按上一篇文章介紹的方法,在監督學習的框架下定義損失函數,通過反向傳播進行優化。

卷積層是整個卷積神經網絡的基礎。2D 卷積操作,可以看作是一個類似模板匹配的過程。如下圖所示,將尺寸為 h × w × d 的模板,通過滑動窗口的方式和輸入進行匹配。滑動過程中,輸入中對應位置的值和模板的權重的內積加一個偏移量 b,作為對應輸出位置的值。w,h 是模板的大小,統稱為 kernel size,在 CNN 中,w 和 h 一般會取相同的值。d 是模板的 channel 數量,和輸入的 channel 數相同,例如對 RGB 圖像,channel 數為 3。

模板在卷積神經網絡中常被稱為卷積核( K )或者過濾器(filter)。在標準卷積中,輸出位置  (x,y) 對應的輸出值可以表示成:

在 CNN 中,除了描述單個 filter 的  h ,w ,d 這 3 個參數之外,還有 3 個重要的參數 depth, stride 和 padding:

depth 指的是輸出 channel 的數量, 對應於卷積層中 filter 的數量

stride 指的是 filter 每次滑動的步長

padding 指的是在輸入四周補 0 的寬度。使用 padding 主要是為了控制輸出的尺寸。如果不添加 padding,使用 kernel size 大於 1 的 filter 會使輸尺寸出比輸入小。在實際中經常會增加 padding,使得輸入和輸出的尺寸一致。

如下圖所示,對 1D 的情況,假設輸入尺寸為 W ,filter 的尺寸為 F,stride 為 S,padding 為 P ,那麼輸出的尺寸為 (W - F + 2P)/S + 1為。 通過設定 P=(F-1)/2,當 S=1 時,輸入和輸出的尺寸會保持一致。2D 卷積的計算和 1D 卷積類似。

對比傳統神經網絡中的全連接層,卷積層實際上可以看成是全連接層的一種特例。首先是局部連接性,通過利用輸入自帶的空間拓撲結構,卷積神經網絡只需考慮在空間上和輸出節點距離在 filter 範圍內的輸入節點,其他邊的權重都為 0。此外,對於不同的輸出節點,我們強制 filter 的參數完全一致。但通過這種 局部連接參數共享,卷積層可以更好的利用圖像中內在的拓撲關係及平移不變形,大大減少了參數,從而得到一個更好的局部最優解,使其在圖像問題上有更好的性能。

在 tensorflow 中實現卷積層非常簡單,可以直接調用tf.nn.conv2d:

weight=tf.get_variable(shape=[kernel_size, kernel_size, input_size, depth])bias = tf.get_variable(shape=[depth])conv = tf.nn.conv2d(x, weight, strides=[1, 1, 1, 1], padding='SAME')conv_relu = tf.nn.relu(conv + bias)

在 CNN 網絡中,除了大量的卷積層,我們也會根據需要,插入適量的池化層。池化層可以用來減少輸入的尺寸,從而減少後續網絡的參數與計算量。常見的池化操作(如 max pooling,average pooling),通常也可以提供一定的平移不變性。

我們以 max pooling 舉例,max pooling 對 kernel size 範圍內的所有值取 max,結果作為對應位置的輸出。pooling 通常是對每個 channel 單獨操作,因此輸出的 channel 數和輸入相同。池化層和卷積層類似,pooling 操作也可以理解為採用滑動窗口的方式,因此也有和卷積對應的步長 stride 和 padding 等概念。 下圖所示就是一個 kernel size 和 stride 都為 2 的 max pooling 操作:

實際當中,池化層的參數有兩種比較常見的配置,一種是 kernel size 和 stride 都為 2 的,這種設置池化過程中無重疊區域。另一種是 kernel size 為 3,stride 為 2 的有重疊 pooling。在 tensorflow 中實現池化層也非常簡單:

tf.nn.max_pool(x, ksize=[1, size, size, 1], strides=[1, stride, stride, 1], padding='SAME')

介紹了卷積神經網絡的基本組成模塊之後,我們接下來介紹一下卷積神經網絡的經典網絡結構。從 1998 的 LeNet-5 開始,到 Imagenet 2012 的 AlexNet 模型,再到後來的 VGG 等一系列經典模型,基本都遵從了這個經典結構。

為了清晰,我們省略了卷積和全連接層之後的非線性激活函數。如上圖所示,經典的卷積神經網絡,可以分為三個部分:

一系列級聯的 conv+pooling 層(有時會省略掉 pooling 層)。在級聯的過程中,輸入的尺寸逐漸變小,同時輸出的 channel 逐漸變多,完成對信息從低級到高級的抽象。

一系列級聯的全連接層。在卷積層到全連接層的交界處,卷積層的輸出轉化成一維的輸入送入全連接層。之後根據任務的複雜程度,級聯一系列全連接層。

最後的輸出層,根據任務的需要,決定輸出的形式。 如多分類問題,最後會接一個 softmax 層。

經典卷積神經網絡,可以看作是一個輸出尺寸固定的非線性函數。它可以將尺寸為 H \times W \times 3 的輸入圖片轉化為最終的維度為 d  的定長向量。經典卷積神經網絡在圖像分類、回歸等問題上取得了巨大的成功。之後的實戰部分,我們會給出一個回歸問題的例子。

全卷積網絡

(Fully Convolution Network)

經典的卷積神經網絡中由於有全連接層的存在,只能接受固定尺寸的圖片作為輸入,並產生固定尺寸的輸出。雖然可以通過使用 adaptive pooling 的方式, 接受變長的輸入,但這種處理仍然只能產生固定尺寸的輸出。為了克服經典卷積神經網絡的這種缺點,在物體分割等輸出尺寸可變的應用場景下,我們不再使用全連接層。這種主要計算單元全部由卷積層組成的網絡,被稱為全卷積網絡(FCN)。

如上圖所示,由於卷積操作對輸入尺寸無限制,且輸出尺寸由輸入決定,因此全卷積網絡可以很好的處理如分割等尺寸不固定的問題。全卷積網絡,可以看成是一種輸出尺寸隨輸入尺寸線性變化的非線性函數。它可以將尺寸為 H × W × 3  的輸入圖片轉化為最終維度為 H/S × H/S × d  的輸出。 可以轉化為這種形式的監督學習問題,基本都可以在全卷積網絡的框架下求解。

在全卷積網絡中,標準的卷積 + 池化操作,會使輸出的尺寸變小。對於很多問題,我們需要輸出的尺寸和輸入圖片保持一致,因此我們需要一種可以擴大輸入尺寸的操作。最常用的操作就是反卷積。

反卷積可以理解成卷積的逆向操作。這裡我們主要介紹 stride>1 且為整數的反卷積。這種反卷積可以理解為一種廣義的差值操作。以下圖為例,輸入是 3x3 的綠色方格,反卷積的 stride 為 2,kernel size 為 3,padding 為 1。在滑動過程中,對每個輸入方格,其輸出為對應的 3x3 陰影區域,輸出值為輸入值和 kernel 對應位置值的乘積。最終的輸出為滑動過程中每個輸出位置對應值的累加和。這可以看成是一種以 3x3 kernel 值為權重的差值操作。最外邊的一圈白色區域無法進行完整的差值操作,因此可以通過設定 padding 為 1, 將周圍的一圈白色區域去掉,最終的輸出尺寸為 5x5。

根據上面的描述,stride>1 且為整數的反卷積,如果固定反卷積 kernel 的取值為雙線性差值 kernel,反卷積可以等價於雙線性差值。而通過學習得到反卷積 kernel,相比固定參數的 kernel,可以更好的適應不同的問題,因此反卷積可以看成是傳統差值的一種推廣。和卷積類似,tensorflow 中已經實現了反卷積模塊tf.layers.conv2d_transpose。

CNN 在視覺識別(Visual Recognition)中有著非常廣泛的應用。我們接下來以視覺識別中的三大經典問題:分類 / 回歸、檢測和分割為例,介紹如何用 CNN 解決實際問題。

分類 / 回歸 (classification/regression)

圖像分類是指判別圖像屬於哪一 / 哪些預先指定的類別,圖像回歸是指根據圖像內容判斷圖片屬性的取值。分類和回歸在實際中都有著廣泛的應用。從物體分類,人臉識別,再到 12306 的驗證碼識別等,都可以抽象成標準的分類問題。類似的,人臉的關鍵點位置預測,人臉的屬性預測(如年齡,顏值)等,也都可以抽象為標準的回歸問題。目前視覺領域的應用,如果能抽象成輸出為定長的分類或者回歸問題,在有大量訓練數據的情況下,通常都可以採用之前介紹的經典卷積神經網絡框架解決。

檢測問題通常是指判斷出圖片中是否有物體,以及該物體的位置。檢測有 one-stage 和 two-stage 的方法。 因為篇幅關係,我們重點介紹在 FCN 框架下的 one-stage 方法。

按之前的介紹,FCN 可以看作是將 H × W × 3 的輸入圖片,轉化為 H/S × W/S × d 輸出的非線性函數。在 FCN 的框架下解決檢測問題,我們可以預測每一個輸出位置是否有物體,以及物體左上角、右下角相對於當前輸入位置的偏移。 這樣對每個輸出位置,需要 5 維的向量來表示是否有物體,即 d=5。 定義了網絡的輸出之後,我們人工構造出對應的 ground truth,之後在監督學習的框架下,通過定義損失函數(l2 loss) 並進行反向傳播,進行參數的學習。

分割問題是指給出圖片中每個像素點的類別。 基於 FCN 的分割方法和上面介紹的 one-stage 的檢測方法非常類似。 對一個多分類的分割問題,對輸出的每一個位置,我們可以判斷其所屬的類別。 在 FCN 的框架下,對於 N 分類問題,輸出為 H/S × W/S × N。之後通過反向傳播的方式進行訓練。 分割和檢測問題有一個區別是我們有時需要得到和輸入圖片同樣大小的輸出(H × W × N),但卷積神經網絡為了加速,通常會添加 pooling 層,減小中間卷積層的尺寸。 如下圖所示,為了保證輸出的尺寸滿足要求,我們可以在網絡的最後添加反卷積層進行補償,從而獲得更大尺寸的輸出。

人臉關鍵點檢測是現在視覺領域比較成熟的一項應用,是活體檢測,人類美化,人臉識別等高級應用的基礎。本文最後通過一個人臉關鍵點檢測的例子,展示如何用 Tensorflow 實現圖像回歸類的應用。實驗數據集採用 Kaggle 比賽中的 Faical Kerypoints Detection 數據集(https://www.kaggle.com/c/facial-keypoints-detection)。該數據集包含了 7094 張訓練圖片和 1783 張測試圖片。數據集中的每一張人臉都有 15 個關鍵點的標註,圖片的尺寸為 96x96。

Kaggle 比賽的目標是預測人臉上 15 個關鍵點的坐標,總共 30 個 float 值,屬於標準的回歸問題。我們選擇採用最常見的 l2 距離,作為優化的目標。和第一篇文章中神經網絡模型的代碼結構一樣,我們將代碼分成了 3 個主要模塊,分別是 Dataset 模塊,Net 模塊和 Solver 模塊。

inference我們在 inference 函數中定義網絡的主體結構。因為模型會重複用到全連接層和卷積層,因此我們將他們封裝成函數linear_relu和conv_relu,從而方便復用代碼。 網絡結構上我們採用了比較簡單的 3 層卷積,2 層全連接的結構。卷積層的輸出通過tf.reshape轉化成了全連接層可以接受的格式。因為是回歸問題,我們直接將最後一層全連接層的結果作為輸出。

loss為了簡單,對於標準的回歸問題,我們使用 mse 作為損失函數tf.reduce_mean(tf.square(predictions - labels), name='mse')

測試時,我們依舊使用 tensorflow 提供了 tf.metrics 模塊,自動完成對每個 batch 的評價,並將所有的評價匯總。在這個例子裡,我們是解決回歸問題,因此可以使用tf.metrics.mean_squared_error計算均方誤差。

Dataset 部分,我們使用了 tensorflow 推薦的 tfrecord 格式。通過TFRecordDataset函數讀取 tfrecord 文件,並通過parse_example將 tfrecod 轉換成模型的輸入格式。tfrecord 作為一種定長格式,可以大大加快數據的讀取速遞。特別在使用 GPU 時,可以防止數據 io 成為性能的瓶頸。

通過模塊化的設計,我們可以完全復用第一篇文章中的 Solver 代碼,而不需要任何修改,進而提高代碼的復用效率。

封裝好藉口之後,我們可以通過上面簡單的代碼,完成模型的訓練。下圖是 tensorboad 中可視化的網絡結構、loss 的統計以及模型在測試圖片上的效果

 

可以看到,一個 3 層卷積 +2 層全連接的經典卷積神經網絡,就可以很好的解決人臉關鍵點檢測的問題。在實際中,我們可以使用更複雜的網絡和一些其他 trick 來進一步提高模型性能。

董健,360 高級數據科學家,前 Amazon 研究科學家。 目前主要關注深度學習、強化學習、計算機視覺等方面的科學和技術創新,擁有豐富的大數據、計算機視覺經驗。曾經多次領隊參加 Pascal VOC、ImageNet 等世界著名人工智慧競賽並獲得冠軍。

博士期間在頂級國際學術會議和雜誌上發表過多篇學術論文。從 2015 年底加入 360 至今,董健作為主要技術人員參與並領導了多個計算機視覺和大數據項目。

完整代碼下載:

https://github.com/Dong--Jian/Vision-Tutorial

今日薦文

點擊下方圖片即可閱讀


QCon 北京 2018 全新開啟,聚焦最新技術熱點,沉澱最優實踐經驗。多位主題演講嘉賓已確認,C# 程式語言的 Program Manager、Netflix 工程總監等國際大咖共呈技術盛宴,現在報名享 7 折優惠,立減 2040 元。有任何問題可諮詢購票經理 Hanna,電話:15110019061,微信:qcon-0410。

相關焦點

  • 卷積?神經?網絡?教你從讀懂詞語開始了解計算機視覺識別最火模型
    簡介 卷積神經網絡聽起來像一個奇怪組合。這個名字涉及了生物學、數學,還有一點計算機科學亂入,但它卻是計算機視覺領域最具影響的創新。在2012年,由於Alex Krizhevsky使用神經網絡贏得了ImageNet挑戰賽的冠軍(這個比賽可被看作計算機視覺領域的奧運會),神經網絡第一次嶄露頭角。神經網絡把分類誤差從26%降低到15%,這在當時是一個令人震驚的進步。
  • 薦書丨周志華力薦新書《解析深度學習:卷積神經網絡原理與視覺實踐》
    魏秀參博士在LAMDA 求學數年,對卷積神經網絡及其視覺應用頗有所長,博士未畢業即被曠視科技聘為南京研究院負責人,畢業之際將心得材料轉撰成書請愚致序。師生之誼,盛情難卻。在國內計算機領域,寫書乃吃力不討好之事。
  • 如何入手卷積神經網絡
    本文從基礎入手,介紹了卷積網絡的基本原理以及相關的其它技術,並利用卷積網絡做了一個簡單項目作為示例參考。想入手 CNN 的朋友不可錯過~首先,我們先看看下面這張照片:之後,他們又創建了 AlexNet,獲得了 ImageNet 競賽冠軍,遠超第二名。這項技術就是卷積神經網絡。它是深度神經網絡的一個分支,處理圖像的效果格外好。
  • AI入門:卷積神經網絡
    講到AI不得不講深度學習,而講到深度學習,又不能不講卷積神經網絡。如果把深度學習比作中國的網際網路界,那捲積神經網絡和循環神經網絡就是騰訊和阿里級別的地位。今天我們主要討論的卷積神經網絡,到底卷積神經網絡能解決什麼問題,它的結構是怎樣的?是怎麼學習的?應用在哪些具體的產品上?本文將為大家一一解答。
  • 從特徵檢測器到視覺轉換器:卷積神經網絡的時代到此結束了嗎?
    圖源:unsplash近十年來,卷積神經網絡一直在全球計算機視覺研究領域發揮著主導作用。但研究者們正在提出一種新方法,想要利用轉換器的功能賦予圖像更深層的意義。轉換器最初是為自然語言處理任務而設計的,主攻神經網絡機器翻譯。後來,谷歌研究院的阿列克謝·多索維斯基(Alexey Dosovitskiy)、盧卡斯·拜爾(Lucas Beyer)等人撰寫了一篇題目為《一幅圖像值得16x16個字符:大規模用於圖像識別的轉換器》的論文,提出了一種名為視覺轉換器(ViT)的架構,該架構可通過轉換器處理圖像數據。
  • 對卷積神經網絡工作原理做一個直觀的解釋
    第二,神經網絡,是指利用一層層神經元構建成一個類似大腦結構的模型,從而自動實現端到端的學習。為什麼要用神經網絡?因為傳統計算機視覺,對圖像的理解非常重要,圖像的特徵有顏色特徵、幾何特徵、邊緣特徵、局部特徵、梯度特徵等等,光學這些就需要大量的時間,然後才能學習計算機視覺的一些方法和模型。
  • 深度學習基礎:一步一步講解卷積神經網絡
    其次,即使到頭來你未能在計算機視覺上有所建樹,但我發現,人們對於計算機視覺的研究是如此富有想像力和創造力,由此衍生出新的神經網絡結構與算法,這實際上啟發人們去創造出計算機視覺與其他領域的交叉成果。舉個例子,之前我在做語音識別的時候,我經常從計算機視覺領域中尋找靈感, 並將其應用於我的文獻當中。
  • 圖解:卷積神經網絡數學原理解析
    原標題:Gentle Dive into Math Behind Convolutional Neural Networks自動駕駛、智能醫療保健和自助零售這些領域直到最近還被認為是不可能實現的,而計算機視覺已經幫助我們達到了這些事情。如今,擁有自動駕駛汽車或自動雜貨店的夢想聽起來不再那麼遙不可及了。
  • 【深度學習】:一文入門3D計算機視覺
    傳統的3D計算機視覺則是基於純立體幾何來實現的,而目前我們使用深度學習在3D計算機視覺當中也可以得到一些不錯的效果,目前甚至有超越傳統依靠立體幾何識別準確率的趨勢。因此咱們現在來介紹一下深度學習在3D計算機視覺當中的應用吧!
  • 詳解卷積神經網絡
    接下來介紹一種非常重要的神經網絡——卷積神經網絡。這種神經網絡在計算機視覺領域取得了重大的成功,而且在自然語言處理等其它領域也有很好的應用。深度學習受到大家的關注很大一個原因就是Alex等人實現的AlexNet(一種深度卷積神經網絡)在LSVRC-2010 ImageNet這個比賽中取得了非常好的成績。此後,卷積神經網絡及其變種被廣泛應用於各種圖像相關任務。
  • 計算機視覺:從入門到精通,極限剖析圖像識別學習算法
    如何做好計算機視覺的研究工作,迎接更廣闊的未來職業發展,能夠上手應用,編寫屬於自己的神經網絡和計算機視覺應用?
  • 圖解:卷積神經網絡的數學原理分析
    實際上,我們每天都在使用計算機視覺功能-當我們用臉解鎖手機或在社交媒體上發布照片時,我們會使用自動照片編輯功能。卷積神經網絡可能是取得巨大成功的最關鍵的基礎。這次,我們將加深對神經網絡如何在CNN上工作的理解。出於建議,本文將包含非常複雜的數學方程式。如果您不習慣線性代數和微分,請不要氣our。我的目標不是讓您記住這些公式,而是讓您直觀地了解下面發生的事情。
  • 一文帶你讀懂計算機視覺
    使用許多卷積層的神經網絡就是其中之一。一個卷積層利用圖像的2D結構在神經網絡的下一層中生成有用信息。基於卷積的深度神經網絡在目標識別任務上取得了很好的效果。ILSVR會議一直在ImageNet(http://www.image-net.org/ 一個有許多圖片的數據集,包括貓,狗等物品標籤)上舉辦競賽。越成功的神經網絡使用的層數會越來越多。
  • AlphaGo 早已擊敗圍棋冠軍,計算機視覺還是 3 歲的「智力」
    但是現在,AlphaGo 已經擊敗圍棋冠軍,IBM Watson 也在 Jeopardy 中擊敗人類競賽者,而大多數計算機視覺軟體最多只能完成 3 歲兒童的任務……理論與實踐不斷證明,人類視覺神經非常複雜,計算機視覺實現並非易事。計算機視覺研究從上世紀 50 年代興起之後,也歷經了狂歡、冷靜,又重新燃起希望的階段。
  • 了解CNN這一篇就夠了:卷積神經網絡技術及發展
    在不同類型的神經網絡當中,卷積神經網絡是得到最深入研究的。早期由於缺乏訓練數據和計算能力,要在不產生過擬合的情況下訓練高性能卷積神經網絡是很困難的。標記數據和近來GPU的發展,使得卷積神經網絡研究湧現並取得一流結果。本文中,我們將縱覽卷積神經網絡近來發展,同時介紹卷積神經網絡在視覺識別方面的一些應用。
  • 深度學習元老Yann Lecun詳解卷積神經網絡
    註:卷積神經網絡(Convolutional Neural Network)是一種前饋神經網絡,它的人工神經元可以響應一部分覆蓋範圍內的周圍單元,對於大型圖像處理有出色表現。早在20世紀80年代末,Yann LeCun就作為貝爾實驗室的研究員提出了卷積網絡技術,並展示如何使用它來大幅度提高手寫識別能力。上世紀末本世紀初,當神經網絡失寵時Yann LeCun是少數幾名一直堅持的科學家之一。他於2003年成為紐約大學教授,並從此引領了深度學習的發展,目前任職於Facebook FAIR實驗室。
  • 成為一名CV(計算機視覺)工程師,你需要具備哪些能力?
    人工智慧一個很大的應用方向是CV(計算機視覺)。CV在如製造業、檢驗、文檔分析、醫療診斷和軍事等領域中各種智能系統中不可分割。具體的像無人駕駛、人臉識別、VR/AR等,未來在醫療領域等還將有更大的發展。那麼成為一名計算機視覺工程師應該具備哪些能力呢?首先數學要學好。
  • Clarifai:卷積神經網絡是什麼,如何工作
    然而,在2012年,第一個深度卷積神經網絡(CNN)被引入競爭,擊敗了它的競爭對手,錯誤率下降到16%。從那以後,每一個獲獎的算法都是CNN,包括2013年,Clarifai獲得了所有前五名獎項,那麼CNN到底是什麼?CNNs是一種特殊類型的神經網絡,通常是深度神經網絡,用於計算機視覺任務。CNN的目的是將原始像素轉換成人類(或算法)能夠理解的有意義的概念。
  • 教你從讀懂詞語開始了解計算機視覺識別最火模型 | CNN入門手冊(中)
    大數據文摘作品,轉載要求見文末編譯 | 馬卓群,元元keiko,錢天培在上周,我們為大家帶來了一篇卷積神經網絡的入門介紹:《卷積?神經?網絡?教你從讀懂詞語開始了解計算機視覺識別最火模型 | CNN入門手冊(上)》(戳標題直接閱讀),相信大家已經對卷積神經網絡有了初步的了解。這周,我們將更深入地介紹卷積神經網絡(以下簡稱「ConvNets」),解釋上周我們提到卻又沒有細講的一些概念 。聲明:我在這部分介紹的一些主題非常複雜,完全可以單獨列出來寫成一篇文章。
  • 深度 | 從AlexNet到殘差網絡,理解卷積神經網絡的不同架構
    優秀的卷積神經網絡具有數百萬個參數和大量隱藏層。事實上,一個錯誤的經驗法則是:「隱藏層的數量越多,卷積神經網絡越好」。流行的卷積神經網絡有 AlexNet、VGG、Inception、ResNet。這些網絡為什麼性能如此好?它們是如何設計的呢?為什麼它們的結構是現在這樣?本文給出了一個簡單而全面的概述。這些問題的答案並不簡單,無法全部涵蓋在一篇博客中。