CNN กับ Marvel Cinematic Universeคุณเป็นซูเปอร์ฮีโร่ของมาร์เวลคนไหน

Krucamper
3 min readOct 14, 2020

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

ภาพจาก commons.wikimedia.org

วิธีการทำงาน

ทำการตั้งชื่อโฟลเดอร์ ตามคลาสที่เราจะทำการเปรียบเทียบ โดยในตัวอย่างนี้เรามี คลาสด้วยกันทั้งหมด 6 คลาสดังนี้

1. BlackPanther
2. DoctorStrange
3. IronMan
4. ScarletWitch
5. SpiderMan
6. Thor

หลังจากนั้นทำการเซฟภาพจาก Internet เข้ามาไว้ในโฟลเดอร์ที่เราได้ทำการสร้างไว้

แสดงรูป โฟลเดอร์ที่ตั้งชื่อตามคลาส
รูปแสดงภาพโฟลเดอร์ต้นฉบับที่หามาจาก Internet

เขียนโค้ดกัน!

1.ทำการ Generate รูปภาพต้นฉบับให้ได้ขนาดตามที่ต้องการเพื่อทำการ Training Model ของเรา โดยจากตัวอย่างนี้เรากำหนดให้มีขนาดเท่ากับ 64 x 64 px

Code แสดงฟังก์ชั่นการปรับขนาดของรูปภาพที่ใช้ในการ Train Model

หลังจากรันคำสั่ง img_genarate.py เราจะได้ ภาพขนาดตามที่เราต้องการในโฟลเดอร์ genarate

รูปแสดง โฟลเดอร์ภาพที่ถูกปรับขนาดที่จะใช้ในการ Train Model

2. ขั้นตอนการสร้างโมเดล โดยจะแบ่งออกเป็น 4 ระดับชั้นดังนี้

ชั้นที่ 1: Convolution
ทำการ filters ทั้งหมดของเลเยอร์ 64 ชั้น
kernel_size มีค่าเป็น 3x3
มี 3 channels คือ RGB
activation function เป็น relu
padding เซ็ทไว้เป็น same เพื่อให้ข้อมูลที่ส่งออกมีขนาดเท่าเดิม
ชั้นที่ 2: Pooling
เพื่อการย่อขนาดรูป ตัวอย่างนี้เราได้ใช้การย่อแบบ max pooling เพื่อหาค่าสูงสุดในบริเวณที่ตัวกรองทาบอยู่มาเป็นผลลัพธ์
Max Pooling เป็นตัวกรองแบบหนึ่งที่หาค่าสูงสุดในบริเวณที่ตัวกรองทาบอยู่มาเป็นผลลัพธ์ชั้นที่ 3: Flattening
เพื่อเอาข้อมูลอาร์เรย์ขนาดหลายมิติจากชั้นที่แล้ว มาเรียงต่อกันให้เหลือมิติเดียว
ชั้นที่ 4: Full connection
Model นี้ใช้ fully connected
ใช้ activation function เป็น softmax เพื่อให้ค่าผลลัพธ์ออกมาเป็นเปอร์เซนต์ว่าค่าของภาพน่าจะตรงกับคลาสใดตามที่เรากำหนด
Code แสดงฟังก์ชั่นการทำงานของ Model

3. หลังจากสร้างฟังก์ชั่นของ Model เรียบร้อยเราก็จะทำการ Train ข้อมูลจากภาพที่เราได้ Generate ขึ้นมาใหม่

Code แสดงฟังก์ชั่นการทำงาน Train Model
รูปแสดงผลการทำงานหลังจากทำการ Train Model
Code แสดงฟังก์ชั่นการทำงาน Test Model

4. ทดสอบการ Test Model โดยการการสุ่มภาพจากต้นฉบับ และ แหล่งข้อมูลภาพอื่น ๆ เพื่อเทียบผลลัพธ์

จากภาพตัวอย่าง 
ผลการ Test ออกมาว่า
ได้ คลาสที่ 4 99.98%
ซึ่งบุคคลในภาพเหมาะกับ ตัวละคร SpiderMan มากที่สุด
จากภาพตัวอย่าง 
ผลการ Test ออกมาว่า
ได้ คลาสที่ 0 99.99%
ซึ่งบุคคลในภาพเหมาะกับ ตัวละคร BlackPanther มากที่สุด
จากภาพตัวอย่าง 
ผลการ Test ออกมาว่า
ได้ คลาสที่ 5 99.99%
ซึ่งบุคคลในภาพเหมาะกับ ตัวละคร Thor มากที่สุด
จากภาพตัวอย่าง 
ผลการ Test ออกมาว่า
ได้ คลาสที่ 5 78.47%
ซึ่งบุคคลในภาพเหมาะกับ ตัวละคร Thor มากที่สุด
รองลงมาคือ คลาสที่ 0 BlackPanther 19.82%

ครับ สำหรับบทความนี้ก็ขอจบไว้เพียงเท่านี้ ครั้งหน้าเราจะมาลองเอาโมเดลของเราทำการปรับปรุงแล้ว มาพัฒนาต่อยอดเป็น โปรเจคให้ลองศึกษากันเพิ่มเติมนะครับ

ท้ายที่สุดขอขอบพระคุณ อาจารย์ ดร.ธนภัทร ฆังคะจิตร อาจารย์ประจำวิชา BD651 : Multimedia Mining ผู้ที่ถ่ายทอดความรู้ในด้าน ML ทำให้ผมได้มีโอกาสเขียนบทความนี้ขึ้นมา

--

--