From 07ea67746a1c49ee4120a0e1b581d106ec1d10ce Mon Sep 17 00:00:00 2001 From: Oleksandr Bezdieniezhnykh Date: Wed, 5 Jun 2024 23:35:06 +0300 Subject: [PATCH] add train.py form dataset for current date add exception catching --- constants.py | 13 +++++ preprocessing.py | 45 +++++++++------- tests/imagelabel_visualize_test.py | 11 ++-- tests/test01.jpg | Bin 0 -> 107490 bytes tests/test01.txt | 1 + train.py | 84 ++++++++++++++++++++++++++++- yolov10x.yaml | 40 ++++++++++++++ 7 files changed, 168 insertions(+), 26 deletions(-) create mode 100644 constants.py create mode 100644 tests/test01.jpg create mode 100644 tests/test01.txt create mode 100644 yolov10x.yaml diff --git a/constants.py b/constants.py new file mode 100644 index 0000000..1f790ff --- /dev/null +++ b/constants.py @@ -0,0 +1,13 @@ +import os +from datetime import datetime + +from dto.annotationClass import AnnotationClass + +current_dataset_dir = os.path.join('datasets', 'zombobase-current') +current_images_dir = os.path.join(current_dataset_dir, 'images') +current_labels_dir = os.path.join(current_dataset_dir, 'labels') +annotation_classes = AnnotationClass.read_json() + + +prefix = 'zombobase-' +today_dataset = os.path.join('datasets', f'{prefix}{datetime.now():%Y-%m-%d}') \ No newline at end of file diff --git a/preprocessing.py b/preprocessing.py index f476a57..c5bd525 100644 --- a/preprocessing.py +++ b/preprocessing.py @@ -3,15 +3,11 @@ import time from pathlib import Path import albumentations as A import cv2 -from dto.annotationClass import AnnotationClass +from constants import current_images_dir, current_labels_dir, annotation_classes from dto.imageLabel import ImageLabel labels_dir = 'labels' images_dir = 'images' -current_dataset_dir = os.path.join('datasets', 'zombobase-current') -current_images_dir = os.path.join(current_dataset_dir, 'images') -current_labels_dir = os.path.join(current_dataset_dir, 'labels') -annotation_classes = AnnotationClass.read_json() def image_processing(img_ann: ImageLabel) -> [ImageLabel]: @@ -37,16 +33,19 @@ def image_processing(img_ann: ImageLabel) -> [ImageLabel]: results = [] for i, transform in enumerate(transforms): - res = transform(image=img_ann.image, bboxes=img_ann.labels) - path = Path(img_ann.image_path) - name = f'{path.stem}_{i+1}' - img = ImageLabel( - image=res['image'], - labels=res['bboxes'], - image_path=os.path.join(current_images_dir, f'{name}{path.suffix}'), - labels_path=os.path.join(current_labels_dir, f'{name}.txt') - ) - results.append(img) + try: + res = transform(image=img_ann.image, bboxes=img_ann.labels) + path = Path(img_ann.image_path) + name = f'{path.stem}_{i+1}' + img = ImageLabel( + image=res['image'], + labels=res['bboxes'], + image_path=os.path.join(current_images_dir, f'{name}{path.suffix}'), + labels_path=os.path.join(current_labels_dir, f'{name}.txt') + ) + results.append(img) + except Exception as e: + print(f'Error during transformtation: {e}') return results @@ -74,7 +73,7 @@ def read_labels(labels_path) -> [[]]: for row in rows: str_coordinates = row.split(' ') class_num = str_coordinates.pop(0) - coordinates = [float(n) for n in str_coordinates] + coordinates = [float(n.replace(',', '.')) for n in str_coordinates] coordinates.append(class_num) arr.append(coordinates) return arr @@ -111,8 +110,18 @@ def main(): labels_path=labels_path, labels=read_labels(labels_path) )) - except FileNotFoundError: - print(f'No labels file {labels_path} found') + except Exception as e: + print(f'Error appeared {e}') + + try: + os.remove(image_path) + except OSError: + pass + + try: + os.remove(labels_path) + except OSError: + pass if __name__ == '__main__': diff --git a/tests/imagelabel_visualize_test.py b/tests/imagelabel_visualize_test.py index 67c7890..c101ad5 100644 --- a/tests/imagelabel_visualize_test.py +++ b/tests/imagelabel_visualize_test.py @@ -1,19 +1,16 @@ -from pathlib import Path import cv2 -import os.path + from dto.annotationClass import AnnotationClass from dto.imageLabel import ImageLabel from preprocessing import read_labels -images_dir = '../images' -labels_dir = '../labels' annotation_classes = AnnotationClass.read_json() +images_dir = '' -image = os.listdir(images_dir)[0] -image_path = os.path.join(images_dir, image) -labels_path = os.path.join(labels_dir, f'{Path(image_path).stem}.txt') +image_path = 'test01.jpg' +labels_path = 'test01.txt' img = ImageLabel( image_path=image_path, diff --git a/tests/test01.jpg b/tests/test01.jpg new file mode 100644 index 0000000000000000000000000000000000000000..099192fa87a5ea59992785f3ce64b1cd5e06abc3 GIT binary patch literal 107490 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%0AGEe2H=~SJ7mr{iyZOBK^ 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¨yC&JH*{wMMNpEb_34052zgN<%3R2yjAU{s1H(Q&UTVHNpZ*Z- zEtTb2RH!{c%~|+?@heC8JK+s7-&qko^w9Y+Ge@5&E0xo^+Z~U z`J*QVNa{^_{{ZcS<1YaCpTlt2SzVip$Z*T$Hwb(FJtzavKV}$oDJ|}`Xd;R=x}41< zgyZX3{yo?H8RBmmYIb^I6USwP9E><8zCCNeei?jb*L)?TogFS@+U>v%iu64n$J!>R zW+gjTcR7)|09(`7USeK3 z4nq#r@Q;Y~`>1A$=SPr-iNh5KgI{-i0KbdGe*?6=T%KlwE=lNd&+A%&+2~P4d8QT- zfZGo4E6zMk7OAW1@@U$8O}IHwI&)oAzAuNvyRFs60O#pk{fCaUX7MP`lK z8kU{F`P=rUu<=iY^z^sCc@iM)xdV5vC(^zm+-rUvE2t}kx5_D(*Vev?{kiOA*R@Ml zhyfh14cO>Ub6yAWpTqhe!_R_HYtM4NY_0PuE(zxys7MY^#}PNiABX9GrfJf>{*QU( zpDbs%=kl(aFWK9|GwF7kmx!$P%+|_f-@(o*_w3c;uL^h{;hoOEd1$v1>XUBr++=Z9 zyl3%74;|fxOJ%l?$nu&rZV1LRPRI>!hnAiT_*0>3dfkDD!wsu5Z5il2Yv*5ze;aRZ z?Hj}r>GE4Hpk7E2t_b}5S7)L{t@vBRnxBPcyB8MsOx|3KHlEM{60)Q(w9YEwX?-t4N1H)G>tDqMaSujYarCIoA@gK#yMxsrgrz*yP29G>f zBR$yB^>osFGKNDa#EQM^)cynb7fZd>^%#6u%WVT$yT>X11_F~nV*Fq6{GKn7E;UYW zB3-e!eYNMFE%7bI=Z9joNEMnVz>~d0@e5ub+qYJBH#?FU$}4(+ahlECE_9OM9E128 z5(8_&H`7f6d4miGRu!M)ZxUQzlVfl}L^x0@KTh!v*wv!jgY0USr+9BBEC*B6)V%p0RDI`kL79%G-RPStBFED4NMJW-!P}PWTLqbuz ziU6q*#F%X2rxjiQ0Cz4)?^6aC1Rm4?*%Q4q#@qf?;PMfEGt&eJ+3&4<&dwbQ5H%^0Ck&Ls5_KcF< zC<7gjV1Bg|w${yQ-daNx<|y!a;OC03HKto{S^#al0ztY$0LK(nt7~1UhChZVrj@|^ zllGm1;g{@>`(k)QOSidM{5uYogI3exUCOb$f^*jd6JJGqP5qz#0shgtW9mK&drPZ5 zPRGo(nl=QW+rT7!)7rl?K0AKU8lS~qkKQ2h7O#9Rp}8#$tgXn}1_2+TsXu35+f(9) zz-w#$3d2&CYdN;yS0f$JjvWIMw;boA6_h0E=EAX$!*S{6D9cphHYZA#KGhD+YubcvT74(nnZ~H8G zTlS*U^_eu?P_5mA7~x{sQhOQz^Zx)A_{UGZL3<-0-GTCfTz;{r!F3rnvoh{IRN}s= z{i8qNnvr}X{hu{2i5LDQCseTj#}7Ln7|8xr@f7;o+R5cecmsi&Yj8Wy2YgKN?}Fxv zT{FbfDnxQ4XCz{~j~9O59xAl3j>aoCn&3th%+1jBuLqmN*iecy>ME#D?HSC@F`r7S zpf`Rgd}ZgFw)u_~%dzcO;;@Y*!1d`~iQo$x z4NJqig_48zlNb?g9ci#U!W}M7h?(oqcdmospTjQ~`18bmUV&-zK^b{kM%n-dzP0_1 ze_;(b#@5mJ)8cF{mbu?;Zbmor)Qaf7F#g0IG4S?_u4_L8pUb%UnPN!JM1It42Z;O{ z`1hxHY`=nhQD*`}1nm=Cft(dM$G&Up?}R=T@RqmXMb~ub;F3F$&;W7Ger@=R!G1RI zMfBQtjC8ArZUmdz_8c>3^siO@pFe5;02X{PjWm1BQb)D(HwAY*4mhm$1ME+W{tfWI zg*+R1t!cI>FCITBFr9aIubJccOX9s&^{#JY3j+Mk^^sr(vipAQ=wSkxDb1%T_t0DP;Uc>7iGRm8RsNK88nY#X5+IITSgYX=)aM4X zKWGgq#%pUGZQ}(J^Af4-3Fd%4a)!yE!G$mbR=$sYsm2YIcXCFOaNr-jJuBWkRq#i^ zgTYbjz8SlYS)_{R zLrS`jNdD1@2}T$Mat%<@Z8aMWKl@(b7~^LujNR+6O=C~+?||aB)Z~qs0cBj|wRtbZ ze~TAdz=uoHRiT0)M&87l0PHj$ju#&e?(QBqBDnJx8)O+@df@d&THk5%`H{BQ-lPzF z@ml&%g+#XDe4V|%?NitfL9x|*BjUX{q;M<}g&b!ag<|Ue01sulx<|3b4|>G5&@U~n z))0SB#lpT&O)-so4yOw(V^^9NY@=72tV)I0?Z zmb#Y(^St1yimT#31W59Ttr1CMfH7ZGe$79z=C$#Y#US{$;OW|8F6O#*$IQv0+lPik9EBZ8{3-J=Jiqo={{Vt?U4GJj9@KnKCx|}96_{XCZgRj^ z&;I}#z6tAp2>g3{;H!sen$CYO%?W`1_4@<+6~pjnMEDi`pYYqn&|ch6A#48tC9*?z z&*NVy{{X>3ei-;REpC4iTAli})VT6hc~jWZ1I+&b;GSQwJO0tqTzH4YcY@nZvyg8Y z<&U*~k^DROP4MU7K8U&>fqXq{YF02LxKtb5_axVhf59j`JK`S+*#*7T=}8;g)* zk<%GC?OyTXnZDm6qA?gG5-Hxu410eF+)3gId_!qu8LlMWWCF2&XrG4HUMBD?*Ty}! z7V(o9$0Yh!r2Ia=wYAfh%H~bm8-mB0gW_qL{?0L`g4mcBPwy^zQ%n!cpNJOEr`}0z zt3qLzWMPI4X813_{x$fGslnmx4$A6SE-n^1+8ltWP6;Q{zLx(0f{y$QzPNiYh`tfh zf?IhAv#cq`;yFK^UH<@rYfi8APlFmqgCcD{ zH@3bufXg~^T3lqD*O$lfBTe{f(0B%IHInKlFhg>{;$CnKeb?gqIN;JGj&xCl=xgJ@ z+H=Bs2C3r>A5EUcVg~scCr%2Idgi1K!2ZV8pBg?F>Q=uKbrxmRY)qPHPx)sq(p3Ip zzbSqvd@u2*!cP<4cxT2sY>+fJk|YweWC>#oLXr4a?IY@%r-l9bW%y!XbwE3=X0NEmI-7m5Jqd_k-243T3!g>#~B zGH;moskJMkaVf(dwN@0_jz1azw(N+x2enD2hMrHAbB^Tns=*pjf_|LV){S5xhj~5d zTY+xMCqc;haoVqG@%eWF&U)mLNpBkM09B=cjzQ~J%z)Ln`#ts=CFB8;J!#P9C|MbP zQlt^<#Zl8IF2E9p%YT^mr~{B+2)h=Uqxo`A;aSmG!ELHE60Q^;4r|bE zV1YDunVSS>t$E$yBT{LQG2DJ`Y4b2T3tJfOh>Fw<4&Jow7R83J_NR@H%~$ZH{C4_; zesRL??s%@NP|_C9Svsw&102ev0abRDz_BfaOArBi3bo)p6I9iFQEdi`B+EO<7BdES z1Nc)F&C2CD9@X6b&tDTF_&?(p@eJBL7hB;ff@RLbo(QROxF4oJu~&qyeh+@mqVL8D zEEhM|x$|xq4Z!d)dkog+?IrO8MDQQOTg_)wnk5F=+9qS3K;phl`1$_;1rpW%B76X_ z_+O%Ubm`K>=+<1${R=ReQmodsCW>JhUCbvErc(wHi zi-}pV2N|y{@fV0~bv*?V;lP+LBi^*W2Ke6FMAuf^Py@)BHsqd$n%ob0(e+EIH3+`Z z88I_};QCkEp9%gY-1t}F6}E?=Xc9f7N>7+M3!ZxR>t8;6FZeBG<1HQyZR8QdD-SK1 zfZk81t$O-=a`1=1uZB90!*3DV7Q8}DxhcbfIOeoXfwS=o;+3Y6@c4M+RE>hO74p>J zn)#CJ_Kntui5FA1k)whs!>Wel^V9OKW8*LF1+V-=)8WvQ_ZD{Vxl%HDIj(!ac1f=3 zw@)c0;#{CVTC1Qwoz=cH=>Gs1G;0$inWRpN84Nhg1Bek$amQNojYm+QN7M{B!>QyEUgz;6$NGzSZ^Ql=(e&W+nL^Jq8~_i0 zek+ynZ-hKMsrW{1Qu-u^Q-GZ3k1=z_Fg&vF#ZL1El1u_S)q8&p_&daDs9bBVzI3+D z_IKZnt&S^}_?>!mIUK}x;Ab9{^OYuL8j^VQP^Atk~Ltb zILBHweL;0OzR-{a$i@KTfGb}}ts&%d(zZSvYOSRBjtjNu8>I- zh6gkO>{^eGbieH@oh})zS1p!iOa~*TaB98FMv@YVfu1u{+T9WNMtI_Y36;v)h3V@Bp*IUOi@(6-pbv7Ges-gU^3yd za^mIASe)edslLG*G2Wd|2CTyq00!Lcs}jbHqiM$+(gHmfP`=V##f8H}%)4Bn#z&=n z_5T0_SopiAd^xf4j*)$J5V*Oyif9s7_2A<@tKfK}5YAMAocFGW!2UGXycMl~Xy`Zc zTRB`wCZDQmHq4gka2%1r8%{+4bN(;z z1>b?SlcH*o?448=Q`K@Z0jOcLSYr*INUfiZz9rUtdGS{6duvH$GD?c26O(~~TD~p# zA@NVZ-W0I$uZlb`aciY&6L~h5QYiu78O2i7fyNh*N`6z1QPRC9_FeH`hqOP5mZ!y* z!b?dTYbhBS`d24y;QdzOAGD>b81c(?s~UEa+Ag6L;RkDH~` ziQ!n5J)TTh8!_7hrFzeW^gZ#MV1^iASBx6`!u_1TX>Cj4CyAnak|wm8P$X7wyU$wv z6!;18-@-o-ppi74PB(a=4yJSJB2~R!@{ZGDxq^Z;3j;j5K{x<3;fuxq+dXkjA3} z+v~*ueHo|xHt^T&A>wE}L#bc1^W8R61QDG2R}=e0{>wfx(Y3j4bX^_VI8YcBMS%$`d8!M?M0+`*T4|!{{RhME4@{s9%KQ5YGj&VHqYl#!fl|TK*{UX0xhl7MGf%lroI$ zJTkX&isSw^-<#bbJp8di!EUtd!00>+2Zi+CgjUwp*Dm^moBZI;Nyd2V(y%n|16^wV zAWt^k_f9QUWn z!1X9RA20T(uz)k}1SZkmsM&a1K-Kj&vD7A5WLb7^Cj&XIpW&6=?1=@0w<$KD$-JOB zBaXFW$9@LUu6!+f62>CEGAye)H#yHEijX;f6Zl5{ZxGMns1fcK$~>6@@vsiROjkXo zd@9m)U11x_EP;kaeOKXoTi+7=2DiBI?}cq5{?F2kTDGL@H{H0-I`h-De4%skD_HQp zvp9~&YQ-Z0p)=6X2dQ{};b(_+w$mcD`Eaa?2SLSQd^7L`#J(#ijto}q^ECi<-W~8ghlRA*EVRfK0-zW{*0@iP zUJ9P_D{X4uPxI!86mVB1l#FBbuV2&*Hq!__7WH zUwkO=zPo>_SQ~HcTe8qw5&o@r5;5u4yz}8oh<>+~zwlTY33NtWSv^4l`@9S?N%iqmo_ZM0gFJwdh_7(i+;u z1@OzN{G`-@!NU5cg{UNVd%!J?qPnZQ*lfPc_iePwxj@6MU-37F?6oW8pMKH^>E59D zkaWfH<)jhM8MuZ)@~NkEfb;(ViGDuQHN8Q;8PB7Aqs>fZlW<)3t#5=M5Bxdse@&j_ z!@4X>buis5<}tdp{4b(uH`<$Ow-!j#gagdmlZw@lKyQtv?V-5lotpvh&U|~K+^o5c zwzgBvz8iNAWmCwns$$b@G%pTaTtM;p(ndn9*5q z(@%cbkmqPUszAlk?ez#OW6}|f_VK6>6r6|0t$BaOEg!>LSH(>~;(w059>p%3X(}R{ zD^Zps7~O&G*1c7{LY^7CmU*HwCr_nZ(tb1iI=i-eEpi)a6;zWH${07)8UXnzzh}Ku z_R;w1e?NjWskBcHyKQU9V#4k22LiaC_$ZJ36Sv?`?A`EU+s7Us@x1Ng2`2K*qw=$D zIN)~AHTnzSKa1ZFG<`1POVL)++AYk{vf)7PMSgVu0Ks2=I_RD_@g|qyJug`|GTZKF zjv@*uJ&(R<1L3r_S0g0np0xPw!0Np#M$*+9Fu^+Y;-zglcp-cB^`~Y9dmTMxk#aho zGsSf`dTLl$BzEkik&;DY*;^NxR2*RUt@m_j)+am;)PT;hMhm!({QK4Ak#^K^#hDHV z8K+4Q-k=VqnoWT^MlrcRI=iCEuQ-a~&NK5LN~Be-#@59xwcAABA>`BLU~Xz~+clfV z1m7wC8s_w$4gUaZ>Jr+j9pwp3dsegs-LTD&)urL^G~HqwxYb9^gP!2hYQTBo+g-&j? z$n;qeCDdQ7r3Lk{A+P*yJc+Oq;qKbQ8k?q6o$1m7%@djmRVDvlC_Z#ZE?a#|*6$Gh zYW(1OA_e0i=wZ{^L#~nTJG`zmr`wwd{@A94SC`YX3}UVJ>q9UFg8gPoH2-jFfP;6< z{?PW{B~OYB+2s04I#9U>nrhG~Snm6NN8aAlq-WI~vXRmY+q2;p&zrJAxy_Nk03wO< z=RTJA0p4Db!HS|h+|Fl~m9L?bmr8(xJ5~=5?^EP_w5l$Z%)c{?74Z5>3jWQ9(Ty2rFYM^+dM|05_55dvEIQkxX1G2gK8 zq~_l{U$_^~qv>sE7ig$F1cG^QvgHl_BY3hsv6fI)GdGBP@wPX7Ab1u#2U#riOkMLnU=*%^8G)+XU-cg{4Y4BTMu8@JWMGw&ch_!jfn| zuny8n3ELr|+t-kR2_=TnbctbyLWJITOtE)%b+o9k`S-W{95Bp>@kgAoWMU&N9|d!D z;WKhGk@Auju3ue84LLaI;q17WR$oj3sn+b**#be1kj6J^cMBRV0^nhNnh0LVDy1dq z?@QOhqKYItf!S;V8>PPk*)B-9^trA?yk zCRaSjfgF-;ok7^*cw*6mFUOKHhYd1clZ8dA;vZ@Pjl#QA55w_g$W zvY>3ldrfl9 z!mYl<_is5!He8qPo2F0Y9imydxbL0L%+B2A4vdN{{;2IF9Zk66x5HXPSzb?`YT9qpwE}el z7S`Xk!7Rhw#*x!$u{vk>814FCa^{G)6nn~4h=rGEfz-u07p4{&iBtikhAybw1YxFm zlG6PCo6h|`Wty$K_10pliqKyy($|i~WN06upg;lkH($J-1Wj|*;4DH??AW4?I9Sd) zzd@bN745oH^bu0zZ8SCm9l;$#)htza?@Em^JsSpUC+5|5b$$Rjw@b?(t0 zn8~-;n=W#92oA1!+S767W|R4}si6z!RCaA9_nsmoXElwWsWV+CpB&f&b&vs4O)@Fk;WlN@dy2r?jab82Syxi z{}F)Mm>ih-lrQ-=j<279hN;}LLs^Rub6$)8&*orBkJ!Ghq17u_@d=M-ihBhK<$VE^ zqxsHMZC57m7%s^NRzQXMR_(B@HY>+R9`eWY{a4c8KRd6Cpd>q|S7dMJP-+6r20AJ` zZSZ8vhQf#|_5F@ec!@DrS*ggDGN|&z$t_<|ZRmiupHucX|(y_scrEM_hO>-Bm zJJuLexNf@Na`N1k->VlOPEUcDLTA<*q*4$B5bz^s5ujdtd=-C=RfCLQOKf)g_XXze zXTLe%ba4C!1ONv^260;FFuXf16WI!!ZD?v-<@uxAyp*U=2p;^$ju-nOr1dy$>6^fy@v;9J?ADPzxPXVAQD> zn-uSS%(lGHt#b7gKdw0o9YztTBDB_aJ6`Q zz_uxWLZQq|+B;#2VRxQ}+Fh%N2WlS{YZ1vT0ox>#&ai|YVxP4bgk%ef_>+H2>vSx1 z%#G{-3>-}Gx=25ilp;e~NP+!(2c884WIEUt2Gs|gUBo+eqXNTeCQ`X?)I!xbU; z(rT#sYa`&Lb)_uo;Z`#omKeatV8+I{+A=Lt{unCzb8G>k9C@3t@AzHIZdZ}`lP$0M zOd#V;GiGe=oG6mAVdlbR6v#ku)pO2=BmQ_P^h<(M-SiVtgT#L1-AJHQF^eJB7bG$fIGv=#J;|TT=eb zB4X!2MrM8OR?&ybwt7?giY(W5sePh7=NGy4B->^*gF!&3MZoPS#b((vJz+~?GE$bi zo3HyezvliVKPneYq}ywu2%Je^()%V_^j6?rYf(`O7szF>$DS@lhLG8I?CbLN)YuN) z@R|ukqH{Kmx=4V4NJ+({1GcZ}GPY0f_sKtHtb2muvv%yPth@`uix&+k&3PMZiI?sX zO`{U#Iy=I)W|g7@-sY`?0*o)`KA0v}#{RKP)wg_lI|V?Cx_jccW{MZ$J=sWpi7+aN zy(8^TMQiEd{1Z7^XVc}|%O4n9a-PG#s#Pgwl{?LLaSe=Bv;CF$cZF3~o_7h>cc>OP zH~980!L%iCVM*y;m;ZPCPgn2@MEwn_=y9CwnTt2TOPg84f8*|kSeJe9AP%^NmpMNT zqlR@^mdXur=?ZS>hmRkdBfeA^TbPdq1rTZyqQNuO_^cWi8awp&cBafV@na7T5oZ0j z@o^xi=Q3EcTHJ&(O(^kUV)(#$4TUUewyV5+U)y-4!h8%!|-ii zAQ$cuu6y^(7%;I82xDokhTz6`G^VR}@1E7BYt|&rx%||9VK?CvcpCsOC(~#0h;$Ns5(Xx9^-lP;jg$*ym*1>r0ko7!6(^d=qjiM zS+^IjZ_q?NnLSrjp=3hYeE81a$;bGyVH3%~+w5CP0DE)$e}JA@85*4HTZytLr^R#8>kKj+PW4@c@+ zb9sUZu*=ZabX z8Ziq0Pv^6+<>}A4F*ucbSs2O)C{s1Wv8PB^f1A@NVr3aBZHi|hSgi(#=Jj7dwz2Ty z>W;c6e}5%f);L$dEV`*-zv8W>nYA^!iq3tn{U3DMH`gXPf7OoS^u1I3;Gt>Do#_DOQQ1~ zNf^+CMXpfOxy|Q(c*_TToXvK63 zDo7caYK8D0$*qyRq9;4nb1t%PuIHQP%l8~KOdWdHWkqf)Nx&lkHt&)ep^pcd02d8= zk;eL!wc;A8$NketHf1Ug{&$C3WOm+BQ&Gm3pM-qL_#Jj=z{)^T<@)jQKp|%xjw;b7 zgzGc^-fiGe6g`2Lt^)sl5y`a??#brJY&f;FeD3uTUSTtp{+a_P-?8@bj5eay)ns*D z?bmAZ9C-0Rf_lFmsR84d!dBB`tN1cUTs9v`*z25XqDA1}IWCknRgdLSbXmr(ejU|w z>3veO(B}0bhERaex#5CTZEO_IFIr`}F9ZJ;%#T$!o$J!H!#STC5V|} zuPhHN9>osHuEkzEI4dsQJ9XK8wGl-r^8PbRU&($8LJsd+hVOb!-nc|1O?_>CkTiEz z?c`q8@E*hg@N0sXum|VqxS=8|s;DEuo+&Huk34e=aJ-U1rv8jjv+g6E`bPDu$S%9M zbpZb($G^~c^+@pdciJcmiYr_EOQY7d*<1{%$i0Dd$<^-x2j-|;bo4}d7cE%urOw0k zU4q82_N8;Ir~t%l1ly!%bKd*3B{8YQg-4 zyXkWj{Xb(}_9C2quhWJS4RWLX z$4!W--mUz57$Y~l+Ht&wN@Rm$+f74am%qHbeAMsLdVZRAP(^ zM~YVnUrqSGW5c!+dsg!NzY^RzoLAmS4tKZouT8DEztk@G<1$+em(u6#tAAORB}vv& ziWuv9NLakU-HZF}oj<4dHEG=-kxaAszTxVUL%bWHrfXV}6ydf=n>$qAokh3mG;wV0lUqS@x2#{H)o;bXVH;{N(=1S9Ir;E$v< ze6>_c1q4p$XvaRApEBQbKXN`E<7MkSd0(YKtje`H_8@yxoN(@%X}+i78sglb_|)NE zhz#7f4G;EocgKXV8^3HYf-PH-7$Bo%NL$4ARuPWVZmYBUkw+xtUNN8ucykw9l_|ay zi8gF2rsrgsCf7-zdMFI$!Cquaxo73 zbYqxkwf!J2xIRP9TlujCJ!00n;V5iHOqKQ zmF%rV`x6tJqC8ZOSTKZmup$oLq#AXRy&xE^AnZuggpD2QeuNhr?R$jwgQH>y2TasK3!?9(2))4@`{x=D`ikP2X*H;DhYkxKGw zazltwlZm=ClkiJ@PcFfM(*Ku9Tz050)q9sk06~4n#QYV)Gec3O7cPl!1%9pVx6^a1wUe%qL%KQM%4Ip#P(r{=z|fWs}!po$ZUzmuEC*4nsY^ zI$z;j7vgT853|P8BxU1+zQOW1LNi%I7J*iuoN+19dv^F;t5=v;&0VOnx z)V#n^?E;JW_d0_SrZg&8p!<>7W)2X0%pOAHO43&}vrGvDLT%RoU@kr^h^4V)|DDOo ztG@KKG|2Q{fJdXQkB{DPyq3Vpz0ELO+`1{HQw*OXZ9zkFEVT9?LkrvuouFys1&H}l z9CiPBs31NR7|4ytZ?-__#YUue5bx(;f`1QU8n9srJcX<4|EfXxn)-VH?!{6A7Xxes z<#jRqsIa;h>c^l;BI&IuQefiTq>F?Uksf#!b=iLuJ7T5?7#wV?kFZ@;0YFk8pvM+? z863m3OS2P(Hg3?Lgx(BL@s6K=22{h>%+DQ=9bHnAgY}>DI6bFsB{UZacT8g7oKox> zwL0o|qrhyq=)Z;-@s2PLhBj09LzhlRlo{@1zS?xD`jdhB(VV`{x{oU+sBOoSX(H#S z6Q;u2IcLKGgzF03$-hBi2{% zBSzfj_lhXP9N|pCBH7ZGZ`0pN-W}#u0Ne>{DL^2nMqZ?9u;zE5beEIETWf<&CwV{> zd%77LEw8>|E_ewDLly9;c|Ci#3H;$x$V9AjPlSmbB!G&s)5%)_l(2|f_Y>=|)Hkk_*J7AHR`dYu> zAejD&;{g>NlVMM?t4pv@v3v{agTxOWiX?}G6DmsQDNWyVwWMdKqTXl4R0cPnf|*Mo zYxF-0{3~9HPC|Gx8U>ZDDU}L7;3wDBsz_6P3+@fnb3_>OGc6vv!umCdu{r$j3bH{ox9r4gVtnpbbimq)EQ6dh)$ktFuIUm!#Vo6~z2{ z(aoho^HC0;%AVz2Gsg~K_Ya@w{vrDEx%!_v4nQMI+T&E9i;T;)Z}6IEQtU6qd?kgcgq@`To+<+G@N$o_}O3| zX|p|;wClck^!9erLTHY)@VKu7SSOs%q*I>$0s&R|K*i^V>ww6wO7btA53@Mym4p=gEWG~n}@?w5E1FZD*tgBo+ zd3nmAJOgX-CT`Vb_gy3iBFu`i>Wtn;90ks;k%%8CnCfAFcvxz>620Eek<$tMj{v|z z5nUNWb6!n<1U_pqt1{eK*_^Ri9Ev@!PlO(ZP6xK6R|8Qj<_+V9T=*Zia)F=AC;W@> zrg-riF&(JSZ^5sU&PMV9yP%)pa*!Sxyb?w#{IHo!;LV`G)E%SyeUx(GoX{CbD(uY6 z7<%7m5l#Tr_tSbNpR293S%C~Afffo;;umyV8#Q(COVVidnJ(({gqyE|K*_+nPGrb> zmS*6gTnlMVzT0j&f%EN5*yCWXific*ewDh#AYVt~AK@Nqat!$X#|-c2wlXsyK-${T z{gK3Eg5|5m?i9@G;tLKA2Z^l)lP77{T`_-)@2?kR2p4bCRF#emBF~waP_I0xPZFkQ zrsscArvw^sc}VRvn+_5c!E{{8-oNWjPvPU2A$zu44l#L_@en>zc0u&?k0qNQ{H~!{ zYwgLA-)^%z#89Mt`N^(AHOJvyk^U1Z6J@UE&4GdHhq|8Tv9a=+56JW7(i zUQ9Jb%AbVr=?kDf>*i!M5h_*@W~-enb=#Aqo0Y)K`F!R~$2r~jboiRLqsl%T$V?EJ zVe=;-)#`qxA3fKKVf>pcshhmkL>E$=vLM)pUlZq=7bDVpgU*)isHbw3OF{&Fg9JX3 zfoH4nUNa^m>UVAZX|n7#x0-WcQU(U)Y@?!#8;oi?qO@tb{)rRLm_Q5u z9B-Zim7Xm^)4(w#*XNUwcSsH*m?sJ?(VG>V=I`4JgUOm!P(VEMhldp^2@^{vgaGVY zJ(EE;_UuxPc&c|Oa2_W6-dOpk#-54y_^wI%4kc+I!KQ?q2=ynH<|hoM8pTIEg=Zzz zviGA1&ng$*M+!c;2`Iitncii2fgtp5qaF+bmTj>T1N^cYn0q<~ z{=D)Lx?c5=YWP*4{b9qgW&K zSWiDlSfmy>SMju~>YZee{QsPZ47zbZUUCg~xxD_-tw3RdhhVd=&Am`9xIdX=fKnUN zP1S2jA@FsMBBeSl&SSDQK_(3(k8jl}__Lj@G3wx@sQ|g}vbqu#039w5T04^1IKJ-) zmc-$qRX>c=XTJq{TW|#VC4N3Xadgro^wvb=>2ztoAVK5uOa4k|8Gkur+!NwSYaG)O z1DP1<wp@o13j()6lIr{c~*!Ar9mw+bJ-57F*PnEzw-qWi`^R z;*{hka&C%Pt+(&51bgL>Q>T^(uNOFJifF!{#VCP~)^7!sKycH016NdXS|jV?4I(}p zNna&Vjn2zY^Rz6qBnTzeyiyH*JLmQy&-3{XnA4%!50<(_bso`$uf{Q8(CCfihSzFZ zzI}u4w?iy)ma(C-tvy%#+E0*_fClxif3(ti-s;nq78Q(K+>XX(|Fiuegw+kK2UzZq z1*;fei`qu=yw#)SxElyYfoOmT9S~K6@((=i^HqpvdVV2k6=0|2lj@;@iAM`o>&2vKNG-$Jq-Nhy2pMDv^^ zp!fEJ?w&_GH8W1$F?t<&pW~FQ+B{1F#G-xP!&Vk(2*HmpomjS1o6VOp7(ECGfT!!_V zmM%*CEcBw^)NMb5XS$1DeF^h890^Ng0v}oqyVFDcX8T1Qb5S`ohf+2+FWGk^70*H~ zgYB{B5mq=c{TA%vOR6tdO-b0YvnPZ-FMD2 zV4}PP+FWmr$oult<}8WiX;$8uOA_Ei#)^|UFDfg*q<+m=`+;;I~+JmF6 zk@nHC3vP+VNqkN}ZI|`DHqj8PQ&KY2-kg@b|N4UgZ9~RG`GKJjV*X`{o{v2=zNsH? z`CCzkf_L~doA!tSJYloRzDaY3xzO`@kZgG>a;03tx8$V7*;3?FN<(i%jes0s` zd-}Qn+0AeHLE4g5K9p&`v^&cHG47Y~#44>RHg$ppvL!d3Arm>x>J;6lIWzGz4^Mx;r{i$I~hV*Gb*e~2Sdyp=n6O0sPr8Mz$x&i z>q5l%1B-xQ)c|H#2N7pR=lX+91b0j3H^_w~%aelg#^kYKA#Efo(@;5Rcp%vwc~SWI z@sciiiKUASM>%w;b;DeA^L6g-o3vr?g1(4NmaN@Ie5=Vn0k>w}2d~!n+}0le_jSOj z3d70%FmaqAVx@Cz5Dk+}lYxm1BG_WpGF2MpR%t%iq*ZN2E#xlZoz^SbdQ!$#H?|6m z)rgpOI$U3#yW-40?#O8~>^R;3`AB-g5}Okl?2Ww|I1fxI|El?bvq?pdY2##fwM;1||SP08q#HUwK}8!L`$7JGeI z!3!);aWQ$G){PRFhQnn#rk!wUK${L~+$q>JRRfUGs-|fb(oBVCCqgN~a^CAO`w&^> z5nTOUDVhuWMw~-mF69?NSj~QY-(A*!sT_osM8To>jjz|*_$*+lYiKl)mib6}fAue6 zBG1tAqhMjrT9Y-6I|y=(wZLwU^ROE@Xj5Rddc7bJT%TdeE8qFeO$F@%*%eAKTxdnV z)}?!1(kC$t9J*zJOY+-RKQX%U4AF>)K`=j2R}*eHPW~lMar_mqcCNLH88AT+fcO+QT7i2_ze#XLqRERxZtG^+@{8)3A&y+Ow%~F1NSEfrM@Y$y1sr@X%#WnOnVS4n`KTcV6*X@^x}c0j;A8WLPv{y76(xYmJKZHLnt= zn^7GYb#$kcR68y(?BuX1Sz9*{{Nhh}c4uKAHEI%Djd3gZPPQw&Z&)So#j!=bRvtu! zoCy7?mO6?tv-xpGgF!r)Yt~I^1%@3>?O%?cmnuR=Gq)>iS3~p^neoG~v1D)T5uF@v zPj1#s2xf6S1KnD^mQUWD-vjcq4}NWWNbGe;9ns1;^OEO08juV|E}vS2;j}hjJKZ(L z&Mm@juEjbbB4()x@`RWh=BKCH$$!8cH%5Rgh~O_M5iA>aap$@^^10$@~mUvJ8) z;2e8y<@N{N!{s4+o2h7<4OBUnh3WxXlj*|J*2tuS5DGb>~soab)^_ zpulERiI&Dk2Z{OHpO%dZz(G0K9hB0f^zi=E{xEL8r0WWFr!HC_+}>%YmDkQ0A7M-@ zQ%p6vlqXcT&%F$1i(^gbwjpaOdHPuMAmQ&Z1CXNY9sxq`%$$wB_PJun5@!Cr)L)(F z1X%yXTc(#d%b|DwE~EmCp5OmxWAR0?9gu|JTUNOZSL!z9Q(u~7v!TVJdga0BHHNVD zyj!}NE+v1=Z(p9-60pm2BlNPzF9kX92!adS2-Vlm(Mfs9sn?MqbID-o7Z~#|P=>2LNt)miV8pfHJe# z!Q07FGU$1e?Oa51v6DXRR~soopg#=KN#miZB*6eR^|$3HoNH~ROfnKA?Iy5YTl_qo zN5nCcgQVThVR>J%ZLKP1FmLm0I-6c`J`v*CU|1;0D%4G2wvb-)$HG>|e5h<%;#v0F zAEZCzP&y^miAh5fnQu);Iib&XBYKM|7v1ft1JYzbujg8Y@+aQeac1tc6E zn3gbC5>ftT9_CRzdlBTHb!!%`&fQ^dshRNnd!TPko`2+H!#B2<2?V92v3A}&A_{>F zE7NeRnamO2=Mzg3MEhw&ZKSPtsuJh25BxuiQUSi6xuQCy{?vQ;#=#6A4L&6KuE`{L z-8jJVbjlmJY#cFTr3NjZTpQG`K&z3dko&W5&|?3fOq5E(d;pg8Vj$2C-cMnPq(yng zZ*^(q@yEF5ab$zy-~kK32*8zg0CUetTs!I%sZtpDotz^`f z^+CMW(A#?8aZh?M(7z8vhDV+J(1O@J7g={r@9P7KxuK|Arp#W{@%kE-X`i@&-;WbD zMI4XB-hTv*1D9^)SoWbyQ%t|+GaZpGqXEM z?zkvNk}bnI)glPf8Y9nEi!7~(Z2Emz9;eX?av%>u+JDN}A&R@nSA6{2f(-8$Y>ZLB zIsZ12sHu*55Rwdmv=q|jy=!8t3Fy;@RCFQvd^NuUGnL^+}tAJiNheXTfmuCUQqjw%7)gAUq=>x*rwBe<&;Fe zgF)&8La~@XXPYUCv5~|ESoq<81VOOM6i$0T0E{-1X-G8TLR>S$CjxM)|5lbXQ_E7S zGwFA|+=vJMOs#Ju|2ER9h*DI2a=}O-v(SR#e-&XR`r*|{9pQI@N|unapJ|qEq;ia` z3~M;sP16>wxD>x)k{k?a-{jL^3DlAfjv|kvgEYC$L*+Yzh&MG-@c8pX!V+f^1z6dP z_BN}`gm#dfHztpeZ8$Ejb=-1n(>RwDV!=H*2@21N4c8U`r&EY>|<9WplJ^)ZI| z4{2e>ILb`PSRa?&H^K++1^$?DLs#SKxY(cZ;GbEY_LgfmSMWQh8}CW#=Yj-gzQ zbF6s~PNcL#H9?&WjlgHea;@a$YWspbBH+v1*(j`~i=!0(?NL@X!9dC|LDB9dcruk+ z$8R(D^4!6s4&iI!IQPMa2&J3}9WG7SjHQ4F(z`yB7pKe@ z;T$l@MFXkyi7|Cr(DKjh1Njj~2);RAp_t1#k-gS;rtz6R&r_rNw%(FXStv&JUcPMY z|MjQ0h0i8?OPEa;2zwzQH|3#JLj4*riB4u~#zfP@f8-gFVGOZ@MYKXiZ=ku>4*T{L zryy?&Z@>)}XR?q`V_i27w{1@#j5BSlqCCTR?C9w&aZy$+x9hXWzU*jsAz#eIbQ{IQVR8QD^HhTMlDc5vb%goHxo zBP&0sgYWdf4($x=i_wIVPZZr;sjFiSMx zGa<>wn&~E)kLft2{Nm|E(*+&xtUyseaMizxMJsA@Ij zqS`j7WVXn|=9w40m1;B+HTgp{!4YMt3_$a!;skt-B!41b#hI!~e;Q}95sm7*dkOw> z&4piL@=yT+ZuENxo;J_NY%`@ll(s+);3Uw}zPjINmr&+L{R$U?G0HdQSjR1*sayKc zNlVJJn>*;;;ZXWWV{XRC^jUP*!TG0~h+wjE72xm!kD%E|QacjJYf(G&OgIu(N}kd3 zB*~1}DqC0QtCa@6T9Ug|Nm|$UT&(5BRp-17o}_`Y5E9tIKRM!65}hP5FYe!|xt6T& zM0CI16fUH*M|=VZ1q!r-zlK0%swZQQ^<=NxB}ij$d7<$B zzK=#Vr3NFr*jM;?-yNnTGbyvwz%wQKYbfZkeAqWryesSvjHsBC@YG=r-23*G>o+zq zF;rsdS_)qUhw|MBHjQV{GsCTC2`kj=y@|r+z3BVDi_MOc%hcQ8e)Ny1XMMpX5Rep549MTh^MSGG@WuGSHzHYHj z5PsBHC}Jrc4BSE@-L?HUw5WiNjWU;7 z=gzS*Vh5B!s4=NgK&fm{GBbF;Wx=WCU63~lp^kGntorWA!aWD;lBr}|V$2HTci^J> zKpfPQ608basp$yLarw@4TIfAffo(2zL_Bu&3Sb_1XNT6&kp&z!3bdQL1G=%fuWkwF zxt?OtPgA5Iq$?nf|a2)VHhRmc}X z>xoz?mr=(@q#+x+RM&52YggxK-)HM`&!wLR;w)sa2d{7rkrFU{jKamAKVxD@x_t%y zbnM083K%mvWUAm`fCwo3c`9eebY12EV3Uv5i|%WBZ?IKC5)eVE*(ys4e6g|OH?->A z8EeMbq8X!c7lE0^7SHfU8{I+!X?XCf_B#sdTFIMSJ*n;-Ad_wRu&T8+s8zFEz)1EA zO1bxvX^IqbrTGg=_6F~RM)edgEiab6f`4K0JOZc|vH-OXA>M%Z#gW}oTgIxw(s@ML z*?v=D7l2N1Q|vIaoH?Et6w5jHX|==k#GrlB#!~P%!Ag4Ua|$K{{Z=QD-90g=p%dgTHvtD|2{!2O!wKpxA5ykIRYqfkM{C z9M^(kx_c|}3VoI3s8BIyC0f^Js8II3bkAK4y#A3gGgV(te1}qB53xCvagg>fN95;W z`KRnKZ?lDXgm^0LKBQtV8wBBg!*`h1I?{7RR z?K+%#6FjnT_2oDJ4pp4q^Nzg*fv=B7IhPjItszSYdi<%n<%3re6slI4qx~7nTMr1% ziqH32$elBNM}tkhpvh)`TGnyb$OC9T8LYyjx+3pbuD;$Uh8CWHenAzHN ziy7m6Yn+Rn!9vf4D;Znr>8l>!t8vYkp-yLr9{2K)t|H>Q?E8==n|?NEh)B|O*=0>% zt(ZUd@{5{HfU|2oXCj;}l$|1Ft1(*E6hUiD7Jq-c#0YlWefN^w+dRtYAo9cpTjOd! zBax<2%F$N*K&#|9_2>J|9vYq1=}^>k!^LJw7Rso<(eW`cNc5yR)yZ~Jgw=tknE>L1 z3TS-S?FlY{3b?GQw%_c5_!9bLlUlqPt=QH*__UmM+S|+`Y2~L#wV$jxMRVD0r9iZ_ z+gg)|zw}4%YgR63#f#5nNNfq}c3Yd9kNmLupiWmz0kbri-R5HV==HIhS`ev{jd7xm zD5P*QS)_-JyKr7e*L1(;0LYZ|zn{Hcf7{meiD&FOVs74&LQAlFlUYgG*ifRYOT&Dn zj@ENXvwG%NDrciGlS8>z$IPnJ#n;QeF>$wsSI9Z0d9R3zU8Fm~LD5}bu?^G3>;QIN zPFF@d;|ExkV~a-LuR;TI_v~}~HQapu&6qlsrZN>$alpJmjVr6EIG%N#Se(Df+{R<1 zbDen(PmHD6U$_a-wFv8#Lcf>F4IQtxVKe4wF&|GyW&fZg8V-8^``hhyPu{cw7zZfh zMvyX-3eJP5^m3s8EM!+|{9I3?ypB}=z!Ip4fWmJ%@m{T>KqZQoH0qu7sb3k1ro#`o6k|q;cA84hoR{OBz9U(>T~ztf7xy^Av} zFExdp_FZ^B7twfp&R&tF07=CcZ1Q&t_1EE*2fMraPn0T(C4Ms;C#v^p>Ed7dYGr+K z%PINvVc`?>SD4dUK)>W}{YAwT)^*7~5;)G4q& zMUt#xlwyf5?I=0d5>X|M?xE-Y?Zeoi3ofPt=(^0h;~6Nd$fgID0g|S zC-F}jWkQNQ0Yz*XG#MXP&?8r2Lc8pJs$ee1>{ekp<4t9R1g& zp7iu2Z$M`)e$AU`)Z=QZ*RFrpk>2``GZk8qnLUi|rF+E-fte@wUQkj}nS{%G4~9~< z%$`97U8O{_h-5Bc+L9qJ?iunsj(Ya8cTCu*PS=X#w@)5fmCv1di^ zB124(IisI^eT&<+=0R#%p`x2DDGMctudO-QxC<-~Ovc#?NCPuoX$#FRA8jHzc25guut zzfTESX?*jb<4Z?3hd_$R*?0TVM^YM8MEMVXZ?q)1XK{>+Y~HDcCcc>SiKjh6i4J!A zKl2&d*nj5StBRdPwgz4#*7%sxjcWx+tLhzFEa5mz5ZI!R&lMl;oeK{Nl%;ZQM*K*c zkG}#QEn{O>7C>=HYugkb_9lHjYxs_}aOuHYyd(wSW=Vl*Zx6Y-|LFyXdS<5QqVi=5 zi>*!YmSCe?V}WHssXJgAfwIhj13S_BRR14{uZZ!~jnrtEJb5q~%+cdN0w;bKDPjU? zj^=>Wf#YAh0~SxFmj)!s?OvYpRW82|rSUS^C#||2`H$dUC`BLkCfF6DC2e6uH{xIU z+-Q>pe*nHV$L0(uF-s8Id}nQ*wrV>SV1L;pdQJz={7V(LDuB1~ILED+eWptlkz!(E zxZFM0yD4j$Ow2+1Wd)naYz}x;`*Ql1+mfn-4h_~_bzdf`WNO>1r9!^f%ACQe@mD|) z7q$>ezn8-zj{R17y7=Q&yxVwo;vD$*akLLVS*4+dp7AD;AHN*NysM)i>6YOOk-EI< zi&jABl>#mzx1HJ%an{_{=z%KH0P^HaOcD8BYO&+xk9yNayJ-+BP%~=EIaC!&kQdMG zukmXPc$3~_W_v~tkCA_gogKU-1t@Bg?biB-e_o2nOP{gK5&k_sT-ao$8YrUt!@h9l zICK7EM~vU9=oDUz0M!(-V$o*w{z5CH3aX(2ztIza(h>yZ2k9AGaJd(gF=5Ru-RnKX zDh@$z@cTLADb^yVfz;}671QT}`PXmmFB!~RukcIrwl@0Jnht~R{8dVNtnL3@x85%C zL+>!lnK^>@w^R|8Krs0G3TMWc*HrB2dG!V8F&f!#iIz;__+k1f@BzU;oAb<@WO;#g zIZejC%ZdW;CqZQ&PdqJIp?UpYM&q3CUcBVUzXC6Yis8G@dl*+%4nloK*+t==0MdUF zC`wCJI$s|B$d$|!zjbt?c_-=tFrK#4&|Q85kACtu-Q?Z!If3peaxOs-T=iGlIiC^E zg|AN+a<~5oxIb25svH~so*t=CO=@n%)F(xOtgPAk1q!^K0zD41cTZfUZa^LHCf(KE z78{v#;~y69rb03p{K!qti8yznUeb7a^!2C8J3D&PqcF+1a7bEND3IB8{s!kX~&To|Zxq3OW4<{eSmd2?xmiz9kEJ&j z2kF1Y4~ZHVfV?$6qpn|@SY8HSICWEwEAmeJ_L=yJ@Z002x#F(~c#1)5cYN++W0aLo z83Mk{_>KE&_$%VK!)f%D@NBpD00>?o(48WD@Q#D4_>;x+ z_*U}V$ksCKQHsh1NV*F z+O|F}2()-z@0m;_HR{fjg!e-Ub4HPWJ3 z;@)MALg#PzSE@;>TkD?>Zml%6OeAL>NWeUMSC;rE;`fg{D7T&)j_=G_oTyojNC&q) zXamAOYHb_GdSApnGga`2oV}A`IU)pw$77Dw7MuG>c-q@WxYM<_Eb~H8f_gV|Uispm z3w%zw)1}s;(QWO^j%1lKN}i;C74wJ2uL0`*AHI%RAUh>e#nCV_de8?kqia__De-(O zsZAu2Jiol$bH;ru(lwOue7-QzygA@&z0NflQsg^vw{Q$=$u#?!G?y}j0ORjtky@V$ zwS~0!wP4qBlG4q!4^z1GqRbCj_`Tpg3di=8)x0Qmh>nG5BE7nm9A)C#3o7%}o-thX z9}=MP_s2~iO}){rlR|>!AhWVn`>GByed~_++oyPz=i*MKHmNyTVq(#iI3;@H^{Rgg zbqMV|X{PFzQvu}OqZVWDRm#BYziN%V^HWhEF+% zPMr--fMonff@!qn)FQGlxRi#C#~|mXD?h_}KZ*QFY?juuZXa|+ovXI^q$Sq%8|#&| z*$84uMZ%72BldaK{?FoxtmR>i-!5pqwgELy0P8*;(VpL0DuzYcH#exSoV;z|Ekegv zdzskCvdZ5!bNbilygv)HFNw0GdekMCaKi(_n({x}ANFaq@HUZasrY8t%WdZ3Vi)e8 z@+i9l&1Tq#H{sFowSgY=farA_g+$uCX0fhc&2bp( zo|SW2xDE3uAQ8o7#^-kI^PXq}X<(AaN0Q<&N`r|Fhi+$Ur>cx zEU^Yt-j5B)henDPIp>-H&bsi6UFvaOGLWo5C$X*b;Dxpu{KJAc3M+Xe({B77Bui`s z)HAC_%iMRXT6?|Sv`EX}5A>i62;_A|w2{gHG03Rl&@D9`birokW!erAb6%0-FM!&U zXf|Fb@Vx1J1lGn$qKUH6FzO9qcz<2dd=+CfS2pAAGM%Kd@(-qH1D?3K(zM(E0PJ>! z{N^13e6^phXtu@^JZb?sIH`PJtzE+_T-#cW&NICFR~f2!t6#fPi9RqoVyYlnxSawt zPb%;|YZmU#*5XaAh6AQ*pC?&9Af{7EP*TfRMWUq5(1T-81l+aD0< zC02bx(8L(vln36pZBtFv{?{(0s7oY<=2Grl^(LY22it!I{{U;xh`$~5DZDx0D|>q_ zP8ZBZbF~};$mYHCT7MgOgW)t@9M`YyW7coV!E+cPkYwW^{{CCf8#$JT3TI_6{Pu<P~{7|^TkM{YlrX@1q83}3|l1GU$z3X6!NAcf;926LJ&t_R4! zwYS4d?-FU+U&LkPs+Qqb<^4!%%y>-9m6a_>p-&+|cX5ORURfs^~s-(uPG`Ke6j*#1mu9c*H133r^BTSO+FC2N#q*i z=h7Ed)qc?{7X_#Q(cVo;0HKaYTJ;};9vbkDx8hq}H^f@>dVGb|t?p$RUEuUSmCty0 z!q&F1>o)cg##qfVrU2)YUqblP_EEm@wTvmJ z+uk(KZnC_0D~+Ix@#|iB`y+U_!5#$o@!{Qb;uW$@rNyYH+7?B~9P#?s>PPKq@aIeT zgQHsfMfiCbWxcTr5~#-;eqW~)0r|uGKX_wN{{V#f6(f*G6EK~?`>WFx>VFwN4ng9* zE-Rfr;YG!|5tke~`d3lmpMoAL_;VsIt)?m3}XyO zQCr^wzh@g3vAfr`oe5s@+~(d@QNgcO)jS2F{9*WSb@0o^x<%`QB8&omJ=|uo`Ul+a!=zc5FE6;6W$l!! zzAJ?O>o4`Lvsw5p;h%{SPw@xg<%!arBl9n8rXRU!4^V{k=Czy@U4ZjH8F)dw8x@o{ zI)qb8b!;VNh~ywWkG*p;#O&EtIL&ML-@?8m@ZIipxOOuPug#E0*16BM%*P7ml8SKy zL2f?C0a*ZH$mgYWk@$zipA#gr(KQHu(9lQaTe`*f0q#w4G8seRj!(UM55W%-T4>kT z4LDHd+=V#jG&GVxdY6iR7VF*$_(5&pjUvfj&S{q8P}C!FwplTp9C~_FehYjr@g28_ zthLze-D85~Bv}fdn+H5%wLT5}VY0HhJ|FQloVt#Msmg8j0i2iva2x~ZPHWkI9KmUz z>u=#0uU6vL(XnZ8qwmN3C-SR=tiag#gW@#TJYf<-in1&#$UROu2D!8GgT(#}@eRg} z;u#w2NnowzxX#hs*P`j)3y+MvREJNAjEuvTT=7P^`#9?{{6+rG@jjLR020{%Q*e3_ z=~Ug=9Ie0Xr{Q0Y9vq*>ejdHH7P5lM5RC6Uk&5vBZ{eSfKWC2;HnZXRXSY~pFBHRo zabIR>AF~d#;XAMRx7zc^rk|hez>&%PYsf!rU2DbO9Qb=LgkkU-Uf(^?hwbdA2&DBC zt_H{KBmV#e0N3@uiEH2=iIStoehS;%5&;Z58v7&0+NOoAJ+;P@a;+f%lB^Fug??Du z{?1-E_-En03*t=Wg~iO~X!aABx#K6bcRvolYVRC)KgJPH;_X`LEz}UIrkJ)6ARk`eY)o+Ynvp>QOcf*f!FNY#&g}D(-lU2r$@zv2dliqwZ6n5BAA`g9EEagi0sipCFh4&0ZTm87-Vn9awL@(4 z+uKfjwT($T3FGprOYnolQ~Wsw-%5EcTUCvgS6&bi&V4zrv75wjP2+pt0!yQYMTC}> z(<(`>&*A67Z65ncn@qd3jN3^dX(HG;KD9Cf;ESyX#NHZ}Y_3*A3JjqB99F%r#7$3C zxVG@*^8k$^qYU&0zLfo<{u=2^d2gcWdLpTgQoG_`nTJtdCH~N!5b+Pgdyn`?bhw%* z=ELvF%zKpY40&zls{gj-O`B4VA6YeYxQM zYJl4Pt-L+^K55#em6wOSF=cOmb#g?KLYO;pa)0{u@)yQmg4&mb{9f$^p=(*j`*s6@ z4Si3d{>lC#`1Ptu;_Y+d6gGCrIb$QSVuLx_0Ix;Xe`Q@W#M*7Xo26b$s7GjlKGNV} zura};(qMjW{{UdzL2yKnvf$w4V!Iy<-dpJwX!2y>=dFDu`$m4p66ih~eRsoJTbqbi zGC-d(Y4sjVHBv%vT ze~F$X@rBU7*6*I`QaZC|70yOa5GZqS~4IKPJrZaE6{!wX_i`#iEXrNkgBs10d59qw{SU|TM=g{h%N%2wV<}s zO29^)E2h_2# zQEfnH?BDw?d`I}dt3|Bnc8Hc%a;wcO&455Wf$v{)Y99w|CGhdO)U`MzycWVdDI0-R z$7=Y|d|C0c;En8F71E}-(~p~*h?z(S*Xv%D;4j)UR@3Kuop#}-X?|%ILU2jzSEv*& zyhp11E%BRNLi?@E2ucT3^I%R`T-P z58a`EFFw6%$u(Qkq4WYx)P5fLipb4vJ;9Paha?8C zbnxz*ulz#1(tLm6n+6cvOtUj%q8`=x{jYpVI`!mlsWZ&Vz%#k$75Yc}KYUW~r~E1X z1`Rg;J&{-s&YOQ{uLp!;PmvfgVWN zJi>Z0>HO=~{2yzkc#BJG*bZ|M*n8%@+r=7gfvjknw0<_V&)Fm{{ZW#aj+f> zqOs`y1jewct-4 z{1CbD-i30JKiP`GZt4c-UYys)pAh^ruWNn-o5Sm;NF=wA`HsqP2en0#1L?nqzqD?( z@mt}(iZ89z8c0zjXXBna*QM&e416W2XeP^3(`|3e*8c!`z&%G}UM2eo{3Nn}gD*df zwLu)POnjd;@Ntuh)cC>i3SSLqT91eHEprn`8B{UJk_V@?7f27A{xN8tAJ9BksA#$i zgA@}ot{Xc~a1J@edHsRA(7Z`uuUgIf$SzgYn0g*_T3WsR#P_mIcMXx*rI5 z0uPC3bnPPKEy@h4ImSo$(agZx{h&1MV)|G0EqP^`*wiB zYam8T1?oR4@SoYdX`UDG#l_qg5rvlDED;8K=!i)VASkWwg8)<(HeEDXSDZaL2y;r$D)ULqH@b8WM9pYnurfE=IUTRM!-Ke+; z&n#=QgX1rQeh7G0Z6d?Ni>qrl3AGuHOeFe!D=$?~hra^;E8SaYx^qo-uz7b1afD($ zeR-&VXUne!{6zSRtZBNonGf34i$UkFEP9YLNDNl^{{Z685NVfME$4({Rk}hv&A1@; zrg&FN)I2|@9}{`3CK3YC0m_W^uU7Hz!%KZ5N}lIQv|lr6Wsm{Ku*H1o@jK!Nh&&77 zok5_v4Rv|~tb~2c98d?`pRuQpEPf#TIl9$n)Zmup%H*uzINZ2AWOl6o0NVHVo%ng- ze+XP?TJD`4%-CNcA{j2;nEti-nc+{3zYshlJlCEP@m1EI_YIlNw53BFbCFW`pW=Uu z{vl5t?}_z^?q!K^8b{A=w9;%1KM?q_JX5bts(p}Ktdbp(1Dp)jb@Ofj^TFn`?IzuV zPhN9ck*YjgcO6YTv<7CR;Z;g;>r`jBR$Z?B2Nrj)D@#n#M3x_HKnWaXv2CJhq}WL$^vSOO0KxiHad>)1x;Wep6wn73sj&)TVb6bR zs|C9@2N@=`bu~x2C^L+nMLSQ45Cr$24KD>DwbXvf@A6zmV_r|*|p6wOZe^;5fG7) z)Q;8Wnmy2k$?iD{l;{t_>-S_owf zlOL3v5$nZyF1Mo{TJGlFOW`So>4M7{;jns&^!xt+A6ZX*D3&iKIT(l8=xd7cCx&gj z7jly6bNTi+M9CbPJZGNtk2eU?PH=Tsk;N@D+RaIwAIpYbs-$K@3|5| z)O~AfTJX%;{)rjWh;oVnZkfew$?$3KujIU!DAAG%fzQ&kY%CkYcIQf(5>%g%y(g#? z{t($*Y3J;c6Ncb{>zehgH^b&OTgc)h1Ci}n{{RfU3pMT3ceB`m0Xg2It$M3zdTbWV zns`Z8A%@x5`Wn&*4_p5Lf_?l`xovk>@IJA6<{37$0o(4JWBe=W4M8oJQ&?t%6(=C# zzHB%2U+SmRGNMD ziab&&U4?sB&R-oq8teWO_)T@GP4n=boYCLPN*{6s@M{_(Y43aVR>smT*!8;#^ z8qL+dovJO=GC!HQ0pRELr7${+zXfQ%D!ew5y2JMNP|c1>J?qYXFZ?akz7=0wXj3GO zYc@Q&7;sK9Ijz4I{7kpEnkzdiSz>rFrciOn?_CYA#W+4Ucy2EUYc^r;EZ78^MdkS8 z^sK=7-c1_f-qeL+H+uG~-VyN4?cLCZD{~f*ua=_rwnc>;4{l7{;q(Y+eV)I9^ZaE6zV@Uk%IPPX$@M zzT(q2@ALgD>aW@R;Qs)FEj2688u&w7l6JqhVKi-wA8dB7pFeE-O>pb*_)AmMf?BMH z%OQDgXamapCanGxj!_?$XI!x(85QN98T9qB)T5ajC5I$e(q9t%J*IeD;KqZ0q`*Ac z6p5LAG0@k|em^&Qso!u33g0gj0jcoNO|NMmVzoP^3ACW<)PqpEw7hLP;sT6~jf7Rd z+00F*c+T4JTZTxVE{(`F)BJ7ly6WE%XVx?bL~%+1D7}xT6-j}>c#hqR=5@g%ILB(| zZWn1P1_n5QS3xF?fcbUGw+X<|S|cH|m>IbRESXG^>B9i$qasgePE6HLGChZ!~dJ!zuC z{{Rbg9XCjnn`YBsFuC;FF<+4yO{^9Yw8eg9!5@LIwKe|$+u8MhfZ7Lzz8=5W{6}SP z93~kPa>x_`)OzB8KE2oe6Y09wf>T|d)nvG|j1eJTz*oxu01^HvYW^MZD{0pnqg%o! z`6Fk>0RI5>S5@#=_N4uwb^ibe{{Uck$HO~fDS<3t<@4CrFZ)jZ&!@(^6`zkSbw`6y ziP0`B6^SybIN*AW=72tv{ht0Lcv>$5%Xi{?#EeM*ee1|R_2C{l{{Vu5Xg(77)O1e` z>HdC=Yb%S}{iH4jrfad#JOSa|cfy)yhWs^sG=4>tambk3SmT_J&bMs8V=si)8Wr>S zn@@>VtsS05#zSK{pbyW#+N0uzmGNiePO0Pn01aue!)toOXjQ>tJD++hpYgt%rfA+S Y)by=BM3M`8=@J%R>Injhu24V!*>KsKJ^%m! literal 0 HcmV?d00001 diff --git a/tests/test01.txt b/tests/test01.txt new file mode 100644 index 0000000..feade35 --- /dev/null +++ b/tests/test01.txt @@ -0,0 +1 @@ +0 0.3809 0.49269 0.21636 0.39129 diff --git a/train.py b/train.py index 8105dbd..787c3c7 100644 --- a/train.py +++ b/train.py @@ -1,4 +1,86 @@ import os +import shutil +from datetime import datetime +from pathlib import Path + +from ultralytics import YOLO +from constants import current_images_dir, current_labels_dir, annotation_classes, today_dataset, prefix + +yaml_name = 'data.yaml' +yaml_path = os.path.join(today_dataset, yaml_name) +train_set = 70 +valid_set = 20 +test_set = 10 -current_dataset_dir = os.path.join('datasets', 'zombobase-current') +def form_dataset(): + os.makedirs(today_dataset, exist_ok=True) + images = os.listdir(current_images_dir) + + train_size = int(len(images) * train_set / 100.0) + valid_size = int(len(images) * valid_set / 100.0) + + move_annotations(images[:train_size], 'train') + move_annotations(images[train_size:train_size + valid_size], 'valid') + move_annotations(images[train_size + valid_size:], 'test') + + create_yaml() + + +def move_annotations(images, folder): + destination_images = os.path.join(today_dataset, folder, 'images') + os.makedirs(destination_images, exist_ok=True) + destination_labels = os.path.join(today_dataset, folder, 'labels') + os.makedirs(destination_labels, exist_ok=True) + for image_name in images: + image_path = os.path.join(current_images_dir, image_name) + label_name = f'{Path(image_name).stem}.txt' + label_path = os.path.join(current_labels_dir, label_name) + os.replace(image_path, os.path.join(destination_images, image_name)) + os.replace(label_path, os.path.join(destination_labels, label_name)) + + +def create_yaml(): + lines = ['names:'] + for c in annotation_classes: + lines.append(f'- {annotation_classes[c].name}') + lines.append(f'nc: {len(annotation_classes)}') + lines.append(f'test: test/images') + lines.append(f'train: train/images') + lines.append(f'val: valid/images') + lines.append('') + + with open(yaml_path, 'w', encoding='utf-8') as f: + f.writelines([f'{line}\n' for line in lines]) + + +def get_recent_model(): + date_sets = [] + datasets = [next((file for file in os.listdir(os.path.join('datasets', d)) if file.endswith('pt')), None) + for d in os.listdir('datasets')] + + # date_str = d.replace(prefix, '') + # if date_str == 'current' or date_str == f'{datetime.now():%Y-%m-%d}': + # continue + # if len(date_sets) == 0: + # return None + + recent = max(date_sets) + return os.path.join('datasets', f'{prefix}{recent}', f'{prefix}{recent}.pt') + + +def retrain(): + model = YOLO(get_recent_model() or 'yolov10x.yaml') + model.train(data=yaml_path, save=True, cache=True) + + +def revert_to_current(date): + def revert_dir(dir): + os.listdir(os.path.join(current_images_dir, 'images')) + + date_dataset = f'{prefix}{date}' + revert_dir(os.path.join(date_dataset, 'test')) + +form_dataset() +create_yaml() +retrain() diff --git a/yolov10x.yaml b/yolov10x.yaml new file mode 100644 index 0000000..539af6b --- /dev/null +++ b/yolov10x.yaml @@ -0,0 +1,40 @@ +# Parameters +nc: 50 # number of classes +scales: # model compound scaling constants, i.e. 'model=yolov8n.yaml' will call yolov8.yaml with scale 'n' + # [depth, width, max_channels] + x: [1.00, 1.25, 512] + +# YOLOv8.0n backbone +backbone: + # [from, repeats, module, args] + - [-1, 1, Conv, [64, 3, 2]] # 0-P1/2 + - [-1, 1, Conv, [128, 3, 2]] # 1-P2/4 + - [-1, 3, C2f, [128, True]] + - [-1, 1, Conv, [256, 3, 2]] # 3-P3/8 + - [-1, 6, C2f, [256, True]] + - [-1, 1, SCDown, [512, 3, 2]] # 5-P4/16 + - [-1, 6, C2fCIB, [512, True]] + - [-1, 1, SCDown, [1024, 3, 2]] # 7-P5/32 + - [-1, 3, C2fCIB, [1024, True]] + - [-1, 1, SPPF, [1024, 5]] # 9 + - [-1, 1, PSA, [1024]] # 10 + +# YOLOv8.0n head +head: + - [-1, 1, nn.Upsample, [None, 2, "nearest"]] + - [[-1, 6], 1, Concat, [1]] # cat backbone P4 + - [-1, 3, C2fCIB, [512, True]] # 13 + + - [-1, 1, nn.Upsample, [None, 2, "nearest"]] + - [[-1, 4], 1, Concat, [1]] # cat backbone P3 + - [-1, 3, C2f, [256]] # 16 (P3/8-small) + + - [-1, 1, Conv, [256, 3, 2]] + - [[-1, 13], 1, Concat, [1]] # cat head P4 + - [-1, 3, C2fCIB, [512, True]] # 19 (P4/16-medium) + + - [-1, 1, SCDown, [512, 3, 2]] + - [[-1, 10], 1, Concat, [1]] # cat head P5 + - [-1, 3, C2fCIB, [1024, True]] # 22 (P5/32-large) + + - [[16, 19, 22], 1, v10Detect, [nc]] # Detect(P3, P4, P5)