[Com] รูป Selfie ที่ดีเป็นยังไง ?!?! Deep Neural Network บอกให้ !

Sathittham (Phoo) Sangthong
SS Blog
Published in
3 min readMay 21, 2016

เนื่องจากผมได้มีโอกาสอ่านบทความของ คุณ Andrej Karpathy ซึ่งเป็นนักเรียนป.เอกที่ Stanford ได้เขียนบทความว่า “What a Deep Neural Network thinks about your #selfie” ซึ่งผมว่ามันน่าสนใจดี เลยเอามาเล่าให้ฟังครับ เผื่อไว้เป็นเทคนิคการถ่าย selfie เรียก Like กันครับ ! ทั้งหมดนี้เป็นการตัดสินใจจากคอมพิวเตอร์นะครับ (แล้วมาสรุปได้ดังนี้ครับ)

หลักของ Good #Selfie ง่ายมากครับ เพียงแค่

  • ต้องเป็นผู้หญิง
  • สัดส่วนของใบหน้าที่เห็นเป็น 1 ใน 3 ของรูป (ตามหลัก 1/3)
  • ตัดหน้าผากออก
  • โชว์ผมยาว
  • ใส่แสงสว่างๆ
  • ใส่ฟิวเตอร์
  • ใส่กรอบ
รูปที่ดีที่สุด 100 รูป จาก 50,000 รูป ที่ถูกตัดสินโดย Convolutional Neural Network

อ้าว ! แล้วถ้าหากเกิดเป็นผู้ชายละครับ จะทำไง…ลองทำตามนี้ดูครับ

  • ต้องถ่ายรูปแบบเห็นเต็มทั้งหัว (หน้าและผม)
  • เห็นบ่า
  • มีผมแนวแฟนซี ๆ ประมาณว่า ผมยาวนิด ๆ เซ็ตหรือปัดตั้งขึ้น (ประมาณ Undercut fade)
ภาพที่ดีที่สุดของผู้ชายจาก Top 2,000

เหตุที่สรุปแบบนี้เพราะว่า Top 100 จาก 50,000 ภาพนั้นมีแต่ผู้หญิงครับ

สิ่งที่ไม่ควรทำในการถ่าย #Selfie

  • ถ่ายรูปเซลฟี่ในที่แสงน้อยๆ
  • เห็นหัวใหญ่เกินไป
  • ถ่ายรูปหมู่
ภาพที่แย่ 300 ภาพจาก 50,000 ภาพ ที่ตัดสินโดย Convolutional Neural Network
ภาพที่แย่ 300 ภาพจาก 50,000 ภาพ ที่ตัดสินโดย Convolutional Neural Network

แล้วถ้าเป็นเซเลป (Celebrities) ละ

การทดลอง ได้ทำการดึงรูป #selfie จากคนดัง แล้วมาทำการวิเคราะห์โดย ConvNet แล้วนำมาเรียงภาพที่ดีที่สุดจากมุมบนซ้ายไปจึงถึงด้านล่าง

ภาพเซลฟี่คนดัง ที่ตัดสินโดย Convolutional Neural Network เรียงภาพที่ดีที่สุดจากซ้ายบน และไล่เลียงไปทางขวาจนถึงมุมล่าง

ผมลัพธ์ที่ได้นั้นน่าแปลกที่ ConvNet บอกว่าหลักการ “ห้ามถ่ายรูปหมู่” ใช่ไม่ได้ กับเซเลป ดังจะเห็นได้จากภาพของ Ellen DeGeneres และคนอื่นๆจาก Oscars ซึ่ง ConvNet บอกว่าเป็นภาพ #selfie ที่ดี (ในตารางแถวที่ 2)

อีกข้อหนึ่งคือ “ห้ามเป็นผู้ชาย” ซึ่งก็ใช้ไม่ได้ กับ Chris Pratt (ในตารางแถวที่ 2) Justin Beiber, Stephen Collber, Jimmy Fallon (แถวที่ 3)

สิ่งสุดท้ายที่น่าสังเกตคือ แม้จะไม่ได้ถ่ายตามหลักการ เช่น การจัดเฟรมที่ไม่ดี (เห็นหน้าใหญ่เกินไป) แสงมืดๆ หรืออื่นๆ ก็ยังปรากฎอยู่ในตารางแถวท้าย ๆ อยู่ดี ดังนั้นอาจสรุปได้ว่า หากคุณเป็นเซเลปจะเป็นข้อยกเว้นของหลักการทั้งหมดนี้ครับ

เบื้องหลังของหลักการ Good #selfie

ขั้นตอนการทดลองของคุณ Karpathy คือ

  1. เขียนสคิปดึงภาพที่ติดแฮชแท็ก #selfie จากอินเตอร์เน็ต…ซึ่งได้มาประมาณ 5 ล้านภาพ
  2. สโคปให้เหลือภาพที่มีใบหน้าอย่างน้อย 1 หน้า…ซึ่งจะเหลือประมาณ 2 ล้านภาพ
  3. ทำการตัดสินว่าภาพไหนคือภาพ #selfie ที่ดีหรือแย่ โดยคำนวณจาก จำนวนคนที่เห็นภาพนั้น จำนวน Like จากนั้นนำมาเรียงตามจำนวน follower ของ user นั้นๆ โดยมีการให้โบนัสพิเศษในการติดแฮชแท็กอื่นเพิ่ม (เพื่อเพิ่มคนเข้ามาดูภาพ) จากนั้นทำการแบ่งเป็นกลุ่ม ๆ ละ 100 ภาพ จากจำนวน like ซึ่งภาพเหล่านี้ จะถูกเก็บเฉพาะรูปที่โพสมาแล้วมากกว่า 1 เดือน (เพื่อให้เวลาในการ like ใกล้เคียงกัน) จากนั้นให้ 50 ภาพแรกที่มี like มาก เป็นภาพ #selfie ทีดี และ 50 ภาพ ที่เหลือเป็นภาพที่แย่ ซึ่งได้มีการตัดคนที่มี follower น้อยเกินไปหรือมากเกินไปออกด้วย รวมทั้งคนที่ติดแฮชแท็กมากเกินไป ก็ถูกตัดออกเช่นกัน
  4. จากนั้นนำภาพ #selfie ที่ดี 1 ล้านภาพ และภาพ #selfie ที่แย่ 1 ล้านภาพ มาเทรนด้วย ConvNet (Convolutional Neural Network)

ปรับภาพเซลฟี่ให้ดูดีขึ้นด้วยการตัดภาพ (Corp)

การทดลองนี้ได้ให้ ConvNet หาภาพเซลฟี่ที่ดีที่สุดด้วยการตัดภาพแบบอัตโนมัติ เพื่อให้ได้คะแนนสูงที่สุด ซึ่งภาพด้านซ้ายเป็นภาพต้นฉบับและภาพด้านขวาคือภาพที่ตัดภาพแล้วได้คะแนนสูงสุด

สังเกตได้ว่า ConvNet จะชอบให้หัวของคนตามหลักการ 1/3 และตัดหน้าฝากออก และจะเห็นว่าภาพด้านขวาล่างจะเห็นว่า ConvNet ตัดหน้าคนออกไปเลย (ซึ่งผิดวัตถุประสงค์ไปนิด 555)

แล้วภาพ #selfie ของคุณหล่ะ ?

หากอยากรู้ว่า ConvNet จะบอกว่าภาพ #selfie ของคุณได้คะแนนเท่าไหร่ ดีหรือแย่ คุณ Karpathy ได้ทำการเขียน twitter bot ไว้ โดยโพสภาพหรือแนบลิงค์ภาพเซลฟี่ของคุณ แล้วทำการ mention bot โดย @deepselfie ในโพสนั้น bot จะทำการทำการคำนวณคะแนนและบอกผลลัพธ์ให้ภายใน 1 นาที (ความแม่นยำประมาณ 60% ครับ) ดังตัวอย่าง

ตัวอย่างการทำทดสอบ Selfie Bot (@deepselfie)

สำหรับขั้นตอนโดยละเอียด ใครสนใจลองอ่านได้จากบล๊อกของคุณ Karpathy ได้เลยครับ หวังว่าจะเป็นประโยชน์สำหรับทุกคนที่ชอบถ่ายเซลฟี่นะครับ

อ้างอิง

--

--

Sathittham (Phoo) Sangthong
SS Blog

Hi! It's me Phoo! I’m a Software Developer 👨‍💻 , a Startup Entrepreneur 📱 and a Runner 🏃 . Currently, I’m a Co-Founder and CTO of a Startup name “Urbanice”.