了解1D和3D卷積神經網絡 | Keras

2019-10-18     人工智慧遇見磐創

當我們說卷積神經網絡(CNN)時,通常是指用於圖像分類的2維CNN。但是,現實世界中還使用了其他兩種類型的卷積神經網絡,即1維CNN和3維CNN。在本指南中,我們將介紹1D和3D CNN及其在現實世界中的應用。我假設你已經大體上熟悉卷積網絡的概念。

2維CNN | Conv2D

這是在Lenet-5架構中首次引入的標準卷積神經網絡。Conv2D通常用於圖像數據。之所以稱其為2維CNN,是因為核在數據上沿2維滑動,如下圖所示。

使用CNN的整體優勢在於,它可以使用其核從數據中提取空間特徵,而其他網絡則無法做到。例如,CNN可以檢測圖像中的邊緣,顏色分布等,這使得這些網絡在圖像分類和包含空間屬性的其他類似數據中非常強大。

以下是在keras中添加Conv2D圖層的代碼。

import keras
from keras.layers import Conv2D
model = keras.models.Sequential()
model.add(Conv2D(1, kernel_size=(3,3), input_shape = (128, 128, 3)))
model.summary()

參數input_shape(128、128、3)表示圖像的(高度,寬度,深度)。參數kernel_size(3,3)表示核的(高度,寬度),並且核深度將與圖像的深度相同。

1維CNN | Conv1D

在介紹Conv1D之前,讓我給你一個提示。在Conv1D中,核沿一維滑動。現在讓我們考慮哪種類型的數據只需要核在一個維度上滑動並具有空間特性?

答案就是時間序列數據。讓我們看一下以下數據。

該數據是從人戴在手臂上的加速度計中收集的。數據表示所有三個軸的加速度。1維CNN可以根據加速度計數據執行活動識別任務,例如人是站著,行走,跳躍等。此數據有2個維度。第一維是時間步長,另外一個是3個軸上的加速度值。

下圖說明了核如何在加速度計數據上移動。每行代表某個軸的時間序列加速度。核只能沿時間軸一維移動。

以下是在keras中添加Conv1D圖層的代碼。

import keras
from keras.layers import Conv1D
model = keras.models.Sequential()
model.add(Conv1D(1, kernel_size=5, input_shape = (120, 3)))
model.summary()

參數input_shape(120,3)表示120個時間步驟,每個時間步驟中有3個數據點。這3個數據點是x,y和z軸的加速度。參數kernel_size為5,表示核的寬度,核高度將與每個時間步驟中的數據點數相同。

同樣,1維CNN也可用於音頻和文本數據,因為我們還可以將聲音和文本表示為時間序列數據。請參考下圖

Conv1D廣泛應用於感官數據,加速度計數據就是其中之一。

3維CNN | Conv3D

在Conv3D中,核按3個維度滑動,如下所示。讓我們再想想哪種數據類型需要核在3維上移動?

Conv3D主要用於3D圖像數據。例如磁共振成像(MRI)數據。MRI數據被廣泛用於檢查大腦,脊髓,內部器官等。計算機斷層掃描(CT)掃描也是3D數據的示例,它是通過組合從身體周圍不同角度拍攝的一系列X射線圖像而創建的。我們可以使用Conv3D對該醫學數據進行分類或從中提取特徵。

以下是在keras中添加Conv3D層的代碼。

import keras
from keras.layers import Conv3D
model = keras.models.Sequential()
model.add(Conv3D(1, kernel_size=(3,3,3), input_shape = (128, 128, 128, 3)))

model.summary()

這裡參數Input_shape(128,128,128,3)有4個維度。3D圖像也是4維數據,其中第四維代表顏色通道的數量。就像平面2D圖像具有3維一樣,其中3維代表色彩通道。參數kernel_size(3,3,3)表示核的(高度,寬度,深度),並且核的第4維與顏色通道相同。

總結

  • 在1D CNN中,核沿1個方向移動。一維CNN的輸入和輸出數據是二維的。主要用於時間序列數據。
  • 在2D CNN中,核沿2個方向移動。2D CNN的輸入和輸出數據是3維的。主要用於圖像數據。
  • 在3D CNN中,核沿3個方向移動。3D CNN的輸入和輸出數據是4維的。通常用於3D圖像數據(MRI,CT掃描)。
文章來源: https://twgreatdaily.com/zh-tw/2a1i3W0BMH2_cNUgFjML.html