วิธีเพิ่มคุณสมบัติที่ไม่ใช่รูปภาพควบคู่กับรูปภาพด้านข้างเป็นอินพุตของ CNN


14

ฉันกำลังฝึกอบรมโครงข่ายประสาทเทียมเพื่อจำแนกภาพตามสภาพหมอก (3 คลาส) อย่างไรก็ตามสำหรับแต่ละภาพประมาณ 150.000 ภาพฉันยังมีตัวแปรอุตุนิยมวิทยาสี่ตัวที่มีอยู่ซึ่งอาจช่วยในการทำนายชั้นเรียนของภาพ ฉันสงสัยว่าฉันจะเพิ่มตัวแปรทางอุตุนิยมวิทยา (เช่นอุณหภูมิความเร็วลม) ไปยังโครงสร้าง CNN ที่มีอยู่เพื่อให้สามารถช่วยในการจำแนกประเภทได้อย่างไร

วิธีหนึ่งที่ฉันสามารถนึกได้ก็คือการสร้างโครงข่ายประสาทประสาทขนาดเล็กอีกข้างหนึ่งไว้ข้างๆ CNN แล้วต่อผลลัพธ์ของชั้น CNN และชั้นที่ซ่อนอยู่ของโครงข่ายประสาทเทียมที่ไม่ใช่ภาพต่อกันที่ชั้นหนาแน่น

วิธีที่สองที่ฉันนึกได้คือเพียงติดต่อคุณสมบัติเหล่านี้กับชั้นที่มีความหนาแน่นสูง อย่างไรก็ตามในกรณีนี้ตัวแปรที่ไม่ใช่รูปภาพจะ (ฉันคิดว่า) จะสามารถคาดการณ์เชิงเส้นได้เท่านั้น

มีวิธีอื่นที่ดีกว่าที่จะรวมคุณสมบัติที่ไม่ใช่รูปภาพไว้ในโมเดลหรือไม่ และวิธีการที่แนะนำคืออะไรเมื่อพิจารณาปริมาณข้อมูลที่ฉันมี

อีกคำถามที่ฉันมีคือฉันควรยกเลิกการตรึงเลเยอร์ convolutional หรือไม่ในขณะที่ฝึกฝนด้วยคุณสมบัติที่ไม่ใช่รูปภาพเหล่านี้ เลเยอร์ของ Resnet-18 เหล่านี้ (ซึ่งถูกกำหนดค่าเริ่มต้นว่าผ่านการฝึกอบรมล่วงหน้าบน ImageNet) ได้รับการปรับแต่งแล้วโดยใช้ภาพ ฉันเดาว่าฉันควรให้พวกมันแข็งตัวและทำให้ชั้นที่หนาทึบหลุดออกเท่านั้นเพราะมันเป็นเพียงที่นี่ที่คุณสมบัติที่ไม่ใช่รูปภาพเข้ามา 'ติดต่อ' กับคุณสมบัติของภาพ (ไม่ใช่ก่อนหน้านี้ใน CNN) ถ้าฉันผิดนี่โปรดพูดอย่างนั้น!


คุณสามารถสร้างแบบจำลองการกระจายการเข้าร่วมระหว่างเพิ่มเติม _features และรูปภาพผ่านโมเดลทั่วไปเช่น GAN, VAE จากนั้นคุณสามารถรับตัวแปรแฝงและใช้กับเกณฑ์ที่มีการตรวจสอบ
Fadi Bakoura

ฉันอยู่ในสถานการณ์ที่คล้ายกันตัวเอง ฉันใช้ภาพท้องฟ้าซ้อนกันในช่วง 15 นาทีที่ผ่านมาเพื่อลองและทำนายผลลัพธ์ของแผงเซลล์แสงอาทิตย์ใกล้กับกล้อง 15 นาทีในอนาคต เมื่อเร็ว ๆ นี้ฉันตัดสินใจที่จะนำคุณลักษณะสภาพอากาศหลายอย่างมาเล่น (หนึ่งภาพสำหรับแต่ละภาพเหมือนในกรณีของคุณ) คำแนะนำแรกของคุณทำงานได้ดีกว่าข้อที่สอง (จากการเพิ่มคุณสมบัติที่ไม่ใช่แบบกราฟิกโดยตรงต่อกับเลเยอร์หนาแน่น) เพื่อให้แม่นยำคำแนะนำที่สองนำไปสู่ปัญหาเกี่ยวกับการทำให้เป็นมาตรฐาน ฉันพบว่าด้วยเหตุผลบางอย่างที่ฉันยังอธิบายไม่ได้เลเยอร์ Batchnorm ไม่สามารถทำให้ภาพกราฟิกเป็นปกติได้
Vignesh Venugopal

@VigneshVenugopal โปรดพูดถึงฉันในความคิดเห็นมิฉะนั้นฉันไม่สามารถรับการแจ้งเตือน คำถามของคุณคืออะไร :)
สื่อ

ฉันจะเชื่อมต่อความเร็ว & มุมเค้น & มุมพวงมาลัยกับเครือข่ายของฉันได้อย่างไร คุณช่วยอธิบายเกี่ยวกับความหนาแน่นของจำนวนที่หนาแน่นเพิ่มได้อย่างไร มันขึ้นอยู่กับอะไร?
Nasrinzaghari

คำตอบ:


10

โซลูชันของฉันเป็นเหมือนคำแนะนำแรกของคุณ แต่มีการเปลี่ยนแปลงเล็กน้อย

  1. สร้างเลเยอร์ convolutional ของคุณและสแต็คพวกมันจนกระทั่งเลเยอร์แบน เครือข่ายนี้ควรได้รับข้อมูลภาพ
  2. แบนแผนที่การเปิดใช้งานของคุณ
  3. สร้างเครือข่ายที่เชื่อมต่ออย่างสมบูรณ์ด้วยจำนวนเซลล์และเลเยอร์ที่ต้องการ
  4. ต่อผลลัพธ์ของเลเยอร์แบนของตาข่าย convolutional และเน็ตที่เชื่อมต่ออย่างสมบูรณ์
  5. เพิ่มเลเยอร์ที่หนาแน่นและเชื่อมต่อกับเลเยอร์สุดท้ายซึ่งเป็นชั้นเรียนของคุณ

คุณสามารถใช้ฟังก์ชันต้นทุนแบบกำหนดเองสำหรับสถาปัตยกรรมนี้


ใน Keras คุณสามารถทำมันด้วยConcatenate()เลเยอร์ได้หรือไม่?
Leevo

ใช่. คุณควรต่อพวกมันให้เรียงต่อกัน
สื่อ

ฉันจะใช้Concatenate()หรือconcatenate()เลเยอร์? ฉันไม่สามารถบอกความแตกต่างได้
Leevo

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