File size: 177,221 Bytes
d8a3fb9
 
 
 
 
 
 
 
 
83fcd56
 
 
 
 
 
 
960a37e
83fcd56
 
 
d8a3fb9
 
960a37e
d8a3fb9
 
 
 
 
 
 
 
 
 
 
960a37e
d8a3fb9
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
960a37e
d8a3fb9
 
 
 
 
 
 
 
 
 
960a37e
d8a3fb9
 
 
 
 
 
 
 
 
 
960a37e
d8a3fb9
 
 
 
 
 
 
 
 
 
960a37e
d8a3fb9
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
e7be653
d8a3fb9
 
 
 
 
 
 
 
e7be653
d8a3fb9
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
e7be653
d8a3fb9
 
 
 
 
 
 
 
e7be653
d8a3fb9
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
e7be653
d8a3fb9
 
 
 
 
 
 
 
e7be653
d8a3fb9
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
e7be653
d8a3fb9
 
 
 
 
 
 
 
e7be653
d8a3fb9
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
e7be653
d8a3fb9
 
 
 
 
 
 
 
e7be653
d8a3fb9
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
e7be653
d8a3fb9
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
e7be653
d8a3fb9
 
 
 
 
 
 
 
 
e7be653
d8a3fb9
 
 
 
 
e7be653
 
d8a3fb9
 
 
 
e7be653
d8a3fb9
 
 
 
 
 
 
 
 
 
 
960a37e
d8a3fb9
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
e7be653
d8a3fb9
 
 
 
 
 
 
 
 
e7be653
d8a3fb9
 
 
 
 
e7be653
 
d8a3fb9
 
 
 
e7be653
d8a3fb9
 
 
 
 
 
 
 
 
 
 
960a37e
d8a3fb9
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
e7be653
d8a3fb9
 
 
 
 
 
 
 
 
e7be653
d8a3fb9
 
 
 
 
e7be653
 
d8a3fb9
 
 
 
e7be653
d8a3fb9
 
 
 
 
 
 
 
 
 
 
960a37e
d8a3fb9
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
e7be653
d8a3fb9
 
 
 
 
 
 
 
 
e7be653
d8a3fb9
 
 
 
 
e7be653
 
d8a3fb9
 
 
 
e7be653
d8a3fb9
 
 
 
 
 
 
 
 
 
 
960a37e
d8a3fb9
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
e7be653
d8a3fb9
 
 
 
 
 
 
 
 
e7be653
d8a3fb9
 
 
 
 
e7be653
 
d8a3fb9
 
 
 
e7be653
d8a3fb9
 
 
 
 
 
 
 
 
 
 
960a37e
d8a3fb9
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
e7be653
d8a3fb9
 
 
 
 
 
 
 
 
e7be653
d8a3fb9
 
 
 
 
e7be653
 
d8a3fb9
 
 
 
e7be653
d8a3fb9
 
 
 
 
 
 
 
 
 
 
960a37e
d8a3fb9
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
e7be653
d8a3fb9
 
 
 
 
 
 
 
 
e7be653
d8a3fb9
 
 
 
 
e7be653
 
d8a3fb9
 
 
 
e7be653
d8a3fb9
 
 
 
 
 
 
 
 
 
 
960a37e
d8a3fb9
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
e7be653
d8a3fb9
 
 
 
 
 
 
 
 
e7be653
d8a3fb9
 
 
 
 
e7be653
 
d8a3fb9
 
 
 
e7be653
d8a3fb9
 
 
 
 
 
 
 
 
 
 
960a37e
d8a3fb9
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
e7be653
d8a3fb9
 
 
 
 
 
 
 
 
 
 
960a37e
d8a3fb9
 
 
 
 
 
 
 
 
 
 
 
 
e7be653
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
d8a3fb9
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
960a37e
d8a3fb9
 
 
 
960a37e
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# ROC Curves related to StyleGAN3 generated image detection"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "# download and unzip pkls with results\n",
    "!wget https://www.dropbox.com/s/h19xrb3v77llxoe/results.zip?dl=0 --output-document results.zip\n",
    "!unzip results.zip"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "import os\n",
    "import pandas as pd\n",
    "import numpy as np\n",
    "from sklearn.metrics import roc_curve, roc_auc_score"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "import matplotlib as mpl\n",
    "mpl.use(\"pgf\")\n",
    "pgf_with_rc_fonts = {\n",
    "    \"font.family\": \"serif\",\n",
    "    \"font.serif\": [],                   # use latex default serif font\n",
    "    \"font.sans-serif\": [\"DejaVu Sans\"], # use a specific sans-serif font\n",
    "}\n",
    "mpl.rcParams.update(pgf_with_rc_fonts)\n",
    "\n",
    "import matplotlib.pyplot as plt\n",
    "fontsize = 18\n",
    "plt.rc('text', usetex=True)\n",
    "plt.rc('font', family='sans',size=fontsize)\n",
    "plt.rc('legend',fontsize=fontsize)\n",
    "plt.rc('xtick',labelsize=fontsize)\n",
    "plt.rc('ytick',labelsize=fontsize)\n",
    "plt.rc('axes',labelsize=fontsize,titlesize=fontsize)\n",
    "plt.rc('lines',linewidth=2)\n",
    "%matplotlib inline"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "def scores_voting(row):\n",
    "    scores_vot = row['scores'][:, row['maj_voting']]\n",
    "    return scores_vot"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [],
   "source": [
    "def max_scores_voting(row):\n",
    "    max_score_vot = np.nanmax(row['scores_maj_voting']) if row['maj_voting'] == 1 else -np.nanmax(row['scores_maj_voting'])\n",
    "    return max_score_vot"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [],
   "source": [
    "def scores_fusion(row):\n",
    "    fused_score = np.mean([row['image_score_A'], row['image_score_B'], row['image_score_C'], row['image_score_D'], row['image_score_E']])\n",
    "    return fused_score"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [],
   "source": [
    "def plot_roc_auc(y_true, y_pred):\n",
    "    auc = roc_auc_score(y_true, y_pred)\n",
    "    print(f'AUC: {auc}')\n",
    "    fpr, tpr, thr = roc_curve(y_true, y_pred)\n",
    "    \n",
    "    plt.figure(figsize=(6,6))\n",
    "    ax = plt.gca()\n",
    "    ax.plot(fpr, tpr, label=f'AUC: {auc:.6f}')\n",
    "    plt.xlabel('$\\mathrm{FPR}$')\n",
    "    plt.ylabel('$\\mathrm{TPR}$')\n",
    "    plt.xlim(-0.01, 1.01);\n",
    "    plt.ylim(-0.01, 1.01);\n",
    "    plt.legend(loc='lower right')\n",
    "    plt.grid();"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Train method A"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [],
   "source": [
    "df_cnn_images_A = pd.read_pickle('results/method_A.pkl')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [],
   "source": [
    "df_cnn_images_A['hard_predictions'] = df_cnn_images_A['scores'].apply(np.argmax, axis=1)\n",
    "df_cnn_images_A['maj_voting'] = df_cnn_images_A['hard_predictions'].map(np.any).astype(int)\n",
    "df_cnn_images_A['scores_maj_voting'] = df_cnn_images_A.apply(scores_voting, axis=1)\n",
    "df_cnn_images_A['image_score'] = df_cnn_images_A.apply(max_scores_voting, axis=1)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Train method B"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [],
   "source": [
    "df_cnn_images_B = pd.read_pickle('results/method_B.pkl')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [],
   "source": [
    "df_cnn_images_B['hard_predictions'] = df_cnn_images_B['scores'].apply(np.argmax, axis=1)\n",
    "df_cnn_images_B['maj_voting'] = df_cnn_images_B['hard_predictions'].map(np.any).astype(int)\n",
    "df_cnn_images_B['scores_maj_voting'] = df_cnn_images_B.apply(scores_voting, axis=1)\n",
    "df_cnn_images_B['image_score'] = df_cnn_images_B.apply(max_scores_voting, axis=1)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Train method C"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [],
   "source": [
    "df_cnn_images_C = pd.read_pickle('results/method_C.pkl')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [],
   "source": [
    "df_cnn_images_C['hard_predictions'] = df_cnn_images_C['scores'].apply(np.argmax, axis=1)\n",
    "df_cnn_images_C['maj_voting'] = df_cnn_images_C['hard_predictions'].map(np.any).astype(int)\n",
    "df_cnn_images_C['scores_maj_voting'] = df_cnn_images_C.apply(scores_voting, axis=1)\n",
    "df_cnn_images_C['image_score'] = df_cnn_images_C.apply(max_scores_voting, axis=1)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Train method D"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [],
   "source": [
    "df_cnn_images_D = pd.read_pickle('results/method_D.pkl')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [],
   "source": [
    "df_cnn_images_D['hard_predictions'] = df_cnn_images_D['scores'].apply(np.argmax, axis=1)\n",
    "df_cnn_images_D['maj_voting'] = df_cnn_images_D['hard_predictions'].map(np.any).astype(int)\n",
    "df_cnn_images_D['scores_maj_voting'] = df_cnn_images_D.apply(scores_voting, axis=1)\n",
    "df_cnn_images_D['image_score'] = df_cnn_images_D.apply(max_scores_voting, axis=1)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Train method E"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [],
   "source": [
    "df_cnn_images_E = pd.read_pickle('results/method_E.pkl')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [],
   "source": [
    "df_cnn_images_E['hard_predictions'] = df_cnn_images_E['scores'].apply(np.argmax, axis=1)\n",
    "df_cnn_images_E['maj_voting'] = df_cnn_images_E['hard_predictions'].map(np.any).astype(int)\n",
    "df_cnn_images_E['scores_maj_voting'] = df_cnn_images_E.apply(scores_voting, axis=1)\n",
    "df_cnn_images_E['image_score'] = df_cnn_images_E.apply(max_scores_voting, axis=1)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Fusion"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [],
   "source": [
    "df_cnn_images_fus = df_cnn_images_A.rename(columns={'image_score': 'image_score_A'})\n",
    "df_cnn_images_fus['image_score_B'] = df_cnn_images_B['image_score']\n",
    "df_cnn_images_fus['image_score_C'] = df_cnn_images_C['image_score']\n",
    "df_cnn_images_fus['image_score_D'] = df_cnn_images_D['image_score']\n",
    "df_cnn_images_fus['image_score_E'] = df_cnn_images_E['image_score']\n",
    "\n",
    "df_cnn_images_fus['fused_scores'] = df_cnn_images_fus.apply(scores_fusion, axis=1)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# ROC 1) afhq-v2-test vs alias_free_r_afhqv2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [],
   "source": [
    "test_synth_folder = 'alias-free-r-afhqv2-512x512'\n",
    "test_real_folder = 'afhq-v2-test'"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [],
   "source": [
    "df_cnn_images_test_synth = df_cnn_images_fus[df_cnn_images_fus['image'].str.contains(test_synth_folder)] \n",
    "df_cnn_images_test_real = df_cnn_images_fus[df_cnn_images_fus['image'].str.contains(test_real_folder)]  \n",
    "df_cnn_images_test = pd.concat([df_cnn_images_test_synth, df_cnn_images_test_real]).reset_index().drop('index', axis=1)\n",
    "df_cnn_images_test_1 = df_cnn_images_test.copy()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "AUC: 0.9991032719836401\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x432 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plot_roc_auc(df_cnn_images_test['label'].values, df_cnn_images_test['fused_scores'].values)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# ROC 2) afhq-v2-test vs alias_free_t_afhqv2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [],
   "source": [
    "test_synth_folder = 'alias-free-t-afhqv2-512x512'\n",
    "test_real_folder = 'afhq-v2-test'"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [],
   "source": [
    "df_cnn_images_test_synth = df_cnn_images_fus[df_cnn_images_fus['image'].str.contains(test_synth_folder)] \n",
    "df_cnn_images_test_real = df_cnn_images_fus[df_cnn_images_fus['image'].str.contains(test_real_folder)]\n",
    "df_cnn_images_test = pd.concat([df_cnn_images_test_synth, df_cnn_images_test_real]).reset_index().drop('index', axis=1)\n",
    "df_cnn_images_test_2 = df_cnn_images_test.copy()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "AUC: 0.9999360599863667\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x432 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plot_roc_auc(df_cnn_images_test['label'].values, df_cnn_images_test['fused_scores'].values)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# ROC 3) Metfaces-in-the-wild-test vs alias_free_r_metfacesu"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [],
   "source": [
    "test_synth_folder = 'alias-free-r-metfacesu-1024x1024'\n",
    "test_real_folder = 'Metfaces-in-the-wild-test'"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [],
   "source": [
    "df_cnn_images_test_synth = df_cnn_images_fus[df_cnn_images_fus['image'].str.contains(test_synth_folder)] \n",
    "df_cnn_images_test_real = df_cnn_images_fus[df_cnn_images_fus['image'].str.contains(test_real_folder)]  \n",
    "df_cnn_images_test = pd.concat([df_cnn_images_test_synth, df_cnn_images_test_real]).reset_index().drop('index', axis=1)\n",
    "df_cnn_images_test_3 = df_cnn_images_test.copy()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "AUC: 0.9919059375000001\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x432 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plot_roc_auc(df_cnn_images_test['label'].values, df_cnn_images_test['fused_scores'].values)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# ROC 4) Metfaces-in-the-wild-test vs alias_free_t_metfacesu"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [],
   "source": [
    "test_synth_folder = 'alias-free-t-metfacesu-1024x1024'\n",
    "test_real_folder = 'Metfaces-in-the-wild-test'"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [],
   "source": [
    "df_cnn_images_test_synth = df_cnn_images_fus[df_cnn_images_fus['image'].str.contains(test_synth_folder)] \n",
    "df_cnn_images_test_real = df_cnn_images_fus[df_cnn_images_fus['image'].str.contains(test_real_folder)]  \n",
    "df_cnn_images_test = pd.concat([df_cnn_images_test_synth, df_cnn_images_test_real]).reset_index().drop('index', axis=1)\n",
    "df_cnn_images_test_4 = df_cnn_images_test.copy()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "AUC: 0.9964493749999999\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x432 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plot_roc_auc(df_cnn_images_test['label'].values, df_cnn_images_test['fused_scores'].values)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# ROC 5) FFHQ-in-the-wild-20k vs alias_free_r_no_compression"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {},
   "outputs": [],
   "source": [
    "test_synth_folder = 'generated-ours-r-ffhq-u-8324-2-24400'\n",
    "test_real_folder = 'FFHQ-in-the-wild-20k'"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {},
   "outputs": [],
   "source": [
    "df_cnn_images_test_synth = df_cnn_images_fus[df_cnn_images_fus['image'].str.contains(test_synth_folder)] \n",
    "df_cnn_images_test_real = df_cnn_images_fus[df_cnn_images_fus['image'].str.contains(test_real_folder)]  \n",
    "df_cnn_images_test = pd.concat([df_cnn_images_test_synth, df_cnn_images_test_real]).reset_index().drop('index', axis=1)\n",
    "df_cnn_images_test_5 = df_cnn_images_test.copy()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "AUC: 0.99999998\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x432 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plot_roc_auc(df_cnn_images_test['label'].values, df_cnn_images_test['fused_scores'].values)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# ROC 6) FFHQ-in-the-wild-20k vs alias_free_t_no_compression"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {},
   "outputs": [],
   "source": [
    "test_synth_folder = 'generated-ours-t-ffhq-u-8325-4-25000'\n",
    "test_real_folder = 'FFHQ-in-the-wild-20k'"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {},
   "outputs": [],
   "source": [
    "df_cnn_images_test_synth = df_cnn_images_fus[df_cnn_images_fus['image'].str.contains(test_synth_folder)] \n",
    "df_cnn_images_test_real = df_cnn_images_fus[df_cnn_images_fus['image'].str.contains(test_real_folder)]   \n",
    "df_cnn_images_test = pd.concat([df_cnn_images_test_synth, df_cnn_images_test_real]).reset_index().drop('index', axis=1)\n",
    "df_cnn_images_test_6 = df_cnn_images_test.copy()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "AUC: 0.9999986750000001\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x432 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plot_roc_auc(df_cnn_images_test['label'].values, df_cnn_images_test['fused_scores'].values)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# ROC 7) FFHQ-in-the-wild-20k vs alias_free_r_compression"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "metadata": {},
   "outputs": [],
   "source": [
    "test_synth_folder = 'config-r'\n",
    "test_real_folder = 'FFHQ-in-the-wild-20k'"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "metadata": {},
   "outputs": [],
   "source": [
    "df_cnn_images_test_synth = df_cnn_images_fus[df_cnn_images_fus['image'].str.contains(test_synth_folder)] \n",
    "df_cnn_images_test_real = df_cnn_images_fus[df_cnn_images_fus['image'].str.contains(test_real_folder)]  \n",
    "df_cnn_images_test = pd.concat([df_cnn_images_test_synth, df_cnn_images_test_real]).reset_index().drop('index', axis=1)\n",
    "df_cnn_images_test_7 = df_cnn_images_test.copy()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "AUC: 0.9995815349999999\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x432 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plot_roc_auc(df_cnn_images_test['label'].values, df_cnn_images_test['fused_scores'].values)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# ROC 8) FFHQ-in-the-wild-20k vs alias_free_t_compression"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "metadata": {},
   "outputs": [],
   "source": [
    "test_synth_folder = 'config-t'\n",
    "test_real_folder = 'FFHQ-in-the-wild-20k'"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "metadata": {},
   "outputs": [],
   "source": [
    "df_cnn_images_test_synth = df_cnn_images_fus[df_cnn_images_fus['image'].str.contains(test_synth_folder)] \n",
    "df_cnn_images_test_real = df_cnn_images_fus[df_cnn_images_fus['image'].str.contains(test_real_folder)]  \n",
    "df_cnn_images_test = pd.concat([df_cnn_images_test_synth, df_cnn_images_test_real]).reset_index().drop('index', axis=1)\n",
    "df_cnn_images_test_8 = df_cnn_images_test.copy()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "AUC: 0.9995660525000001\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAZQAAAGCCAYAAADHSjUmAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjMsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+AADFEAAAcy0lEQVR4nO3dz28b6Z3n8c934m43Ejhdot0Q+pJ46AUGuW1o9pw12xKwwAB7mJXcew2wofYP2LHG+w841M4sctslZ4EcctmJhDlNAw2IQXielTnAHNLYg4meILe2aU7bSbqTNr57qCq6RBXFXw9ZpPh+AQJc9bBKDx+T9VE9T9VT5u4CAGBef1R0BQAA1wOBAgAIgkABAARBoAAAgiBQAABBECgAgCAIFABAEDeW/QvNLJL0QNKeux9MuE1NUi9ZLLv78aLqBwCYzVIDxcwqksqKw6E84TY1ST13P02Wy2bWcPfDxdUUADAtK+JO+SRY/tbd70/w2ifDrzOzp+5+b9y2d+7c8bt37w6Wf/Ob3+hb3/rWDDW+PmiDGO0Qox1og1S2HZ48efLM3d+bdh9L7/KaRtI9Vskp6pvZrru3rtr+7t27Oj8/Hyy3223t7OyEreSaoQ1itEOMdqANUtl2MLN/mWUfKx0oirvF+jnrJ+4yu8oPfvKP+sX/+3ze3ayfTz4uugargXaI0Q60QeKznfm2X/VAKenNYHxWX1KUt0Ey5lKTpO3tbbXb7UHZq1ev9B/+5hP98+evw9cUANZc9ng5i1UPlKm5e1NSU5Kq1apnT2Xb7bb++fPfXHj9n/3Je/rJD/50mVUsFKf3MdohRjvQBqkQ7bAOgVLKWZd7djLO/3jy5eDfn/3oz2etDwAgx6rf2Hiu/PAoSepMu7O0q+vP/mTqixcAAGOsdKC4e19SN7naKysad4XXVTapiwsAlqWoQMnrxkpvWjwZCpC6kkH25DUVSTOHCQBgMZZ9p3xZ0r6kPUkVM6tLepoMpEvxpcC7igOnL8WD7GZWM7Ndxd1fZe6SB4DVs9RAcfeupOPkJ6+8JWkrZ30z5+UAgBWy0mMoAID1sTGB8oOf/GPRVQCAa21jAiWdYoVLhgFgMTYmUFJcMgwAi7FxgQIAWAwCBQAQBIECAAiCQAEABEGgAACCIFAAAEEQKACAIAgUAEAQBAoAIAgCBQAQBIECAAiCQAEABEGgAACCIFAAAEEQKACAIAgUAEAQBAoAIAgCBQAQBIECAAiCQAEABEGgAACCIFAAAEEQKACAIAgUAEAQBAoAIAgCBQAQBIECAAiCQAEABEGgAACCIFAAAEEQKACAIAgUAEAQBAoAIAgCBQAQBIECAAiCQAEABEGgAACCIFAAAEEQKACAIAgUAEAQBAoAIAgCBQAQBIECAAiCQAEABEGgAACCIFAAAEEQKACAIG4U8UvNrCaplyyW3f14wm1SkaSmu/cXUT8AwPSWHihpmLj7abJcNrOGux9esc1DDQWImTUkjdwGALBcRXR5HaZhIknu3pW0O2abD3LORvpmFgWvHQBgJksNlCQAKjlFfTO7KlTKOeURXV4AsDqWfYZSlpQXAr2kbJQjSWdmVpcG3WaN8NUDAMxq2WMoJb0ZjM/qKx5oz+XuLTO7L+nnyXjKnrt38l6bhE1Nkra3t9Vuty+UDy9vmlevXm18G0i0Q4p2oA1SIdqhkKu8pmVmZUlVSX8s6ZHis5VDd28OvzZZ15SkarXqOzs7ccEnH0uSBssbqt1ub3wbSLRDinagDVIh2qGIQflSzrpxg+tH7t509767H0m6L6k+ZtwFALBEyw6Uc+WHR0nSqC6sXUln2XVJd9eBpL3QFQQAzGapgZJcldXNudw3cvfWlLs7l/Q8TM0AAPMqosurrmTQXJLMrCKplVkum9lJGjpJ0HyUs5+akrESAEDxlj4o7+5NM6slXVmR4qlXsne8lxXf6FjSm0uMf5hcMvw0WY4knXIfCgCsjkKu8sq7OitT1pK0NbSur/heFADAimK2YQBAEAQKACAIAgUAEASBAgAIgkABAARBoAAAgiBQAABBECgAgCAIFABAEAQKACAIAgUAEASBAgAIgkABAARBoAAAgiBQAABBECgAgCAIFABAEAQKACAIAgUAEASBAgAIgkABAARBoAAAgiBQAABBECgAgCAIFABAEAQKACAIAgUAEASBAgAIgkABAARBoAAAgiBQAABBECgAgCAIFABAEAQKACAIAgUAEASBAgAIgkABAARBoAAAgiBQAABBECgAgCAIFABAEAQKACAIAgUAEASBAgAIgkABAARBoAAAgiBQAABBECgAgCAIFABAEAQKACAIAgUAEMSNIn6pmdUk9ZLFsrsfT7jdQ0n9dFt3P11MDQEA01p6oKRhkoaBmZXNrOHuh2O2O5N04O79ZPmFmbXSZQBAsYo4Qzl09/vpgrt3zWz3qg2SM5OTofC4T5gAwOpY6hiKmUWSKjlF/TGh8khSK7vC3bsh6wYAmM+yz1DKisdAhvWSskuSEIqSf+8n21ckNTlDAYDVsexAKenNYHxWX0lo5Kim5Zlxl3NJJ5L2hl+cjNHUJGl7e1vtdvtC+fDypnn16tXGt4FEO6RoB9ogFaIdCrnKawaRpEEXl7v3zaxkZhV372Rf6O5NSU1JqlarvrOzExd88rEkabC8odrt9sa3gUQ7pGgH2iAVoh2KuA+llLNu1NmJlARJTvdWT9KVg/kAgOVZdqCcKz88SpI6OevHDb4zhgIAK2KpgZKcZXSTgfasyN1bedskOmY2PGhfVhxQAIAVUESXV13JoLkkmVlFmUuCkxsdT4ZC5yj5yW7THR4/AQAUZ+mD8u7eNLNact9JpHjqlexd8mXFYyMlJV1a7t4ysyi5wVGSbrv7pSu8AADFKeQqr+RKrFFlLUlbOeuZtwsAVhizDQMAgiBQAABBECgAgCAIFABAEAQKACAIAgUAEESwQDGzb4faFwBg/YQ8Q7lnZv854P4AAGtk4kAZdwbi7v+k/GedAAA2wNg75c3sLyT9b0nvmtmZu//7TNm/VfwArHuKn6LYl/T3C6orAGCFXRkoZvZ9Sf9N0g8Vh8Wemf1PxRM1dvTmCYx9xTP/Ho3YFQDgmht3hlJz92pm+edm9peSHkk6SLq5AAAYO4aS93CrpqQeYQIAyBoXKH5phfu/Kj9oAAAbbNbLhl/krTSzx3PUBQCwxsaNoRya2W1Jz4fWf5A8NTHrnuJBegDABhoXKLcVB8W9nLI/HVqONOLMBQBw/Y0LlKa7/9WkOzOzH81ZHwDAmrpyDGWaMJnl9QCA62OiQXkzu2tmf2FmdxdbHQDAuhobKGb2vxRfJnwq6amZ/Z+F1woAsHauDBQz+2Hyzy13/yPFg/SfMaswAGDYuDOUirv/l+RmRrl7Pxkn+TeLrxoAYJ2MC5R/HbH+aeiKAADW27hAGb6hMcVzTwAAF0w9l9dV683sv85XHQDAuppn6pUPcl6/L+mvg9QMALBW5pl6JW8dc3kBwIYKPfXKX85ZHwDAmgo99cp/n686AIB1Ne6Z8ncVzyJ8T/FAfMvdv1h8tQAA62bcVV4dSbuKg+TvCRMAwCjjxlBa7s5VWwCAscadoUz17Hgz+3dz1AUAsMbGBcqzKfe3N2tFAADrbVyX138ys7z7TUZ5IOnRHPUBAKypcYEiSTbhvripEQA22LhA+btp7i3hmfIAsLnGjaFMe9ZxNmtFAADrbVyglKfZmbv/fI66AADW2LhA2eNxvwCASYwbQ/lQUsnM/qOYegUAcIUrA8Xd/2lZFQEArLdxXV4AAEyEQAEABEGgAACCIFAAAEEQKACAIAgUAEAQBAoAIAgCBQAQxCTT1wdnZjVJvWSx7O7HU25/4u4H4WsGAJjV0gMlDRN3P02Wy2bWcPfDCbevSNpfZB0BANMr4gzl0N3vpwvu3jWz3Sm2n2oGZADAcix1DMXMIkmVnKL+JKFiZvvpmQ0AYLUse1C+LKmfs76nMWceZlaW1F1EpQAA81t2l1dJbwbjs/qSojHbViY5O0nGaGqStL29rXa7faF8eHnTvHr1auPbQKIdUrQDbZAK0Q6FXOU1raQ7rDXJa929KakpSdVq1Xd2duKCTz6WJA2WN1S73d74NpBohxTtQBukQrRDEfeh5D2nfuTZSTLuInfP6yoDAKyIZZ+hnCs/PEqSOiO2qUmDy4UHzOyhpH5yRgIAKNhSA8Xd+2bWNbNo6IwjcvfcLq28mx7NrD7tzZAAgMUqosurruSsQxqcebQyy2UzO0m7ugAA62HpgZJ0UfXNbNfM9iXtDt0lX5a0q5yxlmSbRvLvxpQ3RAIAFqiQq7yuGvdIur62rihrSZpomhYAwPIw2zAAIAgCBQAQBIECAAiCQAEABEGgAACCIFAAAEEQKACAIAgUAEAQBAoAIAgCBQAQBIECAAiCQAEABEGgAACCIFAAAEEQKACAIAgUAEAQBAoAIAgCBQAQBIECAAiCQAEABEGgAACCIFAAAEEQKACAIAgUAEAQBAoAIAgCBQAQBIECAAiCQAEABEGgAACCIFAAAEEQKACAIAgUAEAQBAoAIAgCBQAQBIECAAiCQAEABEGgAACCIFAAAEEQKACAIAgUAEAQBAoAIAgCBQAQBIECAAiCQAEABEGgAACCIFAAAEEQKACAIAgUAEAQBAoAIAgCBQAQxI0ifqmZ1ST1ksWyux9PuI0k3ZMUSTpy9/6CqggAmNLSAyUNE3c/TZbLZtZw98OrtnH3ZmZ5X9ITxeECAFgBRXR5HaZhIknu3pW0O+rFZlbWUHAk25eSYAEArIClBoqZRZIqOUV9MxsZKpJqOet6kkpBKgYAmNuyu7zKkvLGPXpJ2SXJGczWiH2dh6saAGAey+7yKunNYHxWX/FA+0SScZiWu3dCVQwAMJ9CrvKaRzKmcuju90eU15R0kW1vb6vdbl8oH17eNK9evdr4NpBohxTtQBukQrRDEYGSN+4x8dmJpLqkD0cVJleDNSWpWq36zs5OXPDJx5KkwfKGarfbG98GEu2Qoh1og1SIdlh2l9e58sOjJGls95WZ1cX9JwCwkpYaKEkQdJOrvbIid29dtW3SldVIBunTdVddGQYAWKIi7kOpK3MZsJlVJLUyy2UzO8mGThIc52mYmFlEmADAaln6GIq7N82slgRCpHjqlexd8mXFNzqWFN+fUpZ0JklmNry7vMuJAQAFKOQqr+w0KjllLWWCIjkruZQkAIDVwmzDAIAgCBQAQBAECgAgCAIFABAEgQIACIJAAQAEQaAAAIIgUAAAQRAoAIAgCBQAQBAECgAgCAIFABAEgQIACIJAAQAEQaAAAIIgUAAAQRAoAIAgCBQAQBAECgAgiEKeKQ9cJ1999ZV6vZ5evnyp169fF12dqbz77rv69NNPi65GoTalDd5++23duXNH77777sJ+B4ECzOGrr77Sr371K21tbenu3bt66623ZGZFV2tiL1++1K1bt4quRqE2oQ3cXb/73e/061//Wjdv3tQ777yzkN9Dlxcwh16vp62tLd25c0dvv/32WoUJNoeZ6Zvf/Kbu3Lmjzz//fGG/h0AB5vDy5Ut9+9vfLroawERu3bqlL7/8cmH7J1CAObx+/VpvvfVW0dUAJnLjxg19/fXXC9s/gQLMiW4urItFf1YJFABAEAQKACAIAgUAEASBAmBm/X5/ZNnR0ZG2trZ07949HR8fXyhrNpu6d++e9vb21Ol0Lm17fHyso6MjHR8fq9ls6vT0VJJ0enp65e9EsbixEcBMTk9P1Wg0dHZ2llter9fV7XZVLpf18OHDC2W1Wk2S9ODBA0VRNFjf7XZ1eHiow8PDC9v0+301m03V63U9efJk6ro2m02VSqXB7xiuT97r+/2+oihSv9+/9Pp5y1utlhqNhh49eqQoinR6eqooigbtkjo+PlYURYO67+/vT1W+dO5+bX/u37/vqe8e/YN/9+gffNP94he/KLoKKyFUO/zyl78Msp+ifPHFFzNvW6/XXZK/ePFi5Gv29/f94cOHuWUnJyeX1lUqFT87O8t9/YsXL8b+vjyNRuPC73r69KnXarXB8nAb1Ot1bzQaF+pZr9eDlafrKpWKS/IoinLbaHd398J7jaLowvK48lFGfWaz3wlJ5z7DMZczFABT6/f7qlQqqlQq+tnPfnbpL+tZHB8fq1QqaXd3N7c87y/4STQajQtnNeVyWa1Wa+Trj46OFB9TY/v7+9ra2hqcZcxbnrrqTOv4+FgHBwcXzt6ePHkyWB5XXhTGUABMrdVqaXd3V48ePVKj0Qiyz0ajoYODgytfs7e3N9U++/1+7hhNFEW5odLpdHIPyqVSSZ1OZ+7yST1+/PhSsJbL5YnLi8IZCrAAd//q46KrkOuzH/150P3t7+/r4OBgMFYyj263q2q1Ovb3pU5PT/X48eMr/9LvdrsjD/DdbvfS+l6vl7ufKIpG7mua8kqlMljXarUG4yydTmdwBtPv9wcXHqRjK51OR7VabTAmc1V5kQgUAFMZPjDWajU1Gg3V6/W59jmt3d3dsQfQXq83GLDOSg/Mw6rVau76brerbrerWq02V3kqbb80hEulkvb29nR2dqbz8/NB/dIArVarOjg4mKi8SAQKsAChzwRWSbfbvdDdcnh4qA8//HCuQJnl7CaKopHjLbNKx2lOT08HB+tOpzOo37zlqeHlSqWi8/PzQej0+/0Lr4miSL1eb9BtdlV5NuyXjTEUAFM5OzvT8fHx4Ccdi7hqoHsS5XJZ5+fnV75mljOZvG6sq+5laTQa6na7arVaF95TeqCet3yU9GKBbDhllUqlicqLxBkKgIl1Op3BvRNZz58/V6PRuHTG8MEHH+jp06e5+xo+0B8eHurk5OTKK7ny/tq/yqgurF6vd+UBfviKrOExonnKu92u7t+/rxcvXuT+7qveXxRFY8uLxBkKgImNGnj+6KOPBnezZ+3v70/8V/PDhw8vdOuEkB6Ah0Ol3++P7C4b/v2dTkfVanVwIJ+3XJIePXp06fdmuxIrlcqls7HsRQvjyotCoACYSL/fH3kVVKVSUblcvhQq5XJZ+/v7uVOvPHjw4NJ+Tk5OdHR0lBtCzWbzwlVe/X5/orA6OjpSs9kcLHc6nQthMryf9Kq11OPHjy9cGj1veblcvhTKp6enevDgwSB06vX6hTGp9MwsPasaV14Uy96Ac91Uq1VP+2TTyziv82DpJNrttnZ2doquRuFCtcOnn36q733ve/NXqCCTPk+91Wrp8PBQUnzQHz5wNZtNHR0dSYr/+s6biuTp06e6ffu2pPjM5aqum2wApQff4a6wSS4bzv7+9ExleOqVn/70p/rxj3882E96OW+v1xtcSZWt67zl2TpJb8Zzhtvs9PR0EEzPnz+/dNHDuPJRRn1ms98JM3vi7lOf7hAoG4ZAiREosUkD5TrbtDZYZKDQ5QUACIJAAQAEQaAAAIIgUAAAQRAoAIAgCBRgTtf5SklcL4v+rBIowBy+8Y1v6A9/+EPR1QAm8vXXX+vGjcXNuEWgAHO4deuWvvjii6KrAUzk5cuXeueddxa2fwIFmEOpVNKLFy/07Nkz/f73v6f7CyvJ3fXb3/5Wz54903vvvbew31PIbMNmVpOUTgpUdvfjq14/6zbAot28eVPf+c531Ov19Nlnn+n169dFV2kqX3755UL/Yl0Hm9IGN2/e1Pb29kLf69IDJQ0Gdz9Nlstm1nD3w5DbAMty8+ZNvf/++3r//feLrsrU2u22vv/97xddjULRBuEUcYZy6O730wV375rZuMeuzbINAGCJljqGYmaRpLz5lfujAmKWbQAAy7fsQfmypLxnb/aSslDbAACWbNmBUtKbgfWsvqRRz66cZRsAwJJdu2fKJwP4NUna3t5Wu92+UD68vGlevXq18W0g0Q4p2oE2SIVohyICpZSzbtyZxsTbuHtTUlOKH7CVPjDmsx0eLiXRBinaIUY70AapEO2w7C6vc+UHQUlSJ+A2AIAlW/ojgM3sqaT77t7PrnP3eyG3SV7zuaR/yay6I+nZzJW/HmiDGO0Qox1og1S2Hb7r7lPfUl9El1dd8RjHsSSZWUVSKy00s3Lymh9mAuTKbUYZbhAzO5/lOcnXCW0Qox1itANtkArRDksPFHdvmlktuYckUjyNSvaO97KkXcVdWv0JtwEAFKyQq7ySgfNRZS1JW9NsAwAo3qbNNkwo0QYp2iFGO9AGqbnbYemD8gCA62nTzlAAAAtCoAAAgrg2U6/w0K7YHO0gSfcUX0V3lL3nZ93M+/9qZifufhC+Zss1azuY2UPFV1j2JCl9DtG6mvM7IcXfiea6fieSGdsfSNqb9HM983fI3df+R/E9KvuZ5bKkRuhtVv1n1nYYWt6X9LTo97LMNhjavhJ/LYp/L0W0g6QzSVFm+UV2ed1+ZvxOPBx+z+t6bEg+z/vJz5NFfnbc/doEyqWGGndQnGWbVf+Z9j0lH5R6zvoX2Q/UOv3M+/+afPG86PdRRDskB9LhPzDKRb+XAtrhJGddfc2DtTJFoMz8HVr7MRQe2hWb4z3Vctb1lD8h50qb9//VzPZ9zbt3pLna4ZGGZqBw927Iui3THO1QzimPfE27vKYx73do7QNFPLQrNfV7cveuu1+6iTR5/XnAui3LzP+vyZQ/a3vwHDJ1OyQHkij5976Z7ZrZw2T9upr183Ak6czM6tJgPKERvnoraa5j43UIFB7aFQvynpIvT8vd13Em53naoLKm7znPLO1QTcvd/dTjGSuakk4WU8WlmOnzkLz3+5JqZuaSutfoszHOXMeR6xAoCCT5K/3Q3feKrssyJafyYycb3QCRMmdpSRdPKZmMdWMk34OqpD9WPCHt2dBVXxjhugTKQh/atUbmfU91SR8GqktRpmqDtEvnGvaPT/tZ6Eq57dBTPFnruprlO3Hk7k1377v7keKzlfq6jq/OYObjyHW4D4WHdsXmek9Jf/Fa33+i2dqgJg0eiTCQ3ovh6zkp6dTt4O5dMxu1v3X9TEzdDklonGXXuXvHzA4k7en6n8nOdRxZ+0Bx976Zdc1s+CqMKOkLDbLNqpvnPaWDjtkresxsd93aYsbPwqUbtsysnrd+XczxWeiYWXnoyq51vUAj9Pf8XPlXP10r87bZdenySh/AJSn/oV1mdjJ0xcqV26ypqdsh+YvsPD2ImFm05qf2s3wWrqNZ2uEo+clus+4D0lO1Q3LQ/ChnPzWt96zEubcBhD42XpvZhpO/srt68wCu40zZruKrVe4P/RU+cpt1NU07JIOPT0fsamtdu79m+Sxkyg705uBxsm5naVkzfif29eby0NvJGMJam7YdkoPrI735bkSSTtfxnpzkO76vuLtuV/FFBk/TrtzQx8ZrEygAgGJdly4vAEDBCBQAQBAECgAgCAIFABAEgQIACIJAAQAEsfZ3ygNFSaarSa/X/7tM0T3F1/z33f3+0Gt7ejMV+m3F1/k/yU7xMuK16X4ba36jIa4x7kMB5mBmJ4rvJj8aWh8pvjFyb4LXNiTJ3Q8neO0TSY+vw4PAcP3Q5QUsQDLLwFlO0fOcdUeKn70x/ACjvNc+lvS3c1YPWAgCBVicziRzhmWmuJlk8sG+pGgD5iLDGiJQgMAyU+FPNEtvJhwmGRvZU/xEzbWcZw3XG4PyQEBJt1VJmuqhXY80ZvLBJHRqiqcR36gnamJ9ECjA/CrJA7luK57Z9fCK136QzOgrxcFzT/Hsr3mz+n6QzAYbKZ4B+LYy08sDq4ZAAebXSaf3NrO8gfSs7hRXaP3f7PT5SVfaE8UhBKwcxlCAsBb2EKbk/pPS8OOKgVVBoAABuXt/wQ/l6kmqLnD/wMwIFGC99EWXF1YUgQKspkj5wXGu5H4VM6twPwpWCYECzCi5smtX0r6Z1XPudB/12odj9ltXfCZSSv6ddSSpn1wpVuV+FKwS5vICAATBGQoAIAgCBQAQBIECAAiCQAEABEGgAACCIFAAAEEQKACAIAgUAEAQBAoAIIj/DzPBaARDDbSUAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<Figure size 432x432 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plot_roc_auc(df_cnn_images_test['label'].values, df_cnn_images_test['fused_scores'].values)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# ROC 9) Global"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "AUC: 0.9995606906259085\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x432 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plot_roc_auc(df_cnn_images_fus['label'].values, df_cnn_images_fus['fused_scores'].values)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# ROC Global + ROCs 1:8 zoomed in top-left corner"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 648x648 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure(figsize=(9,9))\n",
    "ax = plt.gca()\n",
    "plt.xlabel('$\\mathrm{FPR}$')\n",
    "plt.ylabel('$\\mathrm{TPR}$')\n",
    "plt.xlim(-0.01, 1.01);\n",
    "plt.ylim(-0.01, 1.01);\n",
    "\n",
    "plt.grid();\n",
    "\n",
    "auc = roc_auc_score(df_cnn_images_test_1['label'].values, df_cnn_images_test_1['fused_scores'].values)\n",
    "fpr, tpr, thr = roc_curve(df_cnn_images_test_1['label'].values, df_cnn_images_test_1['fused_scores'].values)\n",
    "ax.plot(fpr, tpr, label=f\"1) AFHQ2 vs StyleGAN3-r-AFHQ2, AUC: {str(auc)[:6]}\")\n",
    "\n",
    "auc = roc_auc_score(df_cnn_images_test_2['label'].values, df_cnn_images_test_2['fused_scores'].values)\n",
    "fpr, tpr, thr = roc_curve(df_cnn_images_test_2['label'].values, df_cnn_images_test_2['fused_scores'].values)\n",
    "ax.plot(fpr, tpr, label=f\"2) AFHQ2 vs StyleGAN3-t-AFHQ2, AUC: {str(auc)[:6]}\")\n",
    "\n",
    "auc = roc_auc_score(df_cnn_images_test_3['label'].values, df_cnn_images_test_3['fused_scores'].values)\n",
    "fpr, tpr, thr = roc_curve(df_cnn_images_test_3['label'].values, df_cnn_images_test_3['fused_scores'].values)\n",
    "ax.plot(fpr, tpr, label=f\"3) Metfaces vs StyleGAN3-r-Metfaces, AUC: {str(auc)[:6]}\")\n",
    "\n",
    "auc = roc_auc_score(df_cnn_images_test_4['label'].values, df_cnn_images_test_4['fused_scores'].values)\n",
    "fpr, tpr, thr = roc_curve(df_cnn_images_test_4['label'].values, df_cnn_images_test_4['fused_scores'].values)\n",
    "ax.plot(fpr, tpr, label=f\"4) Metfaces vs StyleGAN3-t-Metfaces, AUC: {str(auc)[:6]}\")\n",
    "\n",
    "auc = roc_auc_score(df_cnn_images_test_5['label'].values, df_cnn_images_test_5['fused_scores'].values)\n",
    "fpr, tpr, thr = roc_curve(df_cnn_images_test_5['label'].values, df_cnn_images_test_5['fused_scores'].values)\n",
    "ax.plot(fpr, tpr, label=f\"5) FFHQ vs StyleGAN3-r-FFHQ-no-comp, AUC: {str(auc)[:6]}\")\n",
    "\n",
    "auc = roc_auc_score(df_cnn_images_test_6['label'].values, df_cnn_images_test_6['fused_scores'].values)\n",
    "fpr, tpr, thr = roc_curve(df_cnn_images_test_6['label'].values, df_cnn_images_test_6['fused_scores'].values)\n",
    "ax.plot(fpr, tpr, label=f\"6) FFHQ vs StyleGAN3-t-FFHQ-no-comp, AUC: {str(auc)[:6]}\")\n",
    "\n",
    "auc = roc_auc_score(df_cnn_images_test_7['label'].values, df_cnn_images_test_7['fused_scores'].values)\n",
    "fpr, tpr, thr = roc_curve(df_cnn_images_test_7['label'].values, df_cnn_images_test_7['fused_scores'].values)\n",
    "ax.plot(fpr, tpr, label=f\"7) FFHQ vs StyleGAN3-r-FFHQ-comp, AUC: {str(auc)[:6]}\")\n",
    "\n",
    "auc = roc_auc_score(df_cnn_images_test_8['label'].values, df_cnn_images_test_8['fused_scores'].values)\n",
    "fpr, tpr, thr = roc_curve(df_cnn_images_test_8['label'].values, df_cnn_images_test_8['fused_scores'].values)\n",
    "ax.plot(fpr, tpr, label=f\"8) FFHQ vs StyleGAN3-t-FFHQ-comp, AUC: {str(auc)[:6]}\")\n",
    "\n",
    "auc = roc_auc_score(df_cnn_images_fus['label'].values, df_cnn_images_fus['fused_scores'].values)\n",
    "fpr, tpr, thr = roc_curve(df_cnn_images_fus['label'].values, df_cnn_images_fus['fused_scores'].values)\n",
    "ax.plot(fpr, tpr, label=f\"9) Global, AUC: {str(auc)[:6]}\")\n",
    "\n",
    "plt.legend(loc='lower right');\n",
    "\n",
    "# figure_name = 'ROC_global_1-8'\n",
    "# figure_path = '{}.pdf'.format(figure_name)\n",
    "# plt.savefig(figure_path,bbox_inches='tight')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x237.6 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure(figsize=(6, 3.3))\n",
    "ax = plt.gca()\n",
    "#plt.xlabel('$\\mathrm{FPR}$')\n",
    "#plt.ylabel('$\\mathrm{TPR}$')\n",
    "\n",
    "plt.xlim(-0.005, 0.2);\n",
    "plt.ylim(0.88, 1.005);\n",
    "\n",
    "plt.grid();\n",
    "\n",
    "auc = roc_auc_score(df_cnn_images_test_1['label'].values, df_cnn_images_test_1['fused_scores'].values)\n",
    "fpr, tpr, thr = roc_curve(df_cnn_images_test_1['label'].values, df_cnn_images_test_1['fused_scores'].values)\n",
    "ax.plot(fpr, tpr, label=f\"1) AFHQ2 vs StyleGAN3-r-AFHQ', AUC: {auc:.3f}\")\n",
    "\n",
    "auc = roc_auc_score(df_cnn_images_test_2['label'].values, df_cnn_images_test_2['fused_scores'].values)\n",
    "fpr, tpr, thr = roc_curve(df_cnn_images_test_2['label'].values, df_cnn_images_test_2['fused_scores'].values)\n",
    "ax.plot(fpr, tpr, label=f\"2) AFHQ2 vs StyleGAN3-t-AFHQ', AUC: {auc:.3f}\")\n",
    "\n",
    "auc = roc_auc_score(df_cnn_images_test_3['label'].values, df_cnn_images_test_3['fused_scores'].values)\n",
    "fpr, tpr, thr = roc_curve(df_cnn_images_test_3['label'].values, df_cnn_images_test_3['fused_scores'].values)\n",
    "ax.plot(fpr, tpr, label=f\"3) Metfaces vs StyleGAN3-r-Metfaces', AUC: {auc:.3f}\")\n",
    "\n",
    "auc = roc_auc_score(df_cnn_images_test_4['label'].values, df_cnn_images_test_4['fused_scores'].values)\n",
    "fpr, tpr, thr = roc_curve(df_cnn_images_test_4['label'].values, df_cnn_images_test_4['fused_scores'].values)\n",
    "ax.plot(fpr, tpr, label=f\"4) Metfaces vs StyleGAN3-t-Metfaces', AUC: {auc:.3f}\")\n",
    "\n",
    "auc = roc_auc_score(df_cnn_images_test_5['label'].values, df_cnn_images_test_5['fused_scores'].values)\n",
    "fpr, tpr, thr = roc_curve(df_cnn_images_test_5['label'].values, df_cnn_images_test_5['fused_scores'].values)\n",
    "ax.plot(fpr, tpr, label=f\"5) FFHQ vs StyleGAN3-r-FFHQ-no-comp', AUC: {auc:.3f}\")\n",
    "\n",
    "auc = roc_auc_score(df_cnn_images_test_6['label'].values, df_cnn_images_test_6['fused_scores'].values)\n",
    "fpr, tpr, thr = roc_curve(df_cnn_images_test_6['label'].values, df_cnn_images_test_6['fused_scores'].values)\n",
    "ax.plot(fpr, tpr, label=f\"6) FFHQ vs StyleGAN3-t-FFHQ-no-comp', AUC: {auc:.3f}\")\n",
    "\n",
    "auc = roc_auc_score(df_cnn_images_test_7['label'].values, df_cnn_images_test_7['fused_scores'].values)\n",
    "fpr, tpr, thr = roc_curve(df_cnn_images_test_7['label'].values, df_cnn_images_test_7['fused_scores'].values)\n",
    "ax.plot(fpr, tpr, label=f\"7) FFHQ vs StyleGAN3-r-FFHQ-comp', AUC: {auc:.3f}\")\n",
    "\n",
    "auc = roc_auc_score(df_cnn_images_test_8['label'].values, df_cnn_images_test_8['fused_scores'].values)\n",
    "fpr, tpr, thr = roc_curve(df_cnn_images_test_8['label'].values, df_cnn_images_test_8['fused_scores'].values)\n",
    "ax.plot(fpr, tpr, label=f\"8) FFHQ vs StyleGAN3-t-FFHQ-comp', AUC: {auc:.3f}\")\n",
    "\n",
    "auc = roc_auc_score(df_cnn_images_fus['label'].values, df_cnn_images_fus['fused_scores'].values)\n",
    "fpr, tpr, thr = roc_curve(df_cnn_images_fus['label'].values, df_cnn_images_fus['fused_scores'].values)\n",
    "ax.plot(fpr, tpr, label=f\"9) Global, AUC: {auc:.3f}\");\n",
    "\n",
    "# figure_name = 'zoom_ROC_global_1-8'\n",
    "# figure_path = '{}.pdf'.format(figure_name)\n",
    "# plt.savefig(figure_path,bbox_inches='tight')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.4"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}