2 คะแนน โดย GN⁺ 2025-01-09 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • NeuralSVG เป็นงานวิจัยจาก ICCV 2025 ที่สร้าง SVG โดยแปลงพรอมป์ต์ข้อความให้เป็นรูปทรงที่มีลำดับและแก้ไขได้
  • วิธีสร้างข้อความเป็นเวกเตอร์แบบเดิมอาจให้ผลลัพธ์ที่ มีพารามิเตอร์มากเกินไป หรือมองโครงสร้างเลเยอร์เป็นเรื่องรอง ทำให้ใช้งานเป็นเวกเตอร์กราฟิกที่แก้ไขได้จริงได้ยาก
  • ระบบเข้ารหัสทั้งฉาก SVG ไว้ในค่าน้ำหนักของเครือข่าย MLP ขนาดเล็ก และปรับให้เหมาะกับเงื่อนไขข้อความด้วย Score Distillation Sampling (SDS)
  • การทำ regularization แบบ nested dropout ช่วยให้แต่ละรูปทรงมีบทบาทที่มีความหมายอย่างอิสระ จึงยังคงโครงสร้างคร่าว ๆ ของฉากไว้ได้แม้จะเหลือรูปทรงเพียงไม่กี่ชิ้น
  • การแทนค่าที่ฝึกเพียงชุดเดียวสามารถปรับ ชุดสี, อัตราส่วนภาพ และจำนวนเส้นสเก็ตช์ได้ในช่วง inference ตามสีพื้นหลัง

แนวทางที่มุ่งสร้าง SVG ที่แก้ไขได้

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

วิธีเข้ารหัสฉากลงใน MLP ขนาดเล็ก

  • NeuralSVG ได้แรงบันดาลใจจาก NeRF โดยเข้ารหัสทั้งฉากไว้ในค่าน้ำหนักของเครือข่าย MLP ขนาดเล็ก
  • การปรับให้เหมาะสมใช้ Score Distillation Sampling (SDS)
  • เพื่อสร้างการแทนค่าที่มีลำดับ จึงนำเทคนิค regularization แบบอิง dropout มาใช้
    • ช่วยให้แต่ละรูปทรงที่เรียนรู้มีบทบาทที่มีความหมายและมีลำดับภายในฉากทั้งหมด
    • แม้จะเปลี่ยนจำนวนรูปทรงที่คงไว้ในการเรนเดอร์สุดท้าย ก็ยังจับโครงสร้างคร่าว ๆ ของฉากได้ด้วยรูปทรงเพียงไม่กี่ชิ้น

การควบคุมแบบไดนามิกในช่วง inference

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

ผลการประเมินและข้อมูลประกอบ

  • ในการประเมินทั้งเชิงคุณภาพและเชิงปริมาณ NeuralSVG ให้ผลดีกว่าวิธีเดิมในด้านการสร้าง SVG ที่มีโครงสร้างและยืดหยุ่น
  • ข้อมูลโครงการ
    • arXiv: บทความวิจัย
    • Code: ที่เก็บโค้ด

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

 
GN⁺ 2025-01-09
ความคิดเห็นบน Hacker News
  • ยอดเยี่ยมมาก ผมมองว่าประโยชน์ของการสร้างเวกเตอร์มีมากกว่าการ สร้างแบบแรสเตอร์ อย่าง DALL-E หรือ Midjourney ที่ได้รับความสนใจอย่างมากมาจนถึงตอนนี้มาก
    เอาต์พุตแบบแรสเตอร์จัดการยาก เพราะถ้าจะปรับปรุงซ้ำ ๆ ให้ได้ผลลัพธ์ที่ใช้งานได้จริง มักต้องเรียก AI สร้างภาพต่อเพื่ออัปสเกลหรืออินเพนต์ แต่ เวกเตอร์ที่สร้างขึ้น นั้นโดยเนื้อแท้แล้วขยายขนาดได้และแก้ไขง่าย
    โดยเฉพาะผลลัพธ์เหล่านี้มีความซับซ้อนต่ำ แต่ละรูปทรงประกอบด้วยจุดน้อยที่สุดเท่าที่เป็นไปได้ จึงมีข้อดีมากสำหรับประสบการณ์ที่มนุษย์เข้ามาแก้ไขกลางทางได้ ในงานภาพเชิงกำเนิด ผมมองว่าการสร้างการนำเสนอที่เรียบง่ายนั้นยากกว่าและมีคุณค่ามากกว่าการสร้างการนำเสนอที่ซับซ้อนและรก

    • สงสัยว่าได้เห็น https://www.recraft.ai/ เมื่อเร็ว ๆ นี้หรือยัง คุณภาพภาพของเอาต์พุตเวกเตอร์ดูดีขึ้นพอสมควร
      แน่นอนว่ายังไม่เหมาะสำหรับการสร้างภาพที่มีเท็กซ์เจอร์แน่น ๆ หรือภาพเหมือนภาพถ่ายแบบที่ Midjourney ถนัด ช่วงปีที่แล้วใน https://gwern.net/dropcap ยังต้องใช้เวิร์กโฟลว์ค่อนข้างซับซ้อน คือสร้างด้วย Midjourney แล้วผ่าน Recraft แต่ถ้าจะสร้างตัวอักษรขึ้นต้นย่อหน้าตอนนี้ น่าจะใช้แค่โมเดล Recraft รุ่นล่าสุดก็พอแล้ว
    • ยังมีความเป็นไปได้ที่จะใช้ภาพแบบนี้เป็น ไกด์ให้โมเดลแรสเตอร์ไรซ์ ด้วย คือสร้างภาพที่ปรับแต่งและประกอบรวมกันได้ง่ายก่อน แล้วเมื่อพอใจกับองค์ประกอบภาพแล้วค่อยเพิ่มรายละเอียด
    • มีโปรเจกต์เล็ก ๆ สำหรับการนำเสนอที่ซับซ้อนและรกด้วย ;) https://github.com/KodeMunkie/shapesnap
      เป็นงานที่ยืนอยู่บนไหล่ของยักษ์ และต้นฉบับไม่ใช่ของผม ใช้ผ่าน npm ได้ด้วย
    • ผมจินตนาการอยู่เสมอว่าถ้า Sora.ai สร้าง โมเดล 3D สำหรับเรนเดอร์ขึ้นมาก่อนตอนทำแอนิเมชัน มันจะมีประโยชน์แค่ไหน
    • เห็นด้วยอย่างยิ่ง แนวทางการโค้ดแบบบล็อกและการทำให้เป็นแรสเตอร์ที่แพร่หลายทั่วไปในโคเดกเสียง รวมถึงแม้แต่วิธีแบบ “โครงข่ายประสาท” สมัยใหม่ ก็ให้ความรู้สึกเหมือนเป็นทางตันสำหรับ การควบคุมอย่างละเอียด ที่นักดนตรีต้องการ
      แน่นอนว่าสำหรับอินเทอร์เฟซข้อความสู่ดนตรีก็ถือว่าโอเค ตอนนี้ผมกำลังทำโคเดกเสียงแบบ sparse ที่เน้นเสียงธรรมชาติเป็นหลัก และใช้สมมติฐานเชิงฟิสิกส์แบบหยาบมาก ๆ เพื่อกระตุ้นให้เกิดการแทนค่าแบบ sparse
      https://blog.cochlea.xyz/sparse-interpretable-audio-codec-pa...
  • ผมชอบ วิธีสร้างแบบค่อยเป็นค่อยไป แบบนี้มาก ภาษาไม่แม่นยำพอที่จะอธิบายผลลัพธ์สุดท้ายได้อย่างถูกต้อง ดังนั้นการสร้างขั้นตอนกลางจึงทรงพลังมาก
    อยากเห็นแนวทางแบบนี้ในการสร้างดนตรีด้วย เครื่องมืออย่าง Suno นั้นเจ๋ง แต่ส่วนตัวแล้วผมอยากได้เครื่องมือที่สร้าง MIDI และการตั้งค่าเครื่องดนตรี มากกว่าเสียงจริงเองมาก
    นี่อาจเป็นบทเรียนที่ดีสำหรับเครื่องมือสร้างสรรค์ การสร้างจุดเริ่มต้นที่ใช้ได้พอสมควรนั้นเป็นไปได้ แต่สิ่งที่ผู้คนต้องการจริง ๆ อยู่ใน long tail ดังนั้นความสามารถในการปรับแก้อย่างแม่นยำจึงเป็นสิ่งที่สร้างความต่างระหว่างเดโมที่เตรียมไว้กับเครื่องมือที่ทรงพลัง
    เห็นเขียนว่า “Code coming soon” ตัวอย่างค่อนข้างดี แต่ไม่รู้ว่าทำซ้ำได้มากแค่ไหน

    • ถ้ากำลังหาเครื่องมือที่สร้าง MIDI และการตั้งค่าเครื่องดนตรี บางทีอย่าง https://www.aiva.ai อาจตรง
    • MIDI อย่างเดียวไม่พอ อยากได้ MIDI + ฟิลเตอร์ และแทร็กเสียงร้องแยกต่างหาก รวมถึงแทร็กเสียงแบบกำหนดเองด้วย
    • ประเด็นดีมาก เมื่อไม่กี่วันก่อนผมคิดว่าจะลองเริ่มโปรเจกต์นี้ใหม่ด้วย Glicol
      https://github.com/chaosprint/RaveForce
      RaveForce เป็นชุดเครื่องมือสไตล์ OpenAI Gym สำหรับทดลองสร้างดนตรี ผมชอบ Suno แต่ท้ายที่สุดถ้าจะทำงานต่อก็ต้องมี MIDI หรือ XML หรือไม่ก็ซンプ์เปิลแบบไม่สูญเสียข้อมูล
    • ถ้ามี MIDI แบบไมโครโทน คงเจ๋งมาก
  • แค่เอา Sonnet ไปใช้กับแอนิเมชัน SVG ก็น่าประทับใจแล้ว แต่นี่ดูเหมือนจะทรงพลังกว่านั้นมาก
    ตัวอย่างสนุก ๆ: https://gist.github.com/scosman/701275e737331aaab6a2acf74a52...

  • ผมคิดมาตลอดว่า การสร้างตัวแทนระดับกลาง คือหนทางข้างหน้า เช่น สร้าง AST แทนการสร้างไวยากรณ์รูปธรรม สร้าง SVG แทน PNG และสร้างไวร์เฟรมหรือ rigging กับสคริปต์แทนการสร้างภาพต่อเนื่องสำหรับแอนิเมชัน
    ถ้ามีตัวแทนระดับกลาง ก็แค่แก้ไขแล้วเรนเดอร์ เมื่อมีผลเรนเดอร์แล้ว ค่อยโรยผงวิเศษ AI ทับอีกชั้นในตอนท้าย
    สักวันหนึ่งโมเดลเชิงกำเนิดอาจทรงพลังพอจนควบคุมรายละเอียดได้ด้วยภาษาธรรมชาติล้วน ๆ แต่ก่อนจะถึงตอนนั้น วิธีนี้น่าจะมีข้อดีคือควบคุมได้ ทำงานร่วมกับเครื่องมือเดิมอย่าง Intellisense หรือโปรแกรมแก้ไขภาพได้ และใช้โมเดลที่เล็กกว่าและถูกกว่าเพราะไม่ต้องรับมือกับพื้นที่พิกเซลมิติสูง

  • อยากเห็นว่าโมเดลนี้จะให้ผลอย่างไรกับพรอมป์ทดสอบการสร้าง SVG ด้วย LLM ของ Simon Willison ที่ว่า “สร้าง SVG ของนกกระทุงขี่จักรยาน”
    ความเร็วในการพัฒนาของ AI น่าทึ่งมากและคงจะดีขึ้นเรื่อย ๆ ซึ่งก็ทำให้น่ากลัวอยู่เล็กน้อย

    • ผมลองให้ Claude กับ ChatGPT o3 “สร้าง SVG ของสหรัฐอเมริกาแผ่นดินใหญ่ที่มีเส้นขอบสีดำ”
      ลองหลายโมเดลแล้ว แต่ผิดแบบเละเทะ Claude ทำ “สร้าง SVG ของนกกระทุงขี่จักรยาน” ได้พอใช้
  • ดีมาก ผมต้องแปลงบิตแมสก์เป็น SVG และอยากข้ามขั้นตอนกลาง เลยไปหางานวิจัยที่ ให้โมเดล segmentation ส่งออก SVG แล้วเจออันนี้
    https://arxiv.org/abs/2311.05276

  • การสร้างสเก็ตช์ สุดยอดมาก แถมดูเหมือนแทบจะได้มาแบบฟรี ๆ

  • น่าจะเปิดโอกาสมากมายให้เครื่องมือเขียนเอกสาร เจ๋งมากจริง ๆ และถ้าโค้ดเปิดเมื่อไรอยากรีบลองใช้

    • สงสัยว่าสิ่งนี้จะเสริม การเขียนเอกสาร ได้อย่างไร ช่วยยกไอเดียสักสองสามข้อได้ไหม?
  • ดี อยากเห็น การสร้างข้อความสำหรับไดอะแกรม ในแนวทางคล้าย ๆ กันด้วย เหมือน Pic/Pikchr ในยุค LLM

    • ไม่ใช่ PIC และยังไม่ค่อยเหมาะกับไดอะแกรมซับซ้อนนัก แต่สามารถสร้างแผนภูมิบางประเภทที่ Chart Vizzard ของ Vizzlo รองรับ เช่น แผนภูมิ Gantt แล้วแก้ไขต่อในตัวแก้ไขแผนภูมิได้: https://vizzlo.com/ai
    • ผมเคยประสบความสำเร็จระดับหนึ่งในการแปลง SQL เป็น ไดอะแกรม Mermaid Markdown
  • เจ๋งจริง ๆ ผมใช้ Claude ใส่แอนิเมชันลงใน SVG มาบ้างแล้ว และมันค่อนข้างดี

    • ถ้าแชร์ได้ อยากดูตัวอย่างและขั้นตอนการทำงาน