Files
remote-sensing/__pycache__/api_server.cpython-310.pyc
T

142 lines
17 KiB
Plaintext
Raw Normal View History

o
2025-12-14 18:26:25 +07:00
¸ž>i€oã@dZddlmZmZmZddlmZddlmZddl m
Z
m Z ddl m
Z
2025-12-14 18:26:25 +07:00
ddlmZmZddlZddlZddlZdd lmZdd
lmZddlZed d d
ZejedgddgdgdddddddddœaddddddddœaGddde
ƒZGddde
2025-12-14 18:26:25 +07:00
ƒZGddde
ƒZejde
2025-12-14 18:26:25 +07:00
dddƒZ e d¡d d!„ƒZ!ejd"ed#d$d%„ƒZ"e #d&¡d'ed(efd)d*„ƒZ$e #d+¡d,d-„ƒZ%e #d.¡d/d0„ƒZ&e d1¡d2d3„ƒZ'e d4¡d5d6„ƒZ(e #d7¡d'ed(efd8d9„ƒZ)e d:¡d;d<„ƒZ*d'efd=d>„Z+d?e,fd@dA„Z-d?e,fdBdC„Z.d'efdDdE„Z/e dF¡dGdH„ƒZ0e dI¡dJe,fdKdL„ƒZ1e2dMkrVe3dNƒe3dOƒe3dNƒe3dPƒe3dQƒe3dRƒe3dSƒe3dTƒe3dUƒej4edVdWdXdYdSdS)Zu}
API Server for Land Classification Model Training
Cho phép chá»n dữ liệu và cấu hình training qua giao diện web
é)ÚFastAPIÚBackgroundTasksÚ
HTTPException)ÚCORSMiddleware)Ú StaticFiles)Ú HTMLResponseÚ FileResponse)Ú BaseModel)ÚOptionalÚListN©Údatetime)ÚPathz Land Classification Training APIz1.0.0)ÚtitleÚversionÚ*T)Z
2025-12-14 18:26:25 +07:00
allow_originsZallow_credentialsZ
allow_methodsZ
allow_headersFÚ)Ú is_trainingÚprogressÚerrorÚresultÚ
start_timeÚend_timeÚcancel_requested©Ú
is_predictingrrrÚ output_filerrc@eZdZUdZdZeed<dZeed<dZeed<dZ eed <d
2025-12-14 18:26:25 +07:00
Z
e ed <d Z e ed
<dZ
eed<dZeed<dZeed<dZe ed<dZeed<dZeed<dZeed<dZeed<dZeed<dZe ed<d S)!ÚTrainingConfiguCấu hình trainingçffffffZ@Úmin_lonçš™™™™™"@Úmin_latçÍÌÌÌÌŒZ@Úmax_lonçš™™™™™#@Úmax_latú
2023-03-01Ú
start_dateú
2023-05-31Úend_dateé Ú
max_sceneséÚ cloud_coveréÚ
resolutionZxgboostÚ
model_typeédÚ n_estimatorsÚ max_depthgš™™™™™¹?Ú
learning_rateTÚuse_gpuÚ use_cachez1train/ST_training data_updated_1130points_new.shpÚtraining_shapefileN)Ú__name__Ú
__module__Ú __qualname__Ú__doc__rÚfloatÚ__annotations__r!r#r%r'Ústrr)r+Úintr-r/r0r2r3r4r5Úboolr6r7©rArAú1/home/x79/CSIROBoeingPhase5-Vietnam/api_server.pyr5s$
2025-12-14 18:26:25 +07:00
               rc@s†eZdZUdZeed<dZeed<dZeed<dZ eed<d Z
eed
<d Z eed <d
Z eed<dZ
eed<dZeed<dZeed<dS)ÚPredictionConfiguCấu hình dá»± Ä‘oánÚmodel_filenamerrr r!r"r#r$r%r&r'r(r)r*r+r,r-r.r/N)r8r9r:r;r>r=rr<r!r#r%r'r)r+r?r-r/rArArArBrCTs
        rCc@sReZdZUdZeed<eed<eeed<eeed<eeed<eeed<dS) ÚTrainingStatusuTrạng thái trainingrrrrrrN) r8r9r:r;r@r=r>r
ÚdictrArArArBrEis
   rEú/)Zresponse_classcÃs(ttƒjd}| ¡rt|ƒStdƒS)uServe giao diện webztraining_interface.htmluV
<html>
2025-12-14 18:26:25 +07:00
<head><title>Training Interface</title></head>
<body>
<h1>Land Classification Training API</h1>
<p>API Documentation: <a href="/docs">/docs</a></p>
2025-12-14 18:26:25 +07:00
<p>Training Interface: Tạo file training_interface.html</p>
</body>
</html>
)rÚ__file__ÚparentÚexistsrr)Z html_filerArArBÚrootss
rKz/api/config/presetscÃs^ddddddddd d
d d œ d
œdddddddd
d
dd œ d
œddddddddddd œ d
œgiS)u#Lấy các preset cấu hình sẵnZpresetsu%PC - Nhá» (3 tháng, 20m, 12 scenes)rr r"r$r&r(r*r,r.) rr!r#r%r'r)r+r-r/)ÚnameÚconfigu/Server - Trung bình (6 tháng, 10m, 30 scenes)g`Z@gffffff"@gš™™™™™Z@g$@z
2023-01-01z
2023-06-30é
u%Full - Lớn (1 năm, 10m, 60 scenes)z
2022-09-01z
2023-10-01é<é2rArArArArBÚ get_presets†s,ýþ ýþ ýþïÿrQz/api/training/status)Zresponse_modelcÃótS)u!Kiểm tra trạng thái training©Útraining_statusrArArArBÚget_training_status§órUz/api/training/startrMÚbackground_taskscÃsFtdr tdddddddt ¡ ¡ddœa| t|¡d td
œS) u.Bắt đầu training vá»›i config đã chá»nréu'Training Ä‘ang chạy, vui lòng đợi©Ú status_codeZdetailTuÄang khởi tạo...N)rrrrrruTraining đã bắt đầu©ÚmessageÚstatus)rTrr
ÚnowÚ isoformatÚadd_taskÚ run_training©rMrWrArArBÚstart_training­s 
ú
rcz/api/training/stopcÃs*tds ddiSdtd<dtd<ddiS) u$Dừng training (nếu Ä‘ang chạy)rr\u%Không có training nào Ä‘ang chạyTruÄang há»§y training...ruÄang dừng training...rSrArArArBÚ
stop_trainingÅs rdz/api/cache/clearcÃslddl}tdƒ}| ¡sdddœSt| d¡ƒ}t|ƒ}|D]
2025-12-14 18:26:25 +07:00
}z| ¡WqYqd|d|dœS) uXóa cache datasetr
dataset_cacheuKhông có cache để xóa)r\Zdeletedú*.joblibu
Äã xóa z file cache)ÚshutilrrJÚlistÚglobÚlenÚunlink)rgÚ cache_dirÚ cache_filesÚcountÚ
cache_filerArArBÚ clear_cacheÔs
2025-12-14 18:26:25 +07:00
 rpz/api/cache/infoc Ãtdƒ}| ¡sdgddœSg}d}| d¡D]´}| ¡j}||7}i}zst |¡}t|tƒr—|  dg¡|  dd¡|  d d
¡t
|  d g¡ƒ|  d d¡d
2025-12-14 18:26:25 +07:00
œ}|drk|d  d¡}t
|ƒdkrk|d|d<|d|d<|dr—t
2025-12-14 18:26:25 +07:00
|dƒdkr—|dd|d<|dd|d<|dd|d<|dd|d<Wnt }z
t
d|ƒWYd}~nd}~ww| |jt|dddƒt | ¡j¡ ¡|dœ¡q|jdddd d|t
|ƒt|dddƒd!œS)"u7Lấy thông tin vá» cache vá»›i metadata đầy đủreFr)rJÚfilesÚ
total_size_mbrfÚbboxÚ
2025-12-14 18:26:25 +07:00
time_rangerr/r.ÚfeaturesÚ timestamp)rsrtr/Z n_samplesÚcreatedrGér'ér)érr!r#ér%zError loading cache metadata: Né)ÚfilenameÚsize_mbÚmodifiedÚmetadatacSó|dS)NrrA©ÚxrArArBÚ<lambda>óz get_cache_info.<locals>.<lambda>T©ÚkeyÚreverse)rJrqrnrr)rrJriÚstatÚst_sizeÚjoblibÚloadÚ
isinstancerFÚgetrjÚsplitÚ ExceptionÚprintÚappendrLÚroundr
Ú
fromtimestampÚst_mtimer_Úsort) rlrmZ
total_sizeroÚsizer€Z cached_dataZ
time_partsÚerArArBÚget_cache_infoës\ 

2025-12-14 18:26:25 +07:00





2025-12-14 18:26:25 +07:00
û   ÿ
üür™z/api/models/listc Ãtdƒ}| ¡s
dgiSg}| d¡D]C}| d¡}i}| ¡r:t|ƒ
2025-12-14 18:26:25 +07:00
}t |¡}Wdƒn1s5wY| |jt  
|  ¡j ¡ 
2025-12-14 18:26:25 +07:00
¡t|  ¡jdddƒ|dœ¡q|jd d
d d d|iS)
2025-12-14 18:26:25 +07:00
u Liệt kê các model đã trainÚ model_trainÚmodelsrfz.jsonNr|rx)r}rwr~ÚinfocSr©NrwrArrArArBr„?r…zlist_models.<locals>.<lambda>Tr†)rrJriÚ with_suffixÚopenÚjsonrŒrrLr
r”r‰r•r_r“r)Z model_dirrZ
model_fileZ info_filerœÚfrArArBÚ list_models(s(
2025-12-14 18:26:25 +07:00

 ÿ
üz/api/prediction/startcÃsHtdr tddddddddt ¡ ¡ddœa| t|¡d td
œS) uBắt đầu dá»± Ä‘oánrrXu(Äang có dá»± Ä‘oán khác Ä‘ang chạyrYTuÄang khởi động...NruÄã bắt đầu dá»± Ä‘oánr[)Úprediction_statusrr
r^r_r`Úrun_predictionrbrArArBÚstart_predictionCs 
ù
z/api/prediction/statuscÃrR)u$Kiểm tra trạng thái dá»± Ä‘oán)rArArArBÚget_prediction_status\rVcÃsNzmdtd<dtd<ddlm}dtd<dd „}||j|j|j|jg|jd
|j|j |j
|j |j |j
2025-12-14 18:26:25 +07:00
|j|j|j|j|jd d |d
}t dd¡rXdtd<dtd<dtd<n dtd<dtd<|td<t ¡ ¡td<WdSt}z,dtd<t|ƒtd<dt|ƒtd<t ¡ ¡td<ddl}t| ¡ƒWYd}~dSd}~ww)uChạy training processFrõÄang import thư viện...rr)Ú train_modelu$Äang load dữ liệu Sentinel-2...cSs t dd¡S)NrF)rTrArArArBÚ
should_cancelps z#run_training.<locals>.should_cancelrGcSst|ƒS)N)Úupdate_progress)ÚmsgrArArBr„r…zrun_training.<locals>.<lambda>)rsrtr+r-r/r7r0r2r3r4r5r6Zstatus_callbackZ cancel_checkruÄã há»§y trainingzTraining cancelled by userrõ
Hoàn thành!rrõLá»—i: N)rTZ train_moduler¨rr!r#r%r'r)r+r-r/r7r0r2r3r4r5r6r
r^r_rr>Ú tracebackrÚ
2025-12-14 18:26:25 +07:00
format_exc)rMrr˜rArArBrabsP ò 
 úrar\cCó|td<td|ƒdS)uCập nhật progress messagerz [PROGRESS] N)rTr©r\rArArB˜ócC)u(Cập nhật prediction progress messagerz[PREDICTION PROGRESS] N)rrArArBÚupdate_prediction_progressŸc=
ÃzÀdtd<ddl}ddl}ddlm}ddl}ddlm}dtd<tdƒ|j}|  ¡s6t
d|jƒt   |¡}t
|tƒrK| d ¡}| d
¡} n|}d} t|d ƒoYd |jjv}
|
rrd
td<zddl} Wn tyqtdƒwdtd<ddl} ddl}
ddlm }| jjd|
2025-12-14 18:26:25 +07:00
jd}|j|j|j|jg}|jd|j }dtd<|j!dg||dd|j"iid}t#| ƒ}|s¿t%dƒ|d|j&…}dt'|ƒdtd<|||ddddœd|j(d }d!td<|d" )d#¡}|d$ )d#¡}||||d%}d&|vr|d&}|d'k|d(kB|d)kB|d*kB}| *|¡}d+td<|j+d,d-j,d,d-}d.td<|j-d/d0 }| }d1td<|j!d2g||d3}t#| ƒ}|r¦|d|j&…}dt'|ƒd4td<|||ddddœd5|j(d }d6|vrŸd7|vrŸ|d6 )d#¡}|d7 )d#¡} d8td<|j-d/d0  }!| j-d/d0  }"d9}#n
d:td<d;}#nd<td<d;}#d=td<t'|j0ƒ}$t'|j1ƒ}%t'|j2ƒ}&|%|&}'g}(t3|$ƒD]})|j4|)d0j5 }*|( 7|*¡qÉ| 8|(¡}+|#r=t'|!j0ƒ},t'|"j0ƒ}-t3t9|,|$ƒƒD] })|!j4|)d0j5 }.t'|.ƒ|'kr | :|.|'¡}.| 8|+|.g¡}+qôt3t9|-|$ƒƒD] })|"j4|)d0j5 }/t'|/ƒ|'kr4| :|/|'¡}/| 8|+|/g¡}+q|j;|+d>d?}+z”|
rL|j<}0n(t|d@ƒrV|j=}0nt|dAƒrbt'|j>ƒ}0nz|  }0Wn |+jAd}0YdB|0dC|+jAddDtd<|+jAd|0kr£dE|+jAddF|0dGtd<|+ddd|0…f}+n4|+jAd|0kr×dH|+jAddI|0dGtd<|0|+jAd}1| B|+dddJdfd|1f¡}2| 8|+|2g¡}+WntC}3zdK|+jAddDtd<WYd}3~3nd}3~3wwdL|+jAddDtd<|
r | D|+¡}4n| D|+¡}4| dur!z|  E|4¡}4WnY|%|&f}5|4 F|5¡}6dMtd<|jG|6|j1|j2dNœdOdPgdQdR}7tdSƒ}8|8jHd9dT|  JdU¡}9|8dV|9dW}:dXtd<t|dYƒrs|jKjLdurs|7jKjM|jKjLd9dZn|7jKjMd[d9dZ|7jKjNtO|:ƒd\d]| P|6¡};|;| Q|;¡ };d;td^<d_td<tO|:ƒtd`<tO|:ƒt#|5ƒ|;|||+jAd|$|#|jdaœ tdb<|  tdc<WdStC}3z,d;td^<tO|3ƒtdd<detO|3ƒtd<|  tdc<ddlT}<tU|< ƒWYd}3~3dSd}3~3ww)fuOChạy prediction process - Ãp dụng phương pháp từ 02.predict_ODC.ipynbr§rrNr uÄang load model...ršuModel không tồn tại: ÚmodelÚ
label_encoderÚ __class__ZCNNu!Phát hiện PyTorch CNN model...zBPyTorch is required for CNN prediction. Install: pip install torchu1Äang kết nối Microsoft Planetary Computer...)z3https://planetarycomputer.microsoft.com/api/stac/v1)ÚmodifierrGu%Äang tải dữ liệu Sentinel-2...zsentinel-2-l2azeo:cloud_coverÚlt)Ú collectionsrsr
ÚqueryuLKhông tìm thấy dữ liệu Sentinel-2 cho khu vá»±c và thá»i gian nàyuÄang xá»­ lý z scenes Sentinel-2...ryi)ÚtimerƒÚyZ solar_day)rsÚchunksÚgroupbyr/u+Äang tính toán NDVI và xá»­ lý mây...ZB08Zfloat32ZB04g:Œ0âŽyE>ZSCLr{éé rNu)Äang Ä‘iá»n giá trị bị che mây...r»)Údimu+Äang tính trung bình NDVI theo tháng...Z1ME)u-Äang tải dữ liệu Sentinel-1 (Radar)...zsentinel-1-rtc)rsr
z scenes Sentinel-1...zsat:absolute_orbitÚvhÚvvu,Äang tính trung bình VH/VV theo tháng...Tu:Không tìm thấy bands VH/VV, tiếp tục vá»›i NDVI...Fu=Không có dữ liệu Sentinel-1, tiếp tục vá»›i NDVI...u.Äang chuẩn bị features cho dá»± Ä‘oán...g)ÚnanÚn_features_in_Úfeature_names_in_u Model cần u features, Ä‘ang có z features...uCắt bá»›t features từ u xuống z...uThêm features từ u lên éÿÿÿÿuHKhông thể xác định số features cá»§a model, tiếp tục vá»›i uÄang dá»± Ä‘oán vá»›i u'Äang tạo bản đồ phân loại...)Zclassification)ZcoordsÚdimsrLÚ predictions©Úexist_okz
%Y%m%d_%H%M%SZ prediction_z.tifu!Äang lưu kết quả GeoTIFF...Úrio)Zinplacez EPSG:4326ZGTiff)Zdriverrr) rÚshapeÚunique_classesrsrtÚ
2025-12-14 18:26:25 +07:00
n_featuresÚ n_times_ndviZ
used_radarZ
model_usedrrrr­)Wr£ZxarrayZnumpyr
2025-12-14 18:26:25 +07:00
Ú rioxarrayZ
dask.arrayÚarrayrrDrJÚFileNotFoundErrorrrrFÚhasattrr¶r8ÚtorchÚ ImportErrorÚ
pystac_clientÚplanetary_computerZodc.stacÚClientrŸZ sign_inplacerr!r#r%r'r)Úsearchr-rhÚitemsÚ