arxiv | Bibtex
우리는 예술가들이 어떻게 작동하는지에 대한 이해에서 영감을 얻은 세부 사항을 보여주는 미세한 세부 사항 을 보여주는 채워진 지역을 더 잘 재현하는 이미지 인 페인팅에 대한 새로운 접근 방식을 개발합니다. 우리는 에지 생성기와 이미지 완성 네트워크로 구성된 2 단계 적대 모델 EdgeConnect를 제안합니다. 에지 생성기는 이미지의 누락 된 영역 (일반 및 불규칙)의 가장자리를 환각시키고 이미지 완성 네트워크는 환각 된 가장자리를 선험적으로 사용하여 누락 된 영역에 채 웁니다. 시스템에 대한 자세한 설명은 본 논문에서 찾을 수 있습니다.

git clone https://github.com/knazeri/edge-connect.git
cd edge-connectpip install -r requirements.txt우리는 Places2, Celeba 및 Paris Street-View 데이터 세트를 사용합니다. 전체 데이터 세트에서 모델을 훈련 시키려면 공식 웹 사이트에서 데이터 세트를 다운로드하십시오.
다운로드 후 scripts/flist.py 실행하여 열차, 테스트 및 유효성 검사 세트 파일 목록을 생성하십시오. 예를 들어, Places2 DataSet 실행에서 교육 세트 파일 목록을 생성합니다.
mkdir datasets
python ./scripts/flist.py --path path_to_places2_train_set --output ./datasets/places_train.flist당사의 모델은 Liu 등이 제공하는 불규칙 마스크 데이터 세트에 대해 교육을받습니다. 웹 사이트에서 공개적으로 사용 가능한 불규칙 마스크 데이터 세트를 다운로드 할 수 있습니다.
또는 Karim Iskakov의 Quick Draw Irregular Mask 데이터 세트를 다운로드 할 수 있습니다. Karim Iskakov는 인간의 손으로 그려진 5 천만 스트로크의 조합입니다.
scripts/flist.py 사용하여 위에서 설명한대로 열차, 테스트 및 검증 세트 마스크 목록을 생성하십시오.
다음 링크를 사용하여 미리 훈련 된 모델을 다운로드하고 ./checkpoints 디렉토리 아래에서 복사하십시오.
장소 2 | Celeba | 파리-스트리트 뷰
또는 다음 스크립트를 실행하여 미리 훈련 된 모델을 자동으로 다운로드 할 수 있습니다.
bash ./scripts/download_model.sh 모델을 훈련 시키려면 config.yaml 파일을 예제 구성 파일과 유사하게 만들고 체크 포인트 디렉토리에서 복사하십시오. 모델 구성에 대한 자세한 내용은 구성 안내서를 읽으십시오.
EdgeConnect는 3 단계로 훈련됩니다. 1) Edge 모델 훈련, 2) Inpaint 모델 교육 및 3) 공동 모델 교육. 모델을 훈련시키기 위해 :
python train.py --model [stage] --checkpoints [path to checkpoints] 예를 들어 ./checkpoints/places2 디렉토리 아래의 Places2 데이터 세트에서 에지 모델을 훈련하려면 :
python train.py --model 1 --checkpoints ./checkpoints/places2 모델의 수렴은 데이터 세트마다 다릅니다. 예를 들어 Places2 DataSet은 두 개의 시대 중 하나에서 수렴하는 반면, Celeba와 같은 작은 데이터 세트는 거의 40 개의 에포크가 수렴해야합니다. 구성 파일에서 MAX_ITERS 값을 변경하여 교육 반복 수를 설정할 수 있습니다.
모델을 테스트하려면 config.yaml 파일을 예제 구성 파일과 유사하게 만들고 체크 포인트 디렉토리에서 복사하십시오. 모델 구성에 대한 자세한 내용은 구성 안내서를 읽으십시오.
3 단계 모두에서 모델을 테스트 할 수 있습니다 : 1) 가장자리 모델, 2) 인 페인트 모델 및 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 이 스크립트는 ./examples/places2/images 의 모든 이미지를 ./examples/places2/mask 디렉토리의 해당 마스크를 사용하여 모든 이미지를 입력하고 결과를 ./checkpoints/results 디렉토리에 저장합니다. 기본적으로 test.py 스크립트는 3 단계에서 실행됩니다 ( --model=3 ).
모델을 평가하려면 먼저 유효성 검사 세트에 대해 테스트 모드에서 모델을 실행하고 디스크에 결과를 저장해야합니다. PSNR, SSIM 및 평균 절대 오류를 사용하여 모델을 평가하기 위해 유틸리티 ./scripts/metrics.py 를 제공합니다.
python ./scripts/metrics.py --data-path [path to validation set] --output-path [path to model output] Fréchet Inception 거리 (FID 점수) 실행 ./scripts/fid_score.py 측정합니다. 우리는 Pytorch의 Inception 모델에서 사전에 사전 가중치를 사용하는 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 지정하여 외부 에지 감지로 전환 할 수 있습니다.
모델 구성은 Checkpoints 디렉토리의 config.yaml 파일에 저장됩니다. 다음 테이블은 구성 파일에서 사용 가능한 모든 옵션에 대한 설명서를 제공합니다.
| 옵션 | 설명 |
|---|---|
| 방법 | 1 : 기차, 2 : 테스트, 3 : 평가 |
| 모델 | 1 : Edge Model, 2 : Inpaint 모델, 3 : Edge-Inpaint 모델, 4 : 공동 모델 |
| 마스크 | 1 : 랜덤 블록, 2 : 반, 3 : 외부, 4 : 외부 + 랜덤 블록, 5 : 외부 + 랜덤 블록 + 하프 하프 |
| 가장자리 | 1 : Canny, 2 : 외부 |
| nms | 0 : 비음이 억제되지 않음, 1 : 외부 가장자리에서 비가 강한 억제 |
| 씨앗 | 랜덤 번호 생성기 시드 |
| GPU | GPU ID 목록, 쉼표 분리 목록 예를 들어 [0,1] |
| 디버그 | 0 : 디버그 없음, 1 : 디버깅 모드 |
| 말 수가 많은 | 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 | 테스트 세트 마스크 파일 목록이 포함 된 텍스트 파일 (mask = 3, 4, 5만으로) |
| 옵션 | 기본 | 설명 |
|---|---|---|
| LR | 0.0001 | 학습 속도 |
| D2G_LR | 0.1 | 식별기/발전기 학습 속도 비율 |
| 베타 1 | 0.0 | Adam Optimizer Beta1 |
| 베타 2 | 0.9 | Adam Optimizer Beta2 |
| batch_size | 8 | 입력 배치 크기 |
| input_size | 256 | 훈련을위한 입력 이미지 크기. (원래 크기의 경우 0) |
| 시그마 | 2 | Canny Edge 검출기에 사용되는 가우스 필터의 표준 편차 (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 : 비 포화 간, LSGAN : 최소 제곱 간, 힌지 : 힌지 손실 간 GAN |
| gan_pool_size | 0 | 가짜 이미지 수영장 크기 |
| save_interval | 1000 | 모델을 저장하기 전에 기다릴 반복 (0 : Never) |
| Eval_InterVal | 0 | 모델을 평가하기 전에 기다릴 반복의 수 (0 : Never) |
| log_interval | 10 | 로깅 훈련 손실을 기록하기 전에 기다릴 반복 (0 : Never) |
| Sample_Interval | 1000 | 샘플을 저장하기 전에 기다릴 반복 (0 : Never) |
| 샘플 _size | 12 | 각 Samling 간격에서 샘플링 할 이미지 수 |
Creative Commons Attribution-Noncommercial 4.0 International에 따라 라이센스.
달리 명시된 경우를 제외 하고이 컨텐츠는 CC By-NC 라이센스로 게시되므로 상업적 목적으로 자료를 사용하지 않고 적절한 크레딧을 제공하고 라이센스에 대한 링크를 제공하는 한 컨텐츠를 복사, 리믹스, 변환 및 구축 할 수 있습니다.
이 코드를 연구에 사용하는 경우, 논문 EdgeConnect : Adversarial Edge Learning 또는 EdgeConnect로 인한 생성 이미지 : Edge Prediction을 사용하여 구조 가이드 이미지를 입력하십시오.
@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}
}