Convolutional1D, Convolutional2D และ Convolutional 3D แตกต่างกันอย่างไร?


10

ฉันได้เรียนรู้เกี่ยวกับเครือข่ายประสาทเทียม เมื่อดูKerasตัวอย่างฉันพบวิธีการแปลงข้อมูลที่แตกต่างกันสามวิธี กล่าวคือ 1D, 2D และ 3D อะไรคือความแตกต่างระหว่างสามเลเยอร์เหล่านี้? กรณีการใช้งานของพวกเขาคืออะไร? มีลิงค์หรือข้อมูลอ้างอิงเพื่อแสดงกรณีการใช้งานหรือไม่?

คำตอบ:


5

ข้อแตกต่างคือขนาดของพื้นที่อินพุต อินพุตสำหรับเลเยอร์ convolutional มีรูปร่างดังต่อไปนี้:

input_shape = (batch_size, input_dims, ช่อง)

  • รูปร่างอินพุตสำหรับconv1D : (batch_size, W, แชนเนล)

    ตัวอย่าง: สัญญาณเสียงสเตอริโอ 1 วินาทีสุ่มตัวอย่างที่ 44100 Hz, รูปร่าง: (batch_size, 44100,2)

  • รูปร่างอินพุตสำหรับconv2D : (batch_size, (H, W), ช่อง)

    ตัวอย่าง: ภาพ RGB 32x32, รูปร่าง: (batch_size, 32,32,3)

  • รูปร่างอินพุตสำหรับconv3D : (batch_size, (H, w, D), ช่อง)

    ตัวอย่าง (หากินมากขึ้น): วิดีโอ 1 วินาทีของภาพ RGB ขนาด 32x32 ที่ 24 fps, รูปร่าง: (batch_size, 32,32,3,24)

ช่องคืออะไร

สิ่งสำคัญคือการคิดเกี่ยวกับความหมายของช่องสัญญาณสำหรับข้อมูลอินพุตของเรา เลเยอร์ convolutional ใช้ฟิลเตอร์ที่แตกต่างกันสำหรับแต่ละแชแนลดังนั้นน้ำหนักของเลเยอร์ Conv มีรูปร่างดังต่อไปนี้:

(kernel_size,num_channels,num_filter_per_channels)

ตัวอย่าง:

ชั้น Convolutional ที่มีตัวกรอง 12 ตัวและตารางเคอร์เนลเมทริกซ์ขนาด 3 ชั้นนี้จะใช้ตัวกรอง 12 แบบที่แตกต่างกันสำหรับแต่ละช่อง ในตัวอย่างที่ให้ไว้ก่อนหน้านี้:

  • ตัวอย่างสัญญาณเสียงสเตอริโอ 1 วินาทีที่ 44100 Hz, kernel_size = 3

    12 x 2 = 24 ตัวกรองหนึ่งมิติ 12 ตัวกรองสำหรับแต่ละช่อง

     Weigths shape: (3, 2, 12)
  • รูปภาพ RGB ขนาด 32x32, kernel_size = (3,3)

    12 x 3 = 36 ตัวกรองสองมิติ, 12 ตัวกรองสำหรับแต่ละช่อง

    Weights shape: (3, 3, 3, 12)
  • วิดีโอความยาว 1 วินาทีของภาพ RGB ขนาด 32x32 ที่ 24 fps, kernel_size = (3,3,3)

    24 x 12 = 288 ฟิลเตอร์สามมิติ, 12 ฟิลเตอร์สำหรับแต่ละช่อง

    Weights shape: (3, 3, 3, 24, 12)

ดังนั้นการตัดสินใจว่าช่องหมายถึงอะไรมีความสำคัญมากเนื่องจากแต่ละช่องมีชุดตัวกรองของตัวเอง สำหรับตัวอย่างแรกดูเหมือนว่าตรงไปตรงมาในการตัดสินใจว่าสัญญาณสเตอริโอและภาพ RGB เป็นช่องทางที่แตกต่างกัน ... พวกเขามักจะตั้งชื่อแบบนั้น (ช่องสเตอริโอ, ช่อง RGB) แน่นอน ในตัวอย่างวิดีโอมันมีความคลุมเครือมากกว่า ... การตั้งค่าวิดีโอเป็นอินพุต 3D ด้วยมิติตามเวลาขณะที่ช่องทางอาจไม่ใช่ตัวเลือกที่ดีที่สุดเนื่องจากวิธีการนี้ลำดับที่เฟรมตามกาลเวลานั้นไม่สำคัญ (ผลลัพธ์สำหรับ ตัวกรองของแต่ละช่องสัญญาณจะถูกสรุป) ทำให้สูญเสียพลวัตทางอินทรินที่แท้จริงของข้อมูลอินพุต วิธีการที่ดีกว่าวิธีหนึ่ง (ขึ้นอยู่กับแอปพลิเคชัน) คือการประมวลผลภาพ RGB ด้วยการโน้มน้าวใจ 2D ในเครือข่ายประสาทที่เกิดขึ้นอีก เช่นเดียวกันกับสัญญาณเสียง

สิ่งสำคัญคือต้องทราบว่าสัญญาณที่มีขนาดอินพุต D ถือได้ว่าเป็นสัญญาณของมิติ D + 1 ที่มีหนึ่งช่องสัญญาณ แต่พื้นที่ของคุณสมบัติที่ได้อาจเป็นตัวแทน / ประโยชน์น้อยกว่า:

 (44100,2) --> expand_dimension(axis=-1)--> ((44100,2),1)

รหัส Keras สนับสนุนตัวอย่าง

from keras import Input, Conv1D, Conv2D, Conv3D
#1D
in_ = Input(shape=(44100,2))
layer = Conv1D(filters=12,kernel_size=3)
out_ = layer(in_)
print("Weights shape: {}".format(layer.get_weights()[0].shape))

#2D
in_ = Input(shape=(32,32,3))
layer = Conv2D(filters=12,kernel_size=3)
out_ = layer(in_)
print("Weights shape: {}".format(layer.get_weights()[0].shape))

#3D
in_ = Input(shape=(32,32,3,24))
layer = Conv3D(filters=12,kernel_size=3)
out_ = layer(in_)
print("Weights shape: {}".format(layer.get_weights()[0].shape))

8

Conv1Dใช้สำหรับสัญญาณอินพุตที่คล้ายกับเสียง โดยการใช้พวกเขาคุณสามารถค้นหารูปแบบข้ามสัญญาณ ตัวอย่างเช่นคุณมีสัญญาณเสียงและคุณมีเลเยอร์ convolutional การบิดแต่ละครั้งจะสำรวจเสียงเพื่อค้นหารูปแบบที่มีความหมายโดยใช้ฟังก์ชันต้นทุน

Conv2Dใช้สำหรับรูปภาพ กรณีใช้งานนี้เป็นที่นิยมมาก วิธีการบิดที่ใช้ในชั้นนี้จึงเรียกว่าบิดมากกว่าปริมาณ ซึ่งหมายความว่าคุณมีภาพสองมิติซึ่งมีหลายช่องทาง RGB เป็นตัวอย่าง ในกรณีนี้แต่ละตัวกรอง convolutional ควรเป็นตัวกรองสามมิติที่จะโน้มน้าวใจมีความสัมพันธ์ข้ามกับภาพเพื่อค้นหารูปแบบที่เหมาะสมทั่วทั้งภาพ

Conv3Dมักใช้สำหรับวิดีโอที่คุณมีเฟรมสำหรับแต่ละช่วงเวลา เลเยอร์เหล่านี้มักจะมีพารามิเตอร์ที่ต้องเรียนรู้มากกว่าเลเยอร์ก่อนหน้า เหตุผลที่เราเรียกพวกเขา3Dคือนอกเหนือจากภาพสำหรับแต่ละเฟรมมีแกนอื่นที่เรียกว่าเวลาที่มีค่าที่ไม่ต่อเนื่องและแต่ละภาพนั้นตรงกับเฟรมเฉพาะ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.