arxiv bibtex
เราพัฒนาวิธีการใหม่สำหรับภาพวาดที่ทำงานได้ดีขึ้นในการทำซ้ำภูมิภาคที่เต็มไปด้วยรายละเอียดที่ได้รับแรงบันดาลใจจากความเข้าใจของเราว่าศิลปินทำงานอย่างไร: บรรทัดแรกสีต่อไป เราเสนอรูปแบบ edgeconnect แบบสองขั้นตอนที่ประกอบด้วยเครื่องกำเนิดขอบตามด้วยเครือข่ายการทำให้สมบูรณ์ ขอบประสาทสัมผัสขอบขอบของภาพที่หายไป (ทั้งปกติและผิดปกติ) ของภาพและเครือข่ายที่สมบูรณ์ของภาพเติมเต็มในภูมิภาคที่หายไปโดยใช้ขอบภาพหลอนตามลำดับก่อน คำอธิบายโดยละเอียดของระบบสามารถพบได้ในบทความของเรา

git clone https://github.com/knazeri/edge-connect.git
cd edge-connectpip install -r requirements.txtเราใช้ชุดข้อมูลมุมมองของ Celeba และ Paris Street หากต้องการฝึกอบรมโมเดลในชุดข้อมูลเต็มรูปแบบให้ดาวน์โหลดชุดข้อมูลจากเว็บไซต์อย่างเป็นทางการ
หลังจากดาวน์โหลดให้เรียกใช้ scripts/flist.py เพื่อสร้างรายการไฟล์ทดสอบและการตรวจสอบความถูกต้อง ตัวอย่างเช่นในการสร้างรายการไฟล์ชุดการฝึกอบรมบนชุดข้อมูล Places2 Run:
mkdir datasets
python ./scripts/flist.py --path path_to_places2_train_set --output ./datasets/places_train.flistโมเดลของเราได้รับการฝึกฝนในชุดข้อมูลหน้ากากที่ผิดปกติที่จัดทำโดย Liu et al .. คุณสามารถดาวน์โหลดชุดข้อมูลหน้ากากที่ผิดปกติได้จากเว็บไซต์ของพวกเขา
อีกทางเลือกหนึ่งคุณสามารถดาวน์โหลดชุดข้อมูลหน้ากากที่ไม่สม่ำเสมอโดย Karim Iskakov ซึ่งรวมกัน 50 ล้านจังหวะที่มือมนุษย์วาด
โปรดใช้ scripts/flist.py เพื่อสร้างรถไฟการทดสอบและการตรวจสอบชุดมาสก์รายการไฟล์ตามที่อธิบายไว้ข้างต้น
ดาวน์โหลดโมเดลที่ผ่านการฝึกอบรมมาก่อนโดยใช้ลิงก์ต่อไปนี้และคัดลอกภายใต้ไดเรกทอรี ./checkpoints
Places2 | Celeba Paris-StreetView
หรือคุณสามารถเรียกใช้สคริปต์ต่อไปนี้เพื่อดาวน์โหลดโมเดลที่ผ่านการฝึกอบรมมาแล้วโดยอัตโนมัติ:
bash ./scripts/download_model.sh ในการฝึกอบรมโมเดลให้สร้างไฟล์ config.yaml คล้ายกับไฟล์กำหนดค่าตัวอย่างและคัดลอกภายใต้ไดเรกทอรีจุดตรวจของคุณ อ่านคู่มือการกำหนดค่าสำหรับข้อมูลเพิ่มเติมเกี่ยวกับการกำหนดค่าแบบจำลอง
Edgeconnect ได้รับการฝึกฝนในสามขั้นตอน: 1) การฝึกอบรมแบบจำลอง Edge, 2) การฝึกอบรมแบบจำลอง inpaint และ 3) การฝึกอบรมแบบจำลองร่วม เพื่อฝึกอบรมแบบจำลอง:
python train.py --model [stage] --checkpoints [path to checkpoints] ตัวอย่างเช่นการฝึกอบรมแบบจำลองขอบบนชุดข้อมูล Places2 ภายใต้ ./checkpoints/places2 places2 ไดเรกทอรี:
python train.py --model 1 --checkpoints ./checkpoints/places2 การบรรจบกันของโมเดลแตกต่างจากชุดข้อมูลไปยังชุดข้อมูล ตัวอย่างเช่นชุดข้อมูล Places2 มาบรรจบกันในหนึ่งในสองยุคในขณะที่ชุดข้อมูลขนาดเล็กเช่น Celeba ต้องการเกือบ 40 Epochs เพื่อมาบรรจบกัน คุณสามารถตั้งค่าจำนวนการฝึกอบรมการวนซ้ำได้โดยการเปลี่ยนค่า MAX_ITERS ในไฟล์การกำหนดค่า
ในการทดสอบโมเดลให้สร้างไฟล์ config.yaml คล้ายกับไฟล์กำหนดค่าตัวอย่างและคัดลอกภายใต้ไดเรกทอรีจุดตรวจของคุณ อ่านคู่มือการกำหนดค่าสำหรับข้อมูลเพิ่มเติมเกี่ยวกับการกำหนดค่าแบบจำลอง
คุณสามารถทดสอบโมเดลในทั้งสามขั้นตอน: 1) แบบจำลองขอบ, 2) โมเดล inpaint และ 3) โมเดลข้อต่อ ในแต่ละกรณีคุณจะต้องจัดเตรียมภาพอินพุต (รูปภาพด้วยหน้ากาก) และไฟล์หน้ากากสีเทา โปรดตรวจสอบให้แน่ใจว่าไฟล์หน้ากากครอบคลุมพื้นที่หน้ากากทั้งหมดในภาพอินพุต เพื่อทดสอบโมเดล:
python test.py
--model [stage]
--checkpoints [path to checkpoints]
--input [path to input directory or file]
--mask [path to masks directory or mask file]
--output [path to the output directory] เราให้ตัวอย่างการทดสอบภายใต้ไดเรกทอรี ./examples โปรดดาวน์โหลดโมเดลที่ผ่านการฝึกอบรมมาก่อนและเรียกใช้:
python test.py
--checkpoints ./checkpoints/places2
--input ./examples/places2/images
--mask ./examples/places2/masks
--output ./checkpoints/results สคริปต์นี้จะ inpaint ภาพทั้งหมดใน ./examples/places2/images places2/images โดยใช้หน้ากากที่สอดคล้องกันใน ./examples/places2/mask /places2/mask ไดเรกทอรีและบันทึกผลลัพธ์ในไดเรกทอรี ./checkpoints/results checkpoints/results โดยเริ่มต้น test.py สคริปต์ py จะทำงานบนขั้นตอนที่ 3 ( --model=3 )
ในการประเมินโมเดลคุณต้องเรียกใช้แบบจำลองในโหมดทดสอบกับชุดการตรวจสอบของคุณก่อนและบันทึกผลลัพธ์บนดิสก์ เราให้บริการยูทิลิตี้ ./scripts/metrics.py เพื่อประเมินแบบจำลองโดยใช้ PSNR, SSIM และค่าเฉลี่ยข้อผิดพลาดสัมบูรณ์:
python ./scripts/metrics.py --data-path [path to validation set] --output-path [path to model output] ในการวัดระยะการเริ่มต้นFréchet (คะแนน FID) Run ./scripts/fid_score.py เราใช้การใช้ Pytorch ของ FID จากที่นี่ซึ่งใช้น้ำหนักที่ได้รับการฝึกฝนมาจากรูปแบบการลงทะเบียนเรียนของ Pytorch
python ./scripts/fid_score.py --path [path to validation, path to model output] --gpu [GPU id to use] โดยค่าเริ่มต้นเราใช้เครื่องตรวจจับ Canny Edge เพื่อแยกข้อมูลขอบออกจากภาพอินพุต หากคุณต้องการฝึกอบรมโมเดลด้วยการตรวจจับขอบภายนอก (ตัวอย่างเช่นการตรวจจับขอบแบบแบบองค์รวม) คุณต้องสร้างแผนที่ขอบสำหรับชุดการฝึกอบรม/ทดสอบทั้งหมดเป็นการประมวลผลล่วงหน้าและรายการไฟล์ที่เกี่ยวข้องโดยใช้ scripts/flist.py ตามที่อธิบายไว้ข้างต้น โปรดตรวจสอบให้แน่ใจว่าชื่อไฟล์และโครงสร้างไดเรกทอรีตรงกับชุดการฝึกอบรม/ทดสอบของคุณ คุณสามารถสลับไปที่การตรวจจับขอบภายนอกได้โดยระบุ EDGE=2 ในไฟล์กำหนดค่า
การกำหนดค่าโมเดลจะถูกเก็บไว้ในไฟล์ config.yaml ภายใต้ไดเรกทอรีจุดตรวจของคุณ ตารางต่อไปนี้ให้เอกสารสำหรับตัวเลือกทั้งหมดที่มีอยู่ในไฟล์กำหนดค่า:
| ตัวเลือก | คำอธิบาย |
|---|---|
| โหมด | 1: รถไฟ, 2: ทดสอบ, 3: Eval |
| แบบอย่าง | 1: Edge Model, 2: Inpaint Model, 3: Edge-Inpaint Model, 4: Joint Model |
| หน้ากาก | 1: บล็อกสุ่ม, 2: ครึ่ง, 3: ภายนอก, 4: บล็อกภายนอก + สุ่ม, 5: บล็อกภายนอก + สุ่ม + ครึ่ง |
| ขอบ | 1: Canny, 2: ภายนอก |
| NMS | 0: ไม่มีการปราบปรามที่ไม่ใช่ max, 1: non-max-suppression บนขอบภายนอก |
| เมล็ด | เมล็ดพันธุ์เครื่องกำเนิดตัวเลขสุ่ม |
| GPU | รายการ GPU IDS, รายการคั่นเครื่องหมายจุลภาคเช่น [0,1] |
| การดีบัก | 0: ไม่มีการดีบัก, 1: โหมดการดีบัก |
| verbose | 0: ไม่มี verbose, 1: เอาต์พุตรายละเอียดสถิติในคอนโซลเอาท์พุท |
| ตัวเลือก | คำอธิบาย |
|---|---|
| train_flist | ไฟล์ข้อความที่มีรายการไฟล์ชุดฝึกอบรม |
| val_flist | ไฟล์ข้อความที่มีรายการไฟล์การตรวจสอบความถูกต้อง |
| test_flist | ไฟล์ข้อความที่มีรายการไฟล์ชุดทดสอบ |
| train_edge_flist | ไฟล์ข้อความที่มีการฝึกอบรมชุดไฟล์ขอบภายนอก (เฉพาะกับ edge = 2) |
| val_edge_flist | ไฟล์ข้อความที่มีการตรวจสอบความถูกต้องตั้งรายการไฟล์ขอบภายนอก (เฉพาะกับ edge = 2) |
| test_edge_flist | ไฟล์ข้อความที่มีชุดทดสอบชุดไฟล์ขอบภายนอก (เฉพาะกับ edge = 2) |
| train_mask_flist | ไฟล์ข้อความที่มีรายการไฟล์ชุดการฝึกอบรม (เฉพาะกับหน้ากาก = 3, 4, 5) |
| val_mask_flist | ไฟล์ข้อความที่มีการตรวจสอบความถูกต้องชุดไฟล์มาสก์ (เฉพาะกับ mask = 3, 4, 5) |
| test_mask_flist | ไฟล์ข้อความที่มีชุดทดสอบชุดมาสก์ (เฉพาะกับหน้ากาก = 3, 4, 5) |
| ตัวเลือก | ค่าเริ่มต้น | คำอธิบาย |
|---|---|---|
| LR | 0.0001 | อัตราการเรียนรู้ |
| d2g_lr | 0.1 | อัตราส่วนอัตราการเรียนรู้ discriminator/Generator |
| beta1 | 0.0 | Adam Optimizer beta1 |
| เบต้า 2 | 0.9 | Adam Optimizer beta2 |
| batch_size | 8 | ขนาดแบทช์อินพุต |
| input_size | 256 | ขนาดภาพอินพุตสำหรับการฝึกอบรม (0 สำหรับขนาดดั้งเดิม) |
| ซิกม่า | 2 | ค่าเบี่ยงเบนมาตรฐานของตัวกรองเกาส์เซียนที่ใช้ในเครื่องตรวจจับขอบกระป๋อง (0: สุ่ม, -1: ไม่มีขอบ) |
| max_iters | 2e6 | จำนวนการวนซ้ำสูงสุดเพื่อฝึกอบรมแบบจำลอง |
| edge_threshold | 0.5 | เกณฑ์การตรวจจับขอบ (0-1) |
| l1_loss_weight | 1 | น้ำหนักลด L1 |
| fm_loss_weight | 10 | น้ำหนักการสูญเสียการจับคู่คุณสมบัติ |
| style_loss_weight | 1 | น้ำหนักลดสไตล์ |
| content_loss_weight | 1 | น้ำหนักการสูญเสียรับรู้ |
| inpaint_adv_loss_weight | 0.01 | น้ำหนักลดลงของฝ่ายตรงข้าม |
| gan_loss | Nsgan | NSGAN : GAN ที่ ไม่อิ่ม |
| gan_pool_size | 0 | ภาพปลอมขนาดพูล |
| save_interval | 1,000 | ต้องรอกี่ครั้งก่อนที่จะบันทึกโมเดล (0: ไม่เคย) |
| eval_interval | 0 | ต้องรอกี่ครั้งก่อนที่จะประเมินโมเดล (0: ไม่เคย) |
| log_interval | 10 | ต้องรอกี่ครั้งก่อนที่จะเข้าสู่การสูญเสียการฝึกอบรม (0: ไม่เคย) |
| ตัวอย่าง _interval | 1,000 | ต้องรอกี่ครั้งก่อนบันทึกตัวอย่าง (0: ไม่เคย) |
| ตัวอย่าง _size | 12 | จำนวนภาพที่จะสุ่มตัวอย่างในแต่ละช่วงเวลาการ samling |
ได้รับใบอนุญาตภายใต้ Creative Commons Attribution-Noncommercial 4.0 International
ยกเว้นในกรณีที่ระบุไว้เป็นอย่างอื่นเนื้อหานี้จะถูกเผยแพร่ภายใต้ใบอนุญาต CC BY-NC ซึ่งหมายความว่าคุณสามารถคัดลอกรีมิกซ์แปลงและสร้างเนื้อหาตราบใดที่คุณไม่ได้ใช้วัสดุเพื่อวัตถุประสงค์ทางการค้าและให้เครดิตที่เหมาะสมและให้ลิงก์ไปยังใบอนุญาต
หากคุณใช้รหัสนี้สำหรับการวิจัยของคุณโปรดอ้างถึงเอกสารของเรา Edgeconnect: ภาพกำเนิดที่สร้างขึ้นด้วยการเรียนรู้ที่ขอบด้านตรงข้าม
@inproceedings{nazeri2019edgeconnect,
title={EdgeConnect: Generative Image Inpainting with Adversarial Edge Learning},
author={Nazeri, Kamyar and Ng, Eric and Joseph, Tony and Qureshi, Faisal and Ebrahimi, Mehran},
journal={arXiv preprint},
year={2019},
}
@InProceedings{Nazeri_2019_ICCV,
title = {EdgeConnect: Structure Guided Image Inpainting using Edge Prediction},
author = {Nazeri, Kamyar and Ng, Eric and Joseph, Tony and Qureshi, Faisal and Ebrahimi, Mehran},
booktitle = {The IEEE International Conference on Computer Vision (ICCV) Workshops},
month = {Oct},
year = {2019}
}