Implementasi pembelajaran Pytorch untuk menemukan hubungan lintas domain dengan jaringan permusuhan generatif.

* Semua sampel di ReadMe.md sangat baik oleh jaringan saraf kecuali gambar pertama untuk setiap baris.
* Struktur jaringan sedikit berbeda (di sini) dari kode penulis.
Dataset unduhan pertama (dari pix2pix) dengan:
$ bash ./data/download_dataset.sh dataset_name
facades : 400 gambar dari Dataset Fasad CMP.cityscapes : 2975 gambar dari set pelatihan CityScapes.maps : 1096 gambar pelatihan yang dikikis dari Google Mapsedges2shoes : gambar pelatihan 50K dari dataset UT Zappos50K.edges2handbags : 137K gambar tas amazon dari proyek Igan.Atau Anda dapat menggunakan dataset Anda sendiri dengan menempatkan gambar seperti:
data
├── YOUR_DATASET_NAME
│ ├── A
│ | ├── xxx.jpg (name doesn't matter)
│ | ├── yyy.jpg
│ | └── ...
│ └── B
│ ├── zzz.jpg
│ ├── www.jpg
│ └── ...
└── download_dataset.sh
Semua gambar dalam setiap dataset harus memiliki ukuran yang sama seperti menggunakan Imagemagick:
# for Ubuntu
$ sudo apt-get install imagemagick
$ mogrify -resize 256x256! -quality 100 -path YOUR_DATASET_NAME/A/*.jpg
$ mogrify -resize 256x256! -quality 100 -path YOUR_DATASET_NAME/B/*.jpg
# for Mac
$ brew install imagemagick
$ mogrify -resize 256x256! -quality 100 -path YOUR_DATASET_NAME/A/*.jpg
$ mogrify -resize 256x256! -quality 100 -path YOUR_DATASET_NAME/B/*.jpg
# for scale and center crop
$ mogrify -resize 256x256^ -gravity center -crop 256x256+0+0 -quality 100 -path ../A/*.jpg
Untuk melatih model:
$ python main.py --dataset=edges2shoes --num_gpu=1
$ python main.py --dataset=YOUR_DATASET_NAME --num_gpu=4
Untuk menguji model (gunakan load_path Anda):
$ python main.py --dataset=edges2handbags --load_path=logs/edges2handbags_2017-03-18_10-55-37 --num_gpu=0 --is_train=False
Hasil sampel dari model campuran Gaussian 2 dimensi. Ipython Notebook
# iterasi: 0 :

# iterasi: 10000 :

# iterasi: 11200 :
x_A -> G_AB(x_A) -> G_BA(G_AB(x_A)) (sepatu -> tas tangan -> sepatu)



x_B -> G_BA(x_B) -> G_AB(G_BA(x_B)) (tas tangan -> sepatu -> tas)



x_A -> G_AB(x_A) -> G_BA(G_AB(x_A)) -> G_AB(G_BA(G_AB(x_A))) -> G_BA(G_AB(G_BA(G_AB(x_A)))) -> ...







# iterasi: 9600 :
x_A -> G_AB(x_A) -> G_BA(G_AB(x_A)) (warna -> sketsa -> warna)



x_B -> G_BA(x_B) -> G_AB(G_BA(x_B)) (sketch -> color -> sketch)



x_A -> G_AB(x_A) -> G_BA(G_AB(x_A)) -> G_AB(G_BA(G_AB(x_A))) -> G_BA(G_AB(G_BA(G_AB(x_A)))) -> ...







# iterasi: 9500 :
x_A -> G_AB(x_A) -> G_BA(G_AB(x_A)) (warna -> sketsa -> warna)



x_B -> G_BA(x_B) -> G_AB(G_BA(x_B)) (sketsa -> warna -> sketsa)



x_A -> G_AB(x_A) -> G_BA(G_AB(x_A)) -> G_AB(G_BA(G_AB(x_A))) -> G_BA(G_AB(G_BA(G_AB(x_A)))) -> ...







# iterasi: 8350 :
x_B -> G_BA(x_B) -> G_AB(G_BA(x_B)) (gambar -> segmentasi -> gambar)



x_A -> G_AB(x_A) -> G_BA(G_AB(x_A)) (segmentasi -> gambar -> segmentasi)



# iterasi: 22200 :
x_B -> G_BA(x_B) -> G_AB(G_BA(x_B)) (gambar -> segmentasi -> gambar)



x_A -> G_AB(x_A) -> G_BA(G_AB(x_A)) (segmentasi -> gambar -> segmentasi)



Generasi dan rekonstruksi pada dataset segmentasi padat terlihat aneh yang tidak termasuk dalam kertas.
Saya kira pilihan naif kehilangan mean square error untuk rekonstruksi membutuhkan beberapa perubahan pada dataset ini.
# iterasi: 19450 :
x_B -> G_BA(x_B) -> G_AB(G_BA(x_B)) (gambar -> segmentasi -> gambar)



x_A -> G_AB(x_A) -> G_BA(G_AB(x_A)) (segmentasi -> gambar -> segmentasi)



Taehoon kim / @carpedm20