หน้าแรก Watashi Games
← กลับไปหน้าคู่มือ

เบื้องหลัง: ทำไมโมเดล AI ทั่วไปจึงล้มเหลวกับการลงสีมังงะ

โมเดลทั่วไปเห็นภาพเดียว แต่หน้ามังงะคือลำดับของช่องที่มีตัวละครปรากฏซ้ำ ข้อความที่พิมพ์ไว้ และร่องสีดำสนิท นี่คือราคาของความต่างนั้น และวิธีที่เราปิดช่องว่าง

เบื้องหลัง: ทำไมโมเดล AI ทั่วไปจึงล้มเหลวกับการลงสีมังงะ

สมเหตุสมผลไม่เท่ากับถูกต้อง

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

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

Watashi Colorizer สร้างขึ้นรอบความต่างข้อนี้ ด้านล่างคือการตัดสินใจเชิงวิศวกรรมหกข้อที่ตามมา ไม่มีอะไรพิสดาร แต่แต่ละข้อมีอยู่เพราะเราเห็นบางอย่างพังลงเมื่อขาดมันไป

Black-and-white manga page before colorizationขาวดำ
The same page, AI-colorizedสี
หนึ่งหน้า ลงสีในฐานะหน้า ตัวละครคงผม ตา และเครื่องแต่งกายเหมือนกันในทุกช่อง ร่องสีดำยังคงดำ และบทสนทนาก็ยังเป็นบทสนทนาเดิม

1. เลือกน้ำหนักโมเดลด้วยการทดสอบเปรียบเทียบ ไม่ใช่ด้วยข่าวประชาสัมพันธ์

เครื่องมือลงสีส่วนใหญ่เป็นเพียงเปลือกบาง ๆ ภาพของผู้ใช้ถูกส่งไปยัง API สาธารณะแล้วภาพที่ลงสีแล้วก็ส่งกลับมา นั่นทำให้เปลือกนั้นดีได้เท่าที่ผู้ให้บริการ API ปล่อยออกมาในไตรมาสนี้ และหมายความว่าเครื่องมือรับเอาจุดบอดของผู้ให้บริการรายนั้นมาทั้งหมด รวมถึงเนื้อหาที่เขาปฏิเสธจะแตะ

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

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

2. คำสั่งที่ตรวจสอบทีละประโยค

คำสั่งที่เราส่งไปพร้อมทุกหน้าไม่ได้เขียนรวดเดียวจบ มันถูกประกอบขึ้นด้วยการทดสอบแต่ละประโยคแยกกัน และเก็บไว้เฉพาะสิ่งที่เปลี่ยนผลลัพธ์อย่างวัดได้

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

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

3. ส่งหน้ากระดาษให้โมเดลมากขึ้น

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

เราเรียนรู้เรื่องนี้แบบเจ็บตัว ระหว่างไล่หาบั๊กการลงสีที่ไม่ตอบสนองต่อการปรับพรอมป์ไม่ว่าจะมากแค่ไหน พื้นที่เดียวกันนั้น เมื่อครอปออกมาแล้วส่งเดี่ยว ๆ กลับได้ผลถูกต้องทุกครั้งไม่มีพลาด โมเดลรู้คำตอบมาตลอด เพียงแต่ไม่เคยได้เห็นคำถามชัด ๆ

หน้ากระดาษจึงถูกรับเข้ามาที่ขนาดใหญ่ที่สุดเท่าที่เอนจินใช้ได้จริง แทนที่จะเป็นค่าเริ่มต้นที่สะดวก และผลลัพธ์จะถูกส่งกลับด้วยขนาดเท่ากับไฟล์ที่คุณอัปโหลดเป๊ะ ๆ

Black-and-white manga page before colorizationขาวดำ
The same page, AI-colorizedสี
รายละเอียดรอดมาได้เพราะหน้ากระดาษถูกส่งไปที่ขนาดเต็ม แทนที่จะเป็นค่าเริ่มต้นที่สะดวก ใบหน้าเล็ก ๆ ป้ายด้านหลัง และเส้นแรเงาละเอียดยังอ่านออกหลังลงสี

4. อ่านหน้ากระดาษเป็นช่อง ไม่ใช่สี่เหลี่ยมผืนผ้า

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

ไปป์ไลน์ของเราตรวจหาขอบเขตช่องและแถบงานวาดก่อนจะลงสีอะไรทั้งสิ้น และตัดเฉพาะที่ขอบเขตจริงเท่านั้น การตัดกลางช่องแย่กว่าการไม่ตัดเลย เพราะสองครึ่งจะถูกลงสีแยกกันและไม่มีวันตรงกัน ตัวตัดจึงเลือกปฏิเสธแทนที่จะเดา

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

เมื่อรวมกับการยึดจานสี ซึ่งสีของตัวละครถูกตรึงไว้แทนที่จะถูกเดาใหม่ นี่คือสิ่งที่ทำให้ตัวละครคงคาแรกเตอร์ตลอดทั้งหน้าและทั้งตอน แทนที่จะเพี้ยนไปทีละเฉดต่อหน้า

5. โหมดสำหรับหน้าที่ไม่มีใครอื่นรับมือได้

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

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

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

6. ถือว่าเวลารอเป็นส่วนหนึ่งของผลิตภัณฑ์

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

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

ตัวจับเวลาที่หมดแล้วเริ่มใหม่ แย่กว่าการไม่มีตัวจับเวลาเลย เพราะมันเปลี่ยนงานที่ช้าให้ดูเหมือนคำโกหก ถ้าเลยค่าประมาณไปแล้ว เราจะหยุดประมาณและเปลี่ยนไปแสดงเวลาที่ผ่านไปจริงพร้อมคำอธิบาย และคุณเปิดการแจ้งเตือนได้ เพื่อให้ออกจากแท็บได้อย่างสบายใจ

ไม่มีอะไรในนี้เป็นเวทมนตร์

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

สิ่งที่สร้างความต่างไม่ใช่เทคนิคใดเทคนิคหนึ่ง แต่คือการที่หน้ามังงะถูกปฏิบัติในฐานะหน้ามังงะ ตั้งแต่รับเข้าจนถึงส่งออก นั่นคือระยะห่างทั้งหมดระหว่างสิ่งที่ดูสมเหตุสมผลกับสิ่งที่เผยแพร่ได้จริง

เครื่องมือนี้ทดลองใช้ได้ฟรี และวิธีประเมินทั้งหมดนี้ที่เร็วที่สุดคือ ลองรันหน้าที่คุณรู้จักดีอยู่แล้ว แล้วดูว่ามันกลับมาเป็นหน้าที่คุณวาดไว้หรือเปล่า

ลองกับหน้าที่คุณรู้จักดี

เผยแพร่ครั้งแรกบน Watashi Colorizer

คู่มือเครื่องลงสีเพิ่มเติม