ebsynth
เป็นเครื่องมืออเนกประสงค์สำหรับการสังเคราะห์รูปภาพตามตัวอย่าง สามารถใช้สำหรับงานสังเคราะห์ภาพได้หลากหลาย รวมถึงการสังเคราะห์พื้นผิวที่มีคำแนะนำ การถ่ายโอนสไตล์ทางศิลปะ การวาดภาพโดยคำนึงถึงเนื้อหา และความละเอียดสูงพิเศษ
จุดเน้นของ ebsynth
คือการรักษาความเที่ยงตรงของแหล่งข้อมูล แตกต่างจากวิธีการล่าสุดอื่นๆ ebsynth
ไม่ได้พึ่งพาโครงข่ายประสาทเทียม แต่จะใช้การนำอัลกอริธึมการสังเคราะห์พื้นผิวแบบไม่มีพารามิเตอร์มาใช้ที่ทันสมัยที่สุดแทน ด้วยธรรมชาติของแพตช์ ebsynth
จึงให้ผลลัพธ์ที่คมชัด ซึ่งรักษารายละเอียดเล็กๆ น้อยๆ ทั้งหมดที่มีอยู่ในภาพต้นฉบับ
ebsynth -style -guide -output
-style
-guide
-weight
-uniformity
-patchsize
-pyramidlevels
-searchvoteiters
-patchmatchiters
-extrapass3x3
-backend [cpu|cuda]
สามารถดาวน์โหลดไบนารี Windows ที่สร้างไว้ล่วงหน้าได้จากที่นี่: http://jamriska.cz/ebsynth/ebsynth-win64.zip
ตัวอย่างแรกแสดงวิธีการสังเคราะห์พื้นผิวแบบมีคำแนะนำขั้นพื้นฐานด้วย ebsynth
กรณีการใช้งานนี้ถูกเสนอครั้งแรกในเอกสาร Image Analogies ต้นฉบับ [1] ซึ่งพวกเขาเรียกมันว่า 'พื้นผิวตามตัวเลข' เราเริ่มต้นด้วยการถ่ายภาพฉากธรรมชาติพร้อมกับการแบ่งส่วน (เช่น หินทาสีเขียว ท้องฟ้าเป็นสีฟ้า):
ebsynth -style source_photo.png -guide source_segment.png target_segment.png -output output.png
ต่อไป เราวาดภาพการแบ่งส่วนเป้าหมายด้วยมือ และเราขอให้ ebsynth
สร้าง 'ภาพถ่าย' ใหม่ที่จะตรงกับภาพนั้น ในภาษาของการถ่ายโอนสไตล์: เราต้องการถ่ายโอน สไตล์ ของภาพถ่ายต้นฉบับไปยังการแบ่งส่วนเป้าหมายในลักษณะที่จะเคารพแต่ละส่วน การแบ่งส่วนทำหน้าที่เป็น แนวทาง ในการสังเคราะห์
ตัวอย่างนี้แสดงวิธีการเรนเดอร์ที่ไม่สมจริงด้วย ebsynth
ขึ้นอยู่กับผลงานของ Fišer และคณะ [7]. เป้าหมายคือการเรนเดอร์โมเดล 3 มิติอย่างที่ศิลปินจะทำ โดยเฉพาะอย่างยิ่ง เราต้องการบันทึกวิธีที่ศิลปินถ่ายทอดเอฟเฟกต์แสงต่างๆ เช่น ไฮไลท์ เงาที่สัมผัส และการสะท้อนทางอ้อม ด้วยเหตุนี้ เราจึงสร้างฉากอ้างอิงที่เรียบง่ายด้วยลูกบอลเรืองแสง และให้ศิลปินวาดภาพตามสไตล์ของตนเอง เราใช้ตัวติดตามเส้นทางที่มีอยู่ทั่วไปเพื่อสร้างพาสการเรนเดอร์แยกกัน เช่น การส่องสว่างทั่วโลกทั้งหมด เฉพาะส่วนประกอบที่กระจายโดยตรง เพียงการสะท้อนทางอ้อม เป็นต้น ต่อไป เราจะเรนเดอร์ชุดพาสเดียวกันสำหรับโมเดล 3D เป้าหมาย และใช้เป็นแนวทางสำหรับ ebsynth
ebsynth -style source_style.png
-guide source_fullgi.png target_fullgi.png -weight 0.66
-guide source_dirdif.png target_dirdif.png -weight 0.66
-guide source_indirb.png target_indirb.png -weight 0.66
-output output.png
เมื่อเปรียบเทียบกับพื้นผิวตามตัวเลข ข้อแตกต่างที่สำคัญคือตอนนี้เรามีช่องทางการนำทาง หลายช่อง โปรดทราบว่าคู่มือจะมาเป็นคู่เสมอ: คู่มือแหล่งที่มาก่อน คู่มือเป้าหมายอันดับสอง เพื่อผลลัพธ์ที่ดีกว่า เราอาจต้องการเพิ่มการมีส่วนร่วมของคำแนะนำที่สัมพันธ์กับสไตล์ ในตัวอย่างข้างต้น สไตล์มีน้ำหนักเริ่มต้นที่ 1.0 ในขณะที่ช่องแนะนำมีน้ำหนัก 0.66 ต่อช่อง โดยรวมแล้ว น้ำหนักไกด์รวมคือ 2.0 ส่งผลให้อัตราส่วนไกด์ต่อสไตล์อยู่ที่ 2:1
ตัวอย่างนี้แสดงให้เห็นว่าเราสามารถใช้ ebsynth
เพื่อถ่ายโอนสไตล์ของการวาดภาพบุคคลไปยังภาพถ่ายของบุคคลอื่นได้อย่างไร ขึ้นอยู่กับผลงานของ Fišer และคณะ [8]. เป้าหมายคือการสร้างความแตกต่างเล็กๆ น้อยๆ ของภาพวาดต้นฉบับ ขณะเดียวกันก็รักษาเอกลักษณ์ของบุคคลเป้าหมายไว้ กล่าวคือ เราต้องการให้บุคคลนั้นยังคงจดจำได้หลังจากการสังเคราะห์
ต่างจาก StyLit ตรงที่การตั้งค่านี้เราไม่มีเรขาคณิต 3 มิติอ้างอิงเพื่อใช้เป็นแนวทาง อย่างไรก็ตาม เราสามารถใช้ประโยชน์จากความจริงที่ว่าทั้งภาพวาดต้นฉบับและภาพถ่ายเป้าหมายมีใบหน้ามนุษย์ซึ่งมีโครงสร้างที่ชัดเจน เราจะใช้โครงสร้างนี้เพื่ออนุมานข้อมูลแนวทางที่จำเป็น
ebsynth -style source_painting.png
-guide source_Gapp.png target_Gapp.png -weight 2.0
-guide source_Gseg.png target_Gseg.png -weight 1.5
-guide source_Gpos.png target_Gpos.png -weight 1.5
-output output.png
โดยเฉพาะอย่างยิ่ง เราตรวจจับจุดสังเกตบนใบหน้าทั้งในรูปภาพเป้าหมายและต้นฉบับ และใช้จุดเหล่านั้นเพื่อสร้างคำแนะนำการแบ่งส่วนแบบนุ่มนวล Gseg
และคำแนะนำตำแหน่ง Gpos
ซึ่งโดยพื้นฐานแล้วคือสนามวาร์ปหนาแน่นที่แมปทุกพิกเซลเป้าหมายไปยังตำแหน่งที่สอดคล้องกันในแหล่งที่มา . เพื่อรักษาเอกลักษณ์ของบุคคลนั้น เราใช้คำแนะนำลักษณะ Gapp
ซึ่งเป็นภาพถ่ายเป้าหมายในเวอร์ชันโทนสีเทาที่ได้รับการปรับให้เท่ากันเพื่อให้เข้ากับความสว่างของภาพวาดต้นฉบับ
รหัสถูกเผยแพร่สู่สาธารณสมบัติ คุณสามารถทำอะไรก็ได้ที่คุณต้องการด้วย
อย่างไรก็ตาม คุณควรทราบว่าโค้ดใช้อัลกอริทึม PatchMatch ซึ่งได้รับการจดสิทธิบัตรโดย Adobe (สิทธิบัตรสหรัฐอเมริกา 8,861,869) เทคนิคอื่นๆ อาจถูกจดสิทธิบัตรเช่นกัน เป็นความรับผิดชอบของคุณที่จะต้องตรวจสอบให้แน่ใจว่าคุณไม่ได้ละเมิดสิทธิ์ของผู้ถือสิทธิบัตรโดยใช้รหัสนี้
หากคุณพบว่าโค้ดนี้มีประโยชน์สำหรับการวิจัยของคุณ โปรดอ้างอิง:
@misc{Jamriska2018,
author = {Jamriska, Ondrej},
title = {Ebsynth: Fast Example-based Image Synthesis and Style Transfer},
year = {2018},
publisher = {GitHub},
journal = {GitHub repository},
howpublished = {url{https://github.com/jamriska/ebsynth}},
}