تنفيذ Pytorch للتعلم لاكتشاف العلاقات عبر المجال مع شبكات الخصومة التوليدية.

* جميع العينات في README.MD هي GENALDERT بواسطة الشبكة العصبية باستثناء الصورة الأولى لكل صف.
* بنية الشبكة مختلفة قليلاً (هنا) من رمز المؤلف.
أول تنزيل مجموعات البيانات (من PIX2PIX) مع:
$ bash ./data/download_dataset.sh dataset_name
facades : 400 صورة من مجموعة بيانات CMP Facades.cityscapes : 2975 صور من مجموعة التدريب من City Cscapes.maps : 1096 صور التدريب المكسورة من خرائط Googleedges2shoes : 50k صور تدريب من مجموعة بيانات UT Zappos50K.edges2handbags : 137K صور حقيبة يد Amazon من مشروع Igan.أو يمكنك استخدام مجموعة البيانات الخاصة بك عن طريق وضع صور مثل:
data
├── YOUR_DATASET_NAME
│ ├── A
│ | ├── xxx.jpg (name doesn't matter)
│ | ├── yyy.jpg
│ | └── ...
│ └── B
│ ├── zzz.jpg
│ ├── www.jpg
│ └── ...
└── download_dataset.sh
يجب أن يكون لجميع الصور في كل مجموعة بيانات نفس الحجم مثل استخدام 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
لتدريب نموذج:
$ python main.py --dataset=edges2shoes --num_gpu=1
$ python main.py --dataset=YOUR_DATASET_NAME --num_gpu=4
لاختبار نموذج (استخدم load_path ):
$ python main.py --dataset=edges2handbags --load_path=logs/edges2handbags_2017-03-18_10-55-37 --num_gpu=0 --is_train=False
نتيجة عينات من نماذج الخليط الغوسية ثنائية الأبعاد. دفتر Ipython
# التكرار: 0 :

# التكرار: 10000 :

# التكرار: 11200 :
x_A -> G_AB(x_A) -> G_BA(G_AB(x_A)) (shoe -> حقيبة يد -> حذاء)



x_B -> G_BA(x_B) -> G_AB(G_BA(x_B)) (حقيبة اليد -> حذاء -> حقيبة يد)



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)))) -> ...







# التكرار: 9600 :
x_A -> G_AB(x_A) -> G_BA(G_AB(x_A)) (color -> sketch -> color)



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)))) -> ...







# التكرار: 9500 :
x_A -> G_AB(x_A) -> G_BA(G_AB(x_A)) (color -> sketch -> color)



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)))) -> ...







# التكرار: 8350 :
x_B -> G_BA(x_B) -> G_AB(G_BA(x_B)) (صورة -> تجزئة -> صورة)



x_A -> G_AB(x_A) -> G_BA(G_AB(x_A)) (تجزئة -> صورة -> تجزئة)



# التكرار: 22200 :
x_B -> G_BA(x_B) -> G_AB(G_BA(x_B)) (صورة -> تجزئة -> صورة)



x_A -> G_AB(x_A) -> G_BA(G_AB(x_A)) (تجزئة -> صورة -> تجزئة)



يبدو التوليد وإعادة الإعمار على مجموعة بيانات التجزئة الكثيفة غريبة غير مدرجة في الورقة.
أعتقد أن الاختيار الساذج لفقدان mean square error لإعادة الإعمار يحتاج إلى بعض التغيير في مجموعة البيانات هذه.
# التكرار: 19450 :
x_B -> G_BA(x_B) -> G_AB(G_BA(x_B)) (صورة -> تجزئة -> صورة)



x_A -> G_AB(x_A) -> G_BA(G_AB(x_A)) (تجزئة -> صورة -> تجزئة)



Taehoon Kim / @carpedm20