From 96a2bd15a687164c5a8d3558438c394b8af39a41 Mon Sep 17 00:00:00 2001 From: Curli Trans <599167637@qq.com> Date: Tue, 2 Apr 2024 15:48:48 +0800 Subject: [PATCH] fixed eval_dataloader --- .gitignore | 3 + configs/vit_b.yaml | 4 +- core/__pycache__/__init__.cpython-38.pyc | Bin 177 -> 0 bytes core/__pycache__/ddp.cpython-38.pyc | Bin 4491 -> 0 bytes core/__pycache__/ddp_b10.cpython-38.pyc | Bin 4495 -> 0 bytes core/__pycache__/learner2.cpython-38.pyc | Bin 13647 -> 0 bytes core/__pycache__/learner3.cpython-38.pyc | Bin 4403 -> 0 bytes core/__pycache__/learner5.cpython-38.pyc | Bin 2357 -> 0 bytes core/__pycache__/lora_sam.cpython-38.pyc | Bin 6260 -> 0 bytes core/__pycache__/loss.cpython-38.pyc | Bin 4345 -> 0 bytes core/learner2.py | 4 +- datasets/__pycache__/__init__.cpython-38.pyc | Bin 181 -> 0 bytes .../cache_dataset3d.cpython-38.pyc | Bin 8728 -> 0 bytes .../cache_dataset3d3.cpython-38.pyc | Bin 3238 -> 0 bytes .../__pycache__/data_engine.cpython-38.pyc | Bin 8573 -> 0 bytes datasets/__pycache__/dataset3d.cpython-38.pyc | Bin 7165 -> 0 bytes .../dataset3d_2dmask.cpython-38.pyc | Bin 6587 -> 0 bytes .../__pycache__/dataset_merged.cpython-38.pyc | Bin 2838 -> 0 bytes datasets/dataset_list/example_test.txt | 2 + datasets/eval_dataloader/loader_abstract.py | 146 ++++++++++++ modeling/__pycache__/__init__.cpython-38.pyc | Bin 181 -> 0 bytes .../__pycache__/build_sam3d2.cpython-38.pyc | Bin 2588 -> 0 bytes modeling/__pycache__/common.cpython-38.pyc | Bin 1760 -> 0 bytes .../__pycache__/image_encoder.cpython-38.pyc | Bin 12604 -> 0 bytes .../mask_decoder3d_2.cpython-38.pyc | Bin 6063 -> 0 bytes .../prompt_encoder3d.cpython-38.pyc | Bin 7700 -> 0 bytes modeling/__pycache__/sam3d.cpython-38.pyc | Bin 6695 -> 0 bytes .../__pycache__/transformer.cpython-38.pyc | Bin 6594 -> 0 bytes test/volume_eval.py | 26 ++- test/volume_eval_mbox.py | 216 ++++++++++++++++++ .../__pycache__/__init__.cpython-38.pyc | Bin 184 -> 0 bytes .../__pycache__/trainer_ddp.cpython-38.pyc | Bin 10586 -> 0 bytes utils/__pycache__/__init__.cpython-310.pyc | Bin 172 -> 0 bytes utils/__pycache__/__init__.cpython-38.pyc | Bin 178 -> 0 bytes utils/__pycache__/amg.cpython-38.pyc | Bin 13169 -> 0 bytes utils/__pycache__/amg3d.cpython-38.pyc | Bin 7963 -> 0 bytes .../__pycache__/masks3d_utils.cpython-38.pyc | Bin 2162 -> 0 bytes utils/__pycache__/transforms.cpython-310.pyc | Bin 3955 -> 0 bytes utils/__pycache__/transforms.cpython-38.pyc | Bin 4004 -> 0 bytes utils/__pycache__/transforms3d.cpython-38.pyc | Bin 5785 -> 0 bytes 40 files changed, 389 insertions(+), 12 deletions(-) create mode 100644 .gitignore delete mode 100644 core/__pycache__/__init__.cpython-38.pyc delete mode 100644 core/__pycache__/ddp.cpython-38.pyc delete mode 100644 core/__pycache__/ddp_b10.cpython-38.pyc delete mode 100644 core/__pycache__/learner2.cpython-38.pyc delete mode 100644 core/__pycache__/learner3.cpython-38.pyc delete mode 100644 core/__pycache__/learner5.cpython-38.pyc delete mode 100644 core/__pycache__/lora_sam.cpython-38.pyc delete mode 100644 core/__pycache__/loss.cpython-38.pyc delete mode 100644 datasets/__pycache__/__init__.cpython-38.pyc delete mode 100644 datasets/__pycache__/cache_dataset3d.cpython-38.pyc delete mode 100644 datasets/__pycache__/cache_dataset3d3.cpython-38.pyc delete mode 100644 datasets/__pycache__/data_engine.cpython-38.pyc delete mode 100644 datasets/__pycache__/dataset3d.cpython-38.pyc delete mode 100644 datasets/__pycache__/dataset3d_2dmask.cpython-38.pyc delete mode 100644 datasets/__pycache__/dataset_merged.cpython-38.pyc create mode 100644 datasets/dataset_list/example_test.txt create mode 100644 datasets/eval_dataloader/loader_abstract.py delete mode 100644 modeling/__pycache__/__init__.cpython-38.pyc delete mode 100644 modeling/__pycache__/build_sam3d2.cpython-38.pyc delete mode 100644 modeling/__pycache__/common.cpython-38.pyc delete mode 100644 modeling/__pycache__/image_encoder.cpython-38.pyc delete mode 100644 modeling/__pycache__/mask_decoder3d_2.cpython-38.pyc delete mode 100644 modeling/__pycache__/prompt_encoder3d.cpython-38.pyc delete mode 100644 modeling/__pycache__/sam3d.cpython-38.pyc delete mode 100644 modeling/__pycache__/transformer.cpython-38.pyc create mode 100644 test/volume_eval_mbox.py delete mode 100644 trans_utils/__pycache__/__init__.cpython-38.pyc delete mode 100644 trans_utils/__pycache__/trainer_ddp.cpython-38.pyc delete mode 100644 utils/__pycache__/__init__.cpython-310.pyc delete mode 100644 utils/__pycache__/__init__.cpython-38.pyc delete mode 100644 utils/__pycache__/amg.cpython-38.pyc delete mode 100644 utils/__pycache__/amg3d.cpython-38.pyc delete mode 100644 utils/__pycache__/masks3d_utils.cpython-38.pyc delete mode 100644 utils/__pycache__/transforms.cpython-310.pyc delete mode 100644 utils/__pycache__/transforms.cpython-38.pyc delete mode 100644 utils/__pycache__/transforms3d.cpython-38.pyc diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..52cda21 --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +*.pth +*.pyc +*.nii.gz \ No newline at end of file diff --git a/configs/vit_b.yaml b/configs/vit_b.yaml index 25095e3..f550510 100644 --- a/configs/vit_b.yaml +++ b/configs/vit_b.yaml @@ -25,7 +25,7 @@ training: load_pretrain_model: false # optim: - lr: 0.0002 + lr: 0.000005 decay_step: 2000 decay_gamma: 0.8 weight_decay: 0.0001 @@ -35,7 +35,7 @@ training: dataset: types: ['3d'] # ['3d', '2d'] split: 'train' - data_root_path: '/quanquan/datasets/' + data_root_path: '/home1/quanquan/datasets/' dataset_list: ["alp", "word", "debug"] # ['sam', "their", "ours"] data_txt_path: './datasets/dataset_list/' dataset2d_path: "/home1/quanquan/datasets/08_AbdomenCT-1K/" diff --git a/core/__pycache__/__init__.cpython-38.pyc b/core/__pycache__/__init__.cpython-38.pyc deleted file mode 100644 index 5318d45fbca5844a3901638a1db85ab90f513f81..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 177 zcmYj~JqiLb5QVc~p~4=-#=&016WA=;hOqlgBH78BpJI>Xm25qNos~(Y55Dg)1H+u# zb}dTG%AoeE>OV~xj)k}=8bl{H&FLXRUH|mCkntmSbkB+_)cXN61%E@IB3&&bWrlPr pXi$V6!AUBfld-HRz(GZns{oSHvQ1KMr}??ukABDwhx+eb5MO*oE$09L diff --git a/core/__pycache__/ddp.cpython-38.pyc b/core/__pycache__/ddp.cpython-38.pyc deleted file mode 100644 index abfdcc4ec2385a77c77049154f476abf5bc70dff..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4491 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 diff --git a/core/__pycache__/ddp_b10.cpython-38.pyc b/core/__pycache__/ddp_b10.cpython-38.pyc deleted file mode 100644 index 59d673ddad6808082787430f6b99eb5aa3f7bfb9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4495 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 diff --git a/core/__pycache__/learner2.cpython-38.pyc b/core/__pycache__/learner2.cpython-38.pyc deleted file mode 100644 index 591e1fc5c77a78e0d04d58c0163db9a11de8cc44..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13647 zcmcgzd8}O5S-;!N+}Ymd=iRYyoYe6&?l^YRsJKp2XK?~eU#r+5Ff^LZn|t4T^WH2k z=iZ6!VP2uN+d!#9TPl_|MbG~rT((k#M4^f>I$Yu?U1z>Sp2h`_7&1 zP_=c`&7{1|~O{1cJ z&59|{R>j7z)pS~^N~)Evq)nFF%}mR!pb^qe(`aQYSxKACTq|oCrqRk*@{*Hk7Fxwh zu{BkhlIL`Dx;0aoO={0o=Fmf?xuZ2-nQ!f^?0lVG+~%&Ho%8d} zeXaeK{jCF)1Fc&sx3msc4oZHZd8p-8JgHx7-r71`IV|a^=54LpE4L#(?ay2>DsOt! z@MrzGD~3N8q%Yf*BffdgDDAkxHCiZHapt_LHQIrSi;o92g~Yo$ezzHv%sBUOEvh}< zsriAzQ>wEbHCkwpRj8+G?d2d&t6)8-MXbBjZP%klr(J8Jiu-QVWjaos@2*Q{_PJUM z^=6+4!bUH6yo2UpbgtnCH?S>6$%$v`oz{9c3aYhcv)b&0VLXqQtOb4*1&bJ=uXFQ* zdW}vuE>4u8fA{gu6KAUWUD>d<6jVFwL7M~QWFBcRqoX?CIQTGa;rkH2;W3atSY*vm zd+=-RMtVP3Vcs~$dAt=pT-w?rOd*On`onoAj_ZnIexzIK;ysA>GBWH|LUXv z(7W=$@=MqM<1gN|_?`!@8yH3^Snt$V)Gjt6x%vIaS30fW#PMgkwKl)U>m5HhzOFi} zK|KnOFJZh7SZXiw>iAB4^2t;9Im{q1C?6HeH+?g(K`r0Dil-$faPZ{3 zU_ECnnSRPoUny2ne#UpfZD~L2=kS~HPx*PjaK)^+e$k&oPB!7kod0&=N3)Xmclh%t zDfm16UHC2fyZt@*oeHM?z5c!{#$~fI6U+v4t2_1@TYvriFWCM8|CTFGW!^s>>|EUy z?8c}LA=mS7y^^ZzVY^^&u+KldWbMU9`nRF%cK=OivERQB{h^KYyZ!Hh-~d{)kL0^# zqnD#EWc-rg`ej>#X?HedC)PC$K z1*6egu2S?U!C|dcZGq34l;EhV+V%7pA23aku<;Gw0}>gRjZO0!bY9=;8&#`sgW7!) z)ae_m_*PRK5Mmy9YJq&E_hla1^zKFSXye- z8;};SRSVa=brtvxQBmG<?M76s#_4*ez0_Ea)6LHEGD=c5Ya1brA{5n6Fx1z`|XrBa;tq1jNCsx5YxppUyKh63oQ8h4q>JRLh> z&|Fftpd)oF$zhVCByR?}ZpPVawcf0SVYRBY(;k+2AgmP5gBa5}GcA9vIR!1kbZ^Iq z<;sKk)yX}BPYMaz;CJI2mO&!$61c|Nw67U`^O^;&GB>GFtZUW=`6;!T?mO2^STGx0 z?JV@1@_Mw=n}z;YwKA1@6tu&R3eT4^aVqMl`U<93dp1zFqx(1)M&O_-H#^RN9h$Xz zAd{@jvy${uU9YKH3;n3Dlu~!HnT>bE4zz3-r`Im@eN%N z!S9T}gPstwSu?L0Py)Xzvo~GnJ*>2S$+Lu#_ zAPtzcOi`%%oeS*{;taVh-&MX4G?rJQiT3OR;@eQCAV%21@;T_Hqd#=dG4I4N?` zU3yLZPWQF7@7}id*y!|d0udxVwy3iP{`ubx>f~GR{cZ+yf+Lrz!@>8CYDM$L>(iU7 zc_+NO=X-Ct->Z3xOx~aphWa)adxzd&CcUYeZhExl-Cgqh37A8PB=?=eH{1uZ3_$br z+=dC+1C+UDDyMIL+V%QrZmg;GILp~McGs@srMckwyhU58E#R7MKdf=eM(@OrZm#da8}*lx6= z*jeo~+VQl!bfhp!IZ+1cB>TFXni(uqecA0bdbCKGE@08Q?-e}Dx)DHQF>h~dh!?PfL zfVwqT?Sqg56j8z8YwtGNR^Qw(BLKU;c^OJMvQ}Z@3Gc328!-E;&St7_iAvDOH+E&G zAmQ=!B7B0ib*yNF)qt+vbG*K`9#x+`uGfqvJ&Z()7azx7i8Y7$^kW4 zkAXhGT;@P%<@G6aR= zoosj-B;xP~HW^zzVhpgu;92a>)zpUN8yhyJX#1HLEa(e&L9wIQYO0d8{M8rv`IiTl z?|g38*T43ye}7>4)JO07#`BjRxj!ywJ5cq5dhJpv6{p1thw40Arxt^#7RGk49;zpi zL7XZsC+va(WKDb-1$)i)k5gy-TI(rUwm3I3=fXNANArgW?+>E3s*nu5F0Gg5H3|b- zf|Cf}mM;oJR19Z84BB*PDa$Opl6D-kcW8`Lwrg1@YYaZraa`p`@eLmX!75IO+lD2g zW@%B|#Ci%601|@T$4XPs`Vcuk?Pso8zPsBXI>2gY^=hlf(P?j&$k}ljK3v41l+9Dh zJbK|WD{qOyreq~{qn#p0i_@COnj$J0lQarhY%d29%88D2(~(vbg_sxJU)|!-COTgP zP{#GcXde>Q8qj0ZXjA0TonxyxsynfU+=U^RE@8+JFeohGB?uaRQ}~5XM#O`)b&$$L z=BCxp_^BnXri=14aiCFS!<1_YU z^Mj`JJgAjJt)Cs%!aIkx+_Ap$sP&~`EtCvvWyfk2Q0tq+S|}OTGKhX!g!|DZGyQ8H8nhmi`tWgLR@Y{;q{bip(91r2-VWL7=)_BjCGLfcATX< zSY`V-vmEJ!i--~dh+nb^DG-6OmYT8UH%kTJhm{)OkA@qaHhQCk$5Us*FiXuArvbmD37p?b3{hTkO!Mi?fS_*wu!A zQNxfLC(tFK9gB0im`;71A6p&eOX+ZiVLUyUnRbBT;pkQ3FFd{z>LNS6M6yLk76&#S zxF=Y@j2hu75CedOe-vidqEH{vf7UJtw_{rR@1?2CFl}1jDY)}aZ_k+EPjo&Z`?Q%{ zVKK8mj|8F%(4Sf&V14)mJ0#L;LzeD|%*cZDLN|=d(yASvMJxijeOo+DYph)g?V7`O zC>h9LL=V*3%s?XGY4IJRn~hZ$R?lHH*LOwcQX6UbS&3FAUuzCuVv4M+RzPmNiqCnN zq!B~rgmD{fz-r;jQdad?y-%_M5*Hew=9?<`NWGu=H|oYT+J^j2?c1j z$aYjihkDe9+2lDkNr#LOhU&+evt^Inq2l4%!de8rl!MLCY!H&)L8}_37CFscg4Ps~F{Z;ELe}DTN$$ zm4r$IMsRX_)blKoU6EbLXe0SC=2H07$4R*G>Juc}t@`v}^{R`Ps!&j0M8&O(KU#W9 zPo}qTOm?<3p8)+_e_CAGgRdbmLLY0EDo4P2j4I$Sb=BDb)TgDyQ|79@VYcU`+=aa~ zkTQLy%*bY(uW!!7Li#zn1cMv|$t9<6?HS<0{BC1E>@;df6hrE#A{$Z#8SbYLmq6SD zv>?RDW?dE|+?`R!n=VZxS@h)g9 zB+q;lOLQHcY5fGgCvVO#!bcue(+`M#nf2ae(Ft8tvTwW$@xAd1i25jA2WQ3hVI8mj z>u+v;>noqTUo+GiO4MgasH=2ES2GQ@n0TVvc-UdL6{itiYSk{r>18-eM7P~`_)M41 z0U}!Y#5lmHz=K>?oo?HQ7t=*}ssMio7!@Z2D2!9xHh*j$gcKIxU?IGSs8n6zB;V&BE}a|BN!P1vl-Fmb8tHg_LOg^xnxvg#Cstjc&&WlphhNVu6 zKKPImhZ^CZ@Bp4N*0Sm%rF1PD?uoz^g0|p=0Kbs~psm4k4)})@e6yPIEpVqJc^0TU z%p;FcQ^Oi)%1Aw;V@V#P{}#AW@FL&)5#TFp323m5cHk%=rqvt}q5+S_1~#%bGQf_^ z&4U(n`DPI)DFehsnMt8eb|c4<&8a@3-K*31+ThQ8KM$0ZT_TQ3FWfveW|l**)eR$W zG4K!$Ml>Suy~dI^j&Zz3I4moJX;XfLm`j}YgJ-d=KrLyh9g2EF(3tys_IfIwNutGr zNO{O;KVs)qG~N@!H-euya5_hIcKe8eZBw9C-i$UzN3dOSp@#8ZLJ&iMSdsRnfx|sH zPS9MPt%X$`l#NqMfb)_1H8fNVk!lZZYVdv?(Wb-CD4`C^sgk?}?gnyXOhG)m-U%Z# z0y`tv#F@r9F_`)gqo6hJko(jxNf&yE8dk*xjTIA+_3NxKo2Fa2{?j-BC(FtLdnz{ zFIE;FTjFG975S)=*L%U)%N=Ow%bphH0E0`%RRt={~EhD(lB%5VZ^flu{`3w#B6Q@mry z{Ce>PiM?j&sr~qsrT-)n2oRa8&~Z3gw$$60)?qh3(fZ;UdWDPmJhut9c9rOKAxity zPx1_On@PM44qUBbku%@DD4d`FUZhlc~0 zm5yKb9=W*A!*2arg5qIU@`|LZS`$G=|B^ShDJ>bqy66fWRDLL>H1{=&+rXmjEaG*TSIC1gri;rD=>X>(7rBPq;R%#(u00)g@Z_umo z#MV0yqvJx)+lIj~BHp4n3hRH&11TkgBJ+8jCB1IkjEUha23QuHqz-skVykTL9ewPW z_f#oawb8qkpqL`qRr~K0;)UMHEsiWYzzz*<*@F)~_LQDg6L&hi5S-zux3do-q4PNX zw3|U&pipcB^XNF|n^@rhNuT5nk}rVZIFB<`UuGHsh9I#3Vj%=|4?=riWfMYM^=BlL z;x38<7j2A??=WTyuUb~&70cfDvg6FWGb{Gz$7ef`U#)P`?QZvc+SCFC!=@ zy_x|EN(F6LRFf2lvnP!9IED%2dEinp}28v1}3Wb=}MiH2) z&@T=!)0s2L8UK*SurHd$%0n%Fv|KKiAYQ`aR5$}o14LZLnK3@3Gry*yq$%Ao7=Nag~Iwqh^!e zXX+0?Dp@qu7OFBM5J+1t(Ks4p2;BH%HkjmTSV(6KiJ#Yi9r+ z5TC{U5$76lHspX@NY4^TpQ$u0n{Wx>h~R9*HCeLhf^UGg@y!8e7y9Y&{ooq5$*(zh zE)aPO57`UquP`3<8z49$e4gpQ28nl82{8vqbby4lM*3aWA`VqwB>57_?~#0&M0C@X zY#1&B1mQ}j>4Tl_WLb-(O)?oZ(CbFnss51Uk4R)=WsA2#loHaZa(fS>u551t8RzT? zsF&KJoJv7KH}!U1=fQ49BP#; zy)s;n!7+f$W;D&wye4^7{Vm#jh!dgjXN(YUYU1>A+wFj`3Z6pi;fHBJ6+Ht&NzP!T zRqvHMgaT(Z6p_!U~yq^YieYnCu_qki5j)$SSy%yUWz&j53qp)aE$1o z`*5@1nD^LyPu+L#J*AP^?mhI~D@@>}LEMN}sfNQXFZAAWHn};Z)oySR$L(}bQB9+; zA)dj~K*f&aN{bB*Il}rP5|i8z@1WR8C)ME_e{#qj@PeS1UUlp_vv+VzGi}po;t-Qe z!LP72ZLVf(Y`cleZ<=>SbAKIWTa>A&^cOe;vXx==X2)Kv-R;-BYsi2{(L%1Y!T$l6 z29yT{1A^K@9idQQ7>nII1h^L@=yn_aDxY0|bcvFp`l+NPe7lnTUWhZ=LaYoD7u0t1 zA%fZ*E-3_V@YmZlHZy3h!A{6Q&V;|ngF!0vcj6nK!fc_!|F6ewavjvq0;;4U2gW`p zhi|xKB&o^6Hy)V%XoL%daBvE*d-zsFtzQ_{dcDK9Db#v#SnKr;-=!mPnRKR!ABo49!c3^}K2_`O_pn zL&AglI49><5*3RPwn3;!$J20bH~xqtJQH{Opwi;39EI^X7#-K8eH|U$jE)85Tu*(Fr86XgCI1|$(r&FLFEjTF$vq^p zV#DJ-^&#ecn1m~afCmQQ`>UL?tpJV^3>kl0!5beigK`1}D9;wcrg z#07jss4Tjqy%Oqu^=~XFCii#iy!4dZ;gzjB#wvSA_JOcLNUm}n9?~NEc+;}1l=bbI zeQw6xm&>~;*Uh=^9qybvgYvy{(EC#14&!A@Z_`VKX^C3CR5%3tJNWyy1*oe3*zeqb z7fvK)uPr&^=4OhhV^8H|Or<;YO6A23dbUB>6sOwV7B0=nf=xx;2y9Lvuyst8WPH(PeT8r9AfEArvCRqyHSC;&jkxcW~=ST#t zc{a8>I5Z~~YcK1q<%U(J!nRxhK8Hp_d`03@Cbjs@W8QWD2l4%uTL1t6 diff --git a/core/__pycache__/learner3.cpython-38.pyc b/core/__pycache__/learner3.cpython-38.pyc deleted file mode 100644 index c049ba72e1f4905db83b9bd53a5c7fb99830947d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4403 zcmcIo&2JmW72nwpel96WA}Ps|Z8~v{5KW{=NzpcSjkJxCqIG<+`+;qW#fr0%R@x=$ z*=1}CyC_gQJrq@%bJG;ktpfU23jaIHBI{$Rc3!CDsSVB{{+G{&O*(}OXe_D*Bt|;9-5KmSW&?# zFzPqLVpMWUQQ0X+6{n)wSXhm0U1M5Qb84!^4C~RHGY8({g|HFLI}3_0hKo_tX+|xl z6}6pqwB#%??OlzRc=@r$%l^V6!F=6S-h8lC^Ua^=S38KLeGw@y3@x ze2r}F=$vsKJ2rTco7{TL9FrHY_mU_>s7FI4zc!c>-k;))Kf|h1#@ULNnJ9IX7D@wU zAua4{+yqxl*s-1#xwWI8u&jjs0$R%`izq9JkrsIAk)9R6l@(V`O^mg;_8~O#@_`;7 zCT3!NqVWp#e4>47JYv6PYKDna6;j7jDa<{UD$VG!A@%pE6ndsoNY*;y?qrPb6*?X<$@(OSsr*<9Ah=Cg%t zk;dRKYuGW3S~#*^II1}_s-8BNw5*l3_~L=~F^hi>+m_ST3Hz9dza$mje8iZRRAAfI zibi~@Mx^!Q>WP*%(>YZ(6rE2Oc>B*qeCDOw(g>nmX@%alA4+>DaO@IyI0*WQpo1ys zi_6NmeS7dgR?d#@Q+vD9>%4ZOv)$S3^iGW@bX=Zj@NYqf<*C_ucaWUwO2-o&EvHQJ zlO_TJu>x}U)WqC0DSTxhcs!}8WyP`)jlv{|y!gN!j1u^TtO-9Ei9TFoH%MX(FAw2% zE{VwEZjv)4IE72?Vu2>N1RZ>F8AMvxiXV#(HCzD+R=)W1%fr?$;N3xg_e$p$JhgLE zh=I7$k!IhE{BBX2N}y-c_=GUK&y&lKbCW`ANsvy?D&4%wWSsB zc|%`X@ciDMGzWbwg3KW6Kfn-?1cSbsRhC?LCkTDlB`t}oG{M97465XM%Mt$E6v2K4O_ID#6XT|G3O!n}( zHU#YK#Xd#}e*-K*^c(BLhq9Isa6`n66Mr~|sp5A)G*(hih1IDvDy+h;<&WOhO{VA1 z7j|Lotj6^J*rheS#M&5Rn}^G1fW3Zh8s#|Wpp%Xq;i-bo&*3F-)BhDZ8879Io|u5q zvVu_)phDbv7_9)*ewSED0Wey9A&e40{%tDtA{Zrr{Kr)4MKD^2)aO&F^DtT*!|2=@ zj0Rd(1uT{nls0%nfu=z~n$?qXYVQNk_`-n>sQU?aYx70k#M3%5GaHa+18Qr4+O~q) zDbQvU(5v#L>sp#aUzIO|pI0zgAV5n#exg)gliH&3)|C0!Y>{SwyRQhMz3dM1+SYo{w}^*YwN zl3kdNy$l<`-lQEThAiGuVQ4j5%PzvAtFY+W)S{Orp$ithG@kv+j749XvFOXsSX38J z&s!AsUY*+85Et-0S7*NGYP$9ni?4odiyQae{6ARy>eS+^U)$o}fQ_mMxYusys7p|! zQ1>j#p24hmg?bl>G>I$`StfFU$SM&PHpN9^kz;FzYulYydWgbX-OgU;ejb!novNY* z5#+IYZxip9cnMWmQ82A=-l?7O?oN2F%EQCvc8AYs%_~S*Sr5eY9t80zlNL`N4t=Mr zq5_3-r#58~jvt6?G-*jqgsACMCmc<9R^g#jq;X1Q%+T=elGuO(@j8)BBHt#WQiv_$ z-XQWOk#B)WBlPY#~n?-E}L=UKv#$hl-WjOTv91%J3dI!>;Nu;-AA@Te1K!{sv z822HvCv2sc)^b^Vmz2ImOzF* zf1+mwE=V{?RR{Q>`3H!tZu*4-Jt@aY1V)RLEO!`tRoA zFQdrQMCA@PeA^c>5;N$Q)~Js{I3#msD`loTX!|4Hn6gWa74W(1co&d9)pbF=-Ieh& zRC@bC5G#%SQH0b@?+;}?871(PJiYRTAPWlvL>By@KN#k@vvTfy^~*}p`e2CL!g?s& zxVHx@gt)m|s!iJG8q1V0t`iU`sBlW-+;K~NP+8md;-Ke_8&$$8=&ub?B|>l@=oqN2 m%xqqnfh-_P*YoprgRWAsxm_4tv@erX zTnj6pfP>z8=%r`**#FR9!fQ|d3q5s6*@#^mO-q~PaCSKSI4|mDr{f`LKU-t=Qxl;- z_2Oc4VDS{X_zeb%LPRmOQXFD4TcKrUJ9J>SQ#Y%HwX7c2v6gevM%E0QnHPFlD{L8_ zmA12vg)qvxVb^fnbS3MBJ)mo}o~~y7@P?rq=~{L(yqVn!Z)LZ`+u3@!j?tHhHmUax zQIFj?w!=QPcF~|U``GiLy%fyPA~7M9#RX-2o06@dJn~KfI(jj%RQ($sB{}1&^PEK- zh_4DdP1(R!O%4nm<@-$4I4fBs^-QNR8({S*e3&pw;v(CF?Uba25ackCW0K@Fi6dEX zaf;y(5cYPX>`eQ>Q9amGP9-Bznwo8D?K)+ubuO0_Q`Nb2P^{5kY!)n@LKkZ=Fa)kZ zOEiK$>2V8vlB;wVk>{orA6$ddiBytH4dkz&8Dw7Szb^QdRP^uOo!$Gd)|~Ytf76eB>Oa`=BY#hmr#1vHq!`|teRApE#Z*F) zk!gA6ldW0*3M-hc{*xEXx(5Byf8vS%0kzv#)our|&inJGGfrpOE_87RhJ93_SN%Dz z@B*qQM7>ktU#$ZNq7KhKyY3R>qmn^sl7|JK2$H3x&_zYah)bbM4wNw~c&PB?cf@bN z34eV%92Xhe93D)gT=$`l(;?XT4U451zJ`h=r#T~O#P``yu>FkXl0^BD97FgHIZIh2 z80_L~2&68HkD+QRZbkTO=;Q4D zMB(66+vmlgr`(b!xm2#n4drMZ$~8O9RiR!&S%nfjEomef*CthNB3UMQPt$d%(PY0C})%FYo z@_q;JYc_tXtjSi`H?ARN#G_1*Jj$3*j-HeY&Y~i0>jjYoJQU@Tan5qkbz0rL)==7m z;&T{KvtfBy|J|~CFt*`Ouk_ru`nUn~I`pnH^FL($7x3^jh(Sn*@`&~cJaa&|34stv z4Nk&`aO?$`8VlE0&FirWgwXzKSY|!gP<29R5fj2UfUR1_d2bVu6uENqX$CQ4##j+oCWQ+ff;u8B9X-8jHzP_1odwm-qJ%`5Bf2@?&7L3TAFG{C$)KB9j5`d PZ{QwY!+lG8W8MB6q&%7} diff --git a/core/__pycache__/lora_sam.cpython-38.pyc b/core/__pycache__/lora_sam.cpython-38.pyc deleted file mode 100644 index d3d391931f64d094d70fa35864ed5adfe5440734..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6260 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 IMY;PQ0j>i$_5c6? diff --git a/core/__pycache__/loss.cpython-38.pyc b/core/__pycache__/loss.cpython-38.pyc deleted file mode 100644 index 26a913ba6ad393cd104758d87cc4c6d3902af7b1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4345 zcmb_f%aa>N8K0h)Mx)2dyRvuvM7UB^bcok>1*kG+<3Jn^BnyQ}0F^<^PWMXM)r^#$ z5oTSZ3r?sU*c4YN4!g(w1HzFbMgE08CRDj}gabwSfcbqr(n{KLDikoP{<{0?$9(#I z&v~a(@eMqGGP|O;VHls$WbyGZxrdhg1B4r#^^I2Ev&b|JW<*xYW;w@+%$BLgX5Wnp ztwQ9ryr|eJPS^cbiCf%$-)NQjmwA!<@3U5gmv|YRDzES=`W3#yYv^nI9A8C$j<4}L z`c;0OUqHXc*ZBtex;W1-?wj)O!Z^CXFC8;}xo))9`4zFw8D}4ur}XMvj;}=`UL;o*lt?Nm0~D@R28KN zqzvMYAQm5mA~b2w^l{MJXx~Olwn0+kh-J8J-#%vJd3_u-1O`Ro83VqZf(9d3Sw%T z;ed3pbQ9B-zjU{Ce!>Y0>TV*v?X0nF))8GG&o=;wTN~?J8J^fqvvkyQ1=U=y! z9f=?g-JGxK3MfIZVgEA*sj&yxGeFJFLu>4&=8=`TB>+7x08}e0Yyj3Z1K_%KW9(%P zw_#InV4t0N*yYBn;5p#E3!annFmf}xqnMg|PF5tP$?hiV> zG*M1EkYQI@;+Mnu&8m>}I?!*wgA0k^1iZZr0p&zq)=6XwLo&%F0HPCmAnLE zm}Dh&(*yOGZ~3sBRkmSz6qGavHnfR-OP)zyX`yKoxr70kh&B%fzk}yx?1>4Fv&hS~ z<$3Io7eJaOJStX&w;$Yp3sN*~`YVDfvy&<>N?`va`3>4mZZj8OzKZEhv_xAfg!P%` zEr~^IrsE}*KS ztwNVoQ{DwHB+bnpg1LaEHF+J*kOHVZ_Jrc9DX*j^+#XCEP(%*tIE;JSMSIB%I(4(X&jE~FlKMQXUe zx^F`spRXL6i(|5{qtdZKZS19G*qjH8!>OZ6R^;WZa8%_81IHGE3Gu8YUP<%pC0;pm zk5-T`e4uXZ4*W{pXVjp$omU@Y$7}#>?TYMtHlqU?nuC z=?PpRyoGjKlDhIhK|b=hqz!9oQ&(vX6@?)$6VcJ?YZx_a%IXUwo1_~Ig`{*P>CM_# zwNd4^W<|YNYhB)^@$3lzJtj^6(d9bNAIjVe_ zE_sD6DbJD=xopeFYqax7qC zgLE48&Ki6jg~LAXSc+@+@TQ~zVwjWztH^W3zM1?swSUFnQSi;od_qyx+m_#i zjB<;}Yeeo5`4$oK#E>_M@f{+kCZejZCy9`h{q9RSkQ$1nJ=eE<3;Pj|QR6_T z;aT9Xy$JX=5^Fo@L){d2r@^PHl~7~X@mpo`hgb<0A*TR$3i*ea{11==tcT9n9y=65 z5E5*}Yy_yiyrQrW$WTF0t&&kla*&)*v!GfbNU3LOVF6zM3*eRHgOmdJH2CMve`3kk zv7lI2u}4ksMd)j{oI9fi|D<>pd|$gxfI=csY)8I zuf2hMKr2bUL!);={v&;;+ANO-{k+vGtp0M#v3!-LRJ!SC zq2s7_R!Mer`j_J%679CK5s8xpcy;iJG@;1;`y>ng-r6kby*){fWw!h8T diff --git a/core/learner2.py b/core/learner2.py index d5475f7..e88db4c 100644 --- a/core/learner2.py +++ b/core/learner2.py @@ -107,8 +107,8 @@ class SamLearner(LearnerModule): self.model.load_state_dict(state_dict) # self.lora_module.load_lora_parameters(pth.replace(".pth", "_lora.safetensors")) - def use_lora(self): - lora_r = 8 + def use_lora(self, r=8): + lora_r = r lora_sam = LoRA_Sam(self.model, lora_r, freeze_prompt_encoder=True) self.lora_module = lora_sam diff --git a/datasets/__pycache__/__init__.cpython-38.pyc b/datasets/__pycache__/__init__.cpython-38.pyc deleted file mode 100644 index f7c9c27d7864330fc67c03750e315d245aa5b3d1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 181 zcmYj~Jqp4=5QR5jp+XK~<6tl132em1W?8b&WHp(M`%~mdUdh%Y*jYJS>4Wck%)l_G zx?U>DZPB6htLQ(K40|EYL{=TusyaMWDC?g-XX^Zb4c)Wh0yW-(#^A4LQlyJxq|DI0 s2`wn19l%K&o>J$yrGOqLf~-kWa-g+im$Y7w({sKZyv;p!<>y;aUrNL;o&W#< diff --git a/datasets/__pycache__/cache_dataset3d.cpython-38.pyc b/datasets/__pycache__/cache_dataset3d.cpython-38.pyc deleted file mode 100644 index 6058f75eb7e097fcad0adbc421a312761639c446..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8728 zcmai3TaX;rS?<%f>FJrBncbbeN?MO(Tk$ydu2zz5DS#8%vP3{$g0&>j#&kw=dS_>M zZaUqol_otTcx?iyh*Ciy6qZx7#RG_f0t^I`Dy}a;VNyl$K}JYKG3sMBoMzffH(k$dX1q)@>t$8F)fj2!yd26lPc`z* zf>&scdSj~1X^c0EUQw0x#)LPa)|m7raZfj`+DeQzA-{Sq&4 zv;N6#jX!+6x_A+%FyDBh`K0$G(}E|rH1Bk9 zy8jWru+8v18l2{5W;DLY&)(I&r-G;Y({mNx$XtGgx~c>d$V+{UE%dst;Fjh zs78%DZqn2)Z3d-|2%g1N4Z^U*D^aE7K7<%*OJzf*MNko<(y9g076IR=s(UA>L}gQ& zXyh_okJkOD?YBBI-Re*Y71G)i^(ZJanT}TKji6O&1`in~E$cFO`O@;G>#r>PFaOxm zl}}!k>C0F%45D+F(cO)(TDZ~{&5)j|q41lPNYrnanSfeo4;3+}WD>E6*hEr993p8V zq-zf|M6yIih~$VIBQi^*L}ZM}IFTZe2_jQOrin}vDG-??pZcOd1W z)Xyy9I*aQZuJgE_!}S8L3%D*yeetZPFQRSnyk{+*@z0z~ZqFyT7n0kBY3|}~ zkwW5b^OK~MZ!s@LiisMBloR(f1bhN_my{Iu44>vRxM!g*v-}uFjPS>yb|+BEk>a5( z|3%HzyaI&p2|>p`zq|x4LUN)F(W(;Hc7L>QVj!JkcpfCuwzM@CvlSK_UxUeu^*W2q zuj;=9F^^#gXS7)Jb(9QMGPs6S%q5xL2m`-bsjdbxN5boic02Mrm1tGwRkg2bsRANv zg&UnfNXPf!NH)GYlFl(yq2!EA^VVhz&}!B5I+u*Ei|@ z0Fv$d)kY-@egA>BQ(0JTH-p86n;VrDT?^GV4;DJ2y#{p)7gp*moIxw_8yFlcgh8zt zv?9OKx)ZHJEf+-42%rNCv{$G?xG>y0X$GI~+z~&7O`N6UB5~K)aptn_*q-jp@4ix% z)NJ=hW$OMiuJB_Zk=AFp^ld7^qinO9zRhs7rfRX)Y_4+y7R}_=UA=~Ow58Nx+e;7h zhr~4TNlYY-db1|2M&(A(cwh+95mm1UwA@?|?u0TM;^6C*h9B0uLD>%w#rmzU!DKD?I8RA0FfP4mxn4B(r3K)Pc58h~R>^*qb<}HP&M_ zt*1wNpX3x0%Z({*n_br4DD{jusfS)t-3!#u;8tvG=}f!%1j=^bjI3DS!jW%5=24T1 zb*^#eZOlZyVlwLKrS8SoKT{DcNX;9iPbsM>K?O>O1g6vqHcPhx5!TzSQoR*MFx4l; z4`9Pxec|bDcA?&^KoFmvU+dJm7I}wKH;c2bw@R?qrO)-c?kl$|%}yf-KUNZ?rDa== zT@J`kfTQi!U=QLFnxt84v~NhOBkHY4+GM>eku)$-*-TiYdbxX=2wptQYe zBO@>-*0#U|FfP{vWBX8VTgp|6*Dk>9L8s6&ZL#i}ZfmP)}A2JFv}qHqK%=%7hr=RC=lX^YrP- z;nud^PjignDXith4&Ax4ZiioqT%L}dceHmQ+Bn?|+BEKxP@`v>r+RJ-^wi75nakQe z{f%$-vQd`1w1YT{IoxRoziN4}Hxg%g3aE&QQf$Q|JTt9MTQq$qoI1umkOi&G!c zBahiKYPL7=_G%V zGcfS(%@1zAr!2;)CF#IhDpXRx@aWN_`aL*i=_==$U=?kLEeP_~WmmE@k}XPhR%>kL~-|7d1lWzbAgv_ zPwj%RIDk;24lti-i#mXavgk6M?5ECeOIsB~sn_{K?Dx^b?}F6+_8aftwg2nW9~T=~ zSllA=!yv#yCVB6jY~oZD^`&vcrk z?YPY#sw@zp!L81n@+m|aI6vBXC-?R0_` zPs};HA~Wb0h)%mviEw~XTU1x2JpeH2jaGPbBM5+DQo9AKwbAU{kv2l2*RH-KC@c{l zr%hx-yr)lZBx*NgUOg#(Al3=j#ZOV6w5p{;C{HIo^afR1Jh-t@lO`R7m!c^s+EN9u z(kq13O3Ocjsi=}!^1pzS>Kvt8X*2*w0pCJtV5eSw-!LDIB1-l_g5r}ZjN&E9jn@wcb&8!*luGWtQqj)p2~5bb^UO3{mP7v>(@~3_ti;BQ5+H=D zKc#nP4?5VuAG+-WJ{Deeh#e>pjP*YJ>o(iP4t)SUpaocg0ag%ip%)?#2a*(S)`56P z4#m%dKx-feWg}tlZ>yRkFp;>Amfyq`5^B-#8r|{XcK5{Oz&=SmC?Hl?;CE4o08ar- z4MH-=DCn@HCafp|t~Cq6B77%&hzShzVq{0DcQim#w7_c{%4<8SpG^n=sK^7HMVJO_ zo{rqL40-*c)-z+XpG7{yUN^%ivf+nD0AQWi;Az-o_g#Qtg*I~id~8L9*yNclU0K*s zo{cR9gs-Vn8(C6zMRc)oW#q&)ly=M#OrJ864&l2eo`8<&?fb2MQ9;K*VDvya@ zrrKX2@)aV#O61px{2~!z0|kPVp74ET4xsU2bO!;V;*PZeeZL^?QD@R!X;g2WC7D*K z4P`o%s+R49fxkt4Y~a_GI&`Hzu%UH9$A4J9-$5Pq4+|g~n`WmW;YC0_g0yv(|4_b=(|gbRpL!- z>?n4M-$O&U*h<_MIfhp0Ddi-}lv^TOg~M)fSRX{)D0CvBI0w#t21BJ8+=f;E9hzRL z)c?=!KcIdD{RPE;35N?LEM32fa8w}q6>#xBwfz~9Z-DGZFT^RuMuua)^J>E*4$v$ z{I*U>FsMcvV^R?!lK}!AJAi}{2_^aKy9S?JH!0rfXJGlJ)^+hMU`MD3ADhx(|6uVZ zfpf1ToL|eW_yo8rgt zj_8BZ@uak3Ati8PNyIot@pD9!B~&VRP?VMCJYed!1Em{iTB3GJ>xL4`S6Z&GG?;3I*^xcCw^lH$r#)TWH|odmi8TTymEkfNyd zWx=lj;Z!Lhm}CzU_+}$A=WSrR>S~*SF94&;Y8&WX&Ljr>22JucA|&TXJ`e2z$+qYd zQEpoAbP^2w_f&Odk6fkFH$naeS4i1nO<|H*APxtX{gnPR5C<@f?%=*3bsXOH0W;uY zo;@ug-xMQQi)UqAnhu0g}|ESoMM|g%ftgKP@M7U zobX|x36Fi0z5g{@^s7XaqgQ_11eOcS?miyBOC25%=@U^bS0T;6;8EJQkg`QG$3fZ} ziQ#H=n8DvdFX|Z*0Mzs>E8+sYGyz0)o$dYY*iLt1pS2(E{eTTjW0F1YlJSKJ2k(@v zLkf{>-M|`xM`R6Q6UgQvWvFOk^Nc;4M>veIorQFwb-?DqF(9v!;<*8iy8>%t#h3-Q z&H+}-!`>Bu)kX(c&56=|H+C>jijQsS{Y=ExvWa7fM))}F7;x^*RfXA#ONpmn!3%U# zNnE$k%?tuOM1Tv2oNI!@{u15AUlAcGNqo~^Qwf&iNQ5VT9}N%>Wf6$K;va}8r~Uzz z$h{=NopNb(y2`BV^K0bN66lszQsG$yyBEcuQ2jp>8S4Aj>G4mA9O3umNq~nI(yWmR z7$_R@S46vsk6~T<5{B3QPYexo9RFjldvBJ!U`E& zLxCLU_eo+tLq-D5j?#c|sc?Ce>Z3cHCxi>>&c01%U@ygKFD)PCQ_3lo_DtZ`XR&Ca zq{?zDe*7!yc0tq7ng-PK${ryjDaUu;Hi;k!b%+0phLCI>#W)2VR*`j23=imt5oLWI ze(8$(Un-9hoTq3K-*sHyZ?^dcL3^3?eSDH>BrWPQiug1Z5kEtuN~A*MJ`n=u;xC90 zq)F@#>ARp;6aNMxM+V=0ssRFMf8UE;rY_0_WKmkg70!Ym)7wDKLA}-Pgo#=xH%X#{PbeEvy%Em0TJtpDFsUNQ6bXm= z*hwE1{NQt7vg|o72(%?zFC<^j&Ly4}sRe1NuQuvCPZD)0kDd*y_0FAnd<+uEmn%O$ zuJR|e{>ny6p@m8V37wX7htJBy%Z%!It4^OX#81-N*NOZSk$)ueWg`C$BFA>$D%hNF zCTA$VO|5iL$arv0`buB)zC*Q&_d~%{B_*BC4<^F%B3Yr(12Js}I$K1fmW60$Q6>*g tpCG6VYR$2^giL3t*8lso@3enu%`;2*Opzl3>!5C_J1$9g604K diff --git a/datasets/__pycache__/cache_dataset3d3.cpython-38.pyc b/datasets/__pycache__/cache_dataset3d3.cpython-38.pyc deleted file mode 100644 index e12e44f05448e5510ff062164a83509065201059..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3238 zcmZ`*TW=h<6(;AlGqV@1W!bVF+gaPGn|114Bn}Xu7q>th2Mrt}KwK1<#vP1?)M}); ztVphHZD-L3xyVxrKeaDLvHO_6#MeIQ7qkruwC8XnOEu6L4CjzMJiL70IfuXLc0&Ts zZhMFSu}jF`v2yltpzMk2x}vvL|)=5I$f{O#N++{i7w$SYb=i=vK``$Z51 zMHq!eJ8Bo5sAJmQyj%359>^YRl~_BXR!r{r_O+N|@Euns?WXh(hiF6-`D zuc&wkBYOFuxDnkjR@U;H#m(p@CH%%AiEi;*%lBA+MWKFc`J)xAgZKF@cJ4A^>+Jk@ zR&<-+Esd`kD+k=C{HDJc8fNO2%IdwhjhG zBKPEtL0PFmRwNTH!y|;^@zB8VpYZER0ri0 zC1}v@bCD@Nq&iUBS*T^M&IM9Mh+ zp8T*i-l+=y;dpuS8lp+~U9z17M{}ev?7bt47 zOBQrO7M7w*IB!OQ=+-7#A+f(&*vi_qmriZ3s2uHIt?i}DKxWQmvT$mL5$660v7pSm zO!ho+wQlSHC(y|X^rShkd3TZeQ7&O-^bgtc{I2eoQ+p7vwWhtK)QWOVQodv9=G|!6soLYky}g{S{gGDyTiyIkez!JIm?8 z69_GxB+sko@ia^Kaz5|v44x0t!QJ~%fT%rVTI!&gB4aOxAq3T85@XPm+JeC90`B)d z(sugnBkg5{iMuTTFi#*L+eiv02Zm`+RS2SqoWLoh29AX|uLF$oO~`Rj6z^lFkMkIw z*dS@IoE2LTdK}!w+mz|Y6Rw&l*6`&6uprSP2o0?bt3&(X?0xIHJ->3wk+%mu{GSMm zmjE9=ZsHp;m9MX&6|20A1U(s*eg}rbV?!sFj%GL@J{T>w$l+CQ#HQq^pMG$q- zyT2yN-St#!3I4sJ%YcCe<}er75U$9w4UDi=XW3;QFv+jo+OD12uf6)jc54rk_v_Xo zr~_a`&@f`&``sgS>cMA1RO0DC;L3;A5#|T+OOz>u<8024Fo7Ih$Cj3M5JK@YsA$)~ zt3yB|OA}QIsa+G90r)CS@)&@R!c4{xj<<4N413}>j1!pVv@K_acn_s^j0Xy-wTNR) zAL=%M&&9OL6UDU)X44(*J>jLSAXm&vxj*B4&UNcVZ~NX$?f^Y{ z&P^+{EC?zmZ}=}Sm|r+Un9~gotr7Uo!=aD45RVe}9L8}`v009CCypVFDyYUnV8o zkOZQw_E|AsZ<4PZKZ8uYH9AO&9Aa;iAfF5^6PQhA9{xnP;+Rz_EaNMj7aD7443 zvYJZcwF2oQ@Y11sYNoPWj>>X`1_fqGfuU5iu)yVl!y6reQ8qerl`#3(Y%S_Hmxp_e z&q9ZGi>gdA(LpPZu=o&7b!3`N4@MHQg5(13keZG{|}JdnmMP zZlT5}G|d`x9djTWllOd7g9T!r?^{SF6=(FWoT4#xa{@wZ5e3W$kt9%jT-Mi3_{5x6={Nh$2M} z=`$m*#0=BM+Qd!JMXzYkI!>t~K%hJ%?|sN?-uhZ#-r78=4{d=K1!@#^zyBYSA|VKURWp?xXhpW!Pl#X@iVGSUluCQ;*NfTLK#Z5jhf)6tVuj& z+w531OJsd^$EoF*Hrs9|U(0t2wF2rFl&zfmqE=L^%2jz#B~?(x`$lcyj-g6w;l803 zg2e-~wuJhkT0(t^>t)o->Ky9l0t@};P+wN(Q9pkmYs228?H#_Mum4eZ1i+KH9eDt~Au<`7T(3Ww&3F>n$wbQ0%K5IeE?;>Iy;tMMdX zKfA33YDXfq{Jmz>xW?B{Za0?s`ls6s^y2!r+sFU&{`>DA)8Jze?^koF40~y@-VN)1 z9E7;R0zXvUPHGba_ES6B_Ip8^(?Lc!%}%u4y@xlgjvwu$(%-9`n#autn}A4+L@2R?!x>miOQ!8awv5CAqHu6ZZlQlt6I7!k zPfS9%$~^%3dAvO{eq77OyR+l@c=H>YHp8cy+6^59VJdz(weM{=<6v}{|8cu&>lKVj zosO?}0-cH|%?GLxWc<&!!H|1R6>q1e4iw=$!Xd|jt~#kx?{>9{Qm5^22JJ|n$2_%S zHjfuI`$4VH>qcI$+YIBVRtST}h~^{AiZxoh$lT7xmC+EnC=5};@21d?g04$y8C}F? zQZdZtS3x8YMz9d7jf$Z?Nh9BnN=81BO>C20Yp9`^i5E8s!m@MRZG1A zt68Ynyb?-&R}jeV+ckz6)TR~K&@1kJ<3Q9LR&IrKy4|Ma=e-9!NEns3tMo%#Xu^Uk)QL#`~EZ;E{P|z~oG2XQfpc8=z^UzSvjuky0 zTW<;KOAODBoncNn(6qn@p$O01C1b@nl<0NQn}?9&E$Cwr7eKoQazMC}G~X5AF?L$T zRtayq;BY>Xs_?*~xqwsB;5^@|aYA1nV-$LPOR}aulE(&ks(&3HM>Ke(Z;fa$T|Wc5 zzxLWIz7C<^?p9tS%{EeKcPsB%l{?+|1k3N0wk!84pLnM77@pOakE~Sq`cs&KRCKQm z?53huUC>L^WcM^ckh-3?)ocfzmzvRTCtdt>6a_kNcEcC6?rMHp7iqlXv&{pR_tV@~ zyX(hKKA{N@dV#y^+uddzu-Csr)m$THJ)2rk-kYh}?$%SWmx}$<7%4Y`*uxk=F;gQS z!s`)s|9e;0`71$v&^ux@)J&W-#>rbPsmVloiWZ3G@&@^|bAXMtlqexAE zGfE41(~G-axZBa6rLGA!^%qdB=F@x+wvJJ$zeulHs=2kLKSyIXsQ3~UFH!MZDAL7x z+mE8=Ruh&H@^Bis*P!>H?7fkH6YXwB!5h2ejQRYO*JEvvnZHAra8rY@YN} zs8&U$y*>$g>I?bfh#Pd$W21EC?20EQiLBrFA~iz5;zbEHaNe;j8wq15A;fS^SPf(~ zh%0I)x%iVlYgEhnAigjWWD+cx1ar!}gD=9GHy3t87}suUcA6mye-B!A8Efn7C{laR zqjq~gd!Xj;an0X5_1S5OJ#GleCR~lL;N{E(HVfvW;Gfz5&>T)ozcq6NvGP>#W-Yhph23Tp)N=b7aT+~q&+&N4`{3Cc<&$z@{VJe>YVDw*S3 zd5mT0;}w>rk5^chxCWW4=wHLi`ZuU}8byC`){g1hXhhsa-c@F%UL>kPMUT2HJ`}b+ z`V(lV6~R02-h5^+PI)vK_BD*p;wSkOOh`fWKRkz-v+uCAok>v;&L({PE-EARGR{Fy zWOU1V-5Qt_Pz@ZoMs{MZ!L43_`X1y^cM@w-cVhwll|x;?eKAq9CN;R@c-N&+t!0v& zD7gk%fP_oTF>YrW<8~+0gm5xQ7dlg6S|%~H_r_oU6K4gI^&tRO;=r^dkOT|1x?4g5P6V}x(!XI0+E5@DOG>Gsli9suG*!1+|E$tCmz5&%8RPmhmho zWYX{~z70cIE8(10(*kA5Uf?v#MrNo@-a}RpO@^AD>=MPs0jwrv+kgXkKxW&7Ce0`W zZ>T#IWoBkP2X(mH3v|Xha!b-xcCp4`Lt`AmGDFf8lB!WeG3iQkqnr>zc?wW;pXPC! zod%~g5c}pmj~zbG%T8h9C;T~Wn^PC?*zlA6^CzD>-%FsQpK(pb0mt~8q<(q42_S_x zbaM2xa+>oe`*V>(_1(h^6=#;wFjj`&e_QZz<@nkl-%GEGcs*F%X{ws!PM$krdB`sfXvVT z`M0o7TVRnV&2owZ-0{PywJ*(I8yKHinb=J?^ZvgECC`*CAJWjApg@31 z*~|WA_*~{F1Ic;IE!cp8{fZGjVHvTxQ_#?314kJB6@|=Z+d_Dm8`>nhuNa@i8w2NS z&a1}n7@>TXvYm70BA+eJwU9p1-%IRa{t#mmn^W3_#Kx{%?6t^LJ}wOx68BIH7voZE z=};hewc$-sYksEH;nuRs&9u7kuqd&T-vG!vjnw88=2X74G@WTk3!@sC2`MDwSSx0l zh2N{5(_cp$s|tMpD$T#JR}Xp=4W?GJr#6vLW~rgfN}(AwLxff#XdC%7qy(LpgD|43 zH)7J>KEoAia`GnwS0?; zZ&Ps!zi*-K$GD?MP#6?(N*A7)L;?lr6yq||Dr;sz7UU|ZRnfmN7h^M?1L?m>3gtd3 z4S4am5zA2Ggiv)Lo;U7(hRzj#cOcqHY}kA9jd9u;btv&?1|=x)M+cG~pTi#(@W1eP zhL!z&fy4)V2l^x9jn&w0!5e_p;y+2aW{qmdp(hrl6^`tYhd{`$%8d<8TRein;8a!S ziLt~}lnY+>dI8*I4ytS%Rek5k&6xcP`dJm!7C8G&e^*d+Ut3@#jH{_=a?GXwkjBq) zJ-tGzVLA;kmDKtv#z&mgGA;b!K&f3mW(>q_Kos&nu?~(1?!p4dC2ii2-0NMZWsSTbTP5ei0ah|(F&TA%0Bt=tlKtR>+ zQZYo4E{sfYJ!rSbW|*0r&=4{Z`b`vnhC8D8*A**8*Bt$9cg-zxe;r*j7n#CmaYwgM zOkARc`T6pPxu*MBkkL6dW-|7OmnhG@&fl^l!zBd0eoNB)tDbmxjcVJNeE6H%XH0<(i< z`)@JsUvNjH&XIAnShCBS+9}7`@e#0jRq-N>^<}hGFX=zUBg>5ZF%2rS-Mz6JH`~z- zMW&Nro1W|Vaj)Ht+s#e<3rtk%WKaDu>UV->*zHA{pp>PJFA?=96*qZ6ca#2r&V-fa zl=Kj9Ec;@LCfG&Le?b(R=LbZc9QNcpQ}a^{9dZ)|vknEz3f_;J9}Asq%B> M*B2{nBcyBmFL4Zb{{R30 diff --git a/datasets/__pycache__/dataset3d.cpython-38.pyc b/datasets/__pycache__/dataset3d.cpython-38.pyc deleted file mode 100644 index 673ba22875a233002d9a8c435dd3cafccc5d2a00..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7165 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 SuT&w{X_a~)Ma+YJMfw*f$eyJD diff --git a/datasets/dataset_list/example_test.txt b/datasets/dataset_list/example_test.txt new file mode 100644 index 0000000..7910eef --- /dev/null +++ b/datasets/dataset_list/example_test.txt @@ -0,0 +1,2 @@ +07_WORD/WORD-V0.1.0/imagesVa/word_0001.nii.gz 07_WORD/WORD-V0.1.0/labelsVa/word_0001.nii.gz +07_WORD/WORD-V0.1.0/imagesVa/word_0007.nii.gz 07_WORD/WORD-V0.1.0/labelsVa/word_0007.nii.gz \ No newline at end of file diff --git a/datasets/eval_dataloader/loader_abstract.py b/datasets/eval_dataloader/loader_abstract.py new file mode 100644 index 0000000..6e5fbec --- /dev/null +++ b/datasets/eval_dataloader/loader_abstract.py @@ -0,0 +1,146 @@ +""" + DataLoader only for evaluation +""" + +import numpy as np +import torch +from torch.utils.data import DataLoader, Dataset +from tutils.nn.data import read, itk_to_np, np_to_itk +from einops import reduce, repeat, rearrange +# from tutils.nn.data.tsitk.preprocess import resampleImage +from trans_utils.data_utils import Data3dSolver +from tutils.nn.data.tsitk.preprocess import resampleImage +import SimpleITK as sitk + + +# Example +DATASET_CONFIG={ + 'split': 'test', + 'data_root_path':'/quanquan/datasets/', + 'dataset_list': ["ours"], + 'data_txt_path':'./datasets/dataset_list/', + 'label_idx': 0, +} + +class AbstractLoader(Dataset): + def __init__(self, config, split="test") -> None: + super().__init__() + self.config = config + self.split = split + self.img_names = self.prepare_datalist() + + def __len__(self): + return len(self.img_names) + + def prepare_datalist(self): + config = self.config + data_paths = [] + for item in config['dataset_list']: + print("Load datalist from ", item) + for line in open(config["data_txt_path"]+ item + f"_{self.split}.txt"): + name = line.strip().split()[1].split('.')[0] + img_path = config['data_root_path'] + line.strip().split()[0] + label_path = config['data_root_path'] + line.strip().split()[1] + data_paths.append({'img_path': img_path, 'label_path': label_path, 'name': name}) + print('train len {}'.format(len(data_paths))) + return data_paths + + + def _get_data(self, index, debug=False): + label_idx = self.config['label_idx'] + name = self.img_names[index]['img_path'] + img_itk = read(name) + spacing = img_itk.GetSpacing() + img_ori = itk_to_np(img_itk) + scan_orientation = np.argmin(img_ori.shape) + label_ori = itk_to_np(read(self.img_names[index]['label_path'])) + label = label_ori == label_idx + + # img_ori, new_spacing = Data3dSolver().read(self.img_names[index]['img_path']) + # label_itk = read(self.img_names[index]['label_path']) + # ori_spacing = label_itk.GetSpacing() + # label = itk_to_np(label_itk) == label_idx + # print("[loader_abstract.DEBUG] size", img_ori.shape, label.shape) + # label = self._get_resized_label(label, new_size=img_ori.shape) + + if debug: + Data3dSolver().simple_write(label) + Data3dSolver().simple_write(img_ori, "tmp_img.nii.gz") + + s = reduce(label, "c h w -> c", reduction="sum") + coords = np.nonzero(s) + x_min = np.min(coords[0]) + x_max = np.max(coords[0]) + template_slice_id = s.argmax() - x_min + + if img_ori.min() < -10: + img_ori = np.clip(img_ori, -200, 400) + else: + img_ori = np.clip(img_ori, 0, 600) + + img_ori = img_ori[x_min:x_max+1,:,:] + label = label[x_min:x_max+1,:,:] + assert label.shape[0] >= 3 + + if template_slice_id <= 1 or template_slice_id >= label.shape[0]-2: + template_slice_id == label.shape[0] // 2 + + dataset_name = name.replace(self.config['data_root_path'], "").split("/")[0] + template_slice = label[template_slice_id,:,:] + print("template_slice.area ", template_slice.sum(), template_slice.sum() / (template_slice.shape[0] * template_slice.shape[1])) + d = { + "name": name, + "dataset_name": dataset_name, + "img": np.array(img_ori).astype(np.float32), + "label_idx": label_idx, + "label": np.array(label).astype(np.float32), + "template_slice_id": template_slice_id, + "template_slice": np.array(label[template_slice_id,:,:]).astype(np.float32), + "spacing": np.array(spacing), + } + return d + + def __getitem__(self, index): + return self._get_data(index) + + +if __name__ == "__main__": + from tutils.new.manager import ConfigManager + EX_CONFIG = { + 'dataset':{ + 'prompt': 'box', + 'dataset_list': ['guangdong'], # ["sabs"], chaos, word + 'label_idx': 2, + } + } + + config = ConfigManager() + config.add_config("configs/vit_sub_rectum.yaml") + config.add_config(EX_CONFIG) + dataset = AbstractLoader(config['dataset'], split="test") + for i in range(len(dataset)): + dataset._get_data(i, debug=False) + + # label_path = "/home1/quanquan/datasets/01_BCV-Abdomen/Training/label/label0001.nii.gz" + # from monai.transforms import SpatialResample + # resample = SpatialResample() + # label = itk_to_np(read(label_path)) == 1 + # print(label.shape) + # # resampled = resample(label, spatial_size=(label.shape[0]*7, label.shape[1], label.shape[2])) + # print(label.shape) + + exit(0) + data = itk_to_np(read("tmp_img.nii.gz")) + data = torch.Tensor(data) + + maxlen = data.shape[0] + slices = [] + for i in range(1, maxlen-1): + slices.append(data[i-1:i+2, :, :]) + input_slices = torch.stack(slices, axis=0) + input_slices = torch.clip(input_slices, -200, 600) + + input_slices + + from torchvision.utils import save_image + save_image(input_slices, "tmp.jpg") diff --git a/modeling/__pycache__/__init__.cpython-38.pyc b/modeling/__pycache__/__init__.cpython-38.pyc deleted file mode 100644 index e1ebe84e932933a89160c80ad78d685577518b05..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 181 zcmWIL<>g`kf?UpwR1p0bL?8o3AjbiSi&=m~3PUi1CZpdA9(SCGm-Ql_eROdFlE^ rsX3{M#i{zaKwUW?f%y2$yv&mLc)fzkTO2k(;nJK`JCL29ftUdROCB$l diff --git a/modeling/__pycache__/build_sam3d2.cpython-38.pyc b/modeling/__pycache__/build_sam3d2.cpython-38.pyc deleted file mode 100644 index 97d9ba286624314589e6076e6737c205837528dd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2588 zcmbtW%WoS+7@vLFyX!}sSMw6Zf*vrS8X6v=s;Wqo15z778z`(wR~ygR-ee!{?6_&F z&8hTg^&jAn9DC~pi30~zr2Y|eKti0XiW?7!_Q3azV<$vCfSC1s^UcgRGv9oV-}tji z#U)VA8(nt4Ovo?TIbJO2tU=9w078jJs7Ccj^E7CUNRJKA&_(*zp|2+mRcWyprObs2o?k3h)cmrKPVmuga?46kVicT7h1TF3~ET0&beY46Cte zTKmTIX6Q1VrZX@;%jW3pw$8t2wR^;yXWITLI(MLX3v8Y((0O`lpnHpKi7jp|-_zh6 z{TgYk+`Z}6p97=ZrN$8peMA0=v=&%+HEDqVq{FO4>a zZsil6#yxQ;0t3diAckgoV<){H>~8QN$=WH88E@g99T4M`En6p{rbF9UgK$!V|*Ue{;wCZj$LV_6vwQPvaPBZ;IR z`&}?bCRfH1ohaQ5B0mr!@xz3&J1moKtIJy3y);b3LruE=#NH1zK8J@Az6i}M}nqT*B_B3=$=$Gs>9%m6vgp>rKmoR2o(=S6%RJVg8@oG;*+5cgujFwh7&)H zXcq?7o|8NK&H>R#Zc?)C@W;XhZtbH`=V4W?Lg9|J8Gflq5lfMaS$+-}LY=jIH zQfzcUElheKIhsQSy^6xkFd3~LLYNW$3Xl-dioc3CH2E92V@2Ih?S)8F#G3)b-$EJ7 zo5w4~5I3+nATcNeCuOoEjsVe{I@ZCpUNubn3YP%60k6E-NxvIX$`TantYUe3bFFjr zyVLidPJeaC{QTuw=f~e)yYb-Mm9@@;$H-k?>wq$ZJi5Hruw>=X1S632ssK*_-2Nf{ zdFA6ThUfOeJ7DgZ1&Qa3_)Ji#^UX$uBm8oV0gl-xEs^q8SL#V3oy+LYb?_`N;5?=W z$HbH-yB$Q*OnWSmW|Rh0P9gO(5eNqNYKcafBe-*gH8aQ|%qg7pYGY+5$nG98vLEWGiuU61k!*UkXDbwV=Aqz z8}!&Qf2c=CJt6i5SlW-+Mf{79odseRY`tuh!ItVXT-Su^mJY4|yig&}-1lwpi3<{c E116NH9smFU diff --git a/modeling/__pycache__/common.cpython-38.pyc b/modeling/__pycache__/common.cpython-38.pyc deleted file mode 100644 index ea313d8be26871b06d0286f23266773c4b0928cf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1760 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 TkEYA`r0|uwrzxskgns@H*l=JC diff --git a/modeling/__pycache__/mask_decoder3d_2.cpython-38.pyc b/modeling/__pycache__/mask_decoder3d_2.cpython-38.pyc deleted file mode 100644 index 957ccf0eb07b4b5c5aa18bc701127432f7518857..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6063 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

Gh)_P@rHD3<^L diff --git a/modeling/__pycache__/prompt_encoder3d.cpython-38.pyc b/modeling/__pycache__/prompt_encoder3d.cpython-38.pyc deleted file mode 100644 index d1f317fbc3d7ed14cf56eaf79e985bf7380b40a5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7700 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 diff --git a/test/volume_eval.py b/test/volume_eval.py index 02ef95e..e880990 100644 --- a/test/volume_eval.py +++ b/test/volume_eval.py @@ -137,21 +137,31 @@ if __name__ == "__main__": EX_CONFIG = { 'dataset':{ - 'prompt': 'box', - 'dataset_list': ['word'], # ["sabs"], chaos, word - 'label_idx': 1, + 'prompt': 'box', # box / point + 'dataset_list': ['example'], # ["sabs"], chaos, word + 'label_idx': 5, }, - 'pth': "model.pth" + 'model_type': "vit_b", + 'pth': "/home1/quanquan/code/projects/finetune_large/runs/sam/ddp_b9/lora3/ckpt/model_iter_360000.pth", + } + + EX_CONFIG = { + 'dataset':{ + 'prompt': 'box', # box / point + 'dataset_list': ['example'], # ["sabs"], chaos, word + 'label_idx': 5, + }, + 'model_type': "vit_h", + 'pth': "/home1/quanquan/code/projects/finetune_large/segment_anything/model_iter_3935000.pth", } config = ConfigManager() - config.add_config("configs/vit_b_103.yaml") + config.add_config("configs/vit_b.yaml") config.add_config(EX_CONFIG) - - print(config) + config.print() # Init Model - model_type = "vit_b" + model_type = config['model_type'] sam = sam_model_registry[model_type](checkpoint=None) learner = SamLearner(sam_model=sam, config=config, data_engine=DataManager(img_size=(1024,1024))) learner.use_lora() diff --git a/test/volume_eval_mbox.py b/test/volume_eval_mbox.py new file mode 100644 index 0000000..bccb134 --- /dev/null +++ b/test/volume_eval_mbox.py @@ -0,0 +1,216 @@ +""" + Volume evalutaion + +""" +import torch +import numpy as np +from torch.utils.data import DataLoader +# from datasets.dataset3d import Dataset3D +from tutils.new.manager import ConfigManager +from datasets.eval_dataloader.loader_abstract import AbstractLoader + +from core.volume_predictor import VolumePredictor +from datasets.data_engine import DataManager, BoxPromptGenerator, PointPromptGenerator + +from tutils import tfilename +from tutils.new.trainer.recorder import Recorder +from trans_utils.metrics import compute_dice_np +from trans_utils.data_utils import Data3dSolver +from tutils.tutils.ttimer import timer + + +class Evaluater: + def __init__(self, config) -> None: + self.config = config + self.recorder = Recorder() + + def solve(self, model, dataset, finetune_number=1): + # model.eval() + self.predictor = model + dataloader = DataLoader(dataset, batch_size=1, shuffle=False) + + for i, data in enumerate(dataloader): + # if i <4: + # print + # continue + # for k, v in data.items(): + # if isinstance(v, torch.Tensor): + # data[k] = v.to(self.rank) + # try: + if True: + if self.config['dataset']['prompt'] == 'box': + dice, pred, label, temp_slice = self.eval_step(data, batch_idx=i) + used_slice = [temp_slice] + if finetune_number > 1: + for i in range(finetune_number - 1): + dice, pred, label, temp_slice = self.finetune_with_more_prompt(pred, label, exclude_slide_id=used_slice) + used_slice.append(temp_slice) + res = {"dice": dice} + if self.config['dataset']['prompt'] == 'point': + res = self.eval_step_point(data, batch_idx=i) + self.recorder.record(res) + # except Exception as e: + # print(e) + res = self.recorder.cal_metrics() + print(res) + print("prompt:", self.config['dataset']['prompt'], " class_idx:", self.config['dataset']['label_idx']) + + def eval_step(self, data, batch_idx=0): + name = data['name'] + dataset_name = data['dataset_name'][0] + label_idx = data['label_idx'][0] + template_slice_id = data['template_slice_id'][0] + + assert data['img'].shape[1] >= 3, f" Got img.shape {data['img'].shape}" + if template_slice_id == 0: + template_slice_id += 1 + elif template_slice_id == (data['img'].shape[0] - 1): + template_slice_id -= 1 + print("Using slice ", template_slice_id, " as template slice") + + spacing = data['spacing'].numpy().tolist()[0] + if data['img'].shape[-1] < 260: + # assert data['img'].shape[-1] < 260, f"Got {data['img'].shape}" + img = data['img'][0][:,:256,:256] + label = data['label'][0][:,:256,:256] + else: + img = data['img'][0] + label = data['label'][0] + # img = torch.clip(img, -200, 600) + box = BoxPromptGenerator(size=None).mask_to_bbox(label[template_slice_id].detach().cpu().numpy()) + box = np.array([box]) + pred, stability = self.predictor.predict_volume( + x=img, + box=box, + template_slice_id=template_slice_id, + return_stability=True, + ) + + prompt_type = 'box' + dice = compute_dice_np(pred, label.detach().cpu().numpy()) + # Data3dSolver().simple_write(pred, path=tfilename(f"visual/{dataset_name}/pred_{batch_idx}_label_{label_idx}_{prompt_type}.nii.gz"), spacing=spacing) + # Data3dSolver().simple_write(label.detach().cpu().numpy(), path=tfilename(f"visual/{dataset_name}/label_{batch_idx}.nii.gz")) + # Data3dSolver().simple_write(img.detach().cpu().numpy(), path=tfilename(f"visual/{dataset_name}/img_{batch_idx}.nii.gz")) + # np.save(tfilename(f"meta/{dataset_name}/stability_{batch_idx}.npy"), stability) + print(dataset_name, name, dice) + template_slice_id = template_slice_id if isinstance(template_slice_id, int) else template_slice_id.item() + return dice, pred, label.detach().cpu().numpy(), template_slice_id + + def eval_step_point(self, data, batch_idx=0): + name = data['name'] + dataset_name = data['dataset_name'][0] + label_idx = data['label_idx'][0] + template_slice_id = data['template_slice_id'][0] + spacing = data['spacing'].numpy().tolist()[0] + + assert data['img'].shape[1] >= 3, f" Got img.shape {data['img'].shape}" + if template_slice_id == 0: + template_slice_id += 1 + elif template_slice_id == (data['img'].shape[0] - 1): + template_slice_id -= 1 + + if data['img'].shape[-1] < 260: + # assert data['img'].shape[-1] < 260, f"Got {data['img'].shape}" + img = data['img'][0][:,:256,:256] + label = data['label'][0][:,:256,:256] + else: + img = data['img'][0] + label = data['label'][0] + + box = BoxPromptGenerator(size=None).mask_to_bbox(label[template_slice_id].detach().cpu().numpy()) + point = (box[0]+box[2])*0.5 , (box[1]+box[3])*0.5 + point = np.array([point]).astype(int) + if label[template_slice_id][point[0,1], point[0,0]] == 0: + print("Use random point instead !!!") + point = PointPromptGenerator().get_prompt_point(label[template_slice_id]) + point = np.array([point]).astype(int) + # box = np.array([box]) + pred = self.predictor.predict_volume( + x=img, + point_coords=point, + point_labels=np.ones_like(point)[:,:1], + template_slice_id=template_slice_id, + ) + dice = compute_dice_np(pred, label.detach().cpu().numpy()) + prompt_type = 'point' + Data3dSolver().simple_write(pred, path=tfilename(f"visual/{dataset_name}/pred_{batch_idx}_label_{label_idx}_{prompt_type}.nii.gz"), spacing=spacing) + # Data3dSolver().simple_write(pred, path=tfilename(f"visual/{dataset_name}/pred_{batch_idx}.nii.gz")) + print(dataset_name, name, dice) + return {"dice": dice} + + def finetune_with_more_prompt(self, pred, label, prompt_type="box", exclude_slide_id=[]): + assert pred.shape == label.shape + dices = [compute_dice_np(pred[j,:,:], label[j,:,:]) for j in range(pred.shape[0])] + rank_list = np.array(dices[1:-1]).argsort() # Ignore the head and tail + rank_list += 1 # Ignore the head and tail + for i in rank_list: + if i in exclude_slide_id: + continue + template_slice_id = i + break + # template_slice_id += 1 # Ignore the head and tail + print("Using slice ", template_slice_id, " as template slice") + old_confidence = self.predictor.get_confidence() + box = BoxPromptGenerator(size=None).mask_to_bbox(label[template_slice_id]) + box = np.array([box]) + new_pred, stability = self.predictor.predict_with_prompt( + box=box, + template_slice_id=template_slice_id, + return_stability=True, + ) + new_confidence = self.predictor.get_confidence() + new_confidence[template_slice_id] *= 2 + all_conf = np.stack([old_confidence, new_confidence], axis=1) + preds = [pred, new_pred] + merged = np.zeros_like(label) + for slice_idx in range(pred.shape[0]): + idx = np.argsort(all_conf[slice_idx,:])[-1] + merged[slice_idx,:,:] = preds[idx][slice_idx] + + print("old dices", [compute_dice_np(pred, label) for pred in preds]) + dice = compute_dice_np(merged, label) + print("merged dice, idx", dice) + return dice, merged, label, template_slice_id + + +def to_RGB(img): + pass + +if __name__ == "__main__": + from core.learner3 import SamLearner + from modeling.build_sam3d2 import sam_model_registry + EX_CONFIG = { + 'dataset':{ + 'prompt': 'box', + 'prompt_number': 5, + 'dataset_list': ['example'], # ["sabs"], chaos, word pancreas + 'label_idx': 5, + }, + "lora_r": 24, + 'model_type': "vit_h", + 'ckpt': "/home1/quanquan/code/projects/finetune_large/segment_anything/model_iter_3935000.pth", + } + config = ConfigManager() + config.add_config("configs/vit_b.yaml") + config.add_config(EX_CONFIG) + config.print() + dataset = AbstractLoader(config['dataset'], split="test") + print(len(dataset)) + assert len(dataset) >= 1 + + # Init Model + model_type = config['model_type'] # "vit_b" + sam = sam_model_registry[model_type](checkpoint=None) + learner = SamLearner(sam_model=sam, config=config, data_engine=DataManager(img_size=(1024,1024))) + learner.use_lora(r=config['lora_r']) + pth = config['ckpt'] + learner.load_well_trained_model(pth) + learner.cuda() + predictor = VolumePredictor( + model=learner.model, + use_postprocess=True, + use_noise_remove=True,) + + solver = Evaluater(config) + dataset = AbstractLoader(config['dataset'], split="test") + solver.solve(predictor, dataset, finetune_number=config['dataset']['prompt_number']) \ No newline at end of file diff --git a/trans_utils/__pycache__/__init__.cpython-38.pyc b/trans_utils/__pycache__/__init__.cpython-38.pyc deleted file mode 100644 index 2ee66e7d0e53f528fa2fc132ecf4bc6a9dbf8a97..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 184 zcmYj~F%H5o3`J9k0g!qS7A$szH~|Y{L{`+ABq(*-#2I=duEfd_*qBHr_|kip|MD+w zyH+LB%2K_rs{b_QITq5Qs8?sTX-*FnYyH#b3N{S1gDGpSKo@#~F@`&JlHlf;Br~Dc u(GVmu1F@jyS*&9Nkv!={AW?I|EY2rDbnFCiJI>GLeh7W`bf~lMg8BmSFfj%I diff --git a/trans_utils/__pycache__/trainer_ddp.cpython-38.pyc b/trans_utils/__pycache__/trainer_ddp.cpython-38.pyc deleted file mode 100644 index f69322e05cc83a29d1fbe588171cb3bba5d5fb65..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10586 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 diff --git a/utils/__pycache__/amg.cpython-38.pyc b/utils/__pycache__/amg.cpython-38.pyc deleted file mode 100644 index 2ac6acdb75ad205b4cab6ffe155cdbf02ce7d0d9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13169 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 AmjD0& diff --git a/utils/__pycache__/transforms.cpython-38.pyc b/utils/__pycache__/transforms.cpython-38.pyc deleted file mode 100644 index e94db31e69f54a234f30575128c16e0ba80a0205..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4004 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