4 คะแนน โดย GN⁺ 2025-06-02 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • RenderFormer เป็นไปป์ไลน์ neural rendering ที่เรนเดอร์จากฉากแบบเมชสามเหลี่ยมได้โดยตรง พร้อมทั้งสร้างเอฟเฟ็กต์ global illumination ได้ด้วย
  • ไม่ต้องมีการฝึกหรือการปรับจูนละเอียดแยกสำหรับแต่ละฉาก
  • นิยามการเรนเดอร์ใหม่เป็นการแปลงแบบ sequence-to-sequence โดยแปลงโทเค็นสามเหลี่ยมไปเป็นโทเค็นแพตช์พิกเซลโดยตรง
  • ไปป์ไลน์ทั้งหมดออกแบบบนพื้นฐาน Transformer และใช้ข้อกำหนดล่วงหน้าเท่าที่จำเป็นเท่านั้น
  • สร้างภาพโดย ไม่ใช้ rasterization หรือ ray tracing

บทนำ

  • RenderFormer เป็นไปป์ไลน์เชิงประสาทที่เรนเดอร์ภาพได้โดยตรงจาก การแทนฉากด้วยสามเหลี่ยม
  • ให้ผลลัพธ์เป็นภาพที่มีเอฟเฟ็กต์ global illumination ครบถ้วน
  • โครงสร้างนี้ทำงานได้โดย ไม่ต้องฝึกหรือ fine-tune แยกในแต่ละฉาก

แนวทาง

  • แตกต่างจากแนวทาง การเรนเดอร์เชิงฟิสิกส์ แบบเดิม โดยนิยามการเรนเดอร์ใหม่ให้เป็นปัญหาแบบ sequence-to-sequence transformation
    • แปลงลำดับโทเค็นที่เก็บข้อมูลสามเหลี่ยมและคุณสมบัติการสะท้อน ไปเป็นลำดับโทเค็นเอาต์พุตที่แต่ละตัวแปลงเป็นแพตช์พิกเซลขนาดเล็ก

โครงสร้างไปป์ไลน์

  • RenderFormer ประกอบด้วย โครงสร้าง 2 ขั้นตอน
    • ขั้นตอนที่ไม่ขึ้นกับมุมมอง: โมเดลปรากฏการณ์การส่งผ่านแสงระหว่างสามเหลี่ยม
    • ขั้นตอนที่ขึ้นกับมุมมอง: แปลงโทเค็นที่แทนกลุ่มรังสีให้เป็นค่าพิกเซล โดยมีลำดับสามเหลี่ยมจากขั้นตอนก่อนหน้าเป็นตัวนำทาง
  • ทั้งสองขั้นตอนต่างอิงกับ สถาปัตยกรรม Transformer
  • ฝึกด้วย ข้อกำหนดล่วงหน้าเพียงเล็กน้อยเท่านั้น

คุณลักษณะทางเทคนิค

  • ระหว่างการเรนเดอร์ ไม่ใช้วิธีดั้งเดิมอย่าง rasterization หรือ ray tracing เลย
  • ใช้ประโยชน์จาก ความสามารถในการแปลงลำดับ ของ Transformer อย่างเต็มที่

บทสรุป

  • เป็นแนวทางที่สร้างภาพได้อย่าง ยืดหยุ่นและมีคุณภาพสูง เมื่อเทียบกับ เทคนิค neural rendering แบบเดิม โดยไม่ต้องมีการเตรียมล่วงหน้าหรือการปรับแต่งรายฉากเพิ่มเติม

1 ความคิดเห็น

 
GN⁺ 2025-06-02
ความคิดเห็นจาก Hacker News
  • สิ่งที่น่าประทับใจที่สุดคือเรื่องความเร็ว ในฉากเดียวกัน RenderFormer ใช้เวลาเพียง 0.076 วินาที ขณะที่ Blender Cycles ใช้ 3.97 วินาที (หรือ 12.05 วินาทีในค่าตั้งที่สูงกว่า) แต่ค่า SSIM อยู่ที่ 0.9526 ซึ่งแทบไม่ต่างกันเลย แนะนำให้ดูตาราง 2 และ 1 ในเปเปอร์ ความหมายในทางปฏิบัติคือ 3D ดีไซเนอร์จะสามารถดูพรีวิวเรนเดอร์แบบทันทีด้วยคุณภาพที่สูงกว่ามากผ่านโมเดล transformer แบบ on-device บนเว็บหรือแอปเนทีฟได้ อย่างไรก็ตาม ผลลัพธ์ข้างต้นวัดบน A100 GPU โดยไม่ได้ทำ PyTorch optimization และ GPU ของผู้ใช้ทั่วไปคงไม่เร็วระดับนี้ แต่ก็คาดว่ายังน่าจะเร็วขึ้นจากการเรนเดอร์แบบเดิมได้มาก หรือถ้าเป็นระบบบนเว็บ ก็อาจต่อ backend เข้ากับ A100 แล้วสตรีมภาพผลลัพธ์มายังเบราว์เซอร์ได้เช่นกัน แต่ข้อจำกัดก็ชัดเจน ยิ่งฉากซับซ้อน ความแม่นยำก็ยิ่งลดลง โดยเฉพาะเงาที่ซับซ้อน (รวมถึงพาร์ติเคิลหรือเส้นผม) ที่มีโอกาสเกิดความคลาดเคลื่อนสูง ดังนั้นงานเรนเดอร์ขั้นสุดท้ายก็ยังควรใช้วิธีดั้งเดิมเพื่อหลีกเลี่ยงอาร์ติแฟกต์ที่มักพบในภาพ/วิดีโอจาก AI ถึงอย่างนั้น ถ้าความเร็วเพิ่มขึ้นมากพอ ก็มีหวังว่าสตูดิโอแอนิเมชันขนาดใหญ่ที่ต้องเรนเดอร์พรีวิวระดับความยาวภาพยนตร์จะนำไปใช้เพื่อตรวจงานด้านดนตรีหรือเนื้อเรื่องได้

    • ไม่คิดว่านักวิจัยตั้งใจบิดเบือนข้อเท็จจริง แต่ถ้า Blender Cycles ทำงานบน GPU ระดับนั้น มันก็น่าจะเรนเดอร์ทุกฉากในเปเปอร์ได้ภายใน 4 วินาทีอยู่แล้ว ตัวฉากที่ใช้ในเปเปอร์ก็มีความซับซ้อนไม่มาก แถมตั้งค่า Blender ให้สุ่มตัวอย่างซ้ำ 4,000 ครั้ง ทั้งที่ในทางปฏิบัติไม่กี่ร้อยครั้งก็แทบได้คุณภาพใกล้สุดท้ายแล้ว ที่เหลือแทบไม่ช่วยอะไร ผลคือใช้ทรัพยากร GPU เกินความจำเป็น อีกอย่าง ดูเหมือนว่าจะนับเวลาขั้นตอนเตรียมเรนเดอร์เริ่มต้นของ Blender รวมเข้าไปด้วย แต่ไม่นับเวลาเริ่มต้นของ transformer ผมก็อยากรู้เหมือนกันว่าถ้าเรนเดอร์เฟรมที่สองในแต่ละระบบจะใช้เวลาเท่าไร เดาว่า Blender น่าจะเร็วกว่ามากอยู่ดี ไม่ว่าอย่างไร ผลลัพธ์ในเปเปอร์ก็น่าสนใจ แต่การตั้งค่า Blender และการเทียบเวลาอาจมีความคลาดเคลื่อนเล็กน้อย

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

    • การเปรียบเทียบเวลาในเปเปอร์ค่อนข้างไม่แม่นนัก สำหรับ ray tracing นั้น error จะลดลงตามรากที่สองของจำนวน sample ในเปเปอร์ใช้จำนวน sample สูงเกินจริงในการสร้างภาพอ้างอิง ขณะที่ offline renderer จริงมักใช้ sample น้อยกว่านี้ 10 ถึง 100 เท่า ภาพที่สร้างด้วย sample สูงแบบในเปเปอร์มีไว้เพื่อเทียบคุณภาพ แต่เอามาเทียบเวลากันไม่ใช่วิธีที่พบได้ทั่วไป เพราะผลลัพธ์ไม่ได้เคร่งครัดมากนัก การเปรียบเทียบกับอัลกอริทึมเรนเดอร์อื่นที่ให้ค่าประมาณใกล้เคียงกันน่าจะยุติธรรมกว่า ปัจจุบัน real-time path tracer ที่จับคู่กับ denoiser ก็สามารถเรนเดอร์ฉากที่ซับซ้อนกว่านี้มากได้ภายใน 16ms บน GPU สำหรับผู้บริโภคด้วย โดยเฉพาะโมเดล transformer นั้นใช้เวลาตามจำนวนสามเหลี่ยมและจำนวนพิกเซลแบบกำลังสองทั้งคู่ อาจมีงานวิจัยแมชชีนเลิร์นนิงสมัยใหม่ที่ช่วยปรับปรุงจุดนี้ แต่ก็คงยากจะสู้การสเกลแบบ O(log n triangles), O(n pixels) ของ path tracer แบบดั้งเดิมได้ (ในทางปฏิบัติจริงยังไวต่อจำนวนพิกเซลน้อยกว่านั้นเพราะมีความต่อเนื่องระหว่างพิกเซลข้างเคียง)

    • รู้สึกแปลกใจที่มีคนมองว่ามันเร็วมาก ผมเปิดอ่านเปเปอร์คร่าวๆ แล้วก็ยังไม่แน่ใจว่า Blender Cycles ใช้ CPU ของ A100 หรือรันด้วย CUDA kernel กันแน่ ถ้าเป็นเฟรมเดียว เวลาเริ่มต้นของ renderer อาจถูกนับรวมไปด้วย แต่ถ้าเป็นการเรนเดอร์เป็นลำดับเฟรม เวลาต่อเฟรมจะลดลงอย่างมาก และประเด็นเรื่องความซับซ้อนของจำนวนสามเหลี่ยม (การสเกลแบบ O(n^2)) ที่คนอื่นพูดถึงก็น่าจะมีผลชัดเจน

    • ในเปเปอร์ระบุว่า “runtime complexity ของ Attention layer จะเพิ่มขึ้นแบบกำลังสองตามจำนวนโทเคน ซึ่งในกรณีนี้คือจำนวนสามเหลี่ยม ดังนั้นจึงจำกัดจำนวนสามเหลี่ยมในฉากไว้สูงสุดที่ 4096”

  • ดีปเลิร์นนิงก็ถูกนำมาใช้กับการ denoise (ลบ noise) ของภาพเรนเดอร์ global illumination ได้สำเร็จมากเช่นกัน วิธีคือสร้างภาพ global illumination แบบหยาบด้วย ray tracing แบบดั้งเดิมก่อน แล้วให้โครงข่ายประสาทลบ noise ออกจากภาพผลลัพธ์ ลิงก์ที่เกี่ยวข้อง: Open Image Denoise

    • ภาพเอาต์พุตเดโมให้ความรู้สึกเรียบลื่นแบบแปลกๆ เหมือนภาพที่ถูก AI upscaling ขอบยังคมอยู่ แต่เมื่อพยายามขยายให้ใหญ่กว่าข้อมูลต้นฉบับก็จะสูญเสียรายละเอียดของพื้นผิวไปมาก (เพิ่มเติม) ถ้าเทียบ denoise ที่การซูม 100% ผลลัพธ์ดูดีกว่าการขยาย DPI 125% และเฟิร์นด้านล่างก็ดูแยกออกได้ชัดขึ้นด้วย
  • ผมมีเพื่อนที่ทำงานพัฒนา physical-based renderer จริงๆ ในอุตสาหกรรมภาพยนตร์ ฟังเรื่องงานและแนวทางทำงานในวงการนี้ทีไรก็น่าสนใจเสมอ เลยอยากรู้ว่าตอนนี้มีบริษัทไหนกำลังรับคนสายนี้อยู่บ้าง และบริษัท AI เองมีจ้างวิศวกรเรนเดอร์เพื่อสร้างสภาพแวดล้อมสำหรับเทรนโมเดลด้วยหรือเปล่า ถ้าใครกำลังมองหาวิศวกรสายวิจัย/อุตสาหกรรมด้านเรนเดอร์ที่มีประสบการณ์ ผมช่วยเชื่อมต่อให้เพื่อนได้ เพราะเขาไม่ได้ใช้โซเชียลมีเดีย

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

  • เป็นอีกครั้งที่ทำให้นึกถึง “the bitter lesson” ตอนนี้ดูเหมือนแนวโน้มนี้เริ่มมาถึงวงการกราฟิกเรนเดอร์แล้ว Nerf ใช้ prior จาก ray tracing เป็นฐาน ส่วน Gaussian splat ใช้ prior จากการ rasterization บางส่วน แต่วิธีนี้พยายามทิ้ง domain prior หรือความรู้เฉพาะทางเหล่านั้นทั้งหมด แล้วแก้ปัญหาด้วยข้อมูลและ attention ล้วนๆ รู้สึกว่านี่แหละคืออนาคตในท้ายที่สุด

  • น่าประทับใจที่ตอนนี้เกิดโครงสร้างแบบวงจรเชื่อมกันระหว่าง rendering และ compute โดยมี GPU เป็นศูนย์กลางอย่างสมบูรณ์แล้ว

  • ผลลัพธ์ดูใช้ได้ แต่ก็ให้ความรู้สึกเบลอเล็กน้อย อยากเห็นการเปรียบเทียบเวลาเรนเดอร์ระหว่าง neural network กับ renderer แบบคลาสสิกมากกว่านี้

    • ในงานแอนิเมชัน (โดยเฉพาะ Animated Crab และ Robot Animation) จะเห็นอาร์ติแฟกต์แบบ AI art ค่อนข้างชัด คือเวลาวัตถุหรือกล้องเคลื่อนที่จะมีอาการหมุนวนผิดธรรมชาติรอบๆ โมเดล

    • ในเปเปอร์มีพูดถึงการเปรียบเทียบเวลาไว้บางส่วน เมื่อเทียบกับ Blender Cycles (path tracing) วิธีแบบ neural จะเร็วกว่าอย่างมาก อย่างน้อยสำหรับฉากที่มีไม่เกิน 4K สามเหลี่ยม แต่พอฉากซับซ้อนกว่านั้นก็อาจไม่เหมาะนัก (เพราะ runtime ของ attention เพิ่มขึ้นเป็นกำลังสองตามจำนวนสามเหลี่ยม) ลิงก์เปเปอร์: PDF ของเปเปอร์ RenderFormer ส่วนตัวคิดว่าวิธีที่สมจริงอาจเป็นการใช้ neural เฉพาะกับ indirect lighting แล้วให้ rasterizer แบบดั้งเดิมสร้างภาพฐาน และค่อยเติม Global Illumination ด้วย neural เข้าไป

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

    • จริงๆ แล้ววิธีนี้อาจให้เอฟเฟกต์ที่น่าสนใจกว่าที่เห็นภายนอกก็ได้ เช่น มองฉากหนึ่งฉากเป็นก้อน input weight ก้อนเดียว แล้วใส่ noise ลงไป หรือ interpolate (ผสม) ระหว่างฉากต่างๆ เพื่อให้ได้ผลลัพธ์ที่คาดไม่ถึง

    • ท้ายที่สุดแล้วผมคิดว่านี่ใกล้เคียงกับ “Cool Research” มากกว่า ประโยชน์ใช้สอยจริงยังต่ำ เพราะต้นทุนเพิ่มขึ้นแบบกำลังสองตามจำนวนสามเหลี่ยม ดังนั้นในเปเปอร์จึงจำกัดไว้ที่ 4096 ต่อฉาก

    • อย่างที่มีคนพูดในคอมเมนต์อื่น วิธีนี้ก็เร็วกว่าอยู่จริง เพราะ global illumination นั้นช้ามากเมื่อใช้วิธีตรง

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

  • คิดว่าเป็นไอเดียที่ฉลาดและน่าสนใจมาก ฝึก transformer ให้แปลง scene description ที่อิงกับชุดสามเหลี่ยมไปเป็นอาร์เรย์พิกเซล 2D แล้วผลลัพธ์คือมันสามารถสร้างภาพที่แทบเหมือนกับผลจาก global illumination renderer แบบเดิมได้แทบจะทันที แม้เมื่อดูงานวิจัยตลอด 5 ปีที่ผ่านมา เรื่องที่ทำได้แบบนี้อาจไม่ควรน่าตกใจแล้ว แต่มันก็ยังน่าประทับใจมากอยู่ดี ทำให้รู้สึกว่าโครงสร้าง transformer นั้นอเนกประสงค์จริงๆ ความเร็วก็สูงมาก ภาพก็เกือบเหมือนเอาต์พุตจาก Blender โมเดลมีขนาดราว 1B พารามิเตอร์ และไม่แน่ใจว่าเป็น fp16 หรือ 32 แต่ไฟล์มีขนาดถึง 2GB อยากเห็นเดโมฉากที่สมจริงกว่านี้เพิ่ม แต่ก็ชอบที่ตอนนี้ผมสามารถดาวน์โหลดมาลองรันเองบน Mac ได้ทันที