g5CSrSSKrSSKrSSKJr SSKJs Jr SSKJ r J r SSK J r SSK Jr SSKJr S/rS0S jr\"S S 9\"S S 9\"S S 9\"SS 9\"SS 9\"SS 9\"SS 9\"SS 9\"SS 9\"SS 9\"SS 9\"SS 9S. r"SS\R(5r"SS\R(5r"SS\R(5r"SS\R(5r"S S!\R(5r"S"S\R(5rS1S#jr\S1S$j5r\S1S%j5r\S1S&j5r\S1S'j5r\S1S(j5r \S1S)j5r!\S1S*j5r"\S1S+j5r#\S1S,j5r$\S1S-j5r%\S1S.j5r&\S1S/j5r'g)2aEDeep Layer Aggregation and DLA w/ Res2Net DLA original adapted from Official Pytorch impl at: DLA Paper: `Deep Layer Aggregation` - https://arxiv.org/abs/1707.06484 Res2Net additions from: https://github.com/gasvn/Res2Net/ Res2Net Paper: `Res2Net: A New Multi-scale Backbone Architecture` - https://arxiv.org/abs/1904.01169 NIMAGENET_DEFAULT_MEANIMAGENET_DEFAULT_STD)build_model_with_cfg)create_classifier)register_modelDLAc 0USSSSS[[SSS. UE$) N)r)rg?bilinearz base_layer.0fc) url num_classes input_size pool_sizecrop_pct interpolationmeanstd first_conv classifierr)rkwargss 4C:\Users\Terry\Desktop\FGVC-HERBS\timm\models\dla.py_cfgrs0=vJ%.B$D     z6http://dl.yf.io/dla/models/imagenet/dla34-ba72cf86.pth)rz8http://dl.yf.io/dla/models/imagenet/dla46_c-2bfd52c3.pthz9http://dl.yf.io/dla/models/imagenet/dla46x_c-d761bae7.pthz9http://dl.yf.io/dla/models/imagenet/dla60x_c-b870c45c.pthz6http://dl.yf.io/dla/models/imagenet/dla60-24839fc4.pthz7http://dl.yf.io/dla/models/imagenet/dla60x-d15cacda.pthz7http://dl.yf.io/dla/models/imagenet/dla102-d94d9790.pthz8http://dl.yf.io/dla/models/imagenet/dla102x-ad62be81.pthz9http://dl.yf.io/dla/models/imagenet/dla102x2-262837b6.pthz7http://dl.yf.io/dla/models/imagenet/dla169-0914e092.pthznhttps://github.com/rwightman/pytorch-image-models/releases/download/v0.1-res2net/res2net_dla60_4s-d88db7f9.pthzohttps://github.com/rwightman/pytorch-image-models/releases/download/v0.1-res2net/res2next_dla60_4s-d327927b.pth) dla34dla46_cdla46x_cdla60x_cdla60dla60xdla102dla102xdla102x2dla169 dla60_res2netdla60_res2nextc:^\rSrSrSrSU4SjjrSSjrSrU=r$)DlaBasic3z DLA Basicc J>[[U] 5 [R"XSX4SUS9Ul[R "U5Ul[R"SS9Ul [R"X"SSUSUS9Ul [R "U5Ul X0l g)Nr F kernel_sizestridepaddingbiasdilationTinplacer) superr-__init__nnConv2dconv1 BatchNorm2dbn1ReLUreluconv2bn2r2)selfinplanesplanesr2r5_ __class__s rr9DlaBasic.__init__6s h&(YY !FSXckm >>&)GGD) YY !XE\df >>&) rcUcUnURU5nURU5nURU5nURU5nUR U5nX2- nURU5nU$N)r<r>r@rArBrCxshortcutouts rforwardDlaBasic.forwardAsg  Hjjmhhsmiinjjohhsm iin r)r>rBr<rAr@r2rrrJ) __name__ __module__ __qualname____firstlineno____doc__r9rO__static_attributes__ __classcell__rGs@rr-r-3s rr-c>^\rSrSrSrSrSU4SjjrSSjrSrU=r $) DlaBottleneckRzDLA/DLA-X Bottleneckc >[[U] 5 X0l[ [ R "X&S- -5U-5nXpR-n[R"XSSS9Ul [R"U5Ul [R"XwSX4SXES9Ul [R"U5Ul[R"XrSSS9Ul[R"U5Ul[R""SS9Ulg) N@rFr1r4r )r1r2r3r4r5groupsTr6)r8r[r9r2intmathfloor expansionr:r;r<r=r>rArBconv3bn3r?r@) rCrD outplanesr2r5 cardinality base_width mid_planesrGs rr9DlaBottleneck.__init__Vs mT+- Ib$AB[PQ >>1 YYxO >>*-YY &? >>*-YYz!%P >>),GGD) rcJUcUnURU5nURU5nURU5nURU5nUR U5nURU5nUR U5nUR U5nX2- nURU5nU$rJ)r<r>r@rArBrfrgrKs rrODlaBottleneck.forwardfs  Hjjmhhsmiinjjohhsmiinjjohhsm iin r)r>rBrgr<rArfr@r2)rrrr_rJ rRrSrTrUrVrer9rOrWrXrYs@rr[r[RsI* rr[c>^\rSrSrSrSrSU4SjjrSSjrSrU=r $) DlaBottle2neck{zaRes2Net/Res2NeXT DLA Bottleneck Adapted from https://github.com/gasvn/Res2Net/blob/master/dla.py r]c>[[U] 5 US:UlXPl[ [ R"X'S- -5U-5nXR-nXl [R"XU-SSS9Ul [R"X-5Ul[SUS- 5n /n /n [!U 5HPn U R#[R"XSUXDUSS95 U R#[R"U55 MR [R$"U 5Ul[R$"U 5UlUR(a[R*"SUSS9Ul[R"X-USSS9Ul[R"U5Ul[R2"SS 9Ulg) Nrr_Fr`r )r1r2r3r5rar4)r1r2r3Tr6)r8rqr9is_firstscalerbrcrdrewidthr:r;r<r=r>maxrangeappend ModuleListconvsbns AvgPool2dpoolrfrgr?r@)rCrDrhr2r5rurirjrknum_scale_convsr{r|rFrGs rr9DlaBottle2neck.__init__s[ nd,.   Ib$AB[PQ >>1  YYxe);QVW >>*"45a+'A LLAf KeU V JJr~~j1 2 ( ]]5) ==% == 61MDIYYz19!RWX >>),GGD) rcUcUnURU5nURU5nURU5n[R"X0R S5n/n[ [URUR55H\unupxUS:XdUR(aXFOW XF-n U"U 5n U"U 5n URU 5n URU 5 M^ URS:a9URUR(aURUS5OUS5 [R"US5nURU5nUR!U5nX2- nURU5nU$)Nrr)r<r>r@torchsplitrv enumeratezipr{r|rtryrur~catrfrg) rCrLrMrNspxspoiconvbnsps rrODlaBottle2neck.forwards,  Hjjmhhsmiinkk#zz1-&s4::txx'@AMAz6T]]SV BbBBB2B JJrN B ::> JJT]]tyyR)B HiiQjjohhsm iin r) r>rgr|r<rfr{rtr~r@rurv)rrrrJrorYs@rrqrq{sI*8rrqc.^\rSrSrU4SjrSrSrU=r$)DlaRootc >[[U] 5 [R"XSSSUS- S-S9Ul[R "U5Ul[R"SS9Ul X@l g)NrFr])r2r4r3Tr6) r8rr9r:r;rr=rr?r@rM)rC in_channels out_channelsr1rMrGs rr9DlaRoot.__init__s\ gt%'II qWX]^H^` ...GGD)  rcUnUR[R"US55nURU5nUR(aXS- nUR U5nU$)Nrr)rrrrrMr@)rCrLchildrens rrODlaRoot.forwardsQ IIeii1o & GGAJ == ! A IIaLr)rrr@rMrRrSrTrUr9rOrWrXrYs@rrrs!rrc<^\rSrSrSU4SjjrSSjrSrU=r$)DlaTreec >[[U] 5 U S:XaSU-n U (aX- n US:a[R"XUS9O[R "5Ul[R "5Ul[XgUS9n US:XaiU"X4U40U D6Ul U"XDS40U D6Ul X4:waE[R"[R"X4SSSS9[R"U55UlOJU R[XS95 [US- X#XE4S S0U D6Ul [US- X$U4S X-0U D6Ul US:Xa[XX5UlXlXlXlg) Nrr]rr2)r5rirjF)r1r2r4)root_kernel_size root_shortcutroot_dim)r8rr9r: MaxPool2dIdentity downsampleprojectdicttree1tree2 Sequentialr;r=updaterroot level_rootrlevels)rCrblockrrr2r5rirjrrrrcargsrGs rr9DlaTree.__init__s^ gt%' q=<'H   #HAG!",,v=QSQ\Q\Q^{{} hJW Q;{&JEJDJ|1FFDJ* "}}IIkQqW\]NN<0 2  LL/?] ^  E [OP[TY[DJ  EjHPH_jchjDJ Q;8HXDI$  rcjUc/OUnURU5nURU5nUR(aURU5 UR X5nUR S:Xa&UR U5nUR"Xe/UQ76nU$URU5 UR XSS9nU$)Nr)r)rrrryrrrr)rCrLrMrbottomx1x2s rrODlaTree.forwards!)2x#<<' ?? OOF # ZZ $ ;;! BB ",8,A OOB  2 1Ar)rrrrrrrr)rrrr_FrrF)NNrrYs@rrrsHI79QVB  rrc d^\rSrSrSSSSS\SSS 4 U4S jjrSS jrS rSS jrSr Sr Sr U=r $)r  r r rr_Favgc ^>[[U] 5 X lX@lX`lXplXlUS:Xde[R"[R"XRSSSSSS9[R"US5[R"SS 95Ul URUSUSUS5UlURUSUSUSS S 9Ul[#XgU S 9n [%US XSUS S 4S S0U D6Ul[%USXS USS 4S S0U D6Ul[%USXSUSS 4S S0U D6Ul[%USXSUSS 4S S0U D6Ul[#USSSS9[#USS SS9[#US SSS9[#USSSS9[#USSSS9[#USSSS9/UlUSUl[3UR0URU SS9uUlUlU (a[R8"S5O[R:"5UlUR?5Hn [AU [R5(akU RBSU RBS-U RD-nU RFRHRKS[LRN"SU- 55 M[AU [R5(dMU RFRHRQS5 U RRRHRU5 M g)Nrrrrr F)r1r2r3r4Tr6r]r)rirjrrrlevel0)num_chs reductionmodulelevel1level2rlevel3level4level5r pool_typeuse_convg@)+r8r r9channelsrrirj drop_rater:rr;r=r? base_layer_make_conv_levelrrrrrrrr feature_info num_featuresr global_poolrFlattenrflattenmodules isinstancer1rweightdatanormal_rcsqrtfill_r4zero_)rCrr output_striderin_chansrirjr shortcut_rootrrrmnrGs rr9 DLA.__init__s c4!# &&$""""-- IIh 1aV[ \ NN8A; ' GGD !#++HQK!fQiP ++HQK!fQiXY+Z S`afQi Xa[!gX]gafg fQi Xa[!fX\f`ef fQi Xa[!fX\f`ef fQi Xa[!fX\f`ef !( C !( C !( C !( C !8 D !8 D  %RL$5   t//;QU%W!$'(3rzz!} A!RYY''MM!$q}}Q'77!..H %%a26):;Ar~~.. ##A& !!#  rc /n[U5H^nUR[R"XSUS:XaUOSUSUS9[R"U5[R "SS9/5 UnM` [R "U6$)Nr rrFr0Tr6)rxextendr:r;r=r?r)rCrDrEr{r2r5rrs rrDLA._make_conv_level-szuA NN (AQRF&XY"*Kv&% ' ( H }}g&&rcUR$rJ)r)rCs rget_classifierDLA.get_classifier8s wwrcXl[URURUSS9uUlUlU(a[ R "S5Ulg[ R"5Ulg)NTrr) rrrrrr:rrr)rCrrs rreset_classifierDLA.reset_classifier;sP&$5   t//;QU%W!$'(3rzz!}  rcURU5nURU5nURU5nURU5nUR U5nUR U5nUR U5nU$rJ)rrrrrrrrCrLs rforward_featuresDLA.forward_featuresAsc OOA  KKN KKN KKN KKN KKN KKNrcURU5nURU5nURS:a)[R"XRUR S9nUR U5nURU5nU$)Nr)ptraining)rrrFdropoutrrrrs rrO DLA.forwardKse  ! !! $   Q  >>B  !~~ FA GGAJ LLOr)rrjrirrrrrrrrrrrrrrrQ)r) rRrSrTrUrqr9rrrrrOrWrXrYs@rr r s?79tVW2^SXE*$X 'G rc H[[X4[US[SS9S.UD6$)NF)rr]r rr) out_indices) default_cfgpretrained_strict feature_cfg)rr default_cfgsr)variant pretrainedrs r _create_dlarUs6  W  )_5     rc F[SSS[SSS.UD6n[SU40UD6$)Nrrrr]r rrrrirrrrrirjr*rrqrrr model_kwargss rr*r*^s=F!,I!F>DFL  Cl CCrc F[SSS[SSS.UD6n[SU40UD6$)Nrrrrrr+rrrs rr+r+fs>E!,I!E=CEL ' D| DDrc J[S/SQ/SQ[S.UD6n[SU40UD6$)Nrrrr]r]r)rrr_rrrrrrr r)rr-rrs rr r ns6"!,G" "L w ;l ;;rc J[S/SQ/SQ[S.UD6n[SU40UD6$)Nr rrr_r_rrr r!rrr[rrs rr!r!vs6'!,F'%'L y* = ==rc N[S/SQ/SQ[SSS.UD6n[SU40UD6$)Nr rrrrr"rrrs rr"r"~=E!,FE=CEL z: > >>rc N[S/SQ/SQ[SSS.UD6n[SU40UD6$)Nrrrrrr#rrrs rr#r#rrc J[S/SQ/SQ[S.UD6n[SU40UD6$)Nrrr r$rrrs rr$r$s6'!,I'%'L w ;l ;;rc N[S/SQ/SQ[SSS.UD6n[SU40UD6$)Nrrrrrr%rrrs rr%r%s=E!,IE=CEL x <| < >>rc L[S/SQ/SQ[SS.UD6n[SU40UD6$)N)rrr]r rrrTrr)rrrs rr)r)rr))F)(rVrcrtorch.nnr:torch.nn.functional functionalr timm.datarrhelpersrlayersrregistryr __all__rrModuler-r[rqrrr rr*r+r r!r"r#r$r%r&r'r(r)rrrr(s  A)%$ 'N ORSTUTU N OPQPQRSTUPQ |~ } $ryy>&BII&R<RYY<~bii(/bii/dR"))RjDDEE<<>>????<<====>>??==r