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 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 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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®a$PMI6P7ncZmvDfaih6l@MWE52Tf#7|UK+HyotSfr3&Ab|Wz8tw z;^fSNO1-qS642l!xZ4WuOy1&yNaPokWafgZ7*NRH;(-VjXQt;R<`jW?$B?i94Q3XB zhXq078{qLY@BkI0H4ExmgZsGPUJ|$)QWOe`2M$={9$deJYo1$dzToBrIK6^BjTCC& z7zCy7TO2l!R)-xZH-oz_9E=={Jd8q&0-ymhW-e9^77i8;Rt^phehwZmTUbPmgG)#f 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 zcmWIL<>g{vU|_i2`X%9&C<DV|5C<8vFfcGUFfcF_2Qe@(q%fo~<}gG-XvSQoC?-Y- zn>m+>iGh(JmnDi7D#8}U?#__Hl)~J?kiwkGl*Q4^9L4F*kiwF}+QN{++RPNimBJXz zpvm?UWSd_yh(yNBP)@N90|P@ULlk2QLljdxLmFcWV+vCXM-+1ka|%lfLljF2YYJNn zLlkQ}0}DeGTQGwr`z`kL)ROqT)RJT-s39PVgMono<W-Qt#pf6q7)lsQ7;6}snHDfD zWME{dVXR?@XHF3X8_QVB1TnUjxrAi_YdXV1##)vdmIZ7zOeu^h>?s_*ObZzq8NedU zDeNhny^L@^Qwn<u7n%w#n2Hki6z*n57lv4mT2`=brW7vRstKzotV!XCVX9@TWiMe* z;RTyK0cLUydkq_^J8IZq?tqwF!$wdA$PB&|#uWY(fnHX)ADNL%Vyk7ZVNK!BW}3iQ z6j#HR!fVM;%T{=;hAo8;%7TQOV2Ti`Yf^+zU6Ue&UquN=7E2aqickt)ig1cZFEhk7 zH4O1wDGb33nqq!085tNDUV`E`nH3b{Pz+*&B0m_Eip3Z}5ue3a1B!6w8m1Z+P<rYG zr5k3y5KXpQ+?jdt$r*`xd8s+Yw|MePOAtKn?9`&X)SUR@%&OE|Y{ex-nJKBa*b5R< zQZn<>Z?Pn0CKhWl-D1kiyT#_5pI2s-vXZq3WO)%A0|P@5$O%R4AQmSB1H(#&B0dHN zhF|=-`6;P6#rnlXd8s9O1(mnh<CDR9c|ooPDPdq_V`PHC-&Kmxw5=B(pP83g5+AQ; zlarsEm{V-02i2Jj3I?d(89;21r6``yVya;Pc{>H1iF#Rs88lh_(m!TA?%4X{iCy}v znIN#!K17q{7ISJr@hy(r{M^*MlG5B;Y>8=UnR%(VgiDGNle6QCO7rqE^U~vsOA<?p zHJNX*mgE;DXB2TWFfiQWc1kQs&hX1G$~8(^$p{Gukbl7bF5(9(iBAHliO<U~$`u9q zmj~o*Mh=*7|5T~s@hw8{OHcu&$po<j9N6NZlpp{iKoOwHR3rroco6XtRG_^C6%0k7 zuqgtC^Gi@LWil`^Ft}+l7J&*0P39s{Iw}Gw2D3D|Z?P7a7NiyxfwbP@fQ9}o_RL&x zf`E9M%QruzG$++3v$*6ITVg>$YF^4M)}q9`^wc7d2XC?YWagzN7Tsb^%E?d8*5tUw zQk<HTc8e=BH!(dGVh+gFMG_$As)53YF*AxCnk1t*3yM<9!0B-%<1Nnk_~e|#;^O#t zM2HqCFfcH1f<n>*9FlyDY)o7n9GqOtLW}~8LW}~;JWN820!%`TLd+bDFtz{_7b6n` z69dzK4kiIc7Dg^cE+&Ky38pFm^jJViVxRy41(q|&UQqr5C9M{QTE-fN1q?Odf)SiS znf*|-fkGb?IpCBT0?w8-3?+<NOwCM1dL@im%nMj*7_wNi*g*Ll%xAA*$l}OiOJQ8d z#K=&>09MV}%v2NrlFj0Rs0LLzDJ;FrplS$`t|7_!q<uOlNI*EfT4bI3!>Sg0O{QBc zxv7bHx0s7dQZ%`5ab*@~<`tJD<|U_sqq7K<9&fRL^4Tqc?8MAmP+Bj|%S_8J%8kFp zR-T%fo>6j(B_**W@fK%tK3Ho>d=V%C6{&(Ej~$e<6LaD<8E-M>LZS(r1;DAF2co|i zoR9rMfd|saz{mrRDjvovC0MY79DvB?$l5d+Z?Ps86y#KDG8L(V(u^610NVj3Ko%A0 zGcYjtfy@V`W(GzMwkjTElTm6(Q0@U?aAbxsF)-9HrZ8GE)H0SZq%eW&7rR=f8ip*! z8m1H`5r!0IaRy0-8pdWuP;|pZSrDQnOrV%t2vt)kPy(v_K{a3##GDjRoysP{AdYMn zGsp%c8Hjnz&5X6oaPz=CG<8g1d$Gx|Bgrt<FpD$PG8RUZFr=`7{d5NE7LFRG6i%#e zLCD~D3ql>bTM#lxZUOlwi#3Hkg(-z4g{zmj2H|#udN#1zL17Ha5sWDa8CI|iOEb82 z0`=7saF}o-$4Uwhj0duB0ShcPz$$rRa$p`G5|1r~Uy7lY6{IJNwT3l?C50L6MvzMw zYZy})QW#p9pd@n&a~g{z!vgjcmW9x?kRkv#3#OJijY$$zR}1<<GUJ1Mhay=}iUk!0 z;BvM|8pM?W5unui5>ybr1SLpKW=Q490g?h0aW4%(#k(PhFai<AAPH~@|NsC0|C$^{ zDj)$+8450X!5R7%OHis$=q*mivh;xb{2Zf{B1KR(<toi9E-Xz=txAp8WCQ1;TZ|P& znjk60%3F+8QOxD>#pv0WJuSbeJh3Px0+h2r6%Ydx2Qv?&7^4`tn3ZCbV&r22kzC9? zU>eM05(BfjnE4p_82Ok$n2S-2S&os9sfr(#E1@Q9vV-cGyu{qp`1o5~@$tFfx+OmT z7EgS9VQFFxL<U^ugY$TiE6ByX(0U;`H75sFH-O6mEl_xX3j|P!4Qdn=g94U=iN}?L z3tX*XG{Qj&L0&5sL286Uig!>0JeWa~<(6PbQDSDEdrp2*VvciuURq{)GAQOi1uY1J z*r4_RxIl?v02L@T4Dk##Of?Mgj5W+P4Dn1Ukft|Cge3(e!kWTT!w}Dw0uo^_;mG35 z;>zN#VTk7`;RQ9zK}~c}BRqu@+<4~h<*Z?d=L6R<JbvkaR(`zXn-pLl0!~kEx0pet zHpnFm3=iznb)98iKQfcDzr~!GR19tbq+9hEJnE}-wbSIh#R6)L-C|2iOfJbUy2VkD zSdy8Vmz;Wwy)3mTDZe=N7H3IDQEG8Ueoo3QJ~$H;F{!sWlJoO(Qu535Zn5QN=Edg} z6$vshFlh4M;?670jW5qH%1$jRzQqM;wSbzCQ5<>ksRjAT8O67la*B!q7#J9$c%T-= z7nh_KMDc;h_~PV@R8XU$C`zO(F()%6u_QA;4<QOp-M3it3raF`Z}H?5A!Kd|2BoHy zCa3xY`R4`XB$lKmmPYXf!%TAqH6CuUq+}+SL<zv{h%ZPiO3W?RWC3S`C_a$e^V8x% zeoag%juJvRAJY2BOpD?Kdm=us6upK6r_70<?4bb)e?~S`$ixF{=ONSItE4az6uhnL zr^!;}21>^6AOh6J0o#F;HNhzzoXEWx7#R9NmV**82U8J<ugMJwEe>!yRWC2E2$VE$ z3B$O0X{C9|px{l+xy6OVW^}v7npc`zP<e|fuizFNq>%^CGGJq|*?)_}29jUxKxJDo 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