TextLogo-low-qualTextLogo-low-qualTextLogo-low-qualTextLogo-low-qual
    • หน้าแรกและบทความต่างๆ
      • AI ไกด์ทัวร์
      • เซ็ตอัพระบบ AI
      • งานวิจัยล่าสุดในวงการ AI
      • รีวิวแหล่งเรียนรู้ชั้นนำ
    • พูดคุยกับ Community
      • คุยกันภาษา AI
      • ชมรม Kaggle ประเทศไทย
    • คอร์ส: Deep Learning สำหรับนักปฏิบัติ (ยังไม่สมบูรณ์)
      • Workshop
    AI, Deep Learning for Eyes
    Workshop : AI for Eyes #1 — ตรวจสอบเบาหวานในดวงตา ภาค1
    July 20, 2019
    ai for arts
    Workshop : AI for Arts — ฝีกเขียนโปรแกรม AI กับงานศิลปะ (Multi-Labels Image Recognition)
    September 22, 2019

    Workshop : มาฝึกทำ Image Augmentation กันเถอะ — AI for Eyes #2 — ตรวจสอบเบาหวานในดวงตา ภาค2

    Published by The Neural Engineer at August 10, 2019
    Categories
    • Workshop
    Tags
    • AI
    • Artificial Intelligence
    • Deep Learning
    • Kaggle
    • Machine Learning
    • Neural Networks
    • ปัญญาประดิษฐ์

    สวัสดีครับ เพื่อนๆ สำหรับ Deep Learning Workshop อันดับ 7 ของ ThAIKeras นี้ เราจะว่ากันด้วยหนึ่งในเรื่องที่สำคัญสุดๆ สำหรับ Machine Learning บน Computer Vision นั่นคือเรื่องของ Data Augmentation หรือ การเพิ่มปริมาณข้อมูลภาพสอน (จากข้อมูลภาพเดิม)

    เนื่องจากประสิทธิภาพความแม่นยำของโมเดลในตระกูล Deep Learning นั้นขึ้นกับปริมาณข้อมูลเป็นปัจจัยสำคัญอันดับหนึ่ง (เทียบเท่ากับปัจจัยสถาปัตยกรรมนิวรอนที่ยอดเยี่ยม) ดังนั้นเทคนิก Data Augmentation ที่เราจะทำกันใน Workshop นี้จึงมีประโยชน์มากๆ และเพิ่มความสามารถให้กับโมเดลเราได้อย่างมาก นอกจากนี้สามารถประยุกต์ใช้กับงานด้าน Computer Vision ได้แทบทุกประเภทเลยครับ

    ในการ Augment ที่มีประสิทธิภาพทางปฏิบัตินั้น นอกจากจะต้องฝึกใช้ library tool ที่ดีเช่น Albumentations อย่างที่แนะนำใน Workshop นี้แล้ว การเลือก Augmentation ที่เหมาะสมยังเป็นทั้งศาสตร์และศิลป์ที่เราต้องเจาะปัญหาให้เข้าใจลึกซึ้งอีกด้วย ซึ่งเราก็จะพูดถึงเรื่องเหล่านี้ใน Workshop นี้เช่นกันครับ

    โดย Workshop นี้แม้ัจะเป็นภาคต่อที่สองของปัญหา การตรวจสอบเบาหวานในดวงตา (AI for Eyes ภาค 2) ที่ Kaggle ร่วมกับ Aravind Eye Hospital เพื่อแก้ปัญหาที่ทำให้ผู้คนตาบอดมากที่สุดอย่างยั่งยืน ทว่าเพื่อนๆ ก็สามารถนำความรู้ใน Workshop นี้เข้าไปประยุกต์ได้กับงานอื่นๆ ใน Computer Vision หรือรูปภาพประเภทอื่นๆ ได้อย่างง่ายดายด้วยหลักการเดียวกัน

    เพื่อนๆ สามารถดูภาค 1 และที่มาของปัญหาได้ที่นี่ครับ หรือสามารถดูและฝึกทำ AI/Data Science Workshops อื่นๆ ทั้งหมดของทีมงานได้ที่นี่ครับ


    Introduction : ว่าด้วยแก่นของ "การเรียนรู้"

    กระบวนการที่สำคัญของ Machine Learning คือ การสร้าง "โมเดล" จากข้อมูลสอน (Training Data) โดยโมเดลที่เรียนได้นั้น ก็เป็นตัวแทนของ "ความรู้" ที่ได้จาก Training Data นั่นเอง และหัวใจสำคัญของ "ความรู้ที่แท้จริง" นั้นคือ "ต้องนำไปใช้ต่อได้ในอนาคต" (ไม่ใช่สักแต่ท่อง :)

    ตัวอย่างง่ายๆ ที่บ่งว่าการ "จดจำ" Training Data ได้ 100% นั้นอาจไม่นับเป็นการเรียนรู้ อาทิ เช่น สมมติเราสร้างโมเดลให้เรียนรู้ว่าอะไรคือ "กระรอก" จากภาพตัวอย่างหลายภาพ โดยหนึ่งใน Training Data อาจเป็นภาพด้านล่าง (credit รูปภาพ: https://github.com/aleju/imgaug)

    เมื่อเราสอนโมเดลของเราด้วย Training Data และโมเดลนั้นแม่นยำ 100% บน Training Data นี้ เราอาจเข้าใจไปว่าโมเดลของเรารู้แล้วว่ากระรอกหน้าตาเป็นอย่างไร

    ทว่าความจริงอาจไม่เป็นอย่างที่คิด โดยโมเดลของเราอาจจะ "ลักไก่" ด้วยการจำส่วนประกอบอื่นๆ ที่ไม่สำคัญบนภาพ หรือท่องจำแบบไม่เข้าใจอะไรก็เป็นได้ เช่น ถ้าเราซูมภาพนี้เข้ามาอีกนิด

    • จำว่าถ้ามีวัตถุสามเหลี่ยมสีดำๆ อยู่เมื่อไร ภาพนั้นคือกระรอก
    • จำว่าถ้าตรวจเจอแสงแดดกระทบขนสีขาวๆ ภาพนั้นคือกระรอก
    • จำว่ากระรอกต้องมีดวงตา ปาก จมูกแบบที่เห็นในรูปเป้ะๆ (ถ้าหน้าตาผิดเพี้ยนไปแม้นแต่ pixel เดียว ก็ไม่ใช่กระรอก)
    • และอื่นๆ อีกมากมายที่เป็นลักษณะท่องจำรายละเอียดในรูปตัวอย่างที่ไม่เกี่ยวกับ "ความเป็นกระรอก" จริงๆ
    AI-for-Eyes_SpuriousSqurrel

    ปัญหา Overfitting และทางแก้ด้วย Data Augmentation

    squirrel_augmented

    ประเด็นข้างต้นนั้นเป็นตัวอย่างของปัญหา overfitting ที่เป็นประเด็นสำคัญที่สุด ใน Machine Learning ... หนึ่งในวิธีการแก้ Overfitting แบบง่ายๆ แต่ได้ผล ก็คือ "การเพิ่มจำนวน Training Data" เข้าไป เช่น เพิ่มรูปกระรอกอื่นๆ ไม่มีวัตถุสามเหลี่ยม ไม่มีแสงแดด หรือกระรอกหน้าตาอื่นๆ เหล่านี้จะทำให้โมเดลจดจำสิ่งที่ไม่จำเป็นได้ยากขึ้น และพยายามจดจำลักษณะอื่นๆ หรือเรียนรู้ "ความรู้" ที่เป็นจริงสำหรับกระรอกทุกภาพได้ดีขึ้น (เช่น "รูปทรงของตา" จะมีลักษณะทรงกลมหรือทรงรีสีดำ ขนาดใดก็ได้ เป็นต้น)

    อย่างไรก็ดีในกรณีที่เราไม่สามารถหา Training Data มาเพิ่มได้ เราอาจจะใช้เทคนิกที่สำคัญมากสำหรับ Machine Learning โดยเฉพาะ Computer Vision นั่นคือ "Data Augmentation" หรือ การสร้างภาพใหม่ โดยการดัดแปลงภาพเดิมที่เรามี อาทิเช่น เราอาจบิด ตัด หมุน เปลี่ยนสี ทำภาพให้มืดหรือสว่างขึ้น หรือใส่ noise ลงไปใน ถ้าเราลองทำกระบวนการเหล่านี้กับภาพข้างต้น จะได้ผลลัพธ์ทำนองนี้ (สังเกตว่ามนุษย์ยังมองออกว่าเป็นกระรอกเหมือนเดิม)

    เห็นไหมครับ ไอเดียง่ายๆ นี้ทำให้เรามีภาพกระรอกเพิ่มขึ้นอย่างไม่จำกัดจำนวนเลยทีเดียว และทำให้โมเดลของเราลักไก่ยากขึ้นมากๆๆ เนื่องจากถ้าไปจำลักษณะอะไรที่ไม่ได้บ่งบอกถึงกระรอกจริงๆ ก็อาจจะไม่เป็นจริงอีกต่อไปใน Augmented Training Data (จากเดิม "ลักไก่" ง่ายกว่า "เรียนความรู้" พอเราเพิ่ม augmented data เข้าไปจะกลายเป็นว่าเรียนรู้จริงๆ ง่ายกว่าลักไก่)

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

    ในทางปฏิบัตินั้นการทำ Data Augmentation ที่เหมาะสมกลายเป็นเครื่องมือมาตรฐานที่ช่วยเพิ่มความสามารถของโมเดลในงาน Computer Vision ได้อย่างมาก และในปัญหา ตรวจสอบเบาหวานในดวงตา ที่เรากำลังสนใจอยู่นี้ก็เช่นกันครับ เราจะมาเรียนรู้วิธีการทำ Data Augmentation ที่เหมาะสมต่างๆ กัน

    ถ้าเพื่อนๆ พร้อมแล้วเริ่มต้นทำ Workshop ได้ที่นี่เลยครับ : https://www.kaggle.com/ratthachat/workshop-augmentation-image-ai-for-eyes-2

    AI-for-Eyes-augment
    The Neural Engineer
    The Neural Engineer
    คุณพ่อลูกหนึ่งที่หลงใหลในสถาปัตยกรรมนิวรอนและงานด้าน Machine Understanding — ติดตามบทความล่าสุดและพูดคุยกันได้ที่ https://www.facebook.com/thaikeras คร้าบ

    Related posts

    gpt2 writing thai

    gpt2 writing thai

    April 26, 2020

    Workshop : สร้างนิยาย บนจินตนาการไร้ขีดจำกัดด้วย HuggingFace GPT-2!!


    Read more
    January 22, 2020

    Workshop : AI for Brain — เขียนโปรแกรม Keras เพื่อคัดแยกภาวะเลือดคั่งในสมอง


    Read more
    ai for arts

    ai for arts

    September 22, 2019

    Workshop : AI for Arts — ฝีกเขียนโปรแกรม AI กับงานศิลปะ (Multi-Labels Image Recognition)


    Read more
    © 2018 ThAIKeras.com All Rights Reserved.