หน้าแรก · Lab · AI ในงาน comp: แนวคิด CopyCat

AI1 โมเดลเรียนรู้อะไร: คู่ input → target

สอน grade สีจาก patch ก่อน/หลัง 3 จุด แล้วใช้กับทั้งเฟรม

AI ในงาน comp: แนวคิด CopyCat · ~7 นาที · ฟรี

1 อธิบาย

CopyCat เป็น supervised learning: เราให้คู่ภาพ Input กับ Ground Truth (ผลที่ถูกต้องซึ่งเราทำมือ) แล้วมันปรับตัวเลขข้างในจนผลของมันใกล้ Ground Truth ที่สุด มันไม่รู้ว่าในภาพคืออะไร รู้แค่ว่า "เข้ามาแบบนี้ ต้องออกไปแบบนี้"

ที่นี่คือโมเดลที่เล็กที่สุด: ตัวเลข 12 ตัว (matrix 3×3 กับ bias) เรียนจากพิกเซลก่อน/หลังใน 3 กรอบ ทุก step มันวัด loss (ค่าผิดยกกำลังสองเฉลี่ย) แล้วขยับตัวเลขไปทางที่ loss ลดลง วิธีนี้เรียกว่า gradient descent

out = M · rgb + b · loss = mean((out − target)²) · w ← w − lr · ∂loss/∂w

2 ลงมือลอง

โจทย์: เทรนจน loss ต่ำกว่า 2×10⁻⁶ แล้วดูว่าโมเดลใช้กับทั้งเฟรมได้ดีแค่ไหน

ลองตั้ง learning rate ที่ 2.9 ขึ้นไป: ก้าวยาวเกิน loss จะระเบิดแทนที่จะลด

SkyVFX Lab · AI1interactive · 1001

3 เจาะลึก

หนึ่งรอบของการเทรน

ทุกโมเดลแบบ supervised วนรอบเดียวกัน: ป้อน input, ได้ output, เทียบกับ target ได้ loss, คำนวณว่าตัวเลขแต่ละตัวควรขยับทางไหนให้ loss ลด (gradient), แล้วขยับไปนิดหนึ่งตาม learning rate

ในบทเรียนมีตัวเลข 12 ตัว CopyCat มีเป็นจำนวนมหาศาลและเรียนจาก crop ของภาพ แต่รอบการเทรนเป็นแบบเดียวกัน

  1. 1Input
  2. 2โมเดล → output
  3. 3เทียบ Ground Truth = loss
  4. 4gradient
  5. 5ขยับตัวเลข

Ground Truth คือเพดานคุณภาพ

โมเดลพยายามเลียนแบบ Ground Truth เท่านั้น ถ้า roto หรือ paint ในเฟรมตัวอย่างผิดแบบเดิมทุกเฟรม เช่นขอบแน่นเกินไปนิดหนึ่ง หรือมีรอยเปื้อนค้าง โมเดลจะเรียนสิ่งนั้นไปด้วย และทำซ้ำในทุกเฟรม ส่วนความผิดที่สุ่มเปลี่ยนไปทุกเฟรม เช่นขอบสั่น มักออกมาเป็นขอบนุ่มหรือไม่นิ่งแทน

ML ไม่ทำให้งานที่ไม่ดีกลายเป็นดี มันแค่ทำงานแบบเดิมได้มากขึ้นและเร็วขึ้น เวลาที่ใช้ทำ Ground Truth ให้ดีจึงคุ้มที่สุด

ซ่อม Ground Truth ให้ดีเท่าที่อยากได้ในงานส่ง ไม่ใช่ "พอใช้"

Learning rate: ก้าวยาวแค่ไหน

learning rate ต่ำเกิน loss ลดช้ามาก สูงเกินจะกระโดดข้ามจุดต่ำสุดไปมาจนระเบิด ในบทเรียนจุดระเบิดอยู่ราว 2.9 เพราะเป็นโจทย์เล็กแบบ linear ค่าในโปรแกรมจริงต่างกันโดยสิ้นเชิง

อาการบนกราฟ lossน่าจะเป็น
ลดลงเรื่อย ๆ แล้วแบนปกติ เทรนได้ดี
ลดช้ามาก แทบไม่ขยับก้าวเล็กไป หรือโจทย์ยากเกินโมเดล
กระโดดขึ้นลง หรือพุ่งขึ้นก้าวใหญ่ไป หรือข้อมูลมีปัญหา

จาก 12 ตัวเลข สู่ไฟล์ .cat

ผลของการเทรนคือชุดตัวเลข (weights) ในบทเรียนเห็นครบทั้ง 12 ตัว ใน Nuke CopyCat เขียนออกมาเป็นไฟล์ .cat ซึ่งนำไปใช้กับโหนด Inference เพื่อรันกับทั้งซีเควนซ์

โมเดลจาก PyTorch ภายนอกแปลงเป็น .cat ได้ด้วย CatFileCreator และ Cattery คือคลังโมเดลสำเร็จรูปที่แปลงไว้แล้ว

4 ในงานจริง

ทำใน Nuke

  1. เตรียมคู่ภาพ: input ต่อเข้าขา Input ของ CopyCat และเฟรมที่ทำมือ (roto/paint/grade) ต่อเข้าขา Ground Truth
  2. ใช้ AppendClip รวมเฟรมตัวอย่างหลายเฟรมเป็นคลิปเดียว ทั้งฝั่ง Input และ Ground Truth ลำดับต้องตรงกันเป๊ะ
  3. ตั้งโฟลเดอร์ output ของ CopyCat แล้วเริ่มเทรน ดูกราฟ loss และ contact sheet (crop สุ่มของ input, ผลลัพธ์ และ Ground Truth ดูรายละเอียดใน AI3) ระหว่างเทรน
  4. นำไฟล์ .cat ไปใส่ในโหนด Inference ต่อกับ plate เต็มช็อต
  5. การเทรนต้องใช้ NukeX หรือ Nuke Studio ส่วน Inference รันใน Nuke ได้

พลาดบ่อย → แก้ยังไง

  • ✗ Input กับ Ground Truth ไม่ตรงกัน (เฟรมเลื่อน ขนาดต่าง หรือลำดับสลับ)✓ เช็กว่าเฟรมตรงกันทีละคู่ ขนาดเท่ากัน และ align กันพอดี ก่อนกดเทรน
  • ✗ ทำ Ground Truth แบบลวก ๆ แล้วหวังว่าโมเดลจะเก็บให้✓ โมเดลเลียนแบบความลวกด้วย ทำตัวอย่างให้ดีเท่างานส่ง
  • ✗ ดูแค่ loss ลดแล้วถือว่าเสร็จ (ดู AI2)✓ loss บอกแค่ว่าเข้ากับตัวอย่าง ต้องดูภาพผลบนเฟรมอื่นด้วย

เช็กก่อนส่งช็อต

  • ทุกคู่ Input/Ground Truth ตรงกันทั้งเฟรม ขนาด และตำแหน่ง
  • Ground Truth คุณภาพเท่างานส่ง
  • กราฟ loss ลดลงและไม่ระเบิด
  • ลองรัน Inference บนเฟรมที่ไม่ได้อยู่ใน dataset แล้วดูด้วยตา

5 เช็กตัวเอง

เช็กตัวเอง 1 ข้อ

CopyCat เรียนรู้จากอะไร

สิ่งที่ได้เรียน

🔒 ตอบคำถามด้านบนก่อน แล้วการ์ดนี้จะเปิด

คำถามเพิ่ม

1. roto ในเฟรมตัวอย่างแน่นเข้าไปราว 2 px ทุกเฟรม ผลจากโมเดลจะเป็นยังไง

2. loss พุ่งขึ้นและแกว่งแรงตั้งแต่ต้น ควรลองอะไรก่อน

ตัวเลขมาจากไหน: matrix 3×3 + bias เทรนด้วย gradient descent จริงบน 192 คู่พิกเซลจาก plate ส่วน grade "หลัง" เป็น grade ที่เราตั้งเอง (saturation 1.25 แบบ Rec.709 luma, gain 1.15/1.02/0.85, offset (add) 0.01) จุดที่ loss ระเบิด (ราว learning rate 2.9) เป็นของโจทย์นี้เท่านั้น เป็นเวอร์ชันสอน: CopyCat จริงเทรน convolutional neural network บน crop ของภาพใน Nuke