From f6755a8be4bbc27df6c871cdcc8a81da6850be64 Mon Sep 17 00:00:00 2001 From: Jamjamjon <51357717+jamjamjon@users.noreply.github.com> Date: Sat, 31 Aug 2024 17:10:36 +0800 Subject: [PATCH] Bump the version to 0.0.12 * Add sapiens-seg model --- Cargo.toml | 2 +- README.md | 3 +- assets/paul-george.jpg | Bin 0 -> 134572 bytes benches/yolo.rs | 4 +- examples/depth-anything/main.rs | 2 +- examples/rtmo/main.rs | 4 +- examples/sapiens/main.rs | 30 ++++++ examples/yolo/main.rs | 11 ++- src/core/mod.rs | 2 + src/core/ops.rs | 58 ++++++++++-- src/core/options.rs | 9 +- src/core/task.rs | 27 ++++++ src/lib.rs | 5 +- src/models/db.rs | 2 +- src/models/depth_anything.rs | 2 +- src/models/mod.rs | 2 + src/models/modnet.rs | 2 +- src/models/sam.rs | 2 +- src/models/sapiens.rs | 158 ++++++++++++++++++++++++++++++++ src/models/yolo.rs | 2 +- src/models/yolop.rs | 2 +- src/utils/mod.rs | 3 +- src/utils/{coco.rs => names.rs} | 39 +++++++- 23 files changed, 340 insertions(+), 31 deletions(-) create mode 100644 assets/paul-george.jpg create mode 100644 examples/sapiens/main.rs create mode 100644 src/core/task.rs create mode 100644 src/models/sapiens.rs rename src/utils/{coco.rs => names.rs} (67%) diff --git a/Cargo.toml b/Cargo.toml index ca76358..3722b18 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "usls" -version = "0.0.11" +version = "0.0.12" edition = "2021" description = "A Rust library integrated with ONNXRuntime, providing a collection of ML models." repository = "https://github.com/jamjamjon/usls" diff --git a/README.md b/README.md index b5dbca3..8a2c9aa 100644 --- a/README.md +++ b/README.md @@ -36,7 +36,7 @@ - **YOLO Models**: [YOLOv5](https://github.com/ultralytics/yolov5), [YOLOv6](https://github.com/meituan/YOLOv6), [YOLOv7](https://github.com/WongKinYiu/yolov7), [YOLOv8](https://github.com/ultralytics/ultralytics), [YOLOv9](https://github.com/WongKinYiu/yolov9), [YOLOv10](https://github.com/THU-MIG/yolov10) - **SAM Models**: [SAM](https://github.com/facebookresearch/segment-anything), [SAM2](https://github.com/facebookresearch/segment-anything-2), [MobileSAM](https://github.com/ChaoningZhang/MobileSAM), [EdgeSAM](https://github.com/chongzhou96/EdgeSAM), [SAM-HQ](https://github.com/SysCV/sam-hq), [FastSAM](https://github.com/CASIA-IVA-Lab/FastSAM) -- **Vision Models**: [RTDETR](https://arxiv.org/abs/2304.08069), [RTMO](https://github.com/open-mmlab/mmpose/tree/main/projects/rtmo), [DB](https://arxiv.org/abs/1911.08947), [SVTR](https://arxiv.org/abs/2205.00159), [Depth-Anything-v1-v2](https://github.com/LiheYoung/Depth-Anything), [DINOv2](https://github.com/facebookresearch/dinov2), [MODNet](https://github.com/ZHKKKe/MODNet) +- **Vision Models**: [RTDETR](https://arxiv.org/abs/2304.08069), [RTMO](https://github.com/open-mmlab/mmpose/tree/main/projects/rtmo), [DB](https://arxiv.org/abs/1911.08947), [SVTR](https://arxiv.org/abs/2205.00159), [Depth-Anything-v1-v2](https://github.com/LiheYoung/Depth-Anything), [DINOv2](https://github.com/facebookresearch/dinov2), [MODNet](https://github.com/ZHKKKe/MODNet), [Sapiens](https://arxiv.org/abs/2408.12569) - **Vision-Language Models**: [CLIP](https://github.com/openai/CLIP), [BLIP](https://arxiv.org/abs/2201.12086), [GroundingDINO](https://github.com/IDEA-Research/GroundingDINO), [YOLO-World](https://github.com/AILab-CVC/YOLO-World)
@@ -70,6 +70,7 @@ | [Depth-Anything](https://github.com/LiheYoung/Depth-Anything) | Monocular Depth Estimation | [demo](examples/depth-anything) | ✅ | ✅ | ❌ | ❌ | | [MODNet](https://github.com/ZHKKKe/MODNet) | Image Matting | [demo](examples/modnet) | ✅ | ✅ | ✅ | ✅ | | [GroundingDINO](https://github.com/IDEA-Research/GroundingDINO) | Open-Set Detection With Language | [demo](examples/grounding-dino) | ✅ | ✅ | | | +| [Sapiens](https://github.com/facebookresearch/sapiens/tree/main) | Body Part Segmentation | [demo](examples/sapiens) | ✅ | ✅ | | |
diff --git a/assets/paul-george.jpg b/assets/paul-george.jpg new file mode 100644 index 0000000000000000000000000000000000000000..9b92635f9314511967ab944bb2c5fa93887b1338 GIT binary patch literal 134572 zcmbrE1yCHp)~Hu-cXxMp3-0a`++7xzB)Gc-776a|9)i0&gy0Ur34|n%+*@_;{a@Ap zzgO>d?{ z6)5t`_Aag<3;@8{#nVGmPLe|3z>ord8UO+y0^k6g0D!qA#7#v@RvYk|6lA0*Ag@Y) z`QPbb`R~yIfCW~0bqb1q%m1$k)6&hu^VLB0S8Z-9Yl!75hrP0skEh#T`PD1qSUCP= z5X@ipcs1~q3I4L}KbhqpI{#$xzij2~V)d%?*Jd{>XRE(F_{veP+R(|COZ+mN> zS6+N&8YeGj`&a()$~ex}<`4h?2Ia5Z)7sMRl{sD+#Y0Xk(R00b1<|6q&%U{7n` zS33a!DOWc?4|`iXPYMQ0MhZ?rK>-SRYab_TPfu2Lb4y2a4=V~OS7$eK7e4^tpV$1i z6#(n6Zz*1#%*QFn$H&UW_UitBrT?+=Ut0e&{O#L+YTRo4qtAeNlmC|eyY0Vau7v=A z!2PRllKw5T$N~V`!T|t+^?%D~@&N$!FaV%+=0C0n@9%iA^YnBRVrTd9@nN&Kwq*P3 z(0`@>qr$&5|9kk4^RfLs-@klEA#H7A?&ai3@z<%Au1>CA9uyEab4zOq*8hDF|35eU z53~Nm4i-&o8*2}1m)BG2zK$|`7u(nFcCoVew0Cu(uy^_Idiejb*?-vZ7ymh~Uje)L zHvq?!4S+F&0{~x40${L_0pPcJuQkAb^_w!HF5vIX(<49n=eU36*ZO~y|D^yWzWxM3 z>}@IjilsEQDJ;D_y#Mm+ocLS70+0ac02}}zfDAwlU;wZJxB&bBVSqS52A~K~184&b z044xSfE~aY-~sRf1OkEq5r9}g5+EG_1$+V&11bQufJQ(Ypd0W7FbtRg%mS7G8-Q)V z0pJX91$Y4b1OkEZKvW<$kPt`?qy;hqxqt#dF`x`k8K?;~0Ga`9fi6HVU?4CQ7z<1R zLV*Rq3Sa}U1Na3v2Al(~0e65Wz#HH*2n<32;ebd%bRc$+07wF)1kwf>gKRh*a+AR*izUQ*df>@*aO%HI5;>wIC?mKIC(e&I0v`@xH!06xH`B# zxH-5zxO;ebctUt)cu{yYcyoA9_z3tc_-gpi@bmBo@IMfc5y%m^5M&Vy5nK>L5Hb)d z5qc5k5snakB4QxYA_^g@AzC5&AtoXgBX%OrARZw8M8ZU(M-oNSMsh$3M#@C0MH)id zM7l*rMy5g*MAksINB)4EiCm97ioApTgo1^_gd&CV7R3uC0i_J34`mJI78Mnh4pki0 z5Y-bk0kr~k0CfxX2O2gS8=3-|7212WY_wLid9+J(M08qo33L;5fAkFWCiEHfa|}cb zIt(ccbBuQw*%%!dD;W2f*qEG{YM9QLahR2uW0=QS@K|(MGFVnvVOT|216X_5U~Fn^ zDQrvZQ0!vtA?yPjI2?K$1sn&QSezQ1X`CxuELY}_8)Z9Fg@9i9T76J8=- zBi=IJGd?N41im$XG=44qJpLmAF@ZRNH9-tP9l;X8Ga&_`451@oGGQCxS0Wf9CL#?Y zAEG>>A)<3)9AaT&OX3*fM&fl65D62BCP@HE5y>RUJt-Nf9H|>=7U=-#IT;?AIGF=k z8d)#d2{|^o7`Z)p8u@4PQwm%P2?{5QOo~B@D@qbdc}g$J0?KL1pH%czI#eN4byQ!e zk*EczZK%_z`>C&J$Z1q)0%@vf)@c!G1!(PPKhloSKGMCr{fwb32Z6VNNr`_os^ zZ!(}VykT%>C}dbcuF>zUP zWpgcZqjJk~zvph}zUE=(vF6F+S>?s%RpE`~?dSc)$Is`%SIc+8Ps4A3q+_I~Ww2y) zWS}xzvQ)CRvQ@HIa=dZ@a((i!@=Ef_@+%6Y3YH2L3RjB!ib0BlN+?QNN>HU;WhP}0 z>Vo0^+8nZcUrnN^y-n5&r=n%`R}Sman-SxQ-cv^=vC zw@R}*u@<#Xu|Bd9wMnr#wiUHawLP(WW0zrfZZBmIwZC?dclhM+=&0sc=J>}+&#BHC z!P(5Y!v)L5(Phw;%+=R*&W+hE!fo4K$UWWt%0tPc6as`8L)txYUW2JgF9xr0uN`kO z?`-cMKDs_lzL>r)zLS1Te$jqM{<8ih0WblU0sVoLfx&@0K@vd)?||zN%u9kxa!FcFev@3Df|=rSwq$l)4oOaQ&SS1s?tGqjUhOB+ zPqCk#^X>Cj3*-t~3+W0oir|X8iw=u*i$_WXN-9c;N@GiZmARB{mur>}R`6F;RFYIC zR)MO#s!pokR?pT**Rb>eu8_XJ(8m=`F%M|Za%QW9~>kR)) z`>fz>=bXq~@BEwjFALHO!;1=w6HBT~bIUr*t1E9;wpXoIkJp^muGhWSe{Ou(gx!q! zit#mLi)5?t8{@aSZNBZE9qFCPU9H`XJA{)X+0XNc3(Sk0ONPtl@8aJluk^1Du05{*+{E1y-j?0*-1Xn9-)}uQKm2@*`9b)j z{7K+x#M{7dF9#$TPkm40vjasKn?&juh2@Va2Z!Nb8LAiyIbzh-na6cjXc zJPgd&j7Nn_i2M4XBBLQAdHwP+(a|ySiScmph$%};E1Mdc1_qV^|9=ngryqcc0Q(w= zfPqv15GD|e3H&n%;Cqc{U|&Ore+M-%KoA%f4gimU2z*ujFI9loDi~Ne_&@6a6fh6~ z!T@8u#x_sG@Z6si6bQnW5>E;YXz=k?o|w<;bYPNi&N9o|tIo!G-W!I-k|=wU%%Ks= z(P#;P1NQ9t9mv_1dFr9C5AiAa0Tk6SRvha06&SZuvnaR-c6X?Vq1pq?V^*#yh<3?E z#>l(&%1CC-Db1OMl*wa}z}*&PUEwS|dLSg4MT3oWY-;vOY4%EO;7T>=N;%n0k)@tX zkkT+!_IMyY(J@(o&UaE(UNEg=NS(uC? zIW)gdCd)||;}&3J02B3N&6sd^Gm&_=kcPeTQokCSq!32WnfmktjV@?R9_|%$)TGM%R9eKl(cw%!b zq2|- zz_+Ui`|5di(J3@gUd>5z@Q^1i7qPK`fe0DYlVrG4kYFAgrH>^_oR{9ha#)HeJRs}q zD3%IvY>MXQK)lb_6CUMy)15jeM+!T(%BUW%9&R-U6VOVL#2`&K}pvx$+XvY5{E_T~50-8_SiLn}>+z1)@O-bH} z5Kr`N`GBYw31=D{YM$l2p$MMw6;pJrUBZPEsJo&tf&^(=Cn{P=Vbt$x2fSY0^SS9Ot6puPMc7N`Dg89jGbn&2Q# zuG7d36$JW;(-$UYs=wST4khV}(#QT33JIbCk7{jO(HN{dJEY@9Bu78=Oi6g+4T93+ zO*D&g$<%rZxrS7ISZiFaBFbv6W)Mk1a~_8gW}Ik=KgEHy(m285WLDkyZuD#mCnZiu zas2!$r!&$Z6_VDfc4lrlRxDdN)!-JUR%Jj}XtFQnbvrqYG(A@bRc3?y*b*r{?_3BI zh02s0XRVp&l$(zah}}&%`5`nyIU7&x>C?d%|_it(ZR1sioNX8tJ!Jc;$r zo@;5TQ8Ws+&|vqAN%qMLzZ!W| zMfwJ0N-4lNK4ic`+=()sQ)QeBl_2ieEWWNIG@a4M2cC(6>860Fd(el8>_G&-E4ZO2 ze@PA|l@TIww-?e>WUtBJGB@5AnNCPEI~k2>D0aESpEG+YP1Hg_&rF6zOgrtPPB+Nt zJJf2ipp9zQLGu+-6Y+A8rRN=w zAt^5y?MAWOgUuiWdBvutQ;S0-NZ=<-X&Nme_>@;QDl%{pP2qtHx=L(clEjSL7ERwc z<84(*?R9Rs{K`JQ`Qd!R_2aOuEITNAc^C2aRFu`$lvEm9@`g;%aw;LErkq%WLb~uH z#fLRL&1hWKe>jL4S}wB>5Ah{AUZj!#K{|OTsDIVOBjwQ`$wOC=pgSL-D_B<44)2uQ zXi$)j<-tHD99*58Kiu(Qxk|qT$-&$E9@g9^t}0Mndxe+S#{8}XrQ_^bs$#6Jkt&R- zINI!_DylSs0K_M^$f%KRC)CKL(xp#SX+ei?FREf?_Sj5@y$h`o+!zg zt3m$3@t}<;J^IpATx~<$$##UGWt#Au-OgB)l)*A|1ZYRZj5#&`I&af)NXJI^4`5ET zDIrOOGmb=+R|zH#tkD%2O!`!cNCC7T0S5zG*dL)Gj60V5A=2{4d00Mfg0%|NG4kb> zIs|1O9K2KH==hqX1d#PCbv!b7TdOH7b|UpDgHKo(xQIAs#T>@5D5jF#a~nV6!VdAJ zV)@v!9`TTrUvX_BJGn^2#gMXk^|)Mdd1$8f*%DHXVNp8eEZS3n-wuJ$VAd)qlBBUk zEmz;7#E~s`mI#ib9P#{J0NMrdgX7XcWa)(DqTuKlD=agJt#$m|haxP#q(u|B4l9r< zLR1k6Xo6cMWm6@H3>P*-^pRJL+g{k;>^JwR;8L<1my)6V>5!I^9W2162ObuZZmxWC z6Bf2g(Hk)E6%+(jP`O1DA@E+)?#O@u2zQocmXAyU5!a2t_A~Cq zV{ENeQc~5+)LGSn=WcIOgZ*#>@k96&Kco!j|F#VF(|+{{{_FA>Tweay=y8(AbQap? z{nM0bJWyCmvY<}c1orMHA`W7bTz7J%f%x%q|EAL1DRK6IBj{6|Yun5r*G2PKGGFn} zO$q(2)&|EXA^C{TkTP-Ny6m#scs^+4- z{s3{D$hYtS@#-74g}Ez8oC>ccF^~yHo_V$iAA_k;7nM+hXSjo80F%{hzDL4Jj_Fc6 zBQ80e^CkoDC(%?L+I{*41;+|5+SheeiVNxBOr{I#m1U=F_EEba?3o}ma|`KjVwc-K z{Gn@1&P;(@)jb;NqMJAU51UP?!CD=$0^gC(n5xJE6dcD?oqi3`=C6HihOF<4YDoPf zW=PgYitekmg-MLw{;dkTul_pM9HFQOWkToNoDcx)MHFl} zwvH`>5*Ul0qfK&9h)+riCMSqCCTH;1w(?^+Gj#O3ACxftpyC$~beENG8v-vWMK4_lJ zA*02GV=#dz-ixD&ktT@n(FblHW8`R_qL@7JaNk#oF_V=(!EbYK0lwds-YP?jf@SzHs7Sxa)7nrxg4yn9xjvg-u zF6uOfhs9T4Q)9s)S|6AA4m4+dEfl2bP;F9xc#Uki6t>P}*G+PhWgUGL(~svQvvAMp z%Wovmu6=J;Y_33&%hia0NSf3r`*w(=+CHj$LA_ zVx+L05(*@s%6Jy--_Fj!%LaX&Yz?=JiC`?M2y9T!o%%&O!dD!}t8XBuu)^=C#X&?R zIoyb+nP=7kMQmyn>@91rZl-GJlys{KMK>~2l4rP8B#B)fLSw0W@=F%R)%KA-AQ9x~C$rQW#AQ;ttJfoi~XrGrvV!Y?oKtrm&4(gA5)Ut40weh+w{nIm52V>1aM{DWzB>i6pFtQ%FAl& zIEGn0cAPC9RLrhSRAuNpGZPc!A{P|bk!L<|(bXK5x5bp<%P2rV#m%L%9{BA$eKH+{ z`ijn;AEFrzD~}AQ;F1MlZV$!Ta)HUJeJ}}!xW)pgXiF|B-8pC(xYE<{a@IZyKH;mp z7UMr`B0U6XP@7wI8EJD+(==03kF?PA9hzG7mcA0goD@}f)+-8j2-(M_6Ok4dNxGw2 zsF9TCo|<@)8+mpe*QzkBsc2FbG!#07)J0QKXw%3TVkTU&=neoc4IsohMd4U1?_Qf`=EZ$>z6AV zP$aS%x$JGtsFMJ3AUG!~q)w4X^PGz%*334nI3^WW)(Jx~<81JvBA$%aRaY#UWZN8)hs8{Fxn_im*}mkq%)3~S zfj=LJ9S4f$cplK|$f>Xb5!QDeu1pKhevvhc4lRa=`_p6Day23YYa|3a4LnOvzs=Oj zJoNEYo@wjl7PJhg364I0%=0|R)_YTjC!9oc*y-3IfLnW*d3h&m^XunwLutBaB7NdQ z$;`Li-xEhW^VZFum3DQ{-9Nr_?Kvg$@+trE*>pyCmL0tl4kOUmvHJV-lT0kX!ll!5 zyXpOBL5|wQ#Vgvp`u47$4Z=5{+l2byAs6+ZZ^ryPNcY8#yz0m&HT;iK4?sgS$_P{g z^X5nQbZMNU;ul|38^*uV6iP8MnOv&$jAGf}Jik;)nF9lj5^;75Zp51li`vnSs8uQp z&c-VcF3fBQ5hTW!i_>hwCZ*9FC|K&ti3bFE4`>K!Zj|7dDf-C*Tr};hbnJ{31O;{- z8GvL{RF3`=)t9|zGd4&~676G*8L%+fz{7ROs< zcSjc9+Shjy9gSatwtNwO)FbIYa&+EeMR_`+#pvA@()Nhm$Su*ivO~>u9 z;lJI)&yHbk;A(MW5awnpQU-)@pL+kt28r8GEO}d zFZt`{ke)sryr~egz(nPGrqjs0l$2A{(RvAsAdY7z%hprOGTqvYxoPoq72KlkkXE{A z6{i!#dpf|u2%$>A!m7#ggLr&smrkI%QY?}H<+2kzeipk-|Hr~4k_2%}=!b{fkPY|f zRga6F-buTc-j18+?yHvvWQia&b@+yaG+TZBBfm3)nMi9F#z1H~m>CYvso=SRVFGf~ z9Zz>!dIU=b?J5(FQlFebEzp_+07KPWFkJe66iF7yjEEu?7yRv&kR0xgzo_45{gT%kpu@3Xw-WxmHDE zPme3;rp~Zj(Pii+#_EMDu44uDC2ifc;yJ^;&e$s=P5UO`lLzD{t{5yakIUna2rt1jJjk&Opj%`qj|X|mV`K_7FzZPa3@DYW=LI=d z=P8PW=H*3lseyvk5)?|2ei&NZLhFx-S$vBVR$lkq#ZgH=s+-y=n}Tun^uvn>A3Ca7 z#e}{w-}TsjJPZ6?li{x@;!s&~Z`@99Em4fT_klTEKN?NE7n*Zk>!4I=V|@we*H`ofMz>?-SAEZwx+CN;?%6f+c@J?_=hOH5a*E; zwQazbGN|JZpeWF?NE@zY6e0J^WHPY)A%VvSY`RG!$3yVrY4J$+`)}LzVg>Ubu4Nf? zY(~f$?rIAIe)`f=YUN{Zsh0gq+CN{{sWX>F9)*ZvPZlbYz668ok&^!(qw8)53IiYVdJsTa$MvQkpe@GCai)|A;vqMp@Io(J`98^^CrNLqN4 z@F--AKem+gOswscW_AZYnPjty8nX-;_q_MU)8o}O&`61Rxg7V;+IgBE{{7qfzz!>< z(1Vj?fh-5Bl^3p27mWMeO0#NKf>MYjk36YJ1yz};N>L#qiH-d_%(8UrGe^oD2bzT@ z383OMb|@XUPIjnB%*Uky+c`+XIc86VY$ALyi?d3i)kO_UY{6#A!2=JI@kZk^Xj|p%}p@_WK+Q=T(^6qixG$ za=vuih)K{mj1T8*p89K^F-k7EBvp=ZjxR}eq=GTe(PXxruFDOs29MmPFQtYw%026^ z^zXH)S~7|UFDT+VysFHoWmY4L#!u%DONr@m#zn5Ll~%$=ADQr@G$a-V7o7tnDo0>q z)_|rnD)_lPOR`+DWz^8$5U^EDYDX=sMKh@ge#!)wz2AKuMoWnaZ(qC~O@&fj1?tBN zc1k)SCzk8yZdWCDJ@b(!jt!QC)R^9B{?DIgFSt6XVuwES4&8Qv4EOvGKur5*M7icmZ<6xOAAqJs7(zk* z^znhi^^FU3v{T~bnh!Q6gQRY23-t*$zakNVhVrBud5jWlo^#DKMK4|}(n()Iz|6#0bp__+T zdU{DvDV|D{uD}VdY(%l;g`1H9uUA{swWnVaSvd4$WRz@PlufU@-J(!mCq;%P9${_A zL2MtsClQg>@~|s4_4q5UQZ6<$mvGdPEG|K{35v^uZL8hp!bB8F!?nj82aC4KSZM+k zZPHbI@(S71+e~e^J$rk$l=#Ki-E+%&YVz&ef(rV3-l;9|A5}SHOKG7?2cjk!1MIGH zAGMgBj1sly#!M3}9gx_YQXnw(zu0$w7d?GENrZ~zC06{_eNH^of3H()^&>ZJY_}8b zMKprMGy?ggiR$T*`R={q7uVa8$(@(bx;Nz@GDm2DdRB=%kP15Ukv2~){AD#O;gyr8E*_wN;g#-M@1w9dLooV$` zy~6kVRwhLdwvzKY#+9h~rZ(f@Av(F3NrkXJ+@1Cq%%yR7hY913>ZfCZ<(VO;)}#Ee zp{G#1Ic*%QaA#eLYDVOF=RW|sCw|ZPv9qC5nD|NWOqp*%=Z4KSZKX1jjwkrA4Q#5<|oT$iHC6&QZBO{Y5hE{B({o()(<}(uR4A-Rr?a%~Z>_eEOS~>oW;iMDG=A<~fzh zv6kpU1sQ9g(3)G67Jaf$`6+Rj9I#3F=pJ_?VQuW20U^8(PSw{sADS8o38Q5|2w=ZoN z1Z1=>={Eo36E@GzuJ1#v8_Cx?t6`(PIU_s0k$gbsx-%`f6-%A=4HNrJUv|Ldd>YG9 z@J5e}nz9%zGeQ*dt@ZKTG-ZVYZhH;DB zq21uO+`KQ{Fz%7ma&N}UOYEK4LT4u8GdG|5VFi~4y@%9pN~!O>p((bX>+#B$?&tly z#SCq`U~F15UJU{biPa&awfpaE9pg3L&S}X4VmXOU*dIbOSs6B0noqX7A}o28rrNSm z^9xUgc}$w?PLc+5PvXKQF_<-~0>)9%h=ll~S(XqB%DUl=##+UTnv_@2qjg&)=E-m| z?40Zh-z5|pYZm}peYES*?Ub z$jSjUGM00xDTyUCnzQIXY=_3<3YLDTfQt(L;C>jYkbIp4`*z8|(%VR+c5&5z_be|V zue#P`sUkWb60?)E>SR=u=PK9e^G*rHsw-iuG{kq@ z^Gzv;x4oCXGBZ^rcM(5#Kl`uV-#C_T2n(JmEpXG}WT)ulNWBcq?=#;TYlFP-$1j6#pMvU!gsw@H06i>N`dc}v;>MH_^+*U~WYXB^QdPDLt^3pV?(c;+ zZ|$R=*p*~YBlgcVqtooFLVcBrE4yO8`F{%!Xc47L;QfB^UbaRQv(PiNhm7;)&GFHZ zm?6pt*V~wpP$Mef*%Xvx+`a%xA~k=EC!Br=Ai0!mK&O2w+h#dKS3X%zIYmVKFO|=Vc9QOOGDzbs4J+kL>H1P9=_~p^AOg? zj%R+tC4X4L)MJr(DQ=<)BI8%!nI(wj!9pm1-4}`+QsZI*=R_r(W#?=)RL$1x#ser^ zm@U&(%!}#_P;6St_oZQ)%I4b6d2VFyCKpf2mlkN4@oQoxW*R%6pkLcdsp|LjUFtXL zEEBeok^TT$ufdjkdNr@BAA7Nw?c5WBg5I%jZ^mNa`|p1M!e4dv-fiq|mGMaE!yn)F z#~XBv;goU3vWSy2Nu|(UFrj6TBHjv}h{-M7`u-w9hkpM;H&54qx)!dL)0ALi&tgAu zxUd;iH`BvBf0Wn(wW(Z+sF;$XNl3AKA9C*}P!2tWmmdjDC*!8}km1v72a>rn>2xDk`m`)rB@VgOyGR8_GH-#H3@HR9=ff#i1@)^+|CoRDn%T zdSA4BR{H?P$IaBGX(NFx*v_+k)ywm;^71Ih*P!}#CkZ*LZEZ=>-Z~sYTDo=O64Xfg?pb z>rX)$j=S#z?-`rw2(G^y-k7>Z!&AMHgSPl_uWJE05~51y(F84_!Ko@$AP}|7?p6f* zOwd%DZB6g{_DBhH)b!`tkB3XYqjh?H{{ZCbo_)G4Sb0wab!!@gVg*rW#}X+=M9$jrZT60DzIk!vf4YjH*l0Ps8k}s%*u^j%G2T_3IOaVd)t|0&u4boe*Z2vitnTE{{}q zV7-J9))N&gly%rr;h8-$EZr>LiYDYA3Dog!sHI~zMA6gtuZ zS{zgt#|y+H@RpFs#PH(bIqge0GcIX3FnnfzTyvIKT^`Xm5_U264%a3e>XPEttG?u| zeO)Ro;?L18&(|LjbAykz93@72Z~I-{mlLcsPcYC09yunkD^x5^?Q>@k`=tOL@bfYW zzO@F^;;w?*D@p_&BYk(Oh$JcWgej|1IzbV73a~>#l$UmOn57AuTPiOf-?R)p-m*o$ zIdeC>sA3mkm&KnV)4T5PH7&gfw%2F@bp=yGiB$6tG0YN!1$25eFSX&7P>Lw8g_wNA z%V`IC&?B?~`I*L;Rx7Hpyjb#Dg#ZEZ7l@g?B-H*MJRT&T=3J;p35c)=4(khFJi&&rweGAG96Za%Emdgs`9BWA3?_gOTT z7I|$YZJAfMT>L^j177f1`J-{+fT9}@;XWL9;W{SGsfHYj3YYmlI1(aaJ&7gYXneW(ceJD}fAF;!MT~qg{4JD}hdV*8s4(?oXwEcZ3LXfNho9l0TMH9q zL4APH&YsUw#@KL{Fg!G)qhbqWV9@HJid6~;Nfz9ohYtQoKhzaxKhM{b%Zzl{4xM%fr?Q<~AcTkD$sg2^S16roYQ zfE^o+(pJ(~5u~#kuU=fV)4=Dcx!$d@5SXQ|A1SH_&gb$NgZ@RXQF}WV7Y?E$ z;U4v9Wc3mLI(q6%)C6f9gon_B5Ou!(Jl`sTuxPFVBB2yA z>@^mpNeFgWtCy{eL-kE=1e9sLF;wgHxA{poDUs%>)y_#vOe2lves%xF(TySMGWYUc zgg(N&WsC_tr7{Ty7Pp21PP}4F)X8=xq@xF?dl|ew%=4pzkvB0)Ey?dgMR7{BLW9T}XZnM+oSoAXrUzosw$`ea zm@0Z}@OQ?**kg8d1F6>O(~znxus4S(c+Y66~DMK!x> z2-91WLaa|P1fOqq5D#^$@1G2&rs?@Q3(Wazg_lI?=HAII_J(xUZHr#0M2P)1{+y>2 z{(bbD;_dz2?en2pj#!AV5+<0iZLq~e^yuy>TC=uZCrQ`9AnEJL)7?#uZSRgxB6~*< zbrA=%GZUtsK*|N)T#QH;rnGF4v@v!h6v)I6eSP|7u+2a`6Gbn*zZ-wuT$u=a#DkyJ zR~%AckFc4O(p>B)YC6)xJasy|eAv{nb;!cZ8UaC(k zq?eEoO<8H-%>LXpH{IQjgqysb^rQh3wlKPpsYR50 zyS&}2;Zdc!x%pK2chj;am(n9T+^i$ZhzVsg9MMEVAIua{@((+h%;h-n>=31slPI1BdMa{B zLRBFpO`pbw6BIK#NLD;}1nhU<*qOCxN$A!RX zJ2gy(!OJR4rP^h@`pRnY?bJOBpP(+vjV!WN-f!m{L@`^?^~oK?fxxvv&{q~!xA8qkjU*5zlnxGxco^Xal^9I zg}T2Ypg?_8GX88V&R@GJJ%8&2h!nB>7I=C>S1FKTk0G3iEl=IohIBV}oR@7N^r42r z(3qqaaRz!8Z9u@>y}+bQdf(uk&qi@cW8QFI+#$9M6g6{nK9 zrSBZncrL~kqm}8?5x8*6NY)TGr^3T}18|bLIV73&dUm-o}&2I4A+oYV6 zayAEKyqmXAn_UKD2J^7VUHPZec%slF(H7CP#n;a0(H)s_>9}V~Gjm~GE;Q73D0T(A zbAbJp%R{AVm)!3BbUqd&=2|uxiQqjgeW4a=l$AfCqO2uAH2Z*(+AL&8A}GzEtt3#4 zXihm$7qcUonL>>lW&IKV(***n4yEPh2n)O22~6Oeg@9XV=4r|po?YQiAmdX5t5L12#H zqro45fEFriV3C-a&pY=^^*i1TJU`>iF4O{q+ul1d^f%lFT)rpw=JW?Govw^`em!Nw zL7%|v$h<0%?|Fvwrr3)-iz?xsW92XSe5CVIhAaH|5(!%-o%2Lbb2D4W`eGQ1%r+(1 zECZ)wKvaXp_MS}%_YHI|^@IiMLX6P))s;^?$7~2w^Gf~%$C>);%4(4nMj4hJmo1T_ z<2Cv#PbQTsByY$z%xFLge{?ol?J2^}n0Pi?xnoN445qYXuvrWE;6mlE zr*J2tk*qEhD%lvObl^5V$rtc75y!+_Ht84DbXT5CH~4i*&r5En(8f_id=Y(5vqX_# zYF#NhhVvYJ`WnZQ+k%k}ln6Q$dj|6_Nq;`Vze*V?qjU1?!vcZ|y($TVm&;!~Ous+n0zw3$+pO*Zpw>FIi7_Aj z{4VnF@&_Q(cBABFIbmvDt1(8?q@E;x5^Y37^o2ibqQXanSRGRXIrQIZZ=5+ud$xB zTC)$$M-~VaOXQuJT;cHA?TIU{ba^Y9{1OQB`UH#~#9_I&80nC}9nzlI!2l`pM>wjq zA5Xz$fiU@q*;`(_f$745eK@2HVo6u%TK5nzRgm7Yn?c@$t6YpCl}vl!bj^(TCTF1V z2yQVyXS-PccT*+nZ*jBwp>vpn*1bCZGsWEtJ3-^hTU;MEw;?vnOZ!V}+KyuE_e3Fj zY6I8rv`U-7gQry^c3j4SngQ>_Pwzez{~Ub%m+6T~j+D_mxrS)2Vs5j}izU=vFUzbP z+SrzjkUF#&=~ATskA6=`T#cc)iyZwUrSix`kwrJR8ohF2t1QyR?4Tn;XE* zf;W&Ujx+;aFoYu@8EYuB)}%nmk%#Ln)ywbKW8SPzJ8LTl0Uu7kMjY?&uh%{yQc159+S5<(6rWv%SJ2jQ5aot z^F{5Hw`=Cjg88+(%~yrnpaL7#@}F*?eo@rQ9=7*E33;Phq&q$7(jZ7E0DhU3P3zQEO^=HqsG)2V6$ zV^Ok(ILYAietnxmy>E$iZkFHv$8k)Rr<~9v8i8=fG71 zca22rUu476*tgz-3f*YdS=y%BzWg??l} zaUFHZdL~Pzl(-Ijmv()7;-)J$rBh3EBwFh^6ict_QLGN0wJLFP*17bO(QC=CDD>)G z`piQ=-<G5lG_R(Y|OgjC*escA^vXld|#I8jWq@=2?RU z@-`hkpBf!lBzy82G9GHb-@e)4tb0Sfa7AjeKJ#e~obf2%yl9kuAs zzQ}Z))@^PbRP)9gB03E(CI~#8)-J%KRgo#NUv3T$k>iUDdCPSjvIbm9w70wCG%~7; z*UMfC9ewu6^*j)bWf^3tlP@=GJhZIzmUPW?ZN6)+%B-H(z$CIeXbDk1u=E7kH?%Eo z%~|{T|5O*|2%aBN)T(+m{?%$TLWK4Qz}ulV$HFb~)MLaqOVjBpcqgLwULd9LB4_k* z3TRqfQKCV-(fq~sZH+%$(?pvHDPEx*nT{uiZsYCTcUm$L<7H)Nd#KHohJQe{=Z)bv z#o;^aEV7xl={(_9UIRCTTA~ghq+nb@5ZJ#*yjIVvxX>N>(<=!hXxbcI|DA zsuDC~^aXwB9XWxc(5-NTzAcJ{>cDM9WI{U~ z2}F?ph=8pAhIwm3j9@wkHen)51Gg{d8QoTg!hwD|dt<_j7D@Zq>s>(A)Axpt_*El6 z{1%t-(P!jbB<3KF#m+K5d>vIUPNbOuK2T)2++XNN+Pn=q?i1*?+{KPrqfuxinMS2~ zZ1bLjEBd#`@0BO(sBxaj;;JY%Z6J+3p(8z?QauO#6XfzfC$yB32V!_+8wtOn` zJJa5)z|!&y&!X;O5L!mr#N_ADDk_zru^yenOY*Fgj%wRNhx+1aN2H?AcwkRo=D z)&2WlFF$c-kjHvU9p?7C(W;XQ#vMFzeO0{-GCmo~J9*ELm&Pm+rn~Y%TMwb39P5Uv zQB^E^p1A-#?BBV!eR#^h{FathwQgOUfU!f(1NFT@#ulw)pIA^he+ew0d!maKVuNJ# zF%4y(@P2g3Zznjl=AcZ=%LyH_!uja!{-P9cPEa~}W^|$abTAb(EUY)ufYXK9Scg@$ zbnweW)m7|JVUDgqRrBq>o9vk7>l0?CJt|S1tyGEAEmyr{;f?Hxw(PcrHQe3I&(2r1 zza2j-UVl=M?N95RcDCatQa*AOB{s*dVva>p!Sh7mOLxXX%-1j?-dpzT4jznm2`xS5 zEI1v9HwYQe*)W8uJ$zs>=}AZJd>u&*GcuGo2QzmIJ|Bae;5NU~bd6-RG{ z*U_7q-Zn*5+vh|VO|Q!54{uS=r;X?C@!q!`jjm^4*QD>T7oJCTg>3*-uX0xPTIW-t z9`e;aZPg1pg7UXq@!E>(ouh3KbzFPtZ#=r-Hy(6F70xqZRb|(W+;4{sZ|d7Ly60O~ zxy$3W*xt-XED5*HQJ=#y+N7-6QV*%lt7P;GPF=jFzt{0rvJVo!s~<*THb1F+-%}4p z?m;=8S6pmyQ*E|eUsH`kN_tj@(Afcko836np@3nm>jc3vNM5ipXgH=AXUMZG?pvj$ zw)4HqT(+w*@xMz;8V})lMrd;OGJ0g#`8fB?Wvr|H9%hjCIaWF*BhkX;D&#YV6Sz|$ci?ipmmjLh&*P+El2{%oq!oiXYYP#!l`qZg z&d!<5waci>m!~g;!%T*D*dE?{E4)>bdcQ}?@BHqooMxBIa=$mDF0&K*qO(JPvmTA*LX)f1&TWP`3e`kTT=hs(*vdP@zqIn*dFQVnd ztNjzjHX$O%V+CoIDRfCbpDNXlS(^uUxIfQ-K&64M@_u@02V}hjVI)vIk?Ru;9Ijl) zpf7Vl&xPRhSrv#epj4IgH_ksr@o%&&GdzCTp2x*!yoc93FVN=n{U@AyBwv_dHy&T< za#ls^r|UjCcJ8^(R=Z7})+@QGv|kS_d0k4D%_bMZjS!J3QXDMsEG>zWHJsD=uR=MB zG7Mb~b(Vut0B3Yn+F-2LgYKL=`Nap&8U9`TyJ5Au&atEKlMC}`eJDGhGndrf%zeev zGP(?Zq6wta-mH8Kt6uKrrJT4}!EBr`bTyao;&bStji${<(~+c8c9Xu<`M;_0 zbTqp<{%r@VJX=*kTmi0dm>XD4O}$G?1R`lM(icV1lniR`4t#Dz(vK+0(B`yw-=rN+ zaprYbmoEU>oz`mCo)GI!{&|+*Pt|^MkV|Qm)MzE3acMzORpfSA1rZ)+L@^f*G&4w# z7FGUU&#E-m`Aa{d;yNRu^m(gdv+S;(JtAXS>q6erO&4_FQ{ZyF=bZXqnErA4PH?b_ z^1gB7P7paqDy1QgK$M8zEfI|rtmgwHRR@v}DkiY-+JorN3;I)sqSVof@_S`>EIhA* z`>&9Ce79bg=e~oLVY7SM?Po_B5%cMp4@W++=U6{-^KQJns9Or}Q;y`|C(eitKma&g z&0+G7IL>OvH5--T6m!JWWQ9d5c}HWk^X=b0nmVmOoO^kqn@`(@m)kym(sJwcpJp_^ zH+++h=wx(GO$IHDbD=>^17KreXj)B{LR=R{R5v+`F8*sK41CcA2JGD^#8Px;t)mXH zlx!)zShcT-hI?;-`hPCIoj_<@9U#ZR?GlLDDq~@j3Od~~D)SNalpT0h(p^*Un0+i- z%BpZlBvK*z3L6-&MzY7*aP(evVUbrE!gAD^w#|A=UUL+%ey8)H&15c$rkd6KJJgg* zQ-oEEp4h_&!orA{`ECoETZ&vmyT3DT^J4blwTm}#-_IOZ@^769(?pch2z^0Fp{m_bg+s}#wMxc6e5@_%F0#Dng@vp=%us(iU=b`N97|&yGJb^l z$JMyHJyyptsPa1}Yodz5`99am{eCZ6+GaKUo96{Cs-&jnqtVI_i;u??-ulMDW*JbCrY&6#soHLtSi#(hN-7_^Vccsc1meO)UO$VdOyqwdyst#vx5xMirjIYr8 zh~7=EWv}R?z0y;QttxG^r_|ck08=@(y(4{q z+j+fsdg}mxQu*4)O){iYGy1^JoZd}ho_e0F!i{C~dLxXnT0@3D(+m<#QCzLtIVT8> zb90&3EJ9qAMGj8TRMAbodMtLMIq=_CRWVNalq5EFOiIbb(gx=;%L_L<}s7`$T()mWSpG(oJ z+YeM_LSiE&0X_VM~5e&k%qo%+nRlIb5UtFc&AiM;xiG%3U zI-g6{`L4Tzp|$p7exvjCR`Szz

;i7er+|E{vh9C%89>9W1#jt|};)&`uvOEh${- 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 r&}a~Mn9xz01}mOHKJ$>{W(p(SN{MC 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 Result<()> { .with_i02((320, h, 1280).into()) .with_i03((320, w, 1280).into()) .with_confs(&[0.2, 0.15]) // class_0: 0.4, others: 0.15 - .with_names2(&coco::KEYPOINTS_NAMES_17); + .with_names2(&COCO_KEYPOINTS_17); let mut model = YOLO::new(options)?; let xs = vec![DataLoader::try_read("./assets/bus.jpg")?]; diff --git a/examples/depth-anything/main.rs b/examples/depth-anything/main.rs index aa84691..9a4cd38 100644 --- a/examples/depth-anything/main.rs +++ b/examples/depth-anything/main.rs @@ -11,7 +11,7 @@ fn main() -> Result<(), Box> { let mut model = DepthAnything::new(options)?; // load - let x = vec![DataLoader::try_read("./assets/2.jpg")?]; + let x = [DataLoader::try_read("./assets/2.jpg")?]; // run let y = model.run(&x)?; diff --git a/examples/rtmo/main.rs b/examples/rtmo/main.rs index bf6f696..b685c1f 100644 --- a/examples/rtmo/main.rs +++ b/examples/rtmo/main.rs @@ -1,4 +1,4 @@ -use usls::{coco, models::RTMO, Annotator, DataLoader, Options}; +use usls::{models::RTMO, Annotator, DataLoader, Options, COCO_SKELETONS_16}; fn main() -> Result<(), Box> { // build model @@ -19,7 +19,7 @@ fn main() -> Result<(), Box> { // annotate let annotator = Annotator::default() .with_saveout("RTMO") - .with_skeletons(&coco::SKELETONS_16); + .with_skeletons(&COCO_SKELETONS_16); annotator.annotate(&x, &y); Ok(()) diff --git a/examples/sapiens/main.rs b/examples/sapiens/main.rs new file mode 100644 index 0000000..63c3b12 --- /dev/null +++ b/examples/sapiens/main.rs @@ -0,0 +1,30 @@ +use usls::{ + models::{Sapiens, SapiensTask}, + Annotator, DataLoader, Options, BODY_PARTS_28, +}; + +fn main() -> Result<(), Box> { + // build + let options = Options::default() + .with_model("sapiens-seg-0.3b-dyn.onnx")? + .with_sapiens_task(SapiensTask::Seg) + .with_names(&BODY_PARTS_28) + .with_profile(false) + .with_i00((1, 1, 8).into()); + let mut model = Sapiens::new(options)?; + + // load + let x = [DataLoader::try_read("./assets/paul-george.jpg")?]; + + // run + let y = model.run(&x)?; + + // annotate + let annotator = Annotator::default() + .without_masks(true) + .with_polygons_name(false) + .with_saveout("Sapiens"); + annotator.annotate(&x, &y); + + Ok(()) +} diff --git a/examples/yolo/main.rs b/examples/yolo/main.rs index 97af956..3587265 100644 --- a/examples/yolo/main.rs +++ b/examples/yolo/main.rs @@ -1,7 +1,10 @@ use anyhow::Result; use clap::Parser; -use usls::{coco, models::YOLO, Annotator, DataLoader, Options, Vision, YOLOTask, YOLOVersion}; +use usls::{ + models::YOLO, Annotator, DataLoader, Options, Vision, YOLOTask, YOLOVersion, COCO_KEYPOINTS_17, + COCO_SKELETONS_16, +}; #[derive(Parser, Clone)] #[command(author, version, about, long_about = None)] @@ -174,8 +177,8 @@ fn main() -> Result<()> { .with_i02((args.height_min, args.height, args.height_max).into()) .with_i03((args.width_min, args.width, args.width_max).into()) .with_confs(&[0.2, 0.15]) // class_0: 0.4, others: 0.15 - // .with_names(&coco::NAMES_80) - .with_names2(&coco::KEYPOINTS_NAMES_17) + // .with_names(&COCO_CLASS_NAMES_80) + .with_names2(&COCO_KEYPOINTS_17) .with_find_contours(!args.no_contours) // find contours or not .with_profile(args.profile); let mut model = YOLO::new(options)?; @@ -187,7 +190,7 @@ fn main() -> Result<()> { // build annotator let annotator = Annotator::default() - .with_skeletons(&coco::SKELETONS_16) + .with_skeletons(&COCO_SKELETONS_16) .with_bboxes_thickness(4) .without_masks(true) // No masks plotting when doing segment task. .with_saveout(saveout); diff --git a/src/core/mod.rs b/src/core/mod.rs index 0577c6a..2586cf6 100644 --- a/src/core/mod.rs +++ b/src/core/mod.rs @@ -9,6 +9,7 @@ pub mod onnx; pub mod ops; mod options; mod ort_engine; +mod task; mod tokenizer_stream; mod ts; mod vision; @@ -25,6 +26,7 @@ pub use min_opt_max::MinOptMax; pub use ops::Ops; pub use options::Options; pub use ort_engine::OrtEngine; +pub use task::Task; pub use tokenizer_stream::TokenizerStream; pub use ts::Ts; pub use vision::Vision; diff --git a/src/core/ops.rs b/src/core/ops.rs index 6b5b94f..10d3a74 100644 --- a/src/core/ops.rs +++ b/src/core/ops.rs @@ -7,7 +7,7 @@ use fast_image_resize::{ FilterType, ResizeAlg, ResizeOptions, Resizer, }; use image::{DynamicImage, GenericImageView}; -use ndarray::{s, Array, Axis, IntoDimension, IxDyn}; +use ndarray::{s, Array, Array3, Axis, IntoDimension, IxDyn}; use rayon::prelude::*; pub enum Ops<'a> { @@ -159,7 +159,41 @@ impl Ops<'_> { mask.resize_exact(w1 as u32, h1 as u32, image::imageops::FilterType::Triangle) } - pub fn resize_lumaf32_vec( + // pub fn argmax(xs: Array, d: usize, keep_dims: bool) -> Result> { + // let mask = Array::zeros(xs.raw_dim()); + // todo!(); + // } + + pub fn interpolate_3d( + xs: Array, + tw: f32, + th: f32, + filter: &str, + ) -> Result> { + let d_max = xs.ndim(); + if d_max != 3 { + anyhow::bail!("`interpolate_3d`: The input's ndim: {} is not 3.", d_max); + } + let (n, h, w) = (xs.shape()[0], xs.shape()[1], xs.shape()[2]); + let mut ys = Array3::zeros((n, th as usize, tw as usize)); + for (i, luma) in xs.axis_iter(Axis(0)).enumerate() { + let v = Ops::resize_lumaf32_f32( + &luma.to_owned().into_raw_vec_and_offset().0, + w as _, + h as _, + tw as _, + th as _, + false, + filter, + )?; + let y_ = Array::from_shape_vec((th as usize, tw as usize), v)?; + ys.slice_mut(s![i, .., ..]).assign(&y_); + } + + Ok(ys.into_dyn()) + } + + pub fn resize_lumaf32_u8( v: &[f32], w0: f32, h0: f32, @@ -168,6 +202,20 @@ impl Ops<'_> { crop_src: bool, filter: &str, ) -> Result> { + let mask_f32 = Self::resize_lumaf32_f32(v, w0, h0, w1, h1, crop_src, filter)?; + let v: Vec = mask_f32.par_iter().map(|&x| (x * 255.0) as u8).collect(); + Ok(v) + } + + pub fn resize_lumaf32_f32( + v: &[f32], + w0: f32, + h0: f32, + w1: f32, + h1: f32, + crop_src: bool, + filter: &str, + ) -> Result> { let src = Image::from_vec_u8( w0 as _, h0 as _, @@ -189,12 +237,10 @@ impl Ops<'_> { .map(|chunk| f32::from_le_bytes([chunk[0], chunk[1], chunk[2], chunk[3]])) .collect(); - // f32 -> u8 - let v: Vec = mask_f32.par_iter().map(|&x| (x * 255.0) as u8).collect(); - Ok(v) + Ok(mask_f32) } - pub fn resize_luma8_vec( + pub fn resize_luma8_u8( v: &[u8], w0: f32, h0: f32, diff --git a/src/core/options.rs b/src/core/options.rs index 0b11113..14f621d 100644 --- a/src/core/options.rs +++ b/src/core/options.rs @@ -4,7 +4,7 @@ use anyhow::Result; use crate::{ auto_load, - models::{SamKind, YOLOPreds, YOLOTask, YOLOVersion}, + models::{SamKind, SapiensTask, YOLOPreds, YOLOTask, YOLOVersion}, Device, MinOptMax, }; @@ -92,6 +92,7 @@ pub struct Options { pub find_contours: bool, pub sam_kind: Option, pub use_low_res_mask: Option, + pub sapiens_task: Option, } impl Default for Options { @@ -175,6 +176,7 @@ impl Default for Options { find_contours: false, sam_kind: None, use_low_res_mask: None, + sapiens_task: None, } } } @@ -220,6 +222,11 @@ impl Options { self } + pub fn with_sapiens_task(mut self, x: SapiensTask) -> Self { + self.sapiens_task = Some(x); + self + } + pub fn with_yolo_version(mut self, x: YOLOVersion) -> Self { self.yolo_version = Some(x); self diff --git a/src/core/task.rs b/src/core/task.rs new file mode 100644 index 0000000..b85a00d --- /dev/null +++ b/src/core/task.rs @@ -0,0 +1,27 @@ +#[derive(Debug, Clone)] +pub enum Task { + // vision + ImageClassification, + ObjectDetection, + KeypointsDetection, + RegisonProposal, + PoseEstimation, + SemanticSegmentation, + InstanceSegmentation, + DepthEstimation, + SurfaceNormalPrediction, + Image2ImageGeneration, + Inpainting, + SuperResolution, + Denoising, + + // vl + Tagging, + Captioning, + DetailedCaptioning, + MoreDetailedCaptioning, + PhraseGrounding, + Vqa, + Ocr, + Text2ImageGeneration, +} diff --git a/src/lib.rs b/src/lib.rs index 77dd69c..1713725 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -24,6 +24,7 @@ //! - [YOLOPv2](https://arxiv.org/abs/2208.11434): Panoptic Driving Perception //! - [Depth-Anything (v1, v2)](https://github.com/LiheYoung/Depth-Anything): Monocular Depth Estimation //! - [MODNet](https://github.com/ZHKKKe/MODNet): Image Matting +//! - [Sapiens](https://arxiv.org/abs/2408.12569): Human-centric Vision Tasks //! //! # Examples //! @@ -35,7 +36,7 @@ //! Using provided [`models`] with [`Options`] //! //! ```rust, no_run -//! use usls::{coco, models::YOLO, Annotator, DataLoader, Options, Vision}; +//! use usls::{ models::YOLO, Annotator, DataLoader, Options, Vision, COCO_CLASS_NAMES_80}; //! //! let options = Options::default() //! .with_yolo_version(YOLOVersion::V8) // YOLOVersion: V5, V6, V7, V8, V9, V10, RTDETR @@ -74,7 +75,7 @@ //! //! ```rust, no_run //! let options = Options::default() -//! .with_names(&coco::NAMES_80); +//! .with_names(&COCO_CLASS_NAMES_80); //! ``` //! //! More options can be found in the [`Options`] documentation. diff --git a/src/models/db.rs b/src/models/db.rs index 12d3e89..89bed64 100644 --- a/src/models/db.rs +++ b/src/models/db.rs @@ -93,7 +93,7 @@ impl DB { }) .collect::>(); - let luma = Ops::resize_luma8_vec( + let luma = Ops::resize_luma8_u8( &v, self.width() as _, self.height() as _, diff --git a/src/models/depth_anything.rs b/src/models/depth_anything.rs index 2a5c86b..1b97ad7 100644 --- a/src/models/depth_anything.rs +++ b/src/models/depth_anything.rs @@ -57,7 +57,7 @@ impl DepthAnything { .map(|x| (((*x - min_) / (max_ - min_)) * 255.).clamp(0., 255.) as u8) .collect::>(); - let luma = Ops::resize_luma8_vec( + let luma = Ops::resize_luma8_u8( &v, self.width() as _, self.height() as _, diff --git a/src/models/mod.rs b/src/models/mod.rs index 237fe8f..0d13182 100644 --- a/src/models/mod.rs +++ b/src/models/mod.rs @@ -9,6 +9,7 @@ mod grounding_dino; mod modnet; mod rtmo; mod sam; +mod sapiens; mod svtr; mod yolo; mod yolo_; @@ -23,6 +24,7 @@ pub use grounding_dino::GroundingDINO; pub use modnet::MODNet; pub use rtmo::RTMO; pub use sam::{SamKind, SamPrompt, SAM}; +pub use sapiens::{Sapiens, SapiensTask}; pub use svtr::SVTR; pub use yolo::YOLO; pub use yolo_::*; diff --git a/src/models/modnet.rs b/src/models/modnet.rs index 57e647c..f7dfd01 100644 --- a/src/models/modnet.rs +++ b/src/models/modnet.rs @@ -51,7 +51,7 @@ impl MODNet { for (idx, luma) in xs[0].axis_iter(Axis(0)).enumerate() { let (w1, h1) = (xs0[idx].width(), xs0[idx].height()); let luma = luma.mapv(|x| (x * 255.0) as u8); - let luma = Ops::resize_luma8_vec( + let luma = Ops::resize_luma8_u8( &luma.into_raw_vec_and_offset().0, self.width() as _, self.height() as _, diff --git a/src/models/sam.rs b/src/models/sam.rs index 6a03283..d6f37d4 100644 --- a/src/models/sam.rs +++ b/src/models/sam.rs @@ -264,7 +264,7 @@ impl SAM { let (h, w) = mask.dim(); let luma = if self.use_low_res_mask { - Ops::resize_lumaf32_vec( + Ops::resize_lumaf32_u8( &mask.into_owned().into_raw_vec_and_offset().0, w as _, h as _, diff --git a/src/models/sapiens.rs b/src/models/sapiens.rs new file mode 100644 index 0000000..448149e --- /dev/null +++ b/src/models/sapiens.rs @@ -0,0 +1,158 @@ +use anyhow::Result; +use image::DynamicImage; +use ndarray::{s, Array2, Axis}; + +use crate::{Mask, MinOptMax, Ops, Options, OrtEngine, Polygon, Xs, X, Y}; + +#[derive(Debug, Clone, clap::ValueEnum)] +pub enum SapiensTask { + Seg, + Depth, + Normal, + Pose, +} + +#[derive(Debug)] +pub struct Sapiens { + engine_seg: OrtEngine, + height: MinOptMax, + width: MinOptMax, + batch: MinOptMax, + task: SapiensTask, + names_body: Option>, +} + +impl Sapiens { + pub fn new(options_seg: Options) -> Result { + let mut engine_seg = OrtEngine::new(&options_seg)?; + let (batch, height, width) = ( + engine_seg.batch().to_owned(), + engine_seg.height().to_owned(), + engine_seg.width().to_owned(), + ); + let task = options_seg + .sapiens_task + .expect("Error: No sapiens task specified."); + let names_body = options_seg.names; + engine_seg.dry_run()?; + + Ok(Self { + engine_seg, + height, + width, + batch, + task, + names_body, + }) + } + + pub fn run(&mut self, xs: &[DynamicImage]) -> Result> { + let xs_ = X::apply(&[ + Ops::Resize(xs, self.height() as u32, self.width() as u32, "Bilinear"), + Ops::Standardize(&[123.5, 116.5, 103.5], &[58.5, 57.0, 57.5], 3), + Ops::Nhwc2nchw, + ])?; + + match self.task { + SapiensTask::Seg => { + let ys = self.engine_seg.run(Xs::from(xs_))?; + self.postprocess_seg(ys, xs) + } + _ => todo!(), + } + } + + pub fn postprocess_seg(&self, xs: Xs, xs0: &[DynamicImage]) -> Result> { + let mut ys: Vec = Vec::new(); + for (idx, b) in xs[0].axis_iter(Axis(0)).enumerate() { + let (w1, h1) = (xs0[idx].width(), xs0[idx].height()); + + // rescale + let masks = Ops::interpolate_3d(b.to_owned(), w1 as _, h1 as _, "Bilinear")?; + + // generate mask + let mut mask = Array2::::zeros((h1 as _, w1 as _)); + let mut ids = Vec::new(); + for hh in 0..h1 { + for ww in 0..w1 { + let pt_slice = masks.slice(s![.., hh as usize, ww as usize]); + let (i, c) = match pt_slice + .into_iter() + .enumerate() + .max_by(|a, b| a.1.total_cmp(b.1)) + { + Some((i, c)) => (i, c), + None => continue, + }; + + if *c <= 0. || i == 0 { + continue; + } + mask[[hh as _, ww as _]] = i; + + if !ids.contains(&i) { + ids.push(i); + } + } + } + + // generate masks and polygons + let mut y_masks: Vec = Vec::new(); + let mut y_polygons: Vec = Vec::new(); + for i in ids.iter() { + let luma = mask.mapv(|x| if x == *i { 255 } else { 0 }); + let luma: image::ImageBuffer, Vec<_>> = + match image::ImageBuffer::from_raw( + w1 as _, + h1 as _, + luma.into_raw_vec_and_offset().0, + ) { + None => continue, + Some(x) => x, + }; + + // contours + let contours: Vec> = + imageproc::contours::find_contours_with_threshold(&luma, 0); + let polygon = match contours + .into_iter() + .map(|x| { + let mut polygon = Polygon::default() + .with_id(*i as _) + .with_points_imageproc(&x.points); + if let Some(names_body) = &self.names_body { + polygon = polygon.with_name(&names_body[*i]); + } + polygon + }) + .max_by(|x, y| x.area().total_cmp(&y.area())) + { + Some(p) => p, + None => continue, + }; + + y_polygons.push(polygon); + + let mut mask = Mask::default().with_mask(luma).with_id(*i as _); + if let Some(names_body) = &self.names_body { + mask = mask.with_name(&names_body[*i]); + } + y_masks.push(mask); + } + ys.push(Y::default().with_masks(&y_masks).with_polygons(&y_polygons)); + } + Ok(ys) + } + + pub fn batch(&self) -> isize { + self.batch.opt + } + + pub fn width(&self) -> isize { + self.width.opt + } + + pub fn height(&self) -> isize { + self.height.opt + } +} diff --git a/src/models/yolo.rs b/src/models/yolo.rs index bf5a9d1..f79b2ca 100644 --- a/src/models/yolo.rs +++ b/src/models/yolo.rs @@ -421,7 +421,7 @@ impl Vision for YOLO { let mask = coefs.dot(&proto); // (mh, mw, n) // Mask rescale - let mask = Ops::resize_lumaf32_vec( + let mask = Ops::resize_lumaf32_u8( &mask.into_raw_vec_and_offset().0, mw as _, mh as _, diff --git a/src/models/yolop.rs b/src/models/yolop.rs index 2aefcd3..65b1d51 100644 --- a/src/models/yolop.rs +++ b/src/models/yolop.rs @@ -191,7 +191,7 @@ impl YOLOPv2 { h1: f32, ) -> Result>> { let mask = mask.mapv(|x| if x < thresh { 0u8 } else { 255u8 }); - let mask = Ops::resize_luma8_vec( + let mask = Ops::resize_luma8_u8( &mask.into_raw_vec_and_offset().0, w0, h0, diff --git a/src/utils/mod.rs b/src/utils/mod.rs index 34a3078..eb52f2d 100644 --- a/src/utils/mod.rs +++ b/src/utils/mod.rs @@ -4,10 +4,11 @@ use rand::{distributions::Alphanumeric, thread_rng, Rng}; use std::io::{Read, Write}; use std::path::{Path, PathBuf}; -pub mod coco; pub mod colormap256; +pub mod names; pub use colormap256::*; +pub use names::*; pub(crate) const GITHUB_ASSETS: &str = "https://github.com/jamjamjon/assets/releases/download/v0.0.1"; diff --git a/src/utils/coco.rs b/src/utils/names.rs similarity index 67% rename from src/utils/coco.rs rename to src/utils/names.rs index 11344cb..ea6b648 100644 --- a/src/utils/coco.rs +++ b/src/utils/names.rs @@ -1,6 +1,6 @@ -//! Some constants releated with COCO dataset: [`SKELETONS_16`], [`KEYPOINTS_NAMES_17`], [`NAMES_80`] +//! Some constants releated with COCO dataset: [`COCO_SKELETONS_16`], [`COCO_KEYPOINTS_17`], [`COCO_CLASS_NAMES_80`] -pub const SKELETONS_16: [(usize, usize); 16] = [ +pub const COCO_SKELETONS_16: [(usize, usize); 16] = [ (0, 1), (0, 2), (1, 3), @@ -19,7 +19,7 @@ pub const SKELETONS_16: [(usize, usize); 16] = [ (14, 16), ]; -pub const KEYPOINTS_NAMES_17: [&str; 17] = [ +pub const COCO_KEYPOINTS_17: [&str; 17] = [ "nose", "left_eye", "right_eye", @@ -39,7 +39,7 @@ pub const KEYPOINTS_NAMES_17: [&str; 17] = [ "right_ankle", ]; -pub const NAMES_80: [&str; 80] = [ +pub const COCO_CLASS_NAMES_80: [&str; 80] = [ "person", "bicycle", "car", @@ -121,3 +121,34 @@ pub const NAMES_80: [&str; 80] = [ "hair drier", "toothbrush", ]; + +pub const BODY_PARTS_28: [&str; 28] = [ + "Background", + "Apparel", + "Face Neck", + "Hair", + "Left Foot", + "Left Hand", + "Left Lower Arm", + "Left Lower Leg", + "Left Shoe", + "Left Sock", + "Left Upper Arm", + "Left Upper Leg", + "Lower Clothing", + "Right Foot", + "Right Hand", + "Right Lower Arm", + "Right Lower Leg", + "Right Shoe", + "Right Sock", + "Right Upper Arm", + "Right Upper Leg", + "Torso", + "Upper Clothing", + "Lower Lip", + "Upper Lip", + "Lower Teeth", + "Upper Teeth", + "Tongue", +];