วิธีการทำงาน
ทำการตั้งชื่อโฟลเดอร์ ตามคลาสที่เราจะทำการเปรียบเทียบ โดยในตัวอย่างนี้เรามี คลาสด้วยกันทั้งหมด 6 คลาสดังนี้
1. BlackPanther
2. DoctorStrange
3. IronMan
4. ScarletWitch
5. SpiderMan
6. Thor
หลังจากนั้นทำการเซฟภาพจาก Internet เข้ามาไว้ในโฟลเดอร์ที่เราได้ทำการสร้างไว้
เขียนโค้ดกัน!
1.ทำการ Generate รูปภาพต้นฉบับให้ได้ขนาดตามที่ต้องการเพื่อทำการ Training Model ของเรา โดยจากตัวอย่างนี้เรากำหนดให้มีขนาดเท่ากับ 64 x 64 px
หลังจากรันคำสั่ง img_genarate.py เราจะได้ ภาพขนาดตามที่เราต้องการในโฟลเดอร์ genarate
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 เพื่อให้ค่าผลลัพธ์ออกมาเป็นเปอร์เซนต์ว่าค่าของภาพน่าจะตรงกับคลาสใดตามที่เรากำหนด
3. หลังจากสร้างฟังก์ชั่นของ Model เรียบร้อยเราก็จะทำการ Train ข้อมูลจากภาพที่เราได้ Generate ขึ้นมาใหม่
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 ทำให้ผมได้มีโอกาสเขียนบทความนี้ขึ้นมา