From 2393f11f1590cc1337d3b1faf838972a2ac4c60e Mon Sep 17 00:00:00 2001
From: solenebernard <solene@ligloo.net>
Date: Mon, 19 Jul 2021 09:15:58 +0200
Subject: [PATCH] serveur

---
 .gitattributes                                |   2 +
 __pycache__/backpack.cpython-38.pyc           | Bin 0 -> 3933 bytes
 __pycache__/data_loader.cpython-38.pyc        | Bin 0 -> 6734 bytes
 __pycache__/double_tanh.cpython-38.pyc        | Bin 0 -> 3334 bytes
 __pycache__/generate_train_db.cpython-38.pyc  | Bin 0 -> 1496 bytes
 __pycache__/tools_stegano.cpython-38.pyc      | Bin 0 -> 6067 bytes
 __pycache__/write_description.cpython-38.pyc  | Bin 0 -> 3834 bytes
 __pycache__/write_jobs.cpython-38.pyc         | Bin 0 -> 4309 bytes
 backpack.py                                   |   7 +-
 .../data_train_1/index.npy                    | Bin 80128 -> 80128 bytes
 .../data_train_2/index.npy                    | Bin 80128 -> 80128 bytes
 .../description.txt                           |  34 +++++-----
 job.slurm                                     |  19 ++++--
 main.py                                       |  62 +++++++++++++-----
 .../__pycache__/efficientnet.cpython-38.pyc   | Bin 0 -> 1779 bytes
 models/__pycache__/srnet.cpython-38.pyc       | Bin 0 -> 3960 bytes
 models/__pycache__/xunet.cpython-38.pyc       | Bin 0 -> 3359 bytes
 models/b0-imagenet                            |   3 +
 models/b1-imagenet                            |   3 +
 models/b2-imagenet                            |   3 +
 models/b3-imagenet                            |   3 +
 models/b4-imagenet                            |   3 +
 models/b5-imagenet                            |   3 +
 models/b6-imagenet                            |   3 +
 models/b7-imagenet                            |   3 +
 models/xunet.py                               |   3 +-
 script_attack.py                              |  11 ++--
 script_evaluate_classif.py                    |   3 +
 script_train.py                               |  25 +++----
 write_jobs.py                                 |   1 -
 30 files changed, 130 insertions(+), 61 deletions(-)
 create mode 100644 __pycache__/backpack.cpython-38.pyc
 create mode 100644 __pycache__/data_loader.cpython-38.pyc
 create mode 100644 __pycache__/double_tanh.cpython-38.pyc
 create mode 100644 __pycache__/generate_train_db.cpython-38.pyc
 create mode 100644 __pycache__/tools_stegano.cpython-38.pyc
 create mode 100644 __pycache__/write_description.cpython-38.pyc
 create mode 100644 __pycache__/write_jobs.cpython-38.pyc
 create mode 100644 models/__pycache__/efficientnet.cpython-38.pyc
 create mode 100644 models/__pycache__/srnet.cpython-38.pyc
 create mode 100644 models/__pycache__/xunet.cpython-38.pyc
 create mode 100644 models/b0-imagenet
 create mode 100644 models/b1-imagenet
 create mode 100644 models/b2-imagenet
 create mode 100644 models/b3-imagenet
 create mode 100644 models/b4-imagenet
 create mode 100644 models/b5-imagenet
 create mode 100644 models/b6-imagenet
 create mode 100644 models/b7-imagenet

diff --git a/.gitattributes b/.gitattributes
index 7dbbbeb..2f85766 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -1,2 +1,4 @@
 *.zip filter=lfs diff=lfs merge=lfs -text
 *.bin filter=lfs diff=lfs merge=lfs -text
+*imagenet filter=lfs diff=lfs merge=lfs -text
+*zip filter=lfs diff=lfs merge=lfs -text
diff --git a/__pycache__/backpack.cpython-38.pyc b/__pycache__/backpack.cpython-38.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..48c5dc6eba19b6ba709b597f0ee0cd8646602c82
GIT binary patch
literal 3933
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

literal 0
HcmV?d00001

diff --git a/__pycache__/data_loader.cpython-38.pyc b/__pycache__/data_loader.cpython-38.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..b7f4807451086de42aa55bfe620f05a77c1ee05c
GIT binary patch
literal 6734
zcmWIL<>g{vU|^`}`;wrd%fRp$#6iX^3=9ko3=9m#HjE4mDGVu$ISf&ZDGVu0IZU}s
zQA~^=G3FfRT$U&nFq<)lHHtNbA%!J}Etfrt9V*5V#gW30!kWX8%NfN972}HHN?}N0
z%i+%Dj^c)j@kH@}?cj~#1=A3-7<2fd_`!UL-HbT`QG#H;P_A&42v{$Bj%cn}lo*)J
zkt3cf5hal;86^qkbLL3pN=HfO%0$V4`HVTTQL-rvDO@>nx$;r+U@`6-u3UvEg<Qob
z#ayK*C9oJzj&iO_luE8@lxnV8lo}&L3U3Nu3qzE83V(_~3qzDfieQRR3qzD<iZFzB
zXGjrA5p7{e5lxk7W{%QI5lazoVTjUBVGL%_lz0gWS3gb0TP*20`AM3Lx47Jk@=FW6
z-STr%G#PI(W#)s(ygW_DTO28gC8;Huxv3ykA^9PxdByofVMdxvx7b}0OA?DyOKx$2
z7(V%lDXB%8Ot%DsQwvK|^GY%kbAl6d3vyD6Zt(^s=B4E4Lb;lZw^%)M6Vp>QnQyTa
zB$i~{V$ID?$t=3Xk(-#Envz*mtjT;!GC4oDptK}4zPKO}WK?`wQGRZGRzYg|Enb*Z
zK~a8E;w=^rPamITkcW^l8v_G_GbpiWF)%QcFk~^7Fk~^MFs3l|f>_K@7E1~<NF<#Z
zOfv;DXtMY{hZys~ekJ2A#sVnsgS{r}Ek?&%?9TbQ1^LCPQG6cxMVVFkc_oQCZaJ9+
zQ9NO(MJ1WZ5MB{G0|UcKh9XG@1_<%XK|i!OwWwIXI6o&fFIC?qKe;qFHLs)?#45=z
zN-WVYs4U6I&okCfN=(i!NKDSwPf09EjL!jws$N0mEs^xplK7IM#LPSpnOB^aUzA%c
z1M(ps$ia*(j9iRdEF8a>*qMG7Ni#4oU<3&$|A2!;3>GBN07+*A2M5Ue%zi~6*&-1J
z1_n*$B5{xhBtQhnM+pBwSW*lO3=nsfCFW$NAh}B&<SuY-W@KUJ_{+q?^rr~q)?_A-
zTcMblfq?<;CXg&Bnrc9i#gxL>%T&vh!c@al!)U`$!xYT0lG$%1<1N;dlFEWquoG7@
z-(oGvFG|k1#afkGlwW*{JuN3cvBcPDCG#zo;>@blTWlqXMd_&}x0uUPlOYZU#|PNe
zZ25Vq8TloKAa{b23In46BL`!V1}NOfc4Lt&D5MlXgbIiNTL&gUc7hEzN3{?mj#!~#
zQ|!dRz>o?qW1^T+c-tA$7*m*2SXwxvm{VC&Sm!XNu%)oKutc$@vZQd#VNBsn;c8)t
zVoTvp;b~!rVsB?)VTj@gX3*rjB>>8t#i=DhsU=03sb#4}ZhpzaP+LG0h|R&kzyOMk
zVm?MtW@%<vz_^fsk)ejMh9RD*hPQ?xp1Fp<h9RD%Mxcfvp0$K+0ecNo3Zpnf2}ccc
zGov^|3X?d)LXc|C6y_R+c&-|j8isi88rB+yc%B-z8ish@8ul87c)l8r8isiO8o?Td
zc!3(u8ishm8lf77c%d4;8ish`8ip*P35-QtHC!nS*&IbzQdmmZ7Ko&<rm&^3rZa<l
zoWhpQ4CALWFJu&9s9}f~P2nhETOgLg3FV8YaDn;UP`*T-8Q8^K3mF$kf>eR@fJL~G
zM8v@&JYW%SuwNun7=jrzdHkX{lH&_Y6Z1;qt622%3Mz9zLB*i(R3=g7B`E!-gMyKP
z;llnRP*}eF|NsC0beZFYGRF(|*lRMq1gS34VPIfLzrSZzMVLtuNRS_tK6F8uOzIYE
zacMzn(JhYn_{_Y_lKA*r+?k-#F+MLbH?{Z{XJ%eXYDIB;O42R1oW!KmoZ?$tB}IwQ
z0^k-?UcoIEP$_YXxwxe07CY3bw>ZLGL*kwNgF|j{q~<2Y7bTXY-eS+pjR)rpuH^i(
z)S`HB*((4pXHqhY;)_dC)AQpEZgC{%7nj6?3S{1b#LOa4w$9AU%uBz;3s+iDlwWd-
z9a=Qs5`+{>`FZhRow<nxw^$R4iV`btae5fWr)B1pq!!&`$<G7%#s@CI>0<<wV=qcA
z&PXgs)fB$PQk<HTR%8GwS$NX&b5c@^;&by;Qgd!G1-cbkf`qvsp#$~^AKXP?9~Iev
zg4Gs8*n<dAX;<V5V!43`P;M`B1hI@jgfWP)0}-HB#Y)CoobmC=If=!^@$r!20-S60
z85kHqh83HEqM4P8kqruEpfrpRp*a{i82K1E7&-oNF$*vXF$pmWF;+>U=RrMKT!ZRD
za0H{2jG)q&6IOxourn~!Fk~@IU@lr$!;r;T!zjs6%T&XV#Z(kj!kooY!n%O1gna==
z4MP@Z4HKv>(#j+W$&pM88B3V6xKfyVnQED9n6tQR7_xXo7;0Jal1i8t@M6)$BF?ao
zX(8hRK9IhJjJ3=q%nSHym{VA@nL%cO*`Rh7TPt%4luiTL29}p#sAUD^d59e~3|RtT
zx3bkRWC>1SD)Ixn`B8~b4RZ}c7AUui)G%a;HnY^S=OtB{)G%a;rLc=Ll!(``fy)#Q
zafVtBkUMKQ5dIQpNCCN#v6elYAy0>q0R(FpvLx`SjAY1TieRW=&yuWR$dUr#G^T8(
z35-QkN|+Z&*RZE>g2X^Ljd>wcEqe)bmP`rr0@)gNu%G3iG?<?TDu1|onQGZVzL~&S
zbfAVIOTLCZg%uo1jA=|Zpx6S5aMv)W@MN<>MVKZq7QaDK%bU#rm4T_{%Vq(Ilql4&
z*RV7*)pC|FXDKdFN?}dmOyLK)4usQ~7c$p!)i9SZXDOF3FHiyD8m@(m+zcQL=5eM7
zfJ$R=h7{Hmu3jc_h7?W-26&8eV-0ITafVtRa9HzT32SbYuvW#V5*pSFSxgg{if@#t
zf#X`enJI-wnxU4tM6Cvt24Q><TVn!qkrLRankhmH8Ebh<6c=dK@GfLz1cjqU4ReZc
zFJp>`BuF=^3^!bcJI|y<dx1_3^8#s<xMT#UV2}(q78y|du%>Xfg7ORlj7(z&*;K;~
z3U!zmD5bYDfn~T$bW^xfSeuz@`M@mBW~N&H8s-}AG^QH98vZn<G^SvXyTQ4%h9OH2
zlmnO;YME*U!0Cmhh;2~kS%DPRY^Dh;MO8J-wSp6v@>psFQaH1jCa@LNq2*_`A_=IE
zwhWpa&03U3agJs!nuL@~S+nuwXx8F=NNVYvqigAtleudJYXsq?hafo4*@_pHsDWB>
zS)iOOD$P&}64#i(R&*joq((54u~w*tAxk5Tp+=|=#1;bQU%@<)8bS1Y2r?Z<UK0f6
zuo{78rdr_|!5U#u&H}f{#Qa|V{r~@e6mvm(Zjl_QNx+;}P+7#tz`*bl)RK+j1h)zj
zQ_AA2xb#63s9B=_5~Kjs<xQ-}EPe@U<iGsSz`&5n_~-xs%>T>`43I|Jf<v$Wd3$WJ
ztl|c1P0P$n%+b&M|NnnIxUL4Z%!<N6tvOJ0fZ;*DgQk8FxDf$rvlM|^5=AB;H?b!c
zgWEtwJRlxRenDzp5igjTm7kecWDRO}D1!)95CLl06q$mg*%FIEeVkj&#ihALh!%?w
zNEKRp2GlGm0yRsDKuw-otl&0Okrha#JIE;R<ovwk#FErJP~(p!IlrLt78kg$6rYos
zomyl8QYZ*g$W{dIpWk9H&C3M!D{rwS7NzGVR@`FF$xnwgssuoaLA{qEP_yY4J4i=n
zUJ0nZmYPze2sWhzJT?IC=M;fjSehb59w2T0AX#X$4b-T;#R_h%Me*gP78fU`r^e@`
z=B1ZpM6u>o#XCAjaex~{paw5<QAR%4Z$+XYBN$6>v4R_^QJnDhYEc>k149%Kq^lPX
zF&D-ItG&evZZ(7B>=s)wWJE#@<ScN{3`~F;dbhaa<I_`1GD}i(<Kq)R-Lw=?f??)h
z<YHoD<Y1Ke&&0^`pN)x+iHDKzKN};<e-<VKP@kKLgApXp!oc#MjhTs&g^}q$6C>My
zCPt?JEKG8Ypk|>0qX?rIBMYMx1Ji#tCJshWqYz9oaWP6UN-*+(RkML~fb3wwVG0um
zqX44-69*FyBNw9pBNw9(69*#?*hCO1#V7@G52FC97^ne?%f(Dwj2s|!OrWMJ2P0YT
zW&|~ZnHZQDc>c36F)@lkeZcaciHYeS8&3DLF!6x=0JfQjk&8)$QHqI+u}TI@^B5i#
znvA#Dic(8Ti}I2|@d3_t3=9k)HYg8+vP3Z`i-DTRS&S)+lAul-lOMP^&}0JlB#L4|
z!!eAI#0ZXXFaeHr_IOb0i;w>XigA#E42)G0SlpA7nin6B+XbMpjuLRi-wYaHWAxKx
zy2X-{SzH3n2t|ch(i<0OKnI*Qi+>_nE{$P1LY*e7o1dSXn<giyvk1yb@$t8~;z1px
z(wx-z_**>jppI$|M5YMTbGgNwnO9Pj53;@pM3jK?5ihi#lbo891MBO6L&O)P1QaYq
znhXpKphBe>)D_`i0S7lI=>PI5^3^kl^D%=}B!fnUK*AslDoHqDofa8J28MKoTJ{o#
z1&lSIW*7%({H=zmhFP4UhD97S$ioaC<l(FVcUoGRSQ$W_7IOw>1{(&D7)WIb1DZHo
ze=S!HLke>?OHmWp23Am~poFD{0o-w51vP(bx$^|Tc5;<4WI^oWu3;-WRKi-rQNvlo
z-OTL55GxbIT+36-Tgz9&zJRTUr-rwNFNJLmGpO-dxG2x3ggu45nbCzI)~S{sMV|p&
zAAbsSHdE236pmVfJeC^1S^=m@{58Cwrqdi2uvxbXPnB>i-~@FfYT0YpgBdir{J>RL
zQ7|aTL5Vqv8(eEay3$o#`rtwkG~A%cT$BNdH5O2J7*ZpIf;4G^Mh{rPaz(iyfhrII
zsxdUVz*P{qJ}FWH>&?t7u>e;Ux0tIk3vRI`78IoBrQBjIO3X`7y~R|J62%EhcWy<A
zxv83hxA-zkQi~ExGV}95qXGrD1PfA&a!X4fB59d9sgOa4%sl9LLK%4c58Nf^EJ-ac
z0Sgy_>nBj%c#9q6x8l^2D9{iDC|g9af_zgP#gP{e?#>s3Jr>23nOg+%1}NF4Kzs$N
zJc_`n6HI_o=Pe%4fJZ#k%)g+_0~#)4U<QqWN-&CmN>nCL83!qaIhX~QSit2k6C)EN
z(_bET9!5|J$;QM2Dy>0cj7)!c*tr;s+CgEebBi^vG`FA<5{RHOAxgYBJ0~@<C{GVO
z77<^Znv<Fg3Y{X*;7$~Ca+y&SdvP|{Cq<wkA#jCQ1RBh{#gt!M1R7zy#R3{cFG>VO
z2U|g6UP@wdQ9Y>c;!Dg)0uKg*L$??_=6XvoH?gE3C%+^oGfA(Y62!X22Bnz`a!R5U
zQ8nomRD#Ds^$;UN;4$c10ubTSlFXc9Jy3uZfm%pKpnQ5u0$olIT00hjO0yzvkW1O2
z9>2vL;OPTy%77a&MW8X~BG4dK6mLm>eoiqcnWQJ?<rjh534)-M2yU@}2BN_uzmQe|
zs8|69GE$5pqLsrYH$SB`C)Ey=ABsWk7!F1rMjl2GiNKI*3q*qC1i%BgJWL{tA}k!-
O99$f19Bcyh42}TCW>Rzj

literal 0
HcmV?d00001

diff --git a/__pycache__/double_tanh.cpython-38.pyc b/__pycache__/double_tanh.cpython-38.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..1017b16cbe59177059966465e3bec7fb9ae0066a
GIT binary patch
literal 3334
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

literal 0
HcmV?d00001

diff --git a/__pycache__/generate_train_db.cpython-38.pyc b/__pycache__/generate_train_db.cpython-38.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..aa5f977257241ff5679a465518c66046665bdd48
GIT binary patch
literal 1496
zcmWIL<>g{vU|_i2`X!;1oq^#oh=Yuo7#J8F7#J9eBN!MMQW#Pga~Pr+!8B786PRX>
zVoqU5Vaj32WsPEGgs5SQVgt*uN3o|cq%h}j<Z?uDfaO?nICHt8xEL8ySX0<q7^1jS
z7=sx!*<XU}^wVU##gd#~Pzj<-GILWww5zj=TQVz18jATC7#KJi7#N&EuKL8tz)-@l
zfU$;oA!99T4Py#pHq!*gqOcN%1xz&zDNN!FH4G)pHB8NnA|RTznK2Edk}aK~mc4|f
zhM}3!g&{VlmZOHrg&{Vnma~KvY#K`nvp7Qyr#M3ji#S6GTMb7uqc}qft2o0##%9J^
zt{N_=DmL7zYS>cPYdF%FY#3_T7qHiGEo5Y5DD)_FC}Bx~x~v&wXI(8f+#LnA93>ne
zw}RXf!&J*t%UQ!-!vS-D4Uag3Bm<J|9ALL`gWbl7&m}e7sHT8iRd}WFMB$zihAhq!
zhAgfcwiKomu3n}Tb`V+1o99x)n8FPX%c>HFEbc5GNNAQY*RVD-rttJK)$-;k)G(&-
zg4N6_VaQ^F$d&M>@bxm)Fo-kM@|N&r@h=dlVM*Z!yOaU!QUOpXPGBs)RKmAF5Stt$
zC`N_QWCX<-YIqkiF*4Nf1~X_1`Q2j6&CJV9ta!=Dz`#(&ot$5mTBM&^mY5TNi!r{6
zTfd+vKPj<TFR!4oN+2b%Br!fQr7Ye6qM`_-=N2bixQY!T4oYr`6`94i*oqSKQu1>_
z{Nl{2)F`%`#Nv|75>3WitSKdx1*x~V!Fo%I5;ODSe=+J;ap`B~rKDDXtkV>}#gtcY
zizO#NG36F(RccXw@h#?@)Vy1)MTvRosYNUd3=FrJi%W`bu_YE1q~@jE;!Mpe%}p&z
zEJ?k^mROXYo0)fuIXAJQ2$V5zv4fnFnOAa)8ALGU7vEwjNG!>?#g<x;SzJ<liz7EN
zJ2fS<sQ4C3abj7jCf_Z-%o31cnfZC~#U-f)w>XMRKxU^`-eSwmPf5)wz9m?YT9jK_
zl2`&#la`s2T6~Ka?4gv*qWFTM{E}O&V9_WxNGL{erY5JP#ph%em)v5^yu}JOCW-|l
zc#ARX7Gw4;R<QS1G8AbuFfjab(+@39Eh^S8&d*8BOVxMDPcF?(%_}Jeu}bob5=-<8
zDoZl*^NjVA5|gtF5|gv_(^K<6j!un-glS5WUP0w8K@3rDP@c~N6$Ff2j9kntj1vD@
zSXdZ&7&#bu7@7VvfiWAH=3ruCRQS)s#K$Pa$ipbWD8k5rBnwdq(g9Je#3aSY#R$S;
zjB;QaA`Vi=!c?Toz`&r%bBi^vG`FC#h#wS%9EnBg1&Kw)skfMmD~oTj6=#%|Wabos
z%F7~YkOG$UocyFBW(Ed^D1+jX#FAoguodg2WEPhcWhRw^LcdrqHMbzMC^I=RCmvZG
roJzp9f<qLE&;c3EVUwGmQks)$2TI7r0t^fc9E>0c3I|X~@Gt`aMDmpL

literal 0
HcmV?d00001

diff --git a/__pycache__/tools_stegano.cpython-38.pyc b/__pycache__/tools_stegano.cpython-38.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..437e01bf79242aeb640767b4d7fff3175e987ad6
GIT binary patch
literal 6067
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
E07(9E<^TWy

literal 0
HcmV?d00001

diff --git a/__pycache__/write_description.cpython-38.pyc b/__pycache__/write_description.cpython-38.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..d0a26193f0ec39519b2a11f3ae5ca76699f3805c
GIT binary patch
literal 3834
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
ZYzv1?ZhlH>PO2Tq@5LZr^DuM7007f;Kn(x@

literal 0
HcmV?d00001

diff --git a/__pycache__/write_jobs.cpython-38.pyc b/__pycache__/write_jobs.cpython-38.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..e8546e5017605e0935f03a36dfc297ee3cdf3b1f
GIT binary patch
literal 4309
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

literal 0
HcmV?d00001

diff --git a/backpack.py b/backpack.py
index d741fad..7d2b356 100644
--- a/backpack.py
+++ b/backpack.py
@@ -11,6 +11,7 @@ class BackPack(nn.Module):
     def __init__(self, image_size, QF, folder_model, c_coeffs, rho_0, entropy, N, nets, ecdf_list, attack):
         super(BackPack, self).__init__()
         self.net_decompress = IDCT8_Net(image_size, QF, folder_model)
+        self.device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu")
         self.N = N
         self.entropy = torch.tensor(entropy)
         self.im_size = image_size
@@ -20,7 +21,7 @@ class BackPack(nn.Module):
         self.spatial_cover = self.net_decompress.forward(
             torch.reshape(self.c_coeffs, (1, 1, self.im_size, self.im_size)))/255
         self.nets = nets
-        proba_cover = [torch.nn.Softmax(dim=1)(net.forward(self.spatial_cover.cuda().float()))[0, 1]
+        proba_cover = [torch.nn.Softmax(dim=1)(net.forward(self.spatial_cover.to(self.device).float()))[0, 1]
                        for net in nets]
         self.proba_cover = np.array(
             [ecdf(x.cpu().detach().numpy()) for x, ecdf in zip(proba_cover, ecdf_list)])
@@ -53,7 +54,7 @@ class BackPack(nn.Module):
             self.c_coeffs+b, (self.N, 1, self.im_size, self.im_size))
 
         spatial_image_soft = self.net_decompress.forward(stego_soft)/255
-        logits = [torch.reshape(net.forward(spatial_image_soft.cuda().float()), (1, self.N, 2))
+        logits = [torch.reshape(net.forward(spatial_image_soft.to(self.device).float()), (1, self.N, 2))
                   for net in self.nets]
         logits = torch.cat(logits)
         probas_soft = torch.nn.Softmax(dim=2)(logits)[:, :, -1]
@@ -70,7 +71,7 @@ class BackPack(nn.Module):
             stego_hard = torch.reshape(
                 self.c_coeffs+b_hard, (self.N, 1, self.im_size, self.im_size))
             spatial_image_hard = self.net_decompress.forward(stego_hard)/255
-            logits = [torch.reshape(net.forward(spatial_image_hard.cuda().float()), (1, self.N, 2))
+            logits = [torch.reshape(net.forward(spatial_image_hard.to(self.device).float()), (1, self.N, 2))
                       for net in self.nets]
             logits = torch.cat(logits)
             probas_hard = torch.nn.Softmax(dim=2)(logits)[:, :, -1]
diff --git a/experience_512_75_0_4_SGE_efnetB0s1_xunet_srnet/data_train_1/index.npy b/experience_512_75_0_4_SGE_efnetB0s1_xunet_srnet/data_train_1/index.npy
index d955b641fe68d7e7d16dc888e0f32fefcb02ea32..c5964c066ff5dfe00013dada4286874e4d560e2b 100644
GIT binary patch
delta 457
zcmZqp#M1DIWx|Hd1zrU#6E`f_{2+1#%j5;@7d8vHS};ytz}_%@f&gR3<^t&srp*eh
z5lmnOn;WD(m^T+lpMY`;yc9S#7kE{$z+@jV!&nK-(;w(Fg3Qlghlmw;ePEkjz{l9I
zxk35?$WQ?g@qlr2f%FZiwgRsQ5Tm9mFf(odI|t;h%?;8AK-N|;ZQd{~fpIg~S_9D!
zjGGI%H5j3$b8mpLAdXVtn7n{}#byQ847g)CSRrZ~q$e;<-0%Uy0UHJ-7O-x9V64Ej
zxj}jb)8+#=H!w|BSaM+U0`?u76<8fW4&4EA#s#Q>4bl#9)(fcR4bnGQHWzpauy0mi
zT>;V|z`S|ERs$x8n;WEGfW%%fZ7z^jfcSKCLFo;Ug%wbv3b-2>H!HAqFizY6vULJT
beFaE8G-$UkFk-A=oPI%t@xkT-?gB;tB>ub1

delta 1276
zcmZqp#M1DIWx|Hd2UrytA;gBJ1uUB<TvuS)e1J88ak2s{$K(iZgUJf43Y!nG{$Si3
zz-s^!m6&{hb;I@#>Wl)+n-8#ZfHWUqoP2=w2aI=vY4e1j3XpgK%VY)CipdJB4U-jE
zXG~ULE!cd3RRd&*z~%$228@$G@N`W6VAlb*V?vMs<K_o;1|aJjm_Sk+CvbqQXaE_N
z0hOC@UV&+{0_%jy2UssmKEQfovI48XWCd1>%?DT?fOHmsh#8EV1#%{USQ5-&vk$OJ
zfDF+95g$PIPnfL0nz30x)`A0M*yaPQCt#u#n-8!q0C5T?E3is{lucG(jhK9Zbp@2~
zvH1Y&3XsPn7B}2rntXuu1<0+NC){uV>8jW~;rt24%>n;5FmA5k1-sQ?a{zAx(`JF3
z9ZZ`QSZ9FTumPkLWKaf3NC4#03Xo97<^!w(AhSV!0tG+FH3p26Cj@~QU?mRVApOA8
zv2lU{$a5JW+b2#?0J~CwRblY~R*(%DAmcnhQ3VPes3gccpeUFDlAN*m0BZt>(Ezd(
z#E94o4JQNU%^yOc=>TLN*ceD)gLK^hr3DX=4u{PLSTBIAgLnuO!>|CEH~|!Zpm+f*
z07oL20H>G}jGHH%=Kv*}2Vlb=*zEu%DG#PiVHV7jCj@~4LIM=g9GfG!!HIDKI1z#r
ztpHh=0ZJJOAeI5h6j0(@0E&za(D*(8lKKI1BglISAVvWsq!K1Su$uv4UH~OWW>7MM
z`5YW<6D9}nf>Nx&<_C5sK;|@nTms4o9Gh=kTfsOvfj0pZs^FBedBS<HGr-~D0ZNXW
zFO+sLO`HG;&B+R^pm?4DPLUv2fOrQ$3{ddE+yPF_3al2B19(?}Gvnk3b_<}Pc>@{)
zAPHy&1gU&r_W_!*AlY;B1G^8K19&4qp>YAMRe=>0J>U!h4na_Q0_7J_QnA?l!0raf
zYXU5r53qWG66_C9xPt;~0XScRJTT!rIJ1IW3i6o+G#5L7;&}0d>mdCSpm^8;@((CW
zYrt#=*;N7Z)#d}N9gLF$ctPF<=fMV0EFA#F5-8lEG$__MHb)2@0ObS$kZB-CMoj;p
z&Uj#Q1a|;58-k)BVsZel!Q=>TP&%H#H2Hzu2B<j(pfU&)uL~zIZk}+x0Az{;IDJk&
NzzVVuqFaI00|2RC+HC*;

diff --git a/experience_512_75_0_4_SGE_efnetB0s1_xunet_srnet/data_train_2/index.npy b/experience_512_75_0_4_SGE_efnetB0s1_xunet_srnet/data_train_2/index.npy
index 071c23a508bab5f7e26bac4609243e0f5e8434cd..64ca831a08a6b5c43d6f8ffab185c35b1b07c1e2 100644
GIT binary patch
delta 370
zcmZqp#M1DIWy1%ijT25VZvNoJ!MIsLG=qJ!gG&PcWCbOT%^RLqFm7I;Cc(1V!Nr4j
zvx7?j=Vk|&4Q!J?Fg@7p;Ie`Vq={ww2PVb`e48Cy9<Xm#5G`N>X`MXbxxnOt6oJVB
zDH4+#o=a>#z~aHSal!<~%?>UXI5s=D7%*>kaOvQjte|vZ^8~>Trp*p61t7yM1UCn`
zXb3`;R)Ew`U<8}!a6)480hS4q6_kE#c5wN@F<C+B#%2c>4v;|{EN~?bClsI-Ca`W+
z5UpU_tRQ-VZPLdN8z*=$Ep~8Wn*4$31d?ir$qpwZU_R}DnFDwDWQP+RV8?G>Aozm`
zrf>5BmK7k=Jy<qxXnMc|cJk&0f&$E&CkSRRZ=WE_IDvh0fXfB0%@YJCfc*9Y<dF^@
E05&>}j{pDw

delta 712
zcmZqp#M1DIWy1%i%?DUdFm6^*3SirOfK`EMvw~6v%jN^D6PPz2V9j8ktZ-XkazF~l
zCifl8lMk>qOg_NsF!=!M2{5go^keb?)`G<cSRslhPPj4o0PBLu3Q7+)A7GsU5^Mkw
z5saG;ux?<Re1P@AW(B1cOq)MAaj<N5;BDZWe1J7!vx3qMrpX6bH6|ZmJpgh8%Vq_o
z1dzKfFoNX|us&d%tf0gJat9;B<i_XfAl77y6p76SybnN*{Q+|J4%W>FSS6S@D<~O&
zhz5|v3XlmEn-8#7fEW&&53m}5jJmK{;P(TN4L3l-AV+6F9pC{8jsvU)An6&Pfce1+
zcK88S2aq=kK*kz?tl9tykQti~uyTNvf`ZQh<XZudXLdk6GXZ1)2PXpzOir|)KluRb
zkIe^I3qaby!TbZHBLWn>n-!E^fH(@96_hwwCLdts0C{ur1Q~E7OzwCtvH6Ev2FO7M
zn-8!)04W7A5<rX_n-8!a06Bnz85(N>n;mXH04YXxK;v_HB<D0fSKn;F8vycD1IVcg
za61iB1fX_vY&PJ{0Qvm}<KhFXY?Bpke*i`E<^!xAATLOOEC+={2Pi-?Krsjs)&Myr
z0Awa8F=ViBcHn)$4vo(ZAT1u-Cx|jm00}j0KES#Iq&xvcSTHX>zzS9{`2efOWCf)c
Xn-8!GfMOy8B)tP<Bq-e_fP~oq;o}ar

diff --git a/experience_512_75_0_4_SGE_efnetB0s1_xunet_srnet/description.txt b/experience_512_75_0_4_SGE_efnetB0s1_xunet_srnet/description.txt
index 47ba2c0..a5d9dd8 100644
--- a/experience_512_75_0_4_SGE_efnetB0s1_xunet_srnet/description.txt
+++ b/experience_512_75_0_4_SGE_efnetB0s1_xunet_srnet/description.txt
@@ -1,4 +1,4 @@
-Jun-10-2021Launch of the protocol, starting from iteration 6 to 7
+Jul-18-2021Launch of the protocol, starting from iteration 1 to 2
 Number of CPUs called : 10
  
 PARAMETERS 
@@ -6,15 +6,15 @@ Image characteristics
 - QF = 75
 - Image size = 512
 - Embedding rate = 0.4 bpnzAC
-- Cover images are taken in folder /gpfswork/rech/srp/commun/JPEG_75_512/c_coeffs/
-- Stego images are taken in folder /gpfswork/rech/srp/commun/JPEG_75_512/J_UNI_0_4_npy/
-- Cost maps are taken in folder /gpfswork/rech/srp/commun/JPEG_75_512/costs/
+- Cover images are taken in folder ./experience_512_75_0_4_SGE_efnetB0s1_xunet_srnet/cover/c_coeffs/
+- Stego images are taken in folder ./experience_512_75_0_4_SGE_efnetB0s1_xunet_srnet/data_adv_0/J_UNI_0_4_npy/
+- Cost maps are taken in folder ./experience_512_75_0_4_SGE_efnetB0s1_xunet_srnet/cover/costs/
  
 Protocol setup 
 - Strategy =minmax 
  
 Model description 
-- The 3 model architectures are efnet,xunet,srnet with the following setup :
+- The 3 model architectures are xunet,srnet,efnet with the following setup :
      - Efficient-net version is b0 pretrained on image-net 
      - First conv stem is with stride = 1 
  
@@ -24,26 +24,26 @@ Training setup
 - Train size = 4000
 - Valid size = 1000
 - Test size = 5000
-- Files permutation, which order determines train, valid and test sets is /gpfswork/rech/srp/commun/python3/tifs_protocol_efficientnet/models/permutation_files.npy
-- Model efnet is trained during 30 epochs 
-- Pair training is not used 
-- Batch size is 8 
-- Curriculum is used : the embedding rate starts from 1.0 and decreases every two epochs by factor 0.9 to reach target embedding rate 0.4
- 
+- Files permutation, which order determines train, valid and test sets is ./models/permutation_files.npy
 - Model xunet is trained during 30 epochs 
 - Pair training is used 
-- Batch size is 2*32 
+- Batch size is 2*30 
 - Curriculum is used : the embedding rate starts from 1.2 and decreases every two epochs by factor 0.9 to reach target embedding rate 0.4
  
-- Model srnet is trained during 30 epochs 
+- Model srnet is trained during 40 epochs 
 - Pair training is used 
 - Batch size is 2*16 
-- Curriculum is used : the embedding rate starts from 1.0 and decreases every two epochs by factor 0.9 to reach target embedding rate 0.4
+- Curriculum is used : the embedding rate starts from 1.4 and decreases every two epochs by factor 0.9 to reach target embedding rate 0.4
+ 
+- Model efnet is trained during 30 epochs 
+- Pair training is not used 
+- Batch size is 16 
+- Curriculum is used : the embedding rate starts from 1.2 and decreases every two epochs by factor 0.9 to reach target embedding rate 0.4
  
 Attack setup 
 - The smoothing function is SGE 
-- Maximum number of steps is 2000 
-- Number of samples is 1 
-- Tau is initialized with value 10.0 and decreases by factor 0.5 when needed
+- Maximum number of steps is 200 
+- Number of samples is 2 
+- Tau is initialized with value 5.0 and decreases by factor 0.5 when needed
 - The exit condition is required to be respected with precision = 0.01
  
diff --git a/job.slurm b/job.slurm
index 469cfff..f663054 100644
--- a/job.slurm
+++ b/job.slurm
@@ -4,15 +4,20 @@ module load pytorch-gpu/py3/1.7.1
 	
 python main.py --label='70' \
 	--begin_step=1 \
+	--permutation_files='./models/permutation_files.npy' \
+	--serveur='no' \
 	--number_steps=1 \
-	--folder_model= './models/' \
-	--data_dir_prot='./experiment/' \
-	--data_dir_cover= \
-	--data_dir_stego_0= \
-	--cost_dir= \
+	--folder_model='./models/' \
+	--data_dir_prot='./experience_512_75_0_4_SGE_efnetB0s1_xunet_srnet/' \
+	--data_dir_cover='./experience_512_75_0_4_SGE_efnetB0s1_xunet_srnet/cover/c_coeffs/' \
+	--data_dir_stego_0='./experience_512_75_0_4_SGE_efnetB0s1_xunet_srnet/data_adv_0/J_UNI_0_4_npy/' \
+	--cost_dir='./experience_512_75_0_4_SGE_efnetB0s1_xunet_srnet/cover/costs/' \
 	--strategy='minmax' \
 	--image_size=512 \
 	--QF=75 \
+	--train_size=4000 \
+    --valid_size=1000 \
+    --test_size=5000 \
 	--emb_rate=0.4 \
 	--model='xunet,srnet,efnet' \
 	--version_eff='b0' \
@@ -41,7 +46,9 @@ python main.py --label='70' \
 	--N_samples=2 \
 	--attack='SGE' \
 	--attack_last='no' \
-	--lr=0.01
+	--lr=0.01 \
+	--batch_adv=10000
+
 
 
 
diff --git a/main.py b/main.py
index fffb76f..9088f2d 100644
--- a/main.py
+++ b/main.py
@@ -68,7 +68,7 @@ def run_iteration(iteration_step, label, data_dir_prot, data_dir_cover, data_dir
                   image_size, QF, folder_model, permutation_files, version_eff, stride, n_loops,
                   model, train_size, valid_size, test_size, attack, attack_last, emb_rate,
                   batch_adv, n_iter_max_backpack, N_samples, tau_0, precision, lr,
-                  num_of_threads, training_dictionnary, spatial, strategy):
+                  num_of_threads, training_dictionnary, spatial, strategy, serveur):
 
     n_images = train_size+valid_size+test_size
     models = model.split(',')
@@ -80,19 +80,27 @@ def run_iteration(iteration_step, label, data_dir_prot, data_dir_cover, data_dir
                              batch_adv, n_iter_max_backpack, N_samples, tau_0, precision, lr,
                              num_of_threads, training_dictionnary, spatial))
 
-    if(iteration_step > 0):
+    if(iteration_step==0):
+        create_folder(data_dir_prot, ['data_adv_0', 'cover'])
+
+    else:
 
         # GENERATE ADV DATA BASE OF THE BEST LAST CLASSIFIER
         directory_adv = data_dir_prot+'data_adv_'+str(iteration_step)+'/'
-        create_folder(directory_adv, ['adv_final', 'adv_cost', ])
+        create_folder(directory_adv, ['adv_final', 'adv_cost'])
 
         print('Generating adv step ' + str(iteration_step))
         num_batch = n_images // batch_adv
         command = 'script_attack.py ' + \
             custom_command('attack', iteration_step, model)
-        run_job('attack', label, command, iteration_step,
-                gpu=True, num_batch=num_batch)
-        wait(label)
+        
+        if(serveur):
+            command += ' --idx_start=$SLURM_ARRAY_TASK_ID'
+            run_job('attack', label, command, iteration_step,
+                    gpu=True, num_batch=num_batch)
+            wait(label)
+        else:
+            os.system('python '+ command + ' --idx_start=0')
 
         # EVALUATION OF ALL THE CLASSIFIERS ON THE NEW ADV DATA BASE
         for i in range(iteration_step):
@@ -110,10 +118,15 @@ def run_iteration(iteration_step, label, data_dir_prot, data_dir_cover, data_dir
                 command = 'script_evaluate_classif.py' + custom_command('classif', iteration_step, my_model) \
                     + ' --iteration_f=' + \
                     str(i)+' --iteration_adv='+str(iteration_step)
-                run_job('eval_'+str(my_model), label,
-                        command, iteration_step, gpu=True)
 
-        wait(label)
+                if(serveur):
+                    run_job('eval_'+str(my_model), label,
+                        command, iteration_step, gpu=True)
+                else:
+                    os.system('python '+ command)
+                
+        if(serveur):
+            wait(label)
 
         # GENERATION OF THE TRAIN DATA BASE
         generate_train_db(iteration_step, strategy, models,
@@ -126,10 +139,15 @@ def run_iteration(iteration_step, label, data_dir_prot, data_dir_cover, data_dir
                       'train_'+my_model+'_'+str(iteration_step)])
         command = 'script_train.py' + \
             custom_command('train', iteration_step, my_model)
-        run_job('train_'+my_model, label, command, iteration_step,
-                num_of_threads=num_of_threads, gpu=True)
-
-    wait(label)
+        
+        if(serveur):
+            run_job('train_'+my_model, label, command, iteration_step,
+                    num_of_threads=num_of_threads, gpu=True)
+        else:
+            os.system('python '+ command)
+
+    if(serveur):
+        wait(label)
 
     # EVALUATE NEW CLASSIFIERS ON ALL STEGO DATA BASES AND ON COVER
     for i in range(-1, iteration_step+1):  # -1 for cover
@@ -145,10 +163,15 @@ def run_iteration(iteration_step, label, data_dir_prot, data_dir_cover, data_dir
             command = 'script_evaluate_classif.py' + custom_command('classif', iteration_step, my_model) \
                 + ' --iteration_f='+str(iteration_step) + \
                 ' --iteration_adv='+str(i)
-            run_job('eval_'+str(model), label,
+
+            if(serveur):
+                run_job('eval_'+str(model), label,
                     command, iteration_step, gpu=True)
+            else:
+                os.system('python '+ command)
 
-    wait(label)
+    if(serveur):
+        wait(label)
 
     for my_model in models:
         print(my_model, p_error(iteration_step, my_model,
@@ -157,7 +180,7 @@ def run_iteration(iteration_step, label, data_dir_prot, data_dir_cover, data_dir
     return(True)
 
 
-def run_protocol(begin_step, number_steps, label, data_dir_prot, data_dir_cover, data_dir_stego_0, cost_dir,
+def run_protocol(begin_step, serveur, number_steps, label, data_dir_prot, data_dir_cover, data_dir_stego_0, cost_dir,
                  image_size, QF, folder_model, permutation_files, version_eff, stride, n_loops,
                  model, train_size, valid_size, test_size, attack, attack_last, emb_rate,
                  batch_adv, n_iter_max_backpack, N_samples, tau_0, precision, lr, strategy,
@@ -185,7 +208,7 @@ def run_protocol(begin_step, number_steps, label, data_dir_prot, data_dir_cover,
                       image_size, QF, folder_model, permutation_files, version_eff, stride, n_loops,
                       model, train_size, valid_size, test_size, attack, attack_last, emb_rate,
                       batch_adv, n_iter_max_backpack, N_samples, tau_0, precision, lr,
-                      num_of_threads, training_dictionnary, spatial, strategy)
+                      num_of_threads, training_dictionnary, spatial, strategy, serveur)
 
         iteration_step += 1
 
@@ -194,6 +217,7 @@ if __name__ == '__main__':
 
     argparser = argparse.ArgumentParser(sys.argv[0])
     argparser.add_argument('--begin_step', type=int)
+    argparser.add_argument('--serveur', type=str, default='no')
     argparser.add_argument('--number_steps', type=int, default=10)
     argparser.add_argument('--folder_model', type=str,
                            help='The path to the folder where the architecture of models are saved')
@@ -233,7 +257,7 @@ if __name__ == '__main__':
 
     # FOR ADVERSARIAL COST MAP
     argparser.add_argument('--attack', type=str)
-    argparser.add_argument('--attack_last', type=str)
+    argparser.add_argument('--attack_last', type=str,default='no')
     argparser.add_argument('--lr', type=float)
     argparser.add_argument('--batch_adv', type=int, default=100)
     argparser.add_argument('--n_iter_max_backpack', type=int)
@@ -277,4 +301,6 @@ if __name__ == '__main__':
 
     params = argparser.parse_args()
 
+    params.serveur = params.serveur=='yes'
+
     run_protocol(**vars(params))
diff --git a/models/__pycache__/efficientnet.cpython-38.pyc b/models/__pycache__/efficientnet.cpython-38.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..0d024863d74b8f1fdbd07e3ca868b9f24c8d1eaa
GIT binary patch
literal 1779
zcmWIL<>g{vU|_i2`Xxb_gMr~Oh=Yuo85kHG7#J9eqZk+%QW#Pga~N_NqZk=MY^EHh
zT;?cdFq=7tC5k15A%!`IHJ2@l4JyW-%f`gO$dJns#mUH!!kNOF!q&nV#pTYB!k)s>
z!jQtz%oN3)!W_(?$@LOst0v<up47Co%;e0}ypp`s5)j`N#`jAt@q5Y0z`&5q1X2sd
zYzzzxoD2*M&LBtjfgH)0!kEI8!koeavJPa?9FAJ16wVq3afVvv8m1a%NrqaM5{3ng
zHOvbcYgua;Q@FC3iab)dYFM+F;+df|O9^Wh+X8lwSQbYLLkdGHQwnzqS1S{g4Hijb
zkz`oN2vQTzQNotRS;LaTlfs+A*UMbP8qZb38qA={@0ZEI%D|A>03sOJ7#K1c*g*sb
zh~NYfTnr4F998_t{?<)0Ko>AX7cfE>Fh&<JK^HJZ7cfH?Ft6f8aYqpg0|P@5D9~Sm
z0zE{N`4)F(UVK_=Vo7OHYVj?e{L&Hxk0mKHu~?J42$X1Uai$gJ=f>wH=B7q*#V6<I
zmBkmAq~?OPCubz)<)!8n-(o8+DauSqy~SFRUzD72izzSf7H2?WQDSatNovt8w(``>
z^o){QY(ANJsfk5V%<*Z-nryeY%TkMqGxPJ}Q`6FlxEUB2qWJUTVMfNMWG0u~V$ID@
zNzEw&rHxz6d8s8U8Hz+07#MzufyImUk^QJwP<e|zJ+&l0FSUdNl!z2SDT|4Xk%@tc
zfeA$ZV`Jf9<Y3}r=3wMt<X|yi6k;k81EoWdLSzgIB5-B_S(eHW#hAhn#RN)?Eeui2
z;AGBnOE9D;F*DCSCqF4M$2mVQEi*kC6vi-PKx~koz{xp=fq|ihv4$a@p@yl3A)c{@
zxrQO0DFr0LoB|SINdbwlrm)m7#Iu1#*h@IFIJ3C2xN8{Vc}jS}Spbw3*i$%CI8(S%
zxKg-#Icpf=`BE5y88mtP(*Ladc*!@(!9D~W)o!<#b2IbOA+C8~pRVgH^ZJpQl>IH{
z#H3<yI!L$bF?iHh>1wCRd5Z-UoVVE05|c~vi*9igB$i~R<|U`zVlPWAO3E)zy~SCQ
zQIuMok)M-tix19>2kYWU&d<+D$uG~l#g?0y7oSsfi#fHRSd;%2cV203e0hFRc4|@a
zEv}@*lH`o|;>@blTO4`usRjAT8O67la*B#%85kID@jxvCC9Q&6e8nZH1@Xnn8L26y
zIjKdrM9LC#GE)*uKxqXoTEqj=$eLeJl9_vpC#MKWy<kvkN@;ScPmq6JKu%&wYGUav
zzF?SX&N+$2#kW|%$x8rkT6_U0wH9l#++rzC%}Kk(2XcIVT0F?Ji7Camgb?nJPX?Kg
znRbg4?2Guk(p+$&gb<=2S8>G0XXa&=#K$Xx(xC<@78u!3ArlWH6DIs#C54f!^k9bh
zX|mknhzIAy`1o5~@u2W8%}I@qzr_<DUs#%$1InZE@kJ(}tPV=K5Ep@2AZHbcGcYhH
zf?Nbj-yBR}z9u6$y=d}8Ng-#Z_<~AsR@N&m$;>G(0%?d6!KMIQMnK|%1EM1@uZR~E
z2*NO~URr5hGAQyAb8c}Vu^HXKxex3NB&WjNdyB&+Hy@M&>_FvKF(|%y7<m{un0Oe4
Hn7AYX4C3hE

literal 0
HcmV?d00001

diff --git a/models/__pycache__/srnet.cpython-38.pyc b/models/__pycache__/srnet.cpython-38.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..325394d4de8fae5bbe07eb36e159e4fec5e7a3e8
GIT binary patch
literal 3960
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
Ts3pO{$ipba$iXaB&%g-)qTrM?

literal 0
HcmV?d00001

diff --git a/models/__pycache__/xunet.cpython-38.pyc b/models/__pycache__/xunet.cpython-38.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..d3653e51e97116599c5a203397a3756ac69b7f61
GIT binary patch
literal 3359
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

literal 0
HcmV?d00001

diff --git a/models/b0-imagenet b/models/b0-imagenet
new file mode 100644
index 0000000..8af13f5
--- /dev/null
+++ b/models/b0-imagenet
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:8f6b91eeaf11ae3f183c074d992d0dd46ae8083c5409839910adf75fa37a457f
+size 16280354
diff --git a/models/b1-imagenet b/models/b1-imagenet
new file mode 100644
index 0000000..de24296
--- /dev/null
+++ b/models/b1-imagenet
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:5337dfe968fe895881d14d467a4cc28ffb722d6c60af865385ab6eb2f46345ea
+size 26414008
diff --git a/models/b2-imagenet b/models/b2-imagenet
new file mode 100644
index 0000000..ec7cc08
--- /dev/null
+++ b/models/b2-imagenet
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:9a395e2bfc1b12ac21dcc180533d1f63d804d2b8d63da509bc59b5f1c8ade714
+size 31188427
diff --git a/models/b3-imagenet b/models/b3-imagenet
new file mode 100644
index 0000000..7ad2675
--- /dev/null
+++ b/models/b3-imagenet
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:379fa0b5aa441d96db49798eed2fc4807194be78b640bdb3445d13e4b69ac7f0
+size 43262576
diff --git a/models/b4-imagenet b/models/b4-imagenet
new file mode 100644
index 0000000..16046dc
--- /dev/null
+++ b/models/b4-imagenet
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:45568352ed41d951ecfddc9a407f3eec1b5c7676f6aab01c07f9bd7c0d36af40
+size 70852911
diff --git a/models/b5-imagenet b/models/b5-imagenet
new file mode 100644
index 0000000..0782cc7
--- /dev/null
+++ b/models/b5-imagenet
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:6ad1ee81a291ea0e3c4f3f516ffd3e4a97409285215307879920ace7d03227ab
+size 114244801
diff --git a/models/b6-imagenet b/models/b6-imagenet
new file mode 100644
index 0000000..c90a095
--- /dev/null
+++ b/models/b6-imagenet
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d490294b132c799cd81a54a42cf8d32c559ec3ff113678a20989728819c5354d
+size 164060370
diff --git a/models/b7-imagenet b/models/b7-imagenet
new file mode 100644
index 0000000..bc8f046
--- /dev/null
+++ b/models/b7-imagenet
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:7845496fff8bdb1c90714b10330d684b14938ed3a5c46ee4a7566c5cc2761ac4
+size 256657098
diff --git a/models/xunet.py b/models/xunet.py
index ffe1e5a..7f2bcf8 100644
--- a/models/xunet.py
+++ b/models/xunet.py
@@ -9,9 +9,10 @@ class get_net(nn.Module):
 
     def __init__(self, folder_model, n_loops, image_size):
         super(get_net, self).__init__()
+        self.device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu")
         self.n_loops = n_loops
         self.DCT4_kernel = torch.tensor(np.load(folder_model+'DCT_4.npy')\
-                                         .reshape((4,4,16,1)).transpose((2,3,0,1))).cuda().float()
+                                         .reshape((4,4,16,1)).transpose((2,3,0,1))).to(self.device).float()
         self.im_size = image_size
         
         def _conv2d(in_channels, out_channels, stride):
diff --git a/script_attack.py b/script_attack.py
index e5b2216..4afb326 100644
--- a/script_attack.py
+++ b/script_attack.py
@@ -1,4 +1,7 @@
 # TOOLS
+import sys, os
+sys.path.append('models/')
+
 from statsmodels.distributions.empirical_distribution import ECDF
 import numpy as np
 from backpack import BackPack
@@ -16,7 +19,6 @@ import torch
 import torch.nn as nn
 import torch.nn.functional as F
 
-sys.path.append('models/')
 
 
 def backpack_attack(data_dir_cover, cost_dir, image_size, QF, folder_model, emb_rate,
@@ -91,6 +93,7 @@ def run_attack(iteration_step, folder_model, data_dir_prot, data_dir_cover, cost
 
     models = model.split(',')
     attack_last = attack_last == 'yes'
+    device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu")
 
     nets = []
 
@@ -102,11 +105,11 @@ def run_attack(iteration_step, folder_model, data_dir_prot, data_dir_cover, cost
     for i in range(n_classifier_min, iteration_step):
         for model in models:
             if(model == 'efnet'):
-                net = get_net_ef(version_eff, stride).cuda()
+                net = get_net_ef(version_eff, stride).to(device)
             elif(model == 'xunet'):
-                net = get_net_xu(folder_model, n_loops, image_size).cuda()
+                net = get_net_xu(folder_model, n_loops, image_size).to(device)
             elif(model == 'srnet'):
-                net = get_net_sr(image_size).cuda()
+                net = get_net_sr(image_size).to(device)
 
             paths = os.listdir(data_dir_prot+'train_'+model+'_'+str(i)+'/')
             paths = [int(x.split('-')[-1][:-9])
diff --git a/script_evaluate_classif.py b/script_evaluate_classif.py
index d808054..62ae888 100644
--- a/script_evaluate_classif.py
+++ b/script_evaluate_classif.py
@@ -1,3 +1,6 @@
+import sys, os
+sys.path.append('models/')
+
 from srnet import TrainGlobalConfig as TrainGlobalConfig_sr
 from srnet import get_net as get_net_sr
 from xunet import TrainGlobalConfig as TrainGlobalConfig_xu
diff --git a/script_train.py b/script_train.py
index 233fe7f..8a37be4 100644
--- a/script_train.py
+++ b/script_train.py
@@ -1,3 +1,5 @@
+import sys, os
+sys.path.append('models/')
 from torch.utils.data import Dataset, DataLoader
 import argparse
 import sklearn
@@ -10,13 +12,11 @@ from xunet import TrainGlobalConfig as TrainGlobalConfig_xu
 from xunet import get_net as get_net_xu
 from efficientnet import TrainGlobalConfig as TrainGlobalConfig_ef
 from efficientnet import get_net as get_net_ef
-from catalyst.data.sampler import BalanceClassSampler
+#from catalyst.data.sampler import BalanceClassSampler
 from data_loader import load_dataset, DatasetRetriever, get_train_transforms, get_valid_transforms
 from train import Fitter
 
-import sys
-import os
-sys.path.append('models/')
+
 
 
 def my_collate(batch, pair_training=False):
@@ -35,7 +35,7 @@ def my_collate(batch, pair_training=False):
 def run_training(iteration_step, model, net, trainGlobalConfig, data_dir_prot, start_emb_rate, emb_rate, pair_training,
                  version_eff, load_checkpoint, train_dataset, validation_dataset, test_dataset, folder_model, train_on_cost_map):
 
-    device = torch.device('cuda:0')
+    device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu")
 
     train_dataset.emb_rate = start_emb_rate
     train_loader = torch.utils.data.DataLoader(
@@ -77,9 +77,10 @@ def run_training(iteration_step, model, net, trainGlobalConfig, data_dir_prot, s
                     save_path=save_path, model_str=model, train_on_cost_map=train_on_cost_map)
     print(f'{fitter.base_dir}')
 
-    if(model == 'efnet'):
-        # Load the pretrained model
-        fitter.load(folder_model+version_eff+"-imagenet")
+
+    # if(model == 'efnet'):
+    #     # Load the pretrained model
+    #     fitter.load(folder_model+version_eff+"-imagenet")
 
     if(load_checkpoint is not None):
         save_path_load = save_path
@@ -122,6 +123,7 @@ def train(iteration_step, model, folder_model, data_dir_prot, permutation_files,
     pair_training = pair_training == 'yes'
     spatial = spatial == 'yes'
     train_on_cost_map = train_on_cost_map == 'yes'
+    device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu")
 
     dataset = load_dataset(iteration_step, permutation_files, train_size, valid_size, test_size,
                            data_dir_prot, pair_training=pair_training)
@@ -150,15 +152,15 @@ def train(iteration_step, model, folder_model, data_dir_prot, permutation_files,
     train_dataset, validation_dataset, test_dataset = datasets[0], datasets[1], datasets[2]
 
     if(model == 'efnet'):
-        net = get_net_ef(version_eff, stride).cuda()
+        net = get_net_ef(version_eff, stride).to(device)
         trainGlobalConfig = TrainGlobalConfig_ef(
             num_of_threads, batch_size_classif, epoch_num)
     elif(model == 'xunet'):
-        net = get_net_xu(folder_model, n_loops, image_size).cuda()
+        net = get_net_xu(folder_model, n_loops, image_size).to(device)
         trainGlobalConfig = TrainGlobalConfig_xu(
             num_of_threads, batch_size_classif, epoch_num)
     elif(model == 'srnet'):
-        net = get_net_sr(image_size).cuda()
+        net = get_net_sr(image_size).to(device)
         net.init()
         trainGlobalConfig = TrainGlobalConfig_sr(
             num_of_threads, batch_size_classif, epoch_num)
@@ -168,6 +170,7 @@ def train(iteration_step, model, folder_model, data_dir_prot, permutation_files,
     else:
         start_emb_rate = emb_rate
 
+
     # Train first with cost map
     train, val, test = run_training(iteration_step, model, net, trainGlobalConfig, data_dir_prot, start_emb_rate,
                                     emb_rate, pair_training, version_eff, load_model,
diff --git a/write_jobs.py b/write_jobs.py
index 15c9a01..4e32f13 100644
--- a/write_jobs.py
+++ b/write_jobs.py
@@ -84,7 +84,6 @@ def write_command(mode, iteration_step, model, data_dir_prot, data_dir_cover, da
         com += ' --attack_last=' + str(attack_last)
         com += ' --emb_rate=' + str(emb_rate)
         com += ' --cost_dir=' + str(cost_dir)
-        com += ' --idx_start=$SLURM_ARRAY_TASK_ID'
         com += ' --batch_adv=' + str(batch_adv)
         com += ' --n_iter_max_backpack=' + str(n_iter_max_backpack)
         com += ' --N_samples=' + str(N_samples)
-- 
GitLab