From bc678f3e6b7e44e659b2c109276d534584191af4 Mon Sep 17 00:00:00 2001 From: nkdiemgithub Date: Mon, 21 Oct 2024 08:04:31 +0000 Subject: [PATCH 1/6] save_draft --- save_draft/KetQuaPhanLoaiDat_new.tif | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 save_draft/KetQuaPhanLoaiDat_new.tif diff --git a/save_draft/KetQuaPhanLoaiDat_new.tif b/save_draft/KetQuaPhanLoaiDat_new.tif new file mode 100644 index 0000000..db9b4b1 --- /dev/null +++ b/save_draft/KetQuaPhanLoaiDat_new.tif @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:79328c872f720942f3058d8d0de8293029a3f6b3e40c0239a17cbd93995e65a7 +size 3536032 From 2ffe74357e90683a2c31c21407d08c451817df39 Mon Sep 17 00:00:00 2001 From: nkdiemgithub Date: Mon, 21 Oct 2024 11:21:37 +0000 Subject: [PATCH 2/6] train samples update --- 01.train_ODC.ipynb | 4 +- ...T_training data_updated_1130points_new.dbf | Bin 0 -> 478216 bytes ...T_training data_updated_1130points_new.prj | 1 + ...T_training data_updated_1130points_new.qml | 835 ++++++++++++++++++ ...T_training data_updated_1130points_new.qpj | 1 + ...T_training data_updated_1130points_new.shp | Bin 0 -> 31740 bytes ...T_training data_updated_1130points_new.shx | Bin 0 -> 9140 bytes 7 files changed, 839 insertions(+), 2 deletions(-) create mode 100644 train/ST_training data_updated_1130points_new.dbf create mode 100644 train/ST_training data_updated_1130points_new.prj create mode 100644 train/ST_training data_updated_1130points_new.qml create mode 100644 train/ST_training data_updated_1130points_new.qpj create mode 100644 train/ST_training data_updated_1130points_new.shp create mode 100644 train/ST_training data_updated_1130points_new.shx diff --git a/01.train_ODC.ipynb b/01.train_ODC.ipynb index 4801d71..c09efc1 100644 --- a/01.train_ODC.ipynb +++ b/01.train_ODC.ipynb @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:72ef8521ad02826a906cbb10e0b50bf0fb1120a7e1607257b0a7c04d403ce9b2 -size 939315 +oid sha256:5a48ee4f5fa6b06f1509dc8c8b6e540ab10503c3b91311b370d1bc5a16db36f8 +size 921737 diff --git a/train/ST_training data_updated_1130points_new.dbf b/train/ST_training data_updated_1130points_new.dbf new file mode 100644 index 0000000000000000000000000000000000000000..d58063b65b719d9eec024edb7cb0b93eba4f412a GIT binary patch literal 478216 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«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 MDV(jDEvEne?=LEZzyJUM literal 0 HcmV?d00001 diff --git a/train/ST_training data_updated_1130points_new.prj b/train/ST_training data_updated_1130points_new.prj new file mode 100644 index 0000000..0202b8e --- /dev/null +++ b/train/ST_training data_updated_1130points_new.prj @@ -0,0 +1 @@ +PROJCS["WGS_1984_UTM_Zone_48N",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["latitude_of_origin",0],PARAMETER["central_meridian",105],PARAMETER["scale_factor",0.9996],PARAMETER["false_easting",500000],PARAMETER["false_northing",0],UNIT["Meter",1]] \ No newline at end of file diff --git a/train/ST_training data_updated_1130points_new.qml b/train/ST_training data_updated_1130points_new.qml new file mode 100644 index 0000000..6bda571 --- /dev/null +++ b/train/ST_training data_updated_1130points_new.qml @@ -0,0 +1,835 @@ + + + + 1 + 1 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0 + 0 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0 + + + 0 + generatedlayout + + + + + + + + + + + + + + + + + + + + + + + + + + + "No" + + 0 + diff --git a/train/ST_training data_updated_1130points_new.qpj b/train/ST_training data_updated_1130points_new.qpj new file mode 100644 index 0000000..18131bc --- /dev/null +++ b/train/ST_training data_updated_1130points_new.qpj @@ -0,0 +1 @@ +PROJCS["WGS 84 / UTM zone 48N",GEOGCS["WGS 84",DATUM["WGS_1984",SPHEROID["WGS 84",6378137,298.257223563,AUTHORITY["EPSG","7030"]],AUTHORITY["EPSG","6326"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.0174532925199433,AUTHORITY["EPSG","9122"]],AUTHORITY["EPSG","4326"]],PROJECTION["Transverse_Mercator"],PARAMETER["latitude_of_origin",0],PARAMETER["central_meridian",105],PARAMETER["scale_factor",0.9996],PARAMETER["false_easting",500000],PARAMETER["false_northing",0],UNIT["metre",1,AUTHORITY["EPSG","9001"]],AXIS["Easting",EAST],AXIS["Northing",NORTH],AUTHORITY["EPSG","32648"]] diff --git a/train/ST_training data_updated_1130points_new.shp b/train/ST_training data_updated_1130points_new.shp new file mode 100644 index 0000000000000000000000000000000000000000..050307b3529d05634fbba23f6302f248a545e315 GIT binary patch literal 31740 zcmZwQc{r8byEt%rZ$+XaR4UqgOCm!_BGW@fBqhlh6{UnSB}IdwLZ+0Yq|j(+qLhkg zP$88R8W2fjNJ&b++gk5^j_Y@w^T%<$-_N_&Gp%Q>d);e2`xOwFAtLa9{-54pD@Q

7@E7M||H zW5U0#n4h_w*a$TEE0DjAN6yhFgxE;5U<1wfYq#(i;jAe-TY`xRq2-t~1oeCKn3;~T z>}xxS38TSZfvswMQfIIQu~Ea#TASKKQ({B+mt6Z$IYS$2n{#cDOG)C38$tLy3u@4PA4bBab(fkij3=_%VF|qf5w3>LT4c%8Mw3_s-dJ)+? zMwG2=lD(CfG@9q%2g>}ViVA=KMoi?S4htD#e(g`CZZW=uDRuXpWK(# z{{o3kLW65C7%1g2b^Re16L%7mK|8Z3|NHEVJceJ_f4733%Vab`n=u`hS9#3h{O`d= z+eo=7Xz*8{=r(PG);`3hqCxvI8ux(5z;y<%_9rHbrge}>V?QM4S@V!ygB)6+-(lMX zu%Yu@9Yo4aLxbznIS)2;&uVuNS)tP z?maTGjK`RXvON+Hk#e)qekwYS^@e8zZDX1NeeQG6;BQfBEsxO?sadZgVNcNq_bz|0^+Vw4r|NLl>8UuCAddkC+Y` z^kX%`GUWQw2ksMFfCm5m+8XEwGq&nQx;GHhMH?DVCK!|VZ_mj}VtQyp{rs$%JO*xo zhj}+KeKg0|`~HhY(Q)O-En)^}8t{L5;^e*6ds0r!5N+rg?KUCj$zR(-Y^YBoV*p&= zq;P2-GgN*VJx?Pv=nL*onnlj#>!)|5oH5$azc1s?W8h!;F}0Q0LNs^|iLG!AL(izQ zir6Bwq5Gk;iZ^sW*FJ0}wis=wu5lY^|DxYS%mfW?HDA=6jJL7{^uCy)4V8=5qGQfv zdVNdKhQ_Fp**s?G9)waeLxW4W=I%hoRHJ*ePII)O=iLg&8|n|W`pCH~MT5TrIi@uJ zFq9!T}x*Q2(4G_hsF&02%n+)2bNhuhY4YSv}sc*}=dOA57{H;JtnZey-d%l}Bs z3JoqnM_!K4JUzYWr(!>`m1sl%+bKalGvRH;c839C)@U$(&2j1EF^|l(4o;!(-zv1M zDfX_39Xtl!Urk?Oat$_UL;Y^{a~=bIkh~kc_SI-Z_w#Tj>E}&FB}h42v}0ZpoPF7} zZ&ei}W{0K*1N`9v9s_-lltCvsPkS_YZ^ehkm7#v(+hkJC0d1(xgCcy!TOzcGKb4px z8uXi;x|8?}47*=!gortz<$wQc-7ua%H0I=v6DPI?ZRnm&g|-C$?Bd}@%oz>-3K%-l z=WtPln9Fcm=tk|$Y+`GNTdEheFL_KAuP*tx9;tH!8jQtp4&QkUjA#9WX2dq4 z!TZ+~*T`dFTv~HyH8FRzp*m&iNW5ffVo7Wh8k|bcNI2e0i*?VxI}_WC7FzUVZB7$u zXJu{n#5~Z3`oH;;XrDEfK8G!6L-A)1^dUoidYT9+=ZOY?1w>cS*v5G#F|Xm4U`p+e zJTdR#7R{sfQi|Bt;g%>z?J8|c+lHGGoG1LVz+6RA&S$u_jHGsDE-_!Up?)`IDUbOb zvUy59y)S-f5Ccn3f%ya6bB^F9QqCU@?%C-B!8|5SMomv;1F--!_-p7DO2+B0HDh7 zwUkMFNlv53+le+buPUBT$FVqDa=cw=@K->8fVO$IIzxCMQn_L$nf;r3CIK0kkYo}t6-ZayvN#v;cH8*ZjK z)UxQ96F%HRDyhAs0C5NpVYY@4dTcFLgq#G=s30`AIvf_N9&srFJ$ zV$o>u+&dOQTnFd-$(Hs#htOasR(uF;cPKW}qjTRFw4qq44#sJS53JvuCw0c64aFMb z)}&lg=^0{iXz*8{^uIZ57DFt4xEU^@bJ&{s#1e+vnPt=>=<_=~+!EdXGgVS9aky>X zORateu_MFnaTvA6Da4KrHya;nzH~fF8gAB`sd>tha>s^SuRgV|S;UfuoA4ZJOEric zN7J>uer}>EpSkyI+uADHUQ*EDufSphTJFgbQtrfXJ8MQQ*MQi`;U>C*n)3o;sl%;n z6}4tMuACZf0_&-5P$1>fhTAlIYJs%hJw4p6np3l;<<1PZ6e5Ae^1*AJ0$m(YgBwq<-0Cv(H&iDjX|{KnDj zzxcW*nOHU&gjv5;Wofxf3B+>H;IDw$f4QdG$~hzHZ(74wxjLkOggbUXp`06xw0Wn zhVfdqD2CWwwCcbw3a%$feo#iAwwHToA1n{maL@9Xp?nI9S`pgNyuUG>#MfoDH1Af7 z2KkIHI;VIHgm87?2gvd6qd|^Ltc)H{hfQ;9C1^wW3opaZqNzPcOZb^8n;s5h z@w~}{X4IgMEGG zd&P#@E3~bp$7+Yl6^YM~nN6)4ZCZ5C->6+YCa-AF>KZ+l*J#2TqMZw&Ty3nm?GI`- zXy?Vuzovqn6HiGvLG2Bi?GcGS%U~Y!T*x#$h{nlp(Uz_nTM}~+V%oS7o>%C()S{if zshai!?&qmk-P7vy+UwBb!b|7KMe>*)o%IPmbnLH3Grdy!ReK+g>0>skWvG#R_73gX zCaLrpVAGW4TNrBZ(ez)0R(3%wRq_6htO2zTX!kbe>*eg_F%LY0<05E0@exf@J@40X zxMu^=F?M-$d~ZMtJ25wRFI;LhX;`qtcb%f~c+X+{Dssr{pf0T;^ zwKg;d*$cajz*@Z~^|uF+bNPy9YY-y080<%oa$PO8b~I@FLJ-hX>n2966K&x%gR`sQp3Nx??2f1XL>JnN#eKXg zxYxReMYu1ib)(%fUK4&4)))%gGsP>Y^`Oa_$Fv^?JCZ4KMV{u;zoXU3W$!t&kIPJS zc+qlV9J%&hv_>xjS1HJGa#z0f)TQz653~tpvo_~|9dX|xYe?-U+8iy%$rTHEjPtu0 zO`GYQvJb6tmS;pXSW~LC-Yjar(CQxN7MUAynNenXEemLW){hppRD19T!)4kV+l&OM z{YE?OU?`eU#AU2TomwnL^Lztnu5Z$kyTJT!?8)8!oIImHXdQ>QxNi~WGykTiXiTN= z^k1~E(Fwmc3GtcF>=y@$XhMp0NgC^2y`n3YC;fv2p?uw1X1kuVL*j8;G!)HuYs`O5|5*vYLwRz)Y4TwK? zsRpPfI}jU*RxA|Vq&$ny9C`dNy^`cuSVCwW0vRLZH26$#%JZIfD^gAv&2#Fc%4a%! zhJSQ_)Hq9GqtGUwdez`+!Do_$`EF&4h>4&XBpJt=u7>%8o!hHC(w11G(e{;>zq}gA zXDsdhP36?Wj+9Fh}YNuljMrB{&Y%x5+}`P;ISOO7XvcCCdaG8*QTLLRxP(@Fl5H32Q~PUVx? zTlmcFAO*LKQKZ~NwA>b{YW{XU6P+pMS0YMm651)zGrPn5`Am6Zan?*RVlrs02Cw4iXk!5Y=U7t?MO+o7pG8W75gm;Yl$|*pF*i^Kz0=30* zFpt}vT$W-^##ELpnqbrEg*qGgjL4E7BX*N_lO>0yFfuN{bQ7OxToJH+9(ku()6h~b zSx8H}@|okpu(+#3j>knyyYskn2eeNw@2lyO)Ocw7o)!!2hWTxg;+8*cWG>3$qb+f} z(Dw@F%ofZ4>L<{)E04A?tVDe(tcPb^*?sFQnftP)qq$TU&2b*dXZjLsLN1t*b5TG` z+-&-$8Qyot16LBoEr`uP8(rA?H$wof!La*X;4)&0Xnxb~sNRG%H$SJG4!4!WW}^Kn zICg3t#H~RAoT5#eh$*3McKjps24dlw6m|6%w0}`X3)?u*dAk|nI!mp(22WCM7Mjn+ z(wn0{!J48*^UA}t&r(4sue(t-6BtOKNDx zebt3m_3@Z_>7Ocfy;9RFeN>>7bPuS-m$`;4|Tek}_TC zyRrc7a_`KzTS|Q9wa<0cHWDkcbkU4_JbDAFdCbY;sqBTpuR%am0+!bW0{UT=j+c%w@?)=`3Q#XfrO}_;hg- zti8BtKCr$*Y$2NPGF!F#YoJYpo^drL`4HA3w63^C(S?xb%c&f&-Fu6aTa4Ct^vSg2 zu;wOd_+7vD4lxt7=jW@yS~ciQJcJeaZeajlNcoHcZ2K&U|FIW z2+KWH3gt1bg_o~<*iX)7Ihv^Qe*2z_JZ4O>$1J%RVk^+piz_GS-h&+ck>!#BCx}_0 znd$7@|91x5&kY@gqn{94iFWmzQOBw2uwO%2I=h^#C9|y2R@+Bgd|%9Cmi%3QDE<;D zw+ihHKgcYO&tu%KuhR93AZCLW_RMHjjSjTI%2mxiWG?_~HQKwtnZlj0Uc6)ZiJh$^ z7G~L^m44K@aXyI0jQ7~*8$hq!4z1yV!LvS?SItX^5GhI}$FoPP>zSK1HJQgqunN{3 z$RXx{cDk>Qnev3k{A>IY?j1_Z5sfq3Z>tjYSue8^72N1^cS1A#IA!z;Pafki*;i>^ z9Vxd4ZRA9)Df(-9O!BU|JLO7=IivMYH2U-CIFH%-F7%@8Jz_3s>{Cu=XRh!V#o#s{ zOM1MuX#d`Os_-Af`ul=%i;jn++&Z-UxA!F`z2z})%-4&$KP9#vjc@togg%T9e9cL| zIj@MhqRC#}<7?Ihc?NYg))NwYv)s@$C;prm;0HN)rxNLdWd8(f1KQ$mm#%+W0(pkD zwg;lfz8Tg=v@Q0ooa6I&Ozv5oH3$kv{@<+RRylH0X z4jvOWC3llmFDVy*_H5gl-hc3Hi(lsl9eqt~JKFejhjzw;Rjuga9jqW0h*ncsef9(7 z8768}#3bDzwgW9$C*s#Vn8QXL6n~;dEeOrzx60}x=OMSvx_da58au;RX2&sD z7oG6OeJ|N}!PpCP)IRNO`u>HZ*<}9q%m$k}U!>>-eWxSPTE8q6dI;@W_eiajGdvJ(;F^B>-}cI}%z)(c>LMtBc*;{Q~-er<2ti`swkK(ZVaTr4PZo zvYEAOW)HRFXq9`{ob82kF)!60-%F2|f;MGtTN(q$8%*^-WkbuIKs&UdVzCmuN8h5i zO!agm*KiWeaHE)9FPPJUP=gvLVyS4!;k!@FgMQHC_wV9|wA?AQiX!o4_aP4H$hgy{ zs7uPFp*8KD<7UExeMny?_QWnHb{cJ#W>as@G(NNFZinV9YG=@l4?W3NkcIZS&>*ym z&biXjoSmD6kG8?s@nt%H4V?pJp!u)Rn)2~0#Aou+o|azZc$sKx_2oJ}UqdWqBXO^V z=84XtUHojGT@LHF-fE{bCX>7=>l~W%U-qNt+hA_^Rb<9}I-fp|_A=RZNsl+2=V_&Y z9VAc7x_}n?%iZp!AD>xujsJw9bzVfXC{5a2J(ka?_^&fDAnTN@OK96lMauqyeLmRx zbcPnWhAg!AAEB7#t-{@uU^ zZDC@0XzfWkjzuPXW{maW6fTEYKAO+0#Fbm%JWY;|Idh&x>;~HCQU~`qIG3ea9aoD5 zh}}f9KPD8Y4aY07Sv$oOnOSK5Up6T&}<*nxl3RkFM`?~v?HaTT^gY;$k{U1;sc$--bI`A zt6!xq4c4HO)sqrvUw02}iatM268bZz@5i+R=yNYZ%V{kgOo6#fgz?CYfn<*as~Bzj zgaJ_xSkrhWP!*$0`^fufi)S_X_WJXfdvC*L^Ju#+L9^_4v-tfA@(h!EX8$(^l%jQC z=2$Fx19Or_)2#_~?0A6Y{bPZx_H;h;-Mr(oG}+6@dWaU=Y|Jc!+~`hL#Tvl^GIl&d zYgMU}Jev&Xa&Yd}2Xrp;7;Wc|vE8W+Jf@`lf_r-l+;;)_RYDab$Kn1*)_|;xHOSiCEBENSLcIpo-55`izva0bx_&(S(6XxN{FTeSJ@+MY?HucdbCpY;$NjOwamAxBf)eG9SoXft*Mzq|tF9B2M; z|C&PV1KN8j_1Xo7FbCTBI8Tn+N3>~C+T97Fum`!MVBb@E4Gn0gmZp#Agz=ciM;839 zrg3>An)eJFpDx%35pz-|-|8hfUK84N9sdO};SeWVMRmJXb)ST}I@878R zE2o>1I=`W9$*SL`I}PUO51*@@pyO>PT7SlQNf$1UDHSkyF@{lINp(1cYoTK z_o4;)Xlz}T$Yo~O2XnSQBG>){?b~|IyFZR_8CIBEXBC}`{zRK2vpXdCFqa9n|2(>k z&TsqBL??2VZcO4b7uEmCZKU(tUuY+KD=lK7oWQ(*-e#KD=tsL-a9?%;94~rW)3#h% z=Wn!8FIse*;5^5*KaCKkbEg5cqk8{5f}FXGrNHzhD;mi){6X8{`>*1e3zwTNtgJ?MozETz{T;_04rspSW|Ij|zbhc#+9R#+6In-Rk3c)~d(#{# zsFSCqm~2eeQ`sZYre59Hk^<|n+onu>YbZa|cG*H`-!$KLxv$_dlSPI9@@EngMuSQ8 zk2TQd*No;oI(nO&=P0zSOM0@sV5Tnn6YR(s#}+{|JhV_}&$jjJYeHTD=Zi(99= zM?uVR?WuHH1uZugZJ&D;^9I&TH*hlCg{G1^$Dxhu%Q2M{;WJw#BNm;VMNAy+$Np9G zE1>_}f0bKWr%p@)?Zt!-1yM&K2iUMhJA=f~?D1%jfgfD5jK_Q$Q9kM$i80xdXp);& z8mn3Gm@SL{c!bkykV5Ou{%J86^1Hk-`x!2HW`gQe#E-Q9O$zotlPFsBIhy%ZSY*wohOYv=C)CaOapC$Q_=n;$(-A& z%x6k_HKXt{lHw=+0^9F-0w{bEMfDRL&v5x%Da$q)6i;7_irmH zgn9Tvn`cjV6XT*8C^m}@6u|f{mSZBdmlzN2e&%}x_uCLhN(P=dwucxW?Qx0XQ5Bfm zyXZ-uv<@OBk9NXPY{}_Eu$L;dO2>5e>QqDvm5#ho593&$#mcZWYBSMfmORVJhJ2(` z$GfJA1X4~3E%DG;9U&DSbGk)mw#pe|%4lky5`vZx+Z2tLUL16d*eo>N?dpZUArAS} z7q#8~9x)ZP@?Z6TFQoIB?bBYzo313Lindz!MeyGYXxGnO2Yy)*Q$srwxWD3U8syJ% zAO8!c<IypgSeX76wIdSw8Y*_7Yu^`4BW?73)i4yk#Leq3hRh}J!}d1!5ojt}#|tnY*wFJIfO$!D(E zao;tNISE@E?e}%3C#ADtzVg)i)7}fDZ`DB)jtP6(G=tClX;^eJAdT1pwByfv)@{_{ zGqb-w3tD}Km@e9bORw9TV13#&s`foD-g^>9J+Ze5&?2PbySWg}J(Kl`P0aE8e zv>E^P*F9R589@=m7NLziGtaUe@)`!?)_+wcYhdifXm(S7L`OpIux{M%!F)0YVw<2v z>=|+JHS|5K9TOfYW|BHh(ca(fA9HFxpRpbL>R>|#u_b868;;*qfc^8rQ;hCPkhKD~ z8CvT8%6E29=ZBpeMY>Osa^`3+F0U2c33;hLGe6%_63?@jqRq_?8Dk3N#=py#zfb0P zYzwp`Kc%tb;9fT!b&DNM=6LL7XyticZ_;2bxzeg?-_^t9c$R3XYC@+s!8LsGVjcKR za=+~5Xof%KK0k!DY zg3hn*7eRjFoo2ydncu{$(U$tnDK>+=M*X3^&qYX_#a@Lrt-$WU7}%3<7W!OXtBI7e zLF<#!Xk*}e3lqJbw|_~lguNOq+~1|u-V^p@Sc|P~COHqbEgHLBjFrER&kW8;tn(Ej zeTW^Jsn_xL-UxUfUaBuyBtgs`Eiv_{ck&L%A#L9C(4CHd4rpV|q$2y{_)K>~=wV&5 zH-_zqwt7bXiI-7)#zsfpxO4)k(+Q3LaKk?K5k8}w^f#lAj*V;3K7X6?ZQg1=GoPn< zNogV}=Zx0ncOWEc6`$$a8Gms4UAUs!8ty~rkF8_-nZ-~3p171pwp{BN%%b6@sGG298Bu;M(a}17rWjD`6Z7kMaA93wxT_~ z;#I5-`^%FjZy1=qkJvV}B*#F%v=Myf*7=l=e`z@%v=`RNH~Fx>(k`{|@krW#`l6+; zxp5&{67~pM&tFza`&~aYixWp5JHXn@>P6yhPPCu!M|+haY+wv~RiZ@pjag0m-2k+^ zivqGMd3+|tqk8WmItFYXLiJYFvXI||*?=t@^DHnv+CVKvwG3-ekpP^EFoXic`JJBLbCmY>`zDMHE59ug6 zC)tIj==x5x4934F`vS(iy-Vs0Ml=8RQ2i(LOJ&+kFIJx=wxO(>rkx%|?1=dtA7+>6#>_tf&{M!3G@ z4-rdfpS2IIX?^o&4)jX{b`PR1(O5qeP2s8UGQ|Ww^Q&dBENvR8GYoB7Y)kHbi1iJd zpD3%^kn;>jD|_~!!Up2H@1k1GJ8X$XpecTTxZZs|d{c3a6K1)R*nTt>-3tk-8zDbv z#A|p#a#rjEXwwha*{a&{m<4tTqhywoatG0V?_SY%$^lG3L@170B-)_V`eip)!TWbu zQ(fDVl#4BbX={}DU~9}i$e>2d?7U++F5Li zwAX7DV)1C6_3tVa75Pj{yM=Hk*^|glK>K@CuD2e>+XqS2V;<3X@Gx4+JJ*l})v(?_ zc1`O=I*uix?Y-L?V+wuprQn?I31q#PeFW{b?)Uuo%dnsCQDYdZhTOBGX#bY{S?&G> zzDKYeoqCO05?WPM&D^~Ld`9g>Y|RalD`6i)>-IdjB^B0l4Cbk6uAuKqGTP_|_e~gx zF)!V`@yLh1W5>~|=YKz?1mAv~ad7qc`jMPV3L4Ms*0Vv-G@AP_fdzMbAP4{6B*U8Qkzk)eI~-dv z+G-8_29eWriw*QV)6tY$vY#J?dH5&C6}s2|lJm?!n`~UF)@uTL-HUt{*AEcOM4RZR zDU$$mr!M7F0~P;>okg4c-TK0-*>FE6FDu(j_GGZnq4nE6{8_5RW9ECVomlmYlsk{+ zy#3bsB|o^#?1-e%$ET3%yMQ)xo|MZ*JJNJ?cAX;3edlo0PQ((+ zL3{I;^(RuE$5aY7?thp-EEjEx*yHKXg^<9`kjOIj$8Nc`{+F* zb>2Yx<}SVaKFm|aIHje^uZZ15dt7DT`iC zzA0oEp-CT{y1jW9>}51xJCO%@1<}v+eTE`WPCv}#hU6p%3je+%!=PI+lM9?wd0h*Ad_5s0fTxQAg zH-j;B?0AT#Qg5?>3+?5Aa?H*^8WTN2+xhIolts`cer;W9L)XsOkI@Qdeb~GD1eEj6 znCp^6o^2Ug&zGN_yCJ6CKRQ%tK8<^xpv@HRQrTPu-!xgf*$ti`<({H7EBti5*9ZF< z>K2SSbcxtAw8e{3jRi*Y8UM}p9^O54q1ivA*;?F8MIuCz^mLq4HA_;Bj zbMV~oB{WX1M*Gnf`!OHJoOn6S9K*fjc(2jUM*M76g?%&U82$ItcM_{XyEsS3E)?GP z#p<~U`PAN^wR>*W5rh0^__nJf1gO15Tfz7Xi@_MMxAtS51)U?*q6MTBY#$F}K=J7~ zO%1Z&lwF6WoBKC8Qx^8koS3xsI=zN^G`9(p*G*7`b(vhjB@|iV{X?Pc@=|}SuAJAH6U(@=z0QT42Va4C4edI?p)+C<=+Gg;B4P zx~(MM_S1LeGg^qqWL8Zvj|mmC9?YiWN-LT_d#sM~P+MxPdh_ixIo=mEGt-|B4?zDC zX%u$BgT6;?Xirq}lkZBt=^`RZ7Bevc;497E5g6Ya_s(f%~(Lw+As zOlY9qk2*F_`{y6|7Ur&P{OMO3M94Yn%1Cc)}vc{ce;lp6*9%0PXq3So`p4uzvf< zIrJ5^KWH+ict)Ch`27$)qiOXt2k{q;*LOkjy*T{l(WZe9*XVf;q8$x=a<)(ezFAg| z!ap?o8)AE}jDqoK65n%*{m{8^fM||W$hiLamT}N_L!7i6NFTysp*8$jlItY| zxe|x0W^poq=djU2?KjnbHiB=te@~cF?@sC*s+6n^ZVjuPe0wgBnc&9RxqkyOLA01t zBB}qRU|lV9&O6zS#73Zv>69B&495#qRTB!OzZ zkIyq;-k7!d@I-o^!e~0nGnxnBJXgDItN$B9%8f$nf0=Y*HT0inX1p99K+B1sZ7wSJ zn*{qVmNkUe)RX>l5|#CHQU#33eeRvsm3q|S+GH%B~hYkv;oyXS~U z$CnJnQk+R>j)}AEwnMyoVap;Gi+s1lkwIJH#g|Zqu|xI4_#DnDQf@Mu`Z;fBMMK!< z*mYl8fy9cODQHq3bH|&mg>_1$u5~L&%*UCEHfmjbTFY*jR|Spi{GLealtpXqmf>Z@ z!|xNl-ZQxWC^0#-1$Qd0E{Cy7f!}?QdzjcXv}dvRef*%kjBoo9wjrJv7cI!WsCX~r zG2M@TvT=wZ#zQN}Z*>Xsf_cE^;uxjl#Q13YV;gNYTfzEf*7}$o$B4yRI;@PJ<5bTq}y+0&lSf;H1w#!aip_dpy4w9@S3GtR<26aNttEf`1YoPoAZWTfJH z4agVFDi>ZCOH2`M%)axHf?$1OW`!@(h|NSh;xfqBmI zq_>?fEvJfhIK_{(#ShjLj|i75ll4Z98d^*5xphZ(K${S|q*i{K)Txe^WD!1ck1xy{ z&t>gSB=ZN(Y_w%eN9K*dX_}0Olm`6{2p&(ss50?FoDN>O9DKSg{@YzSDO_7p-t$VOHA)7^|EN z#x^98I`z=9ZWmg3HMZ4eK-lRjqKe)J+ijTfj)+gW9#-UxbfvW?1eL!eEsx1QqBl%?n!O` z;ttqnWpeDJ5y=5^jL`&y?|txtyVM1OeSZ;s|Ip=N^CpBeCDFZ5Z(?1^%0vOk1ligws0 zbzhq!oae^$*`YGz8kV5t-SA#w<^sp_RP!7ldloomXtIC3g5E(t|0z!FiSKk$&Kzyv zD15sQ`y;=7eZ^|iAhs0ER?crl<_aD&rSHt4xpRnFpyh7epn3~_+fH!Ns;Hlfh%G}~ zdUN}PxZPal>?`f}>0~{eV~KVyDNc9V87`weDW`l1nQL>Fqv7wJZy5JAY=IJ~a|K$b zr*wX`JeL_*?6&3Mcw$y)d%j(k?X>1Habs7?Um$rY&PuesCF0)>sB#(OR_oD=I>~rs zjix*4pyH~HTt-96`HCpDRcJ=jH3~ycav7)5txO5Y*Kusn#QEm=Rd->()Xzz$uKp%< zu134pF(Kz|A(uI(`C#qWm&9z*Ql~$f?hSo1)onJg1Z$n%cbTy(nh}5|O z%~5S*z^KbGclsq9`IGE_;cP^^qN1j|@f^%Wd-LMv`;&6+Xz8z>XeYp0T}yb%__!^^ zHla0_=Evxkz&A0+Hi-y%65EWHb@1LTQJAXIzTm&3VCmUc^PoB=Ukv;`_N-3&vyO!fVB{VMvz{LsekZ&u2`$YrLk5qR*A zeD}ifM;oD)*Oq;m%M?$r`_oP>0PSdrf7ZTNTxN%Z$O?T2Qs;KGl?m(8ufXqIPOsgy z?XnZGK(tTA`-P9x!d^}1yLW!lYu|x3GBUAR;tQ9_xP0tFAjws7g3x|iM&H#v2>0`) zu;X3YC+|dS78;X1yPU^tYV5hGN%mlIcA;GoIwMn33j2`Wi2qqe-<4prap!j{%iV?X zXdqp2kiIJ+X!~|Q4w1SKdx>9W3tp%1%5Jn}ZqxK^Zt)nqYWExwvImQ^2d%bxUQXsRmjgEZ6r*E!Jld2Wy(agoxXg=Ndty|`ehp3n+RU-P z)-1TkWllIwTJlkroXcS}sckoR<=*BpQXjW;&!0go5$#y~>M*@G@SE?BL4~z)#Ezi7 z51#wxWHFbK6X{wMz$bPTZQ{E{B8M`$jJ(s$>Sp>rB%zrpH|<;-1@E8k7_Zy3&SPj} znva@%Jj!M699y>CnCwU4B%}RRN!Zu|zYAX2xc{;>y}sjU^+)@wM_=JGK3OvksnR-A z&;lh@-}&TmnI6N=AE#+-a{{eX}*L?Cl7bgvE$^NsN4_CuC2RG(O zr;~MG&S|u;=GEelH*py+p$(bl^mu2`7JRw<<=Z+gqray>{uzyz($QL))T`NRxQym^ ziDh}TTn1W!|KZk5doEMs(!TC0jUzMB%Dv{PUV!r)r}6MqGWm@j&RH~_BJMWyny5llkqNXsX5X5{v< zM+))`Pn@scYpWx5-bXWuTW#=oC zi)`Sx20p)DH=BI7#CeRi^MK8Q(4~;49arOB`a^-05 z2RnBBae&zSigHFTZ7&sQnrG+jFov8*%2$DgaN1rf(L5zhg(6L04!ghix-`9K&(UHQ zKKSwhtp4i8LvI_%@v6{d7C2QK!*gGHd+_{6`ix$nO$mPcS=SI^;iQVMIqylimuRPh z6y~NGKz{z{nL;Icp0ChmN<6y!2JV?rT-TLL^!lpN(tQN4?}zKlaMMiGr0>dWG|hb@ z3&m|Ae->>&WjVcPHE17_{Xcw$=f1$#)o<-5axQPszHa5d7|I15ROPJrNT2&#v@@Yf zF>cTXS1xLoUPYg6Et(GNN$w!zdmjDmw0TUQUmcou)xxcT@c!+5nYP@HKKFVwrI={H zqvef1SOjy0fF&%7=33D$(SRhh>bDUg1!5iNV3 zC-*4qlN+n;+Wvr+YeLg`_FUKou1|bVNI1iga-Y!VI<~~E91A)B;(v1*9Emlf?Q^~= ztp@MrWEcBrndQV<(7yS~hy0L*wq&_Vb({&Y&uE5nQ5_S1ahZ8>oSEsgTr1i#?-5b1 z5QB}}XvkltPs)8k`*T)uM;VMAaz^W)9He=aHnc^L0xL_;ahVnA{*xyvlX73ty0ns} zee~cmj)m8PN2?NRM+?5D!%XnuGF_23e9LJ+-+^}6w`W;dESH(3e54de%1ZZBTbV@c}lMsx8v`7IXa z9g*=iM{Vi7?)e{EwqfC}L@2jm{Mu1;&h;Jb{SMtq&IMR|$^53Fzn0Y5i*_tNs4(*; zX5dc33e`Ul$E50Z9k(_suS`yd)Xui+=!T4CD^u|jx$y|!m+7Lq#q&_-Q1vpVvf z$6V1&R9{5C^XB|QyLoiS0)Loy=v=$8CxDLq{b)Ltf&W@y->A9mXi;B!uYaRun%v7f z3$`>{f0QGQdj`;yCcl=^AAtXUPQkl>v*;N92QBl&sawkZ@V+OX^$4J`)L*nysd8=8 zTOi;1hG}?B^I(H$oo`-U{Q>)J%%8^A$_tR|`-gUQ`mSs74`F}77mbV+fHAWx#Wf%HDH_^vQxF(DtrKzFHguzn?YG zE%fUZIo?RL%ILLGK9Hx4=*o(_BSfx22<>r9!>uimFa{hy`|%N*m@wKVyXF--a6F;L zTQ{1?eGwdmmi^qad>53Pz4%_)+J1685wx_M+kGo?U@yn0zManGzi}iu8ck)QSA8 zB^vPD1JvpqY)Cs39E*0TDzCcu3jFTYA(?TSBsLWshn89p8JY|IXGzSZU?y}-P%GKf9K-VWZI^`cS79rY0pRr z5+@5zKx0hLWvjtD`Z}wGL|Za<5}b%Or}oR1lD}N$-8#XON+Za!Fr*3_lyVPwuFI2p~B=du3xTP_p0^q$zrIi$`hXqyFOH1s4P zmwtcjy2Dn)rlL*K(fRZF2aIvOBQE;RA|{I#9BI<&@dO0YPrhqnQnMB`d*z?tY*(o~aCwW(9piR4Q*CX>c>>UZI*6-(#<0+zD z=gxH0hBj~OTXxcgKHHgS53MB(wV^MMvbJpsQz7M)(CSYwJt_w8U*k*bsXn&El+kY5 zERIQs_wT=AI=Yr-kbtEZM3FGSC(sxq>?O4OW)(5a|-=evH^>|Zq zyt!zu1(}ftp?$7Sl{g|s+nFX>>8^LW`z0VRY%hM(SBI3FhgN4N*Kyg4$FR(RhD3CS$+g0<^ZMGmkx#;djMWtzg(B&nKvh_C5X8Y^&GsEut64 zEuOy9dT1AW6_Y~(VGjFd*)3t(m+PbL?cKZ55OM-9)V!|5kl!c}G(dZNK+62vTKJB3 z`2$s35`zgEqTSMJ%<6}Gy)VHxRd)fo26)ftSS35RIIJATRGy_<>((X2jL?1?h=uA@ z!|zsTTvy98B4&)H+50rI3HF#7Gz!#AP$#w!?WSwjNk{lLQ2UbXr9Rs4E<*F$IeF*Q z@q8v<`j7#e%-;nUqs7?h^X!Bn4&i5Y?Id$_K@+sqwU3rbbwRHA%e?SCv~M*L3N7Jla;}@yVO%KHUieskL`+dA@dGFJG4#zk}A%@w-M87 zjw|cXXJn7I;rz;`mJ%zWga|*N$j~7i}##5VOZ6 zRf_qN+_s<-+GeX;U1p=r|+>fp29dbs>;w}KB?0U?XP5M)FGHZ zw9St1;?jO%16sxODUAd0jNA@RP4K4u=SH-#w@PId4#2vF&hl;IuB1+PH1D+`GYU>Y xzw4y*kK;{j6Pm#G<<%S3!SC{q6Y9((xk|y!Xw&9SP8^X3d$VN>-MgT@{6Bd6-m?Gz literal 0 HcmV?d00001 diff --git a/train/ST_training data_updated_1130points_new.shx b/train/ST_training data_updated_1130points_new.shx new file mode 100644 index 0000000000000000000000000000000000000000..18f235d0fa63e4f38a7ad094aaba2fb796aea8f7 GIT binary patch literal 9140 zcmZwGaVY11p1|>0KkMx8to5_jI_IpPpS9LnKWCkD*2+(lq)D12Nt&!ANs=^8liV~( zlO!ii&PmcVO_DTenj}q=xDX#;66v=p|F_$H*Vm({g!zUc! z6zBMs>)horF9Rb&gy#?u%M@m_h!w15GrQQwAx`imm-wDLJmfiV1HTG2g}c5=VkQe% z&KfqcgO51Kan5p)tK8xN&v+9U8N~#qGmoXb#|E~smrps$Y0h(*8{FdwuL6G@UR-EC zKaOK6b6Ctu*0F`%?B_5i`HFA2#t%H=1-}GF#W0y!EaY9@=L2@~F`w}{U+^{Gaho6c ziJt@iE}DtVU_Q%O%|^EKAqP0d87^>zo80FquLGka8P7E4vV>KvXDfU7gd?2d9N%)C zyFBJ);7>w?&(Tj}nZj%qv4XX1W*7T7#0kFS65n%&hdk$P;Mbw1aM#yK%wz$}S;HoF z@DT?&&RH&Um0LXE8E*prK8guUXC6y=j}2^NFQ0Oh)12orH@L?WUIoTPFpjCrVKFON z#};<8pTnHwE56|xKk$eb{1W)n7$!4|g}lrAe85gV<}*I$3%=$%Zu28Q@pE8oG!vP@ ze3r4Ajcn&b4seV!T;K{fxzAHx2mUOQ@l0bbOIXEvwz7v$IKnB;@h#W6%VS;!#)Syq zv$$BMFq=iJU@e>3#Xb&kf-kwm_uSzj&v_g8O{gi{^-U5pS-^7Eu!$Xf#6ga8mWy2F z77uvFo51)eCNQ0OEag2mu#LTZ%27^pp3B_e9#41``11&c7Z{q;&r_MhVpg(_E$n7L zhdIete8V+<;1MtQB`_g|$;@IQ@A5t$u#=DZjL-RkulbJK{K!xI9Qcc9CNhKhEMqkr z+0KU?;23APz!h$CpQpSIOpIha)0oQ=R!H zvsuIn*0Pyh?Bft8_>xO}&mA7}oVS5Vp{8(GQW7&+z;f2Gi5+~zL5_2li(KUv4|v9# zz<-Eh0@IntQr=?&+t|ye9OX3Uxy%jj@q|}_$q|fWDsx!OO4hN3-R$QuC;5tRxW*4W z;sw71{$mW2nZ-ih<$XS2Cm-_}pYsJ@^BuSOk)QZEFeRFa%wRstSj|SZ^C1T~#u+Yf zg`3>xDX#go7u%a z4sn7nxy1L};UUj?8~CeGQ@HC_Nz7yc%UQ!FcJL7gInG%wa+O;=;2CcM)1sKbbmp;? z_t?NT_VOu5In8-4bAx+4;Z@+b5sYJak)e5go5NyOvW_k6WCHGbd`FZd-e zJ%-85Vj=JHJ|D1?kNJ$x`GT+cj@$gmPy8JCT{IJ!!F-mnnvHDdLk@6^GhE;bH@VMK zUI%7GGM;J7WeKZT&sO&E2}d}^IlkpOcX`aqz+Z<5pPOIDGKJYJVg+m2%r5qEh!cFt zCBEkl4|&epz|2rnxGOV>nJi#AYuLmNKH?z9Im<<^a*GE%<4xdiqL{#R=CPFb*uXaS z@+n6-&3P_!gL^#TRbW;G}VKTE=$h*AH z2khiyKI3z~;A_6)Hb3$cKL=(xO}&mA7}oVS6$ z4>g6mexJll7OnCY-2BT+W+m&`!fy6+n3H_PH(cWf9`S--0`p>+%q$l2F7NXJJNcN; z_?$2Jn(w&HkNm{Xf&U!ML}oCbWvpf++xd_K9ODcZxWY~D^OVxx+)A^ER*`)D-S2 zNMa@nSk4+Yv4f8|$Z^hck*nO|0nd07_%BgRU^??y%6n{J8+-YbqnzeEm$|_`p71KL zFoJPRWe$s3$vU>MoBbT-Bwz6j*Z6@)yx^C>e~n=>vslQxyw3;h>9EKMg bn%|!)S;rQ3v!BD9H2 literal 0 HcmV?d00001 From bb25aa12ccb794779c45d710378fd47712de216d Mon Sep 17 00:00:00 2001 From: nkdiemgithub Date: Tue, 22 Oct 2024 07:46:38 +0000 Subject: [PATCH 3/6] update label mapping and accuracy --- 01.train_ODC.ipynb | 4 +- 01.train_S3.ipynb | 3 - 02.predict-Test.ipynb | 3 - 02.predict_ODC.ipynb | 4 +- 02.predict_S3.ipynb | 3 - 03.compare-test.ipynb | 3 - 03.compare_ODC.ipynb | 4 +- 03.compare_S3.ipynb | 3 - new_import_S3.py | 354 --------------------------- save_draft/KetQuaPhanLoaiDat_new.tif | 3 - 10 files changed, 6 insertions(+), 378 deletions(-) delete mode 100644 01.train_S3.ipynb delete mode 100644 02.predict-Test.ipynb delete mode 100644 02.predict_S3.ipynb delete mode 100644 03.compare-test.ipynb delete mode 100644 03.compare_S3.ipynb delete mode 100644 new_import_S3.py delete mode 100644 save_draft/KetQuaPhanLoaiDat_new.tif diff --git a/01.train_ODC.ipynb b/01.train_ODC.ipynb index c09efc1..84ccffd 100644 --- a/01.train_ODC.ipynb +++ b/01.train_ODC.ipynb @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5a48ee4f5fa6b06f1509dc8c8b6e540ab10503c3b91311b370d1bc5a16db36f8 -size 921737 +oid sha256:d9fd8e7e75f404ad0c71d0116b7f601651a3459c53c05131f5832ff8d6b2da0d +size 202647 diff --git a/01.train_S3.ipynb b/01.train_S3.ipynb deleted file mode 100644 index 360e59b..0000000 --- a/01.train_S3.ipynb +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:37686f6bbdd4590ce2dc5474eef8268f680498c2b78881a486625e264d2a1015 -size 841901 diff --git a/02.predict-Test.ipynb b/02.predict-Test.ipynb deleted file mode 100644 index 3d36ff8..0000000 --- a/02.predict-Test.ipynb +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:78d28d677d39cc67e607bb418948b9e3e921351762d63b4737036fc02d1d361a -size 3375913 diff --git a/02.predict_ODC.ipynb b/02.predict_ODC.ipynb index c9e6a46..94ab7bf 100644 --- a/02.predict_ODC.ipynb +++ b/02.predict_ODC.ipynb @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:99bfacddc5ccaf1c9a197b422a0a73554812ad6230636fe6bde5a5de0ce4fbba -size 3451380 +oid sha256:858c11d79cc7ed55ab529d5ca92c073fac6af67b8792581e3a6335d8c83dc4c0 +size 4503979 diff --git a/02.predict_S3.ipynb b/02.predict_S3.ipynb deleted file mode 100644 index cd6a7e9..0000000 --- a/02.predict_S3.ipynb +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:892cabc8da5cfcc0f9295ddb3ad32fda077027efa53e7b48e2f81965ad6ca202 -size 3361173 diff --git a/03.compare-test.ipynb b/03.compare-test.ipynb deleted file mode 100644 index 95923b4..0000000 --- a/03.compare-test.ipynb +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:fbab8f823ca6965dcbe43d9ce914f8912e3976833de1b205032eec48bfa83970 -size 1670930 diff --git a/03.compare_ODC.ipynb b/03.compare_ODC.ipynb index 68e7eed..e2eafcc 100644 --- a/03.compare_ODC.ipynb +++ b/03.compare_ODC.ipynb @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:dc75bc70a334de78cca076b1b60282aa05782a9fc3e9a21e195baefd8ca190c2 -size 1671096 +oid sha256:d19db66ebbb685ef76b07a48eede68cfa26b63d3626c0f2acb91b7a7ddfa3861 +size 1664782 diff --git a/03.compare_S3.ipynb b/03.compare_S3.ipynb deleted file mode 100644 index 56407d6..0000000 --- a/03.compare_S3.ipynb +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:7c33115ec7d6896758abf1eb8d07eba94ae15444c63f318e8adbd5d032df9a4f -size 1671094 diff --git a/new_import_S3.py b/new_import_S3.py deleted file mode 100644 index 6f1e52a..0000000 --- a/new_import_S3.py +++ /dev/null @@ -1,354 +0,0 @@ -import matplotlib.pyplot as plt - -# Common imports and settings -import os, sys -os.environ['USE_PYGEOS'] = '0' -from IPython.display import Markdown -import pandas as pd -pd.set_option("display.max_rows", None) -import xarray as xr - -# Datacube -import datacube -from datacube.utils.rio import configure_s3_access -from datacube.utils import masking -from datacube.utils.cog import write_cog -# https://github.com/GeoscienceAustralia/dea-notebooks/tree/develop/Tools -from dea_tools.plotting import display_map, rgb -from dea_tools.datahandling import mostcommon_crs - -# EASI defaults -easinotebooksrepo = '/home/jovyan/easi-notebooks' -if easinotebooksrepo not in sys.path: sys.path.append(easinotebooksrepo) -from easi_tools import EasiDefaults, xarray_object_size, notebook_utils, unset_cachingproxy -from easi_tools.load_s2l2a import load_s2l2a_with_offset -from dask.distributed import progress - -# Data tools -import numpy as np -from datetime import datetime - -# Datacube -from datacube.utils import masking # https://github.com/opendatacube/datacube-core/blob/develop/datacube/utils/masking.py -from odc.algo import enum_to_bool # https://github.com/opendatacube/odc-algo/blob/main/odc/algo/_masking.py -from odc.algo import xr_reproject # https://github.com/opendatacube/odc-algo/blob/main/odc/algo/_warp.py -from datacube.utils.geometry import GeoBox, box # https://github.com/opendatacube/datacube-core/blob/develop/datacube/utils/geometry/_base.py - -# Holoviews, Datashader and Bokeh -import hvplot.pandas -import hvplot.xarray -import holoviews as hv -import panel as pn -import colorcet as cc -import cartopy.crs as ccrs -from datashader import reductions -from holoviews import opts -from utils import load_data_geo -import rasterio -import rioxarray -# import geoviews as gv -# from holoviews.operation.datashader import rasterize -hv.extension('bokeh', logo=False) - -from deafrica_tools.bandindices import calculate_indices -from sklearn.ensemble import RandomForestClassifier -from sklearn.model_selection import train_test_split -from sklearn.metrics import accuracy_score, classification_report -from sklearn.preprocessing import LabelEncoder - -from sklearn.pipeline import Pipeline -from sklearn.ensemble import RandomForestClassifier -from sklearn.impute import SimpleImputer -from sklearn.preprocessing import StandardScaler -from sklearn.model_selection import GridSearchCV -from sklearn.model_selection import train_test_split -from sklearn.metrics import accuracy_score -from shapely.geometry import Point, Polygon -import geopandas as gpd -from pyproj import CRS -from matplotlib.colors import ListedColormap -from holoviews import opts -from datashader import reductions -from bokeh.models.tickers import FixedTicker -from rioxarray.merge import merge_arrays - -import joblib - - -def load_data(dc, date_range, longtitude_range, latitude_range): - product = 's2_l2a' - query = { - 'product': product, # Product name - 'x': longtitude_range, # "x" axis bounds - 'y': latitude_range, # "y" axis bounds - 'time': date_range, # Any parsable date strings - } - native_crs = notebook_utils.mostcommon_crs(dc, query) - print(f'Most common native CRS: {native_crs}') - measurements = [ 'red', 'nir', 'scl'] - - load_params = { - 'measurements': measurements, # Selected measurement or alias names - 'output_crs': native_crs, # Target EPSG code - 'resolution': (-10, 10), # Target resolution - 'group_by': 'solar_day', # Scene grouping - 'dask_chunks': {'x': 2048, 'y': 2048}, # Dask chunks - } - data = load_s2l2a_with_offset( - dc, - query | load_params # Combine the two dicts that contain our search and load parameters - ) - return data - - -def mask_clean(data): - flag_name = 'scl' - flag_desc = masking.describe_variable_flags(data[flag_name]) # Pandas dataframe - display(flag_desc) - display(flag_desc.loc['qa'].values[1]) - # Create a "data quality" Mask layer - flags_def = flag_desc.loc['qa'].values[1] - good_pixel_flags = [flags_def[str(i)] for i in [2, 4, 5, 6]] # To pass strings to enum_to_bool() - - # enum_to_bool calculates the pixel-wise "or" of each set of pixels given by good_pixel_flags - # 1 = good data - # 0 = "bad" data - good_pixel_mask = enum_to_bool(data[flag_name], good_pixel_flags) - data_layer_names = [x for x in data.data_vars if x != 'scl'] - # Apply good pixel mask to blue, green, red and nir. - result = data[data_layer_names].where(good_pixel_mask).persist() - return result - - -def fill_nan(ndvi, time_split): - rs = [] - for times in time_split: - tmp = ndvi.sel(time=times) - fill_ds = tmp.sel(time=times).bfill(dim='time') - fill_ds = fill_ds.sel(time=times).ffill(dim='time') - rs.append(fill_ds) - merged_ndvi = xr.concat([i for i in rs], dim="time") - fill_m = merged_ndvi.bfill(dim="time") - fill_m = fill_m.ffill(dim="time") - return fill_m - - -def load_train_data(train_path): - train = load_data_geo(train_path) - return train - - -def load_sen1(name_vh, name_vv): - dsvv = rioxarray.open_rasterio(name_vv) - dsvh = rioxarray.open_rasterio(name_vh) - return dsvh, dsvv - - -def get_data_sen1_and_sen2(train, average_ndvi, dsvh, dsvv): - loaded_datasets = {} - for idx, point in train.iterrows(): - key = f"point_{idx + 1}" - try: - ndvi_data = average_ndvi.sel(x=point.geometry.x, y=point.geometry.y, method='nearest').values - vh_data = dsvh.sel(x=point.geometry.x, y=point.geometry.y, method='nearest').values - vv_data = dsvv.sel(x=point.geometry.x, y=point.geometry.y, method='nearest').values - loaded_datasets[key] = { - "data": np.concatenate((ndvi_data, vh_data, vv_data)), - "label": point.HT_code - } - except Exception as e: - # loaded_datasets[key] = None - print(e) - return loaded_datasets - - -def split_train_data(train, label_mapping, datasets): - label_encoder = LabelEncoder() - - # Fit and transform the labels - labels = train.Hientrang.values - numeric_labels = label_encoder.fit_transform([label_mapping[label] for label in labels]) - X = [] - x_new = [] - lb_new = [] - for k, v in datasets.items(): - X.append(v) - for i in range(len(X)): - if X[i] is not None: - x_new.append(X[i]["data"]) - lb_new.append(numeric_labels[i]) - X_train, X_temp, y_train, y_temp= train_test_split(x_new, lb_new, test_size=0.4, random_state=42) - X_val, X_test, y_val, y_test = train_test_split(X_temp, y_temp, test_size=0.5, random_state=42) - return X_train, X_val, X_test, y_train, y_val, y_test - - -def train_with_rf(X_train, X_val, y_train, y_val): - # Takes 1-2 minutes to complete - - # Tạo RandomForestClassifier mặc định để sử dụng làm mô hình ban đầu trong pipeline - base_model = RandomForestClassifier(random_state=42, n_jobs=-1) - - # Tạo pipeline - pipeline = Pipeline([ - # ('imputer', SimpleImputer(strategy='mean')), - ('scaler', StandardScaler()), - ('classifier', base_model), - ]) - # Thiết lập các tham số bạn muốn tối ưu hóa - param_grid = { - 'classifier__n_estimators': [100, 300, 500, 700, 1000], - 'classifier__max_depth': [6, 8, 10, 15, 20], - 'classifier__criterion': ['gini', 'entropy'], - } - - # Sử dụng GridSearchCV để tìm bộ tham số tốt nhất - grid_search = GridSearchCV(pipeline, param_grid, cv=5, scoring='accuracy', n_jobs=-1) - grid_search.fit(X_train, y_train) - - # In ra bộ tham số tốt nhất - best_params = grid_search.best_params_ - print("Best Parameters:", best_params) - - # Dự đoán trên tập kiểm tra - y_pred = grid_search.predict(X_val) - - # Đánh giá kết quả - accuracy = accuracy_score(y_val, y_pred) - print(f"Accuracy: {round(accuracy, 2)*100} %") - return grid_search - - -def save_model(name_file, grid_search): - dir_save_model = "model_train" - if not os.path.exists(dir_save_model): - os.mkdir(dir_save_model) - joblib.dump(grid_search, os.path.join(dir_save_model, name_file)) - print("Done!") - - -def predict(model, data_crs, ndvi, vh, vv): - data_predict = [] - for i in range(ndvi.shape[1]): - ndvi_tmp = ndvi.isel(y=i).values - vh_data = vh.sel(y=ndvi.y.values[i], method='nearest').values - vv_data = vv.sel(y=ndvi.y.values[i], method='nearest').values - all_tmp = np.concatenate((ndvi_tmp, vh_data, vv_data), axis=0) - data_predict.extend(all_tmp.T) - y_pred = model.predict(data_predict) - final_label = y_pred.reshape(ndvi.y.shape[0], ndvi.x.shape[0]) - - final_xarray_save = xr.DataArray(final_label, dims=("y", "x")) - final_xarray_save = final_xarray_save.rio.write_crs(data_crs) - - x_values = ndvi.x.values - y_values = ndvi.y.values - - data_array = xr.DataArray(final_xarray_save, - coords={'x': x_values, 'y': y_values}, - dims=['y', 'x']) - data_array = data_array.rio.write_crs(ndvi.rio.crs) - return data_array - - -def cut_according_shp(thuanhoa_path, average_ndvi, data_array): - gdf = gpd.read_file(thuanhoa_path) - gdf = gdf.to_crs(average_ndvi.rio.crs) - polygon_coords = list(gdf.geometry.values[0].exterior.coords) - polygon_coordinates = [(x, y) for x, y in polygon_coords] - - geometries = [ - { - 'type': 'Polygon', - 'coordinates': [polygon_coordinates] - } - ] - region_result = data_array.rio.clip(geometries, data_array.rio.crs, drop=False) - region_result = region_result.where(region_result >= 0, float('nan')) - return region_result - - -def compare(KD_path, KetQuaPhanLoaiDat, CODE_MAP, HT_MAP): - gdf = gpd.read_file(KD_path, crs="EPSG:9209") - polygon = gdf.geometry.values - label = gdf.tenchu.values - ouput_image = rioxarray.open_rasterio(KetQuaPhanLoaiDat) - code_tq = HT_MAP["TQ"]["data"][0] - code_pnn = HT_MAP["PNN"]["data"][0] - result = {} - for key, values in HT_MAP.items(): - print(f"process {key}") - array_list = [] - for i in range(len(polygon)): - po = polygon[i] - lb = label[i] - code_lb = CODE_MAP.get(lb, code_tq) - try: - qr = ouput_image.rio.clip([po], "EPSG:9209") - if code_lb in values["data"]: - if code_lb == code_pnn: - qr = qr.where((qr != float(code_pnn)), np.nan) - # qr = qr.where((qr != 3.0), np.nan) - elif code_lb == code_tq: - qr = qr.where((qr != float(code_pnn)), np.nan) - qr = qr.where((qr != 3.0), np.nan) - else: - qr = qr.where(qr != float(code_lb), np.nan) - else: - qr.values[:, :, :] = np.nan - array_list.append(qr) - except Exception as e: - pass - result.update({key: array_list}) - return result - - -def save_result(result, HT_MAP): - # cmap = ListedColormap(colors) - save_path = "ThuanHoa/KetQua" - if not os.path.exists(save_path): - os.mkdir(save_path) - - for k, v in result.items(): - rs = merge_arrays(v, nodata = np.nan) - rs.rio.to_raster(f"{save_path}/{k}.tif") - print(f"save {save_path}/{k}.tif") - # img = rs.plot(cmap=cmap, add_colorbar=False) - # cbar = plt.colorbar(img) - # cbar.ax.set_yticklabels(labels) - # plt.title(f'{HT_MAP[k]["name"]}') - # plt.axis('off') - # plt.show() - - -def accuracy_test(test, data_array): - # cấu hình nhãn dữ liệu - label_mapping = { - "Lua tom": "0", - "Lua": "1", - "CHN": "2", - "CLN": "3", - "TS": "4", - "Song": "5", - "Dat xay dung": "6", - "Rung": "7" - } - - chk = [] - pred = [] - dd = [] - for idx, point in test.iterrows(): - label = point.LULC - predict = data_array.sel(x=point.geometry.x, y=point.geometry.y, method='nearest').values - pred.append(label_mapping[label]) - dd.append(str(predict)) - chk.append(predict == int(label_mapping[label])) - test["code"] = pred - test["dd"] = dd - test["check"] = chk - path = "ThuanHoa/TestAccuracy" - if not os.path.exists(path): - os.mkdir(path) - test.to_file(f"{path}/result.shp") - - percentage_true = np.mean(chk) * 100 - print(f"độ chính xác: {percentage_true:.2f}%") \ No newline at end of file diff --git a/save_draft/KetQuaPhanLoaiDat_new.tif b/save_draft/KetQuaPhanLoaiDat_new.tif deleted file mode 100644 index db9b4b1..0000000 --- a/save_draft/KetQuaPhanLoaiDat_new.tif +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:79328c872f720942f3058d8d0de8293029a3f6b3e40c0239a17cbd93995e65a7 -size 3536032 From b0fba1a5ffaf5e98b2891e990c5a50fb4b8ee118 Mon Sep 17 00:00:00 2001 From: nkdiemgithub Date: Tue, 22 Oct 2024 10:51:04 +0000 Subject: [PATCH 4/6] double check --- 01.train_ODC.ipynb | 4 ++-- 02.predict_ODC.ipynb | 4 ++-- 03.compare_ODC.ipynb | 4 ++-- ThuanHoa/KetQua/NN.tif | 2 +- ThuanHoa/KetQua/PNN.tif | 2 +- ThuanHoa/KetQua/TQ.tif | 2 +- 6 files changed, 9 insertions(+), 9 deletions(-) diff --git a/01.train_ODC.ipynb b/01.train_ODC.ipynb index 84ccffd..469a8ff 100644 --- a/01.train_ODC.ipynb +++ b/01.train_ODC.ipynb @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d9fd8e7e75f404ad0c71d0116b7f601651a3459c53c05131f5832ff8d6b2da0d -size 202647 +oid sha256:5bb007666adcc60a068ce7619fc3d1ea787d99b9b4d9a5661930cae28c9b53b0 +size 920050 diff --git a/02.predict_ODC.ipynb b/02.predict_ODC.ipynb index 94ab7bf..4a757e3 100644 --- a/02.predict_ODC.ipynb +++ b/02.predict_ODC.ipynb @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:858c11d79cc7ed55ab529d5ca92c073fac6af67b8792581e3a6335d8c83dc4c0 -size 4503979 +oid sha256:6f3e2a42f7784986e07d299d7a8a7082e7eaea4e7e41581fcc3705f5b8b63b0c +size 5324835 diff --git a/03.compare_ODC.ipynb b/03.compare_ODC.ipynb index e2eafcc..18ed8cb 100644 --- a/03.compare_ODC.ipynb +++ b/03.compare_ODC.ipynb @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d19db66ebbb685ef76b07a48eede68cfa26b63d3626c0f2acb91b7a7ddfa3861 -size 1664782 +oid sha256:8b0a43c123cc5751609a3213586c6a9f29ba23f6b6748e483a4053cbb92c97fe +size 2529593 diff --git a/ThuanHoa/KetQua/NN.tif b/ThuanHoa/KetQua/NN.tif index a137109..d67fb65 100644 --- a/ThuanHoa/KetQua/NN.tif +++ b/ThuanHoa/KetQua/NN.tif @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d9702f45dddb21e62fa5f65fce514f1e6dd2632556758fe75cf50f227e0e9fcf +oid sha256:9494bac2e563ef67ea56cb045f0065c802c17e3563a393b62e18b7a304f1b7ac size 3066028 diff --git a/ThuanHoa/KetQua/PNN.tif b/ThuanHoa/KetQua/PNN.tif index 6685260..5cdc23c 100644 --- a/ThuanHoa/KetQua/PNN.tif +++ b/ThuanHoa/KetQua/PNN.tif @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2c842ea560305344c483d4b9dbbf117526655cc684e29d8135610f4e9e4b3969 +oid sha256:4d87050cb7280e8d59b95eec649e2dbcf4d5c6fc7d36bdd7be5706c7b4ce1cf0 size 3066028 diff --git a/ThuanHoa/KetQua/TQ.tif b/ThuanHoa/KetQua/TQ.tif index 69a9050..b748964 100644 --- a/ThuanHoa/KetQua/TQ.tif +++ b/ThuanHoa/KetQua/TQ.tif @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:86d72d0e70f63442e5e1979fdd48844890821b8d28e2ffa794bf5b5aafcf63a4 +oid sha256:a3939ced7162cf2998311f8476b5d9a5d9489ce2e2c3f9a290b086abe6f3a7bd size 3066028 From 208f1fab6e217ba8bb028b714c6dfdc10c1a2abf Mon Sep 17 00:00:00 2001 From: nkdiemgithub Date: Tue, 22 Oct 2024 11:10:15 +0000 Subject: [PATCH 5/6] addresult --- backup_S3_download_Amazon/01.train_S3.ipynb | 3 + .../02.predict-Test.ipynb | 3 + backup_S3_download_Amazon/02.predict_S3.ipynb | 3 + .../03.compare-test.ipynb | 3 + backup_S3_download_Amazon/03.compare_S3.ipynb | 3 + backup_S3_download_Amazon/new_import_S3.py | 354 ++++++++++++++++++ .../CSIROBoeingPhase5-Vietnam | 1 + .../KetQuaPhanLoaiDatODC.tif | 3 + 8 files changed, 373 insertions(+) create mode 100644 backup_S3_download_Amazon/01.train_S3.ipynb create mode 100644 backup_S3_download_Amazon/02.predict-Test.ipynb create mode 100644 backup_S3_download_Amazon/02.predict_S3.ipynb create mode 100644 backup_S3_download_Amazon/03.compare-test.ipynb create mode 100644 backup_S3_download_Amazon/03.compare_S3.ipynb create mode 100644 backup_S3_download_Amazon/new_import_S3.py create mode 160000 backup_code_training/CSIROBoeingPhase5-Vietnam create mode 100644 backup_ketquaphanloai/KetQuaPhanLoaiDatODC.tif diff --git a/backup_S3_download_Amazon/01.train_S3.ipynb b/backup_S3_download_Amazon/01.train_S3.ipynb new file mode 100644 index 0000000..360e59b --- /dev/null +++ b/backup_S3_download_Amazon/01.train_S3.ipynb @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:37686f6bbdd4590ce2dc5474eef8268f680498c2b78881a486625e264d2a1015 +size 841901 diff --git a/backup_S3_download_Amazon/02.predict-Test.ipynb b/backup_S3_download_Amazon/02.predict-Test.ipynb new file mode 100644 index 0000000..3d36ff8 --- /dev/null +++ b/backup_S3_download_Amazon/02.predict-Test.ipynb @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:78d28d677d39cc67e607bb418948b9e3e921351762d63b4737036fc02d1d361a +size 3375913 diff --git a/backup_S3_download_Amazon/02.predict_S3.ipynb b/backup_S3_download_Amazon/02.predict_S3.ipynb new file mode 100644 index 0000000..cd6a7e9 --- /dev/null +++ b/backup_S3_download_Amazon/02.predict_S3.ipynb @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:892cabc8da5cfcc0f9295ddb3ad32fda077027efa53e7b48e2f81965ad6ca202 +size 3361173 diff --git a/backup_S3_download_Amazon/03.compare-test.ipynb b/backup_S3_download_Amazon/03.compare-test.ipynb new file mode 100644 index 0000000..95923b4 --- /dev/null +++ b/backup_S3_download_Amazon/03.compare-test.ipynb @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fbab8f823ca6965dcbe43d9ce914f8912e3976833de1b205032eec48bfa83970 +size 1670930 diff --git a/backup_S3_download_Amazon/03.compare_S3.ipynb b/backup_S3_download_Amazon/03.compare_S3.ipynb new file mode 100644 index 0000000..56407d6 --- /dev/null +++ b/backup_S3_download_Amazon/03.compare_S3.ipynb @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7c33115ec7d6896758abf1eb8d07eba94ae15444c63f318e8adbd5d032df9a4f +size 1671094 diff --git a/backup_S3_download_Amazon/new_import_S3.py b/backup_S3_download_Amazon/new_import_S3.py new file mode 100644 index 0000000..6f1e52a --- /dev/null +++ b/backup_S3_download_Amazon/new_import_S3.py @@ -0,0 +1,354 @@ +import matplotlib.pyplot as plt + +# Common imports and settings +import os, sys +os.environ['USE_PYGEOS'] = '0' +from IPython.display import Markdown +import pandas as pd +pd.set_option("display.max_rows", None) +import xarray as xr + +# Datacube +import datacube +from datacube.utils.rio import configure_s3_access +from datacube.utils import masking +from datacube.utils.cog import write_cog +# https://github.com/GeoscienceAustralia/dea-notebooks/tree/develop/Tools +from dea_tools.plotting import display_map, rgb +from dea_tools.datahandling import mostcommon_crs + +# EASI defaults +easinotebooksrepo = '/home/jovyan/easi-notebooks' +if easinotebooksrepo not in sys.path: sys.path.append(easinotebooksrepo) +from easi_tools import EasiDefaults, xarray_object_size, notebook_utils, unset_cachingproxy +from easi_tools.load_s2l2a import load_s2l2a_with_offset +from dask.distributed import progress + +# Data tools +import numpy as np +from datetime import datetime + +# Datacube +from datacube.utils import masking # https://github.com/opendatacube/datacube-core/blob/develop/datacube/utils/masking.py +from odc.algo import enum_to_bool # https://github.com/opendatacube/odc-algo/blob/main/odc/algo/_masking.py +from odc.algo import xr_reproject # https://github.com/opendatacube/odc-algo/blob/main/odc/algo/_warp.py +from datacube.utils.geometry import GeoBox, box # https://github.com/opendatacube/datacube-core/blob/develop/datacube/utils/geometry/_base.py + +# Holoviews, Datashader and Bokeh +import hvplot.pandas +import hvplot.xarray +import holoviews as hv +import panel as pn +import colorcet as cc +import cartopy.crs as ccrs +from datashader import reductions +from holoviews import opts +from utils import load_data_geo +import rasterio +import rioxarray +# import geoviews as gv +# from holoviews.operation.datashader import rasterize +hv.extension('bokeh', logo=False) + +from deafrica_tools.bandindices import calculate_indices +from sklearn.ensemble import RandomForestClassifier +from sklearn.model_selection import train_test_split +from sklearn.metrics import accuracy_score, classification_report +from sklearn.preprocessing import LabelEncoder + +from sklearn.pipeline import Pipeline +from sklearn.ensemble import RandomForestClassifier +from sklearn.impute import SimpleImputer +from sklearn.preprocessing import StandardScaler +from sklearn.model_selection import GridSearchCV +from sklearn.model_selection import train_test_split +from sklearn.metrics import accuracy_score +from shapely.geometry import Point, Polygon +import geopandas as gpd +from pyproj import CRS +from matplotlib.colors import ListedColormap +from holoviews import opts +from datashader import reductions +from bokeh.models.tickers import FixedTicker +from rioxarray.merge import merge_arrays + +import joblib + + +def load_data(dc, date_range, longtitude_range, latitude_range): + product = 's2_l2a' + query = { + 'product': product, # Product name + 'x': longtitude_range, # "x" axis bounds + 'y': latitude_range, # "y" axis bounds + 'time': date_range, # Any parsable date strings + } + native_crs = notebook_utils.mostcommon_crs(dc, query) + print(f'Most common native CRS: {native_crs}') + measurements = [ 'red', 'nir', 'scl'] + + load_params = { + 'measurements': measurements, # Selected measurement or alias names + 'output_crs': native_crs, # Target EPSG code + 'resolution': (-10, 10), # Target resolution + 'group_by': 'solar_day', # Scene grouping + 'dask_chunks': {'x': 2048, 'y': 2048}, # Dask chunks + } + data = load_s2l2a_with_offset( + dc, + query | load_params # Combine the two dicts that contain our search and load parameters + ) + return data + + +def mask_clean(data): + flag_name = 'scl' + flag_desc = masking.describe_variable_flags(data[flag_name]) # Pandas dataframe + display(flag_desc) + display(flag_desc.loc['qa'].values[1]) + # Create a "data quality" Mask layer + flags_def = flag_desc.loc['qa'].values[1] + good_pixel_flags = [flags_def[str(i)] for i in [2, 4, 5, 6]] # To pass strings to enum_to_bool() + + # enum_to_bool calculates the pixel-wise "or" of each set of pixels given by good_pixel_flags + # 1 = good data + # 0 = "bad" data + good_pixel_mask = enum_to_bool(data[flag_name], good_pixel_flags) + data_layer_names = [x for x in data.data_vars if x != 'scl'] + # Apply good pixel mask to blue, green, red and nir. + result = data[data_layer_names].where(good_pixel_mask).persist() + return result + + +def fill_nan(ndvi, time_split): + rs = [] + for times in time_split: + tmp = ndvi.sel(time=times) + fill_ds = tmp.sel(time=times).bfill(dim='time') + fill_ds = fill_ds.sel(time=times).ffill(dim='time') + rs.append(fill_ds) + merged_ndvi = xr.concat([i for i in rs], dim="time") + fill_m = merged_ndvi.bfill(dim="time") + fill_m = fill_m.ffill(dim="time") + return fill_m + + +def load_train_data(train_path): + train = load_data_geo(train_path) + return train + + +def load_sen1(name_vh, name_vv): + dsvv = rioxarray.open_rasterio(name_vv) + dsvh = rioxarray.open_rasterio(name_vh) + return dsvh, dsvv + + +def get_data_sen1_and_sen2(train, average_ndvi, dsvh, dsvv): + loaded_datasets = {} + for idx, point in train.iterrows(): + key = f"point_{idx + 1}" + try: + ndvi_data = average_ndvi.sel(x=point.geometry.x, y=point.geometry.y, method='nearest').values + vh_data = dsvh.sel(x=point.geometry.x, y=point.geometry.y, method='nearest').values + vv_data = dsvv.sel(x=point.geometry.x, y=point.geometry.y, method='nearest').values + loaded_datasets[key] = { + "data": np.concatenate((ndvi_data, vh_data, vv_data)), + "label": point.HT_code + } + except Exception as e: + # loaded_datasets[key] = None + print(e) + return loaded_datasets + + +def split_train_data(train, label_mapping, datasets): + label_encoder = LabelEncoder() + + # Fit and transform the labels + labels = train.Hientrang.values + numeric_labels = label_encoder.fit_transform([label_mapping[label] for label in labels]) + X = [] + x_new = [] + lb_new = [] + for k, v in datasets.items(): + X.append(v) + for i in range(len(X)): + if X[i] is not None: + x_new.append(X[i]["data"]) + lb_new.append(numeric_labels[i]) + X_train, X_temp, y_train, y_temp= train_test_split(x_new, lb_new, test_size=0.4, random_state=42) + X_val, X_test, y_val, y_test = train_test_split(X_temp, y_temp, test_size=0.5, random_state=42) + return X_train, X_val, X_test, y_train, y_val, y_test + + +def train_with_rf(X_train, X_val, y_train, y_val): + # Takes 1-2 minutes to complete + + # Tạo RandomForestClassifier mặc định để sử dụng làm mô hình ban đầu trong pipeline + base_model = RandomForestClassifier(random_state=42, n_jobs=-1) + + # Tạo pipeline + pipeline = Pipeline([ + # ('imputer', SimpleImputer(strategy='mean')), + ('scaler', StandardScaler()), + ('classifier', base_model), + ]) + # Thiết lập các tham số bạn muốn tối ưu hóa + param_grid = { + 'classifier__n_estimators': [100, 300, 500, 700, 1000], + 'classifier__max_depth': [6, 8, 10, 15, 20], + 'classifier__criterion': ['gini', 'entropy'], + } + + # Sử dụng GridSearchCV để tìm bộ tham số tốt nhất + grid_search = GridSearchCV(pipeline, param_grid, cv=5, scoring='accuracy', n_jobs=-1) + grid_search.fit(X_train, y_train) + + # In ra bộ tham số tốt nhất + best_params = grid_search.best_params_ + print("Best Parameters:", best_params) + + # Dự đoán trên tập kiểm tra + y_pred = grid_search.predict(X_val) + + # Đánh giá kết quả + accuracy = accuracy_score(y_val, y_pred) + print(f"Accuracy: {round(accuracy, 2)*100} %") + return grid_search + + +def save_model(name_file, grid_search): + dir_save_model = "model_train" + if not os.path.exists(dir_save_model): + os.mkdir(dir_save_model) + joblib.dump(grid_search, os.path.join(dir_save_model, name_file)) + print("Done!") + + +def predict(model, data_crs, ndvi, vh, vv): + data_predict = [] + for i in range(ndvi.shape[1]): + ndvi_tmp = ndvi.isel(y=i).values + vh_data = vh.sel(y=ndvi.y.values[i], method='nearest').values + vv_data = vv.sel(y=ndvi.y.values[i], method='nearest').values + all_tmp = np.concatenate((ndvi_tmp, vh_data, vv_data), axis=0) + data_predict.extend(all_tmp.T) + y_pred = model.predict(data_predict) + final_label = y_pred.reshape(ndvi.y.shape[0], ndvi.x.shape[0]) + + final_xarray_save = xr.DataArray(final_label, dims=("y", "x")) + final_xarray_save = final_xarray_save.rio.write_crs(data_crs) + + x_values = ndvi.x.values + y_values = ndvi.y.values + + data_array = xr.DataArray(final_xarray_save, + coords={'x': x_values, 'y': y_values}, + dims=['y', 'x']) + data_array = data_array.rio.write_crs(ndvi.rio.crs) + return data_array + + +def cut_according_shp(thuanhoa_path, average_ndvi, data_array): + gdf = gpd.read_file(thuanhoa_path) + gdf = gdf.to_crs(average_ndvi.rio.crs) + polygon_coords = list(gdf.geometry.values[0].exterior.coords) + polygon_coordinates = [(x, y) for x, y in polygon_coords] + + geometries = [ + { + 'type': 'Polygon', + 'coordinates': [polygon_coordinates] + } + ] + region_result = data_array.rio.clip(geometries, data_array.rio.crs, drop=False) + region_result = region_result.where(region_result >= 0, float('nan')) + return region_result + + +def compare(KD_path, KetQuaPhanLoaiDat, CODE_MAP, HT_MAP): + gdf = gpd.read_file(KD_path, crs="EPSG:9209") + polygon = gdf.geometry.values + label = gdf.tenchu.values + ouput_image = rioxarray.open_rasterio(KetQuaPhanLoaiDat) + code_tq = HT_MAP["TQ"]["data"][0] + code_pnn = HT_MAP["PNN"]["data"][0] + result = {} + for key, values in HT_MAP.items(): + print(f"process {key}") + array_list = [] + for i in range(len(polygon)): + po = polygon[i] + lb = label[i] + code_lb = CODE_MAP.get(lb, code_tq) + try: + qr = ouput_image.rio.clip([po], "EPSG:9209") + if code_lb in values["data"]: + if code_lb == code_pnn: + qr = qr.where((qr != float(code_pnn)), np.nan) + # qr = qr.where((qr != 3.0), np.nan) + elif code_lb == code_tq: + qr = qr.where((qr != float(code_pnn)), np.nan) + qr = qr.where((qr != 3.0), np.nan) + else: + qr = qr.where(qr != float(code_lb), np.nan) + else: + qr.values[:, :, :] = np.nan + array_list.append(qr) + except Exception as e: + pass + result.update({key: array_list}) + return result + + +def save_result(result, HT_MAP): + # cmap = ListedColormap(colors) + save_path = "ThuanHoa/KetQua" + if not os.path.exists(save_path): + os.mkdir(save_path) + + for k, v in result.items(): + rs = merge_arrays(v, nodata = np.nan) + rs.rio.to_raster(f"{save_path}/{k}.tif") + print(f"save {save_path}/{k}.tif") + # img = rs.plot(cmap=cmap, add_colorbar=False) + # cbar = plt.colorbar(img) + # cbar.ax.set_yticklabels(labels) + # plt.title(f'{HT_MAP[k]["name"]}') + # plt.axis('off') + # plt.show() + + +def accuracy_test(test, data_array): + # cấu hình nhãn dữ liệu + label_mapping = { + "Lua tom": "0", + "Lua": "1", + "CHN": "2", + "CLN": "3", + "TS": "4", + "Song": "5", + "Dat xay dung": "6", + "Rung": "7" + } + + chk = [] + pred = [] + dd = [] + for idx, point in test.iterrows(): + label = point.LULC + predict = data_array.sel(x=point.geometry.x, y=point.geometry.y, method='nearest').values + pred.append(label_mapping[label]) + dd.append(str(predict)) + chk.append(predict == int(label_mapping[label])) + test["code"] = pred + test["dd"] = dd + test["check"] = chk + path = "ThuanHoa/TestAccuracy" + if not os.path.exists(path): + os.mkdir(path) + test.to_file(f"{path}/result.shp") + + percentage_true = np.mean(chk) * 100 + print(f"độ chính xác: {percentage_true:.2f}%") \ No newline at end of file diff --git a/backup_code_training/CSIROBoeingPhase5-Vietnam b/backup_code_training/CSIROBoeingPhase5-Vietnam new file mode 160000 index 0000000..8f0cb55 --- /dev/null +++ b/backup_code_training/CSIROBoeingPhase5-Vietnam @@ -0,0 +1 @@ +Subproject commit 8f0cb55cba309998800203d4a8982d9994be3a12 diff --git a/backup_ketquaphanloai/KetQuaPhanLoaiDatODC.tif b/backup_ketquaphanloai/KetQuaPhanLoaiDatODC.tif new file mode 100644 index 0000000..ae777ac --- /dev/null +++ b/backup_ketquaphanloai/KetQuaPhanLoaiDatODC.tif @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d54093e75b91dbe910210d53632c7ecdfc2c5114bfea4d4e63ed15c64eb2e1cc +size 3536032 From 0e8d85d972c47524779a9a84a691e09c374b8444 Mon Sep 17 00:00:00 2001 From: nkdiemgithub Date: Wed, 23 Oct 2024 09:06:09 +0000 Subject: [PATCH 6/6] update Sen1 --- 01.train_ODC.ipynb | 4 ++-- 02.predict_ODC.ipynb | 4 ++-- 03.compare_ODC.ipynb | 4 ++-- ThuanHoa/KetQua/NN.tif | 2 +- ThuanHoa/KetQua/PNN.tif | 2 +- ThuanHoa/KetQua/TQ.tif | 2 +- backup_ketquaphanloai/KetQuaPhanLoaiDatODC.tif | 2 +- backup_ketquaphanloai/NN.tif | 3 +++ backup_ketquaphanloai/PNN.tif | 3 +++ backup_ketquaphanloai/TQ.tif | 3 +++ backup_model_train/model.joblib | 3 +++ backup_model_train/model_new.joblib | 3 +++ backup_model_train/model_odc.joblib | 3 +++ new_import_ODC.py | 2 +- 14 files changed, 29 insertions(+), 11 deletions(-) create mode 100644 backup_ketquaphanloai/NN.tif create mode 100644 backup_ketquaphanloai/PNN.tif create mode 100644 backup_ketquaphanloai/TQ.tif create mode 100644 backup_model_train/model.joblib create mode 100644 backup_model_train/model_new.joblib create mode 100644 backup_model_train/model_odc.joblib diff --git a/01.train_ODC.ipynb b/01.train_ODC.ipynb index 469a8ff..13dcec7 100644 --- a/01.train_ODC.ipynb +++ b/01.train_ODC.ipynb @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5bb007666adcc60a068ce7619fc3d1ea787d99b9b4d9a5661930cae28c9b53b0 -size 920050 +oid sha256:549bf41a29b39a583c9ac1a2f08283b7494bcd521f8b6b5aff1fa7f5f0ca1cab +size 919988 diff --git a/02.predict_ODC.ipynb b/02.predict_ODC.ipynb index 4a757e3..5793814 100644 --- a/02.predict_ODC.ipynb +++ b/02.predict_ODC.ipynb @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6f3e2a42f7784986e07d299d7a8a7082e7eaea4e7e41581fcc3705f5b8b63b0c -size 5324835 +oid sha256:54efd837e5dcbfbd4bd8c2cfc44ff1b5eecbf03de302d41fab0ed47257bfa62c +size 4828615 diff --git a/03.compare_ODC.ipynb b/03.compare_ODC.ipynb index 18ed8cb..75394a0 100644 --- a/03.compare_ODC.ipynb +++ b/03.compare_ODC.ipynb @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8b0a43c123cc5751609a3213586c6a9f29ba23f6b6748e483a4053cbb92c97fe -size 2529593 +oid sha256:72d0f97e1e623ab49fe749054c8b2c3901ff0807b52667289108bbd0b8220e2a +size 2240648 diff --git a/ThuanHoa/KetQua/NN.tif b/ThuanHoa/KetQua/NN.tif index d67fb65..58c0eca 100644 --- a/ThuanHoa/KetQua/NN.tif +++ b/ThuanHoa/KetQua/NN.tif @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9494bac2e563ef67ea56cb045f0065c802c17e3563a393b62e18b7a304f1b7ac +oid sha256:520c3480efaafdf844c3bba3dd165a8e44f3318ab21209539c78201f18fd6312 size 3066028 diff --git a/ThuanHoa/KetQua/PNN.tif b/ThuanHoa/KetQua/PNN.tif index 5cdc23c..7b4b0c9 100644 --- a/ThuanHoa/KetQua/PNN.tif +++ b/ThuanHoa/KetQua/PNN.tif @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4d87050cb7280e8d59b95eec649e2dbcf4d5c6fc7d36bdd7be5706c7b4ce1cf0 +oid sha256:7d3bff20682fc510a9c41b5aa2b42e3ebef8098ed81e27b4436f9ae86f47b9a6 size 3066028 diff --git a/ThuanHoa/KetQua/TQ.tif b/ThuanHoa/KetQua/TQ.tif index b748964..8e1effd 100644 --- a/ThuanHoa/KetQua/TQ.tif +++ b/ThuanHoa/KetQua/TQ.tif @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a3939ced7162cf2998311f8476b5d9a5d9489ce2e2c3f9a290b086abe6f3a7bd +oid sha256:322f48d2d54ee921facfc3c0c44b320a86a90694e1779b683824264f9affa3fc size 3066028 diff --git a/backup_ketquaphanloai/KetQuaPhanLoaiDatODC.tif b/backup_ketquaphanloai/KetQuaPhanLoaiDatODC.tif index ae777ac..610efcf 100644 --- a/backup_ketquaphanloai/KetQuaPhanLoaiDatODC.tif +++ b/backup_ketquaphanloai/KetQuaPhanLoaiDatODC.tif @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d54093e75b91dbe910210d53632c7ecdfc2c5114bfea4d4e63ed15c64eb2e1cc +oid sha256:e71c696efbcb9e766eb1a666cc85b4f604992a65efc7258a46a46c7f81c596db size 3536032 diff --git a/backup_ketquaphanloai/NN.tif b/backup_ketquaphanloai/NN.tif new file mode 100644 index 0000000..58c0eca --- /dev/null +++ b/backup_ketquaphanloai/NN.tif @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:520c3480efaafdf844c3bba3dd165a8e44f3318ab21209539c78201f18fd6312 +size 3066028 diff --git a/backup_ketquaphanloai/PNN.tif b/backup_ketquaphanloai/PNN.tif new file mode 100644 index 0000000..7b4b0c9 --- /dev/null +++ b/backup_ketquaphanloai/PNN.tif @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7d3bff20682fc510a9c41b5aa2b42e3ebef8098ed81e27b4436f9ae86f47b9a6 +size 3066028 diff --git a/backup_ketquaphanloai/TQ.tif b/backup_ketquaphanloai/TQ.tif new file mode 100644 index 0000000..8e1effd --- /dev/null +++ b/backup_ketquaphanloai/TQ.tif @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:322f48d2d54ee921facfc3c0c44b320a86a90694e1779b683824264f9affa3fc +size 3066028 diff --git a/backup_model_train/model.joblib b/backup_model_train/model.joblib new file mode 100644 index 0000000..bcb5317 --- /dev/null +++ b/backup_model_train/model.joblib @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a446d333bf7f6d0cb7df014f12b0da3f7298f85bdfb4de06893173e90fbd5ccb +size 14112695 diff --git a/backup_model_train/model_new.joblib b/backup_model_train/model_new.joblib new file mode 100644 index 0000000..2e5c465 --- /dev/null +++ b/backup_model_train/model_new.joblib @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3eec576dffe1cc1393fdb584fb99d28db62abdd0977d41030aee5c4fa5377180 +size 11474743 diff --git a/backup_model_train/model_odc.joblib b/backup_model_train/model_odc.joblib new file mode 100644 index 0000000..68736c2 --- /dev/null +++ b/backup_model_train/model_odc.joblib @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cc125de4c172c98d9e50123bfcc2f8dd856e4ccd6bb04edd639badf090af2eef +size 5077735 diff --git a/new_import_ODC.py b/new_import_ODC.py index 46d77bd..0845f48 100644 --- a/new_import_ODC.py +++ b/new_import_ODC.py @@ -328,7 +328,7 @@ def save_result(result, HT_MAP): def load_data_sen1(dc, date_range, coordinates): longtitude_range, latitude_range = coordinates data_sen1 = dc.load( - product="sentinel1_grd_gamma0_20m", + product="sentinel1_grd_gamma0_10m", x=longtitude_range, y=latitude_range, time=date_range,