機器視角:長文揭秘圖像處理和卷積神經網絡架構

2020-11-29 36kr

編者按:本文由微信公眾號「機器之心」(ID:almosthuman2014)編譯,選自 Analyticsvidhya,作者:DISHASHREE GUPTA;36氪經授權發布。

近日,Dishashree Gupta 在 Analyticsvidhya 上發表了一篇題為《Architecture of Convolutional Neural Networks (CNNs) demystified》的文章,對用於圖像識別和分類的卷積神經網絡架構作了深度揭秘;作者在文中還作了通盤演示,期望對 CNN 的工作機制有一個深入的剖析。

引言

先坦白地說,有一段時間我無法真正理解深度學習。我查看相關研究論文和文章,感覺深度學習異常複雜。我嘗試去理解神經網絡及其變體,但依然感到困難。

接著有一天,我決定一步一步,從基礎開始。我把技術操作的步驟分解開來,並手動執行這些步驟(和計算),直到我理解它們如何工作。這相當費時,且令人緊張,但是結果非凡。

現在,我不僅對深度學習有了全面的理解,還在此基礎上有了好想法,因為我的基礎很紮實。隨意地應用神經網絡是一回事,理解它是什麼以及背後的發生機制是另外一回事。

今天,我將與你共享我的心得,展示我如何上手卷積神經網絡並最終弄明白了它。我將做一個通盤的展示,從而使你對 CNN 的工作機制有一個深入的了解。

在本文中,我將會討論 CNN 背後的架構,其設計初衷在於解決圖像識別和分類問題。同時我也會假設你對神經網絡已經有了初步了解。

目錄

1.機器如何看圖?

2.如何幫助神經網絡識別圖像?

3.定義卷積神經網絡

4.小結

5.使用 CNN 分類圖像

1. 機器如何看圖?

人類大腦是一非常強大的機器,每秒內能看(捕捉)多張圖,並在意識不到的情況下就完成了對這些圖的處理。但機器並非如此。機器處理圖像的第一步是理解,理解如何表達一張圖像,進而讀取圖片。

簡單來說,每個圖像都是一系列特定排序的圖點(像素)。如果你改變像素的順序或顏色,圖像也隨之改變。舉個例子,存儲並讀取一張上面寫著數字 4 的圖像。

基本上,機器會把圖像打碎成像素矩陣,存儲每個表示位置像素的顏色碼。在下圖的表示中,數值 1 是白色,256 是最深的綠色(為了簡化,我們示例限制到了一種顏色)。

一旦你以這種格式存儲完圖像信息,下一步就是讓神經網絡理解這種排序與模式。

2. 如何幫助神經網絡識別圖像?

表徵像素的數值是以特定的方式排序的。

假設我們嘗試使用全連接網絡識別圖像,該如何做?

全連接網絡可以通過平化它,把圖像當作一個數組,並把像素值當作預測圖像中數值的特徵。明確地說,讓網絡理解理解下面圖中發生了什麼,非常的艱難。

即使人類也很難理解上圖中表達的含義是數字 4。我們完全丟失了像素的空間排列。

我們能做什麼呢?可以嘗試從原圖像中提取特徵,從而保留空間排列。 

案例 1

這裡我們使用一個權重乘以初始像素值。

現在裸眼識別出這是「4」就變得更簡單了。但把它交給全連接網絡之前,還需要平整化(flatten) 它,要讓我們能夠保留圖像的空間排列。

案例 2

現在我們可以看到,把圖像平整化完全破壞了它的排列。我們需要想出一種方式在沒有平整化的情況下把圖片饋送給網絡,並且還要保留空間排列特徵,也就是需要饋送像素值的 2D/3D 排列。

我們可以嘗試一次採用圖像的兩個像素值,而非一個。這能給網絡很好的洞見,觀察鄰近像素的特徵。既然一次採用兩個像素,那也就需要一次採用兩個權重值了。

希望你能注意到圖像從之前的 4 列數值變成了 3 列。因為我們現在一次移用兩個像素(在每次移動中像素被共享),圖像變的更小了。雖然圖像變小了,我們仍能在很大程度上理解這是「4」。而且,要意識到的一個重點是,我們採用的是兩個連貫的水平像素,因此只會考慮水平的排列。

這是我們從圖像中提取特徵的一種方式。我們可以看到左邊和中間部分,但右邊部分看起來不那麼清楚。主要是因為兩個問題:

1. 圖片角落左邊和右邊是權重相乘一次得到的。

2. 左邊仍舊保留,因為權重值高;右邊因為略低的權重,有些丟失。

現在我們有兩個問題,需要兩個解決方案。

案例 3

遇到的問題是圖像左右兩角只被權重通過一次。我們需要做的是讓網絡像考慮其他像素一樣考慮角落。我們有一個簡單的方法解決這一問題:把零放在權重運動的兩邊。

你可以看到通過添加零,來自角落的信息被再訓練。圖像也變得更大。這可被用於我們不想要縮小圖像的情況下。

案例 4

這裡我們試圖解決的問題是右側角落更小的權重值正在降低像素值,因此使其難以被我們識別。我們所能做的是採取多個權重值並將其結合起來。

(1,0.3) 的權重值給了我們一個輸出表格。

同時表格 (0.1,5) 的權重值也將給我們一個輸出表格。

兩張圖像的結合版本將會給我們一個清晰的圖片。因此,我們所做的是簡單地使用多個權重而不是一個,從而再訓練圖像的更多信息。最終結果將是上述兩張圖像的一個結合版本。

案例 5

我們到現在通過使用權重,試圖把水平像素(horizontal pixel)結合起來。但是大多數情況下我們需要在水平和垂直方向上保持空間布局。我們採取 2D 矩陣權重,把像素在水平和垂直方向上結合起來。同樣,記住已經有了水平和垂直方向的權重運動,輸出會在水平和垂直方向上低一個像素。

特別感謝 Jeremy Howard 啟發我創作了這些圖像。

因此我們做了什麼?

上面我們所做的事是試圖通過使用圖像的空間的安排從圖像中提取特徵。為了理解圖像,理解像素如何安排對於一個網絡極其重要。上面我們所做的也恰恰是一個卷積網絡所做的。我們可以採用輸入圖像,定義權重矩陣,並且輸入被卷積以從圖像中提取特殊特徵而無需損失其有關空間安排的信息。

這個方法的另一個重大好處是它可以減少圖像的參數數量。正如所見,卷積圖像相比於原始圖像有更少的像素。

3.定義一個卷積神經網絡

我們需要三個基本的元素來定義一個基本的卷積網絡

1. 卷積層

2. 池化層(可選)

3. 輸出層

卷積層

在這一層中,實際所發生的就像我們在上述案例 5 中見到的一樣。假設我們有一個 6*6 的圖像。我們定義一個權值矩陣,用來從圖像中提取一定的特徵。

我們把權值初始化成一個 3*3 的矩陣。這個權值現在應該與圖像結合,所有的像素都被覆蓋至少一次,從而來產生一個卷積化的輸出。上述的 429,是通過計算權值矩陣和輸入圖像的 3*3 高亮部分以元素方式進行的乘積的值而得到的。

現在 6*6 的圖像轉換成了 4*4 的圖像。想像一下權值矩陣就像用來刷牆的刷子。首先在水平方向上用這個刷子進行刷牆,然後再向下移,對下一行進行水平粉刷。當權值矩陣沿著圖像移動的時候,像素值再一次被使用。實際上,這樣可以使參數在卷積神經網絡中被共享。

下面我們以一個真實圖像為例。

權值矩陣在圖像裡表現的像一個從原始圖像矩陣中提取特定信息的過濾器。一個權值組合可能用來提取邊緣(edge)信息,另一個可能是用來提取一個特定顏色,下一個就可能就是對不需要的噪點進行模糊化。

先對權值進行學習,然後損失函數可以被最小化,類似於多層感知機(MLP)。因此需要通過對參數進行學習來從原始圖像中提取信息,從而來幫助網絡進行正確的預測。當我們有多個卷積層的時候,初始層往往提取較多的一般特徵,隨著網絡結構變得更深,權值矩陣提取的特徵越來越複雜,並且越來越適用於眼前的問題。

步長(stride)和邊界(padding)的概念

像我們在上面看到的一樣,過濾器或者說權值矩陣,在整個圖像範圍內一次移動一個像素。我們可以把它定義成一個超參數(hyperparameter),從而來表示我們想讓權值矩陣在圖像內如何移動。如果權值矩陣一次移動一個像素,我們稱其步長為 1。下面我們看一下步長為 2 時的情況。

你可以看見當我們增加步長值的時候,圖像的規格持續變小。在輸入圖像四周填充 0 邊界可以解決這個問題。我們也可以在高步長值的情況下在圖像四周填加不只一層的 0 邊界。

我們可以看見在我們給圖像填加一層 0 邊界後,圖像的原始形狀是如何被保持的。由於輸出圖像和輸入圖像是大小相同的,所以這被稱為 same padding。

這就是 same padding(意味著我們僅考慮輸入圖像的有效像素)。中間的 4*4 像素是相同的。這裡我們已經利用邊界保留了更多信息,並且也已經保留了圖像的原大小。

多過濾與激活圖

需要記住的是權值的縱深維度(depth dimension)和輸入圖像的縱深維度是相同的。權值會延伸到輸入圖像的整個深度。因此,和一個單一權值矩陣進行卷積會產生一個單一縱深維度的卷積化輸出。大多數情況下都不使用單一過濾器(權值矩陣),而是應用維度相同的多個過濾器。

每一個過濾器的輸出被堆疊在一起,形成卷積圖像的縱深維度。假設我們有一個 32*32*3 的輸入。我們使用 5*5*3,帶有 valid padding 的 10 個過濾器。輸出的維度將會是 28*28*10。

如下圖所示:

激活圖是卷積層的輸出。

池化層

有時圖像太大,我們需要減少訓練參數的數量,它被要求在隨後的卷積層之間周期性地引進池化層。池化的唯一目的是減少圖像的空間大小。池化在每一個縱深維度上獨自完成,因此圖像的縱深保持不變。池化層的最常見形式是最大池化。

在這裡,我們把步幅定為 2,池化尺寸也為 2。最大化執行也應用在每個卷機輸出的深度尺寸中。正如你所看到的,最大池化操作後,4*4 卷積的輸出變成了 2*2。

讓我們看看最大池化在真實圖片中的效果如何。

正如你看到的,我們卷積了圖像,並最大池化了它。最大池化圖像仍然保留了汽車在街上的信息。如果你仔細觀察的話,你會發現圖像的尺寸已經減半。這可以很大程度上減少參數。

同樣,其他形式的池化也可以在系統中應用,如平均池化和 L2 規範池化。

輸出維度

理解每個卷積層輸入和輸出的尺寸可能會有點難度。以下三點或許可以讓你了解輸出尺寸的問題。有三個超參數可以控制輸出卷的大小。

1. 過濾器數量-輸出卷的深度與過濾器的數量成正比。請記住該如何堆疊每個過濾器的輸出以形成激活映射。激活圖的深度等於過濾器的數量。

2. 步幅(Stride)-如果步幅是 1,那麼我們處理圖片的精細度就進入單像素級別了。更高的步幅意味著同時處理更多的像素,從而產生較小的輸出量。

3. 零填充(zero padding)-這有助於我們保留輸入圖像的尺寸。如果添加了單零填充,則單步幅過濾器的運動會保持在原圖尺寸。

我們可以應用一個簡單的公式來計算輸出尺寸。輸出圖像的空間尺寸可以計算為([W-F + 2P] / S)+1。在這裡,W 是輸入尺寸,F 是過濾器的尺寸,P 是填充數量,S 是步幅數字。假如我們有一張 32*32*3 的輸入圖像,我們使用 10 個尺寸為 3*3*3 的過濾器,單步幅和零填充。

那麼 W=32,F=3,P=0,S=1。輸出深度等於應用的濾波器的數量,即 10,輸出尺寸大小為 ([32-3+0]/1)+1 = 30。因此輸出尺寸是 30*30*10。

輸出層

在多層卷積和填充後,我們需要以類的形式輸出。卷積和池化層只會提取特徵,並減少原始圖像帶來的參數。然而,為了生成最終的輸出,我們需要應用全連接層來生成一個等於我們需要的類的數量的輸出。僅僅依靠卷積層是難以達到這個要求的。卷積層可以生成 3D 激活圖,而我們只需要圖像是否屬於一個特定的類這樣的內容。輸出層具有類似分類交叉熵的損失函數,用於計算預測誤差。一旦前向傳播完成,反向傳播就會開始更新權重與偏差,以減少誤差和損失。

4. 小結

正如你所看到的,CNN 由不同的卷積層和池化層組成。讓我們看看整個網絡是什麼樣子:

  • 我們將輸入圖像傳遞到第一個卷積層中,卷積後以激活圖形式輸出。圖片在卷積層中過濾後的特徵會被輸出,並傳遞下去。

  • 每個過濾器都會給出不同的特徵,以幫助進行正確的類預測。因為我們需要保證圖像大小的一致,所以我們使用同樣的填充(零填充),否則填充會被使用,因為它可以幫助減少特徵的數量。

  • 隨後加入池化層進一步減少參數的數量。

  • 在預測最終提出前,數據會經過多個卷積和池化層的處理。卷積層會幫助提取特徵,越深的卷積神經網絡會提取越具體的特徵,越淺的網絡提取越淺顯的特徵。

  • 如前所述,CNN 中的輸出層是全連接層,其中來自其他層的輸入在這裡被平化和發送,以便將輸出轉換為網絡所需的參數。

  • 隨後輸出層會產生輸出,這些信息會互相比較排除錯誤。損失函數是全連接輸出層計算的均方根損失。隨後我們會計算梯度錯誤。

  • 錯誤會進行反向傳播,以不斷改進過濾器(權重)和偏差值。

  • 一個訓練周期由單次正向和反向傳遞完成。

5. 在 KERAS 中使用 CNN 對圖像進行分類

讓我們嘗試一下,輸入貓和狗的圖片,讓計算機識別它們。這是圖像識別和分類的經典問題,機器在這裡需要做的是看到圖像,並理解貓與狗的不同外形特徵。這些特徵可以是外形輪廓,也可以是貓的鬍鬚之類,卷積層會攫取這些特徵。讓我們把數據集拿來試驗一下吧。

以下這些圖片均來自數據集。

我們首先需要調整這些圖像的大小,讓它們形狀相同。這是處理圖像之前通常需要做的,因為在拍照時,讓照下的圖像都大小相同幾乎不可能。

為了簡化理解,我們在這裡只用一個卷積層和一個池化層。注意:在 CNN 的應用階段,這種簡單的情況是不會發生的。

#import various packagesimport osimport numpy as npimport pandas as pdimport scipyimport sklearnimport kerasfrom keras.models import Sequentialimport cv2from skimage import io
%matplotlib inline

#Defining the File Path

cat=os.listdir("/mnt/hdd/datasets/dogs_cats/train/cat")
dog=os.listdir("/mnt/hdd/datasets/dogs_cats/train/dog")
filepath="/mnt/hdd/datasets/dogs_cats/train/cat/"filepath2="/mnt/hdd/datasets/dogs_cats/train/dog/"#Loading the Images

images=[]
label = []for i in cat:
image = scipy.misc.imread(filepath+i)
images.append(image)
label.append(0) #for cat imagesfor i in dog:
image = scipy.misc.imread(filepath2+i)
images.append(image)
label.append(1) #for dog images

#resizing all the imagesfor i in range(0,23000):
images[i]=cv2.resize(images[i],(300,300))

#converting images to arrays

images=np.array(images)
label=np.array(label)

# Defining the hyperparameters

filters=10filtersize=(5,5)

epochs =5batchsize=128input_shape=(300,300,3)

#Converting the target variable to the required sizefrom keras.utils.np_utils import to_categorical
label = to_categorical(label)

#Defining the model

model = Sequential()

model.add(keras.layers.InputLayer(input_shape=input_shape))

model.add(keras.layers.convolutional.Conv2D(filters, filtersize, strides=(1, 1), padding='valid', data_format="channels_last", activation='relu'))
model.add(keras.layers.MaxPooling2D(pool_size=(2, 2)))
model.add(keras.layers.Flatten())

model.add(keras.layers.Dense(units=2, input_dim=50,activation='softmax'))

model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])
model.fit(images, label, epochs=epochs, batch_size=batchsize,validation_split=0.3)

model.summary()

在這一模型中,我只使用了單一卷積和池化層,可訓練參數是 219,801。很好奇如果我在這種情況使用了 MLP 會有多少參數。通過增加更多的卷積和池化層,你可以進一步降低參數的數量。我們添加的卷積層越多,被提取的特徵就會更具體和複雜。

在該模型中,我只使用了一個卷積層和池化層,可訓練參數量為 219,801。如果想知道使用 MLP 在這種情況下會得到多少,你可以通過加入更多卷積和池化層來減少參數的數量。越多的卷積層意味著提取出來的特徵更加具體,更加複雜。

結語

希望本文能夠讓你認識卷積神經網絡,這篇文章沒有深入 CNN 的複雜數學原理。如果希望增進了解,你可以嘗試構建自己的卷積神經網絡,藉此來了解它運行和預測的原理。

原文連結

相關焦點

  • 深度學習技術和卷積神經網絡(CNN)讓機器視覺識別更智能
    隨著人工智慧技術的進步,深度學習技術(DL)和卷積神經網絡技術(CNN)領域的人工智慧(AI)被引入到機器視覺圖像處理系統的應用中來,從而幫助機器學習和機器檢測缺陷更加高效,使機器視覺識別的過程更加精確。也讓使用這些技術的企業可以從智能化中獲得更高的生產經營效益。
  • 要想了解卷積神經網絡,首先需要了解三種基本架構
    卷積網絡是研究關於圖像(紋理,圖像尺度等)的抽象層面的一種網絡,跟傳統網絡不同的是,它不僅可以根據一個固定尺寸圖像生成物體識別數據,還可以對圖像其他部分進行其他操作。卷積可以有多個,它的作用是「放大」和「增強」圖像的抽象空間。那麼卷積可以用於哪些場景呢?
  • AI入門:卷積神經網絡
    講到AI不得不講深度學習,而講到深度學習,又不能不講卷積神經網絡。如果把深度學習比作中國的網際網路界,那捲積神經網絡和循環神經網絡就是騰訊和阿里級別的地位。今天我們主要討論的卷積神經網絡,到底卷積神經網絡能解決什麼問題,它的結構是怎樣的?是怎麼學習的?應用在哪些具體的產品上?本文將為大家一一解答。
  • 萬字長文|如何直觀解釋卷積神經網絡的工作原理?
    若訓練前饋神經網絡來完成該任務,那麼表達圖像的三維張量將會被攤平成一個向量,作為網絡的輸入,即(width, height, depth)為(4, 4, 1)的圖片會被展成維度為16的向量作為網絡的輸入層。再經過幾層不同節點個數的隱藏層,最終輸出兩個節點,分別表示「有橫折的概率」和「沒有橫折的概率」,如下圖所示。
  • 從特徵檢測器到視覺轉換器:卷積神經網絡的時代到此結束了嗎?
    轉換器最初是為自然語言處理任務而設計的,主攻神經網絡機器翻譯。後來,谷歌研究院的阿列克謝·多索維斯基(Alexey Dosovitskiy)、盧卡斯·拜爾(Lucas Beyer)等人撰寫了一篇題目為《一幅圖像值得16x16個字符:大規模用於圖像識別的轉換器》的論文,提出了一種名為視覺轉換器(ViT)的架構,該架構可通過轉換器處理圖像數據。
  • 人工智慧之卷積神經網絡(CNN)
    ^_^本文引用地址:http://www.eepw.com.cn/article/201806/381807.htm  20世紀60年代,Hubel和Wiesel在研究貓腦皮層中用於局部敏感和方向選擇的神經元時發現其獨特的網絡結構可以有效地降低反饋神經網絡的複雜性,繼而提出了卷積神經網絡CNN(Convolutional Neural Networks)。
  • 深度卷積神經網絡應用於量子計算機
    另一方面,機器學習,尤其是神經網絡,正在粗略地使用向量和矩陣來理解或處理數據。量子機器學習(QML)旨在使用量子系統對向量進行編碼,並使用新的量子算法對其進行學習。一個關鍵的概念是在許多矢量上使用量子疊加,我們可以同時處理它們。
  • PyTorch可視化理解卷積神經網絡
    如今,機器已經能夠在理解、識別圖像中的特徵和對象等領域實現99%級別的準確率。生活中,我們每天都會運用到這一點,比如,智慧型手機拍照的時候能夠識別臉部、在類似於谷歌搜圖中搜索特定照片、從條形碼掃描文本或掃描書籍等。造就機器能夠獲得在這些視覺方面取得優異性能可能是源於一種特定類型的神經網絡——卷積神經網絡(CNN)。
  • 一文了解卷積神經網絡基礎,建議收藏
    今天給大家講一下卷積神經網絡,主要包括四個部分:卷積神經網絡的歷史、全連接層、卷積層和池化層。CNN的英文全稱是Convolutional Neural Network,雛形是LeCun在1998年發明的LeNet網絡結構。
  • 從基本組件到結構創新,67頁論文解讀深度卷積神經網絡架構
    >摘要深度卷積神經網絡(CNN)是一種特殊類型的神經網絡,在各種競賽基準上表現出了當前最優結果。關鍵詞:深度學習,卷積神經網絡,結構,表徵能力,殘差學習,CNN通道提升1、引言機器學習(ML)算法屬於人工智慧(AI)的一個特殊領域,該領域無需明確編程,通過學習數據之間的潛在關係並做出決策,從而將智能賦予計算機。
  • 深入理解卷積網絡的卷積
    卷積神經網絡是一種特殊的神經網絡結構,是自動駕駛汽車、人臉識別系統等計算機視覺應用的基礎,其中基本的矩陣乘法運算被卷積運算取代。它們專門處理具有網格狀拓撲結構的數據。例如,時間序列數據和圖像數據可以看作是一個二維像素網格。
  • 刷臉背後:卷積神經網絡的數學原理
    今天,自動駕駛汽車和無人商店聽起來不再那麼夢幻。事實上,我們每天都在使用計算機視覺技術——我們用自己的面孔解鎖手機,將圖片上傳到社交網絡之前進行自動修圖……卷積神經網絡可能是這一巨大成功背後的關鍵組成模塊。這次,我們將要使用卷積神經網絡的思想來拓寬我們對神經網絡工作原理的理解。打個預防針,本文包含相當複雜的數學方程,但是,你也不必為自己不喜歡線性代數和微積分而沮喪。
  • NAS-DIP: 基於神經架構搜索的自監督圖像補全算法
    From: Arxiv;編譯: T.R  與先前使用大規模監督數據進行訓練的算法不同,Deep Image Prior(DIP)利用隨機初始化的神經網絡模型和退化後的圖像進行自監督迭代,在無需大規模數據進行訓練的情況下,就能有效實現圖像去噪、超分辨和補全等任務。
  • 解讀| 如何用進化方法優化大規模圖像分類神經網絡?
    作者:Angulia Chao參與:Joni、侯韻楚、高振讓機器具備生物一樣的進化能力一直是計算機科學的一個熱門研究領域,今年三月份,谷歌的多位研究者提出了一種圖像分類器的大規模進化方法,機器之心也曾報導過這項研究,參閱:《深度 | 谷歌和 OpenAI 新研究:如何使用達爾文進化論輔助設計人工智慧算法?》。
  • 如何從信號分析角度理解卷積神經網絡的複雜機制?
    機器之心原創作者:Qintong Wu參與:Jane W隨著複雜和高效的神經網絡架構的出現,卷積神經網絡(CNN)的性能已經優於傳統的數字圖像處理方法,如 SIFT 和 SURF。在計算機視覺領域,學者們開始將研究重點轉移到 CNN,並相信 CNN 是這一領域的未來趨勢。但是,人們對成效卓著的 CNN 背後的機理卻缺乏了解。
  • 深度卷積神經網絡CNNs的多GPU並行框架 及其在圖像識別的應用
    1.CNNs模型並行導論1.1.典型應用分析:圖像識別 圖像識別是深度卷積神經網絡獲得成功的一個典型應用範例。 圖1揭示了一個具有5個卷積層和3個全連接層的深度卷積神經網絡,該模型可應用於圖像分類。
  • 一文讓你徹底了解卷積神經網絡
    卷積神經網絡(Convolutional Neural Network,CNN)是一種前饋神經網絡,它的人工神經元可以響應一部分覆蓋範圍內的周圍單元,對於大型圖像處理有出色表現。 它包括卷積層(convolutional layer)和池化層(pooling layer)。
  • 卷積神經網絡的卷積到底是什麼
    卷積神經網絡是一種特殊的神經網絡結構,是自動駕駛汽車、人臉識別系統等計算機視覺應用的基礎,其中基本的矩陣乘法運算被卷積運算取代。它們專門處理具有網格狀拓撲結構的數據。例如,時間序列數據和圖像數據可以看作是一個二維像素網格。
  • 反思卷積神經網絡:圖像角度泛化上的困難重重
    毫無疑問,卷積神經網絡在圖像處理及周邊領域的開發進程和研究突破中發揮著重要作用。 但是,這不代表卷積神經網絡表現完美。 研究人員經常會遇到一個問題:他們往往由於過於追求理論和完美數據集而深陷其中。然而事與願違,要求數據準確度到小數點後幾位其實往往與現實情況中圖像處理的實際用處恰恰相反。
  • 環信人工智慧專家李理:詳解卷積神經網絡
    接下來介紹一種非常重要的神經網絡——卷積神經網絡。這種神經網絡在計算機視覺領域取得了重大的成功,而且在自然語言處理等其它領域也有很好的應用。深度學習受到大家的關注很大一個原因就是Alex等人實現的AlexNet(一種深度卷積神經網絡)在LSVRC-2010 ImageNet這個比賽中取得了非常好的成績。此後,卷積神經網絡及其變種被廣泛應用於各種圖像相關任務。 這裡主要參考了Neural Networks and Deep Learning和cs231n的課程來介紹CNN,兩部分都會有理論和代碼。