
    i_'              	          S SK Jr  S SK Jr  S SK Jr  S SKrS SKr\R                  R                  \R                  R                  \	5      5      r
\R                  R                  \
5        \R                  R                  S \R                  R                  \R                  R                  \
S5      5      5        S SKrS SKrS SKJr  S SKJrJr  S SKJr  S SKJr  S S	KJr  S S
KJr  S SKJr  S SK J!r!  S SK"J#r#  S SKJ$r$  S SK%J&r&  S SK'J(r(  \RR                  " 5         S r*S r+\,S:X  a=  \&RZ                  " SS9u  r.r/r0r1S\.S   ;   a  \.S   S   OSr2\#" \25        \*" \.\/\0\1\25        gg)    )absolute_import)division)print_functionNz..)build_dataloaderset_signal_handlers)build_model)
build_loss)build_optimizer)build_post_process)build_metric)
load_model)set_seed)apply_to_staticc                    U S   S   (       a  [         R                  " 5         U S   n[        5         [        U SXU5      n[	        U5      S:X  a  UR                  S5        g U S   (       a  [        U SXU5      nOS n[	        U5      n[        U S   U5      n	[        U	S5      (       Ga  [	        [        U	S5      5      n
U S	   S
   S;   a  U S	   S    H  nU S	   S   U   S   S   S:X  a  U S   S   S:X  a  U
S-
  n
U S   S   S:X  a  U
S-
  n
0 nXS'   [        U S   S   S   R                  5       5      S   S:X  a  U
S-   U S   S   S   S   S'   U
S-   US'   O%[        S U S   S    5       5      (       a  U
S-   US'   UU S	   S   U   S   S'   M  U
U S	   S   U   S   S'   M     OU S	   S   S   S:X  a  U S   S   S:X  a  U
S-
  n
U S   S   S:X  a  U
S-
  n
0 nXS'   [        U S   S   S   R                  5       5      S   S :X  a@  U S   S   S   S    c  SU
S-   0U S   S   S   S '   OU
S-   U S   S   S   S    S'   U
S-   US'   O1[        U S   S   S   R                  5       5      S   S!:X  a  U
S-   US'   XS	   S   S'   O
XS	   S   S'   U S   S   S:X  a  U
S-
  U S   S'   [        U S	   5      nU S   R                  S"S#5      nU(       ak  U S   R                  S$S#5      (       a  [        R                  " U5        O)[         R"                  R$                  R'                  U5      nUR)                  S%5        [+        XU5      n[-        U S   5      n[/        U S&   U S   S'   [	        U5      US(9u  nn[1        U S)   5      nUR)                  S*R3                  [	        U5      5      5        Ub)  UR)                  S+R3                  [	        U5      5      5        U S   R                  S,S#5      nU S   R                  S-S.5      nU S   R                  S/S05      nU S   R                  S1/ 5      nU S   R                  S2/ 5      n[4        R6                  R9                  [4        R6                  R;                  U S   S3   S45      5      (       a;   [4        R<                  " [4        R6                  R;                  U S   S3   S45      5        U(       a  0 n[         R>                  " 5       (       a  URA                  SSS5.5        [         RB                  " U5        U S   R                  S6S75      nU S   R                  S8S#5      n[         RD                  RG                  UUS99nUS.:X  a$  [         RD                  RI                  UUUS:US;9u  nnOS n[K        XUU S	   S<   5      nU S   S   (       a*  U S   R                  S=S#5      n[         RL                  " UUS>9n[N        RP                  " U UUUUUUUU	UUUUUUUUUU5        g !    GN:= f)?NGlobaldistributedTrainr   zNo Images in train dataset, please ensure
	1. The images num in the train label_file_list should be larger than or equal with batch size.
	2. The annotation file and path in the configuration file are provided normally.EvalPostProcess	characterArchitecture	algorithm)DistillationModelsHeadname	MultiHeadDistillationSARLabelDecode   DistillationNRTRLabelDecode   CTCLabelDecodeLossloss_config_listDistillationSARLoss   ignore_indexSARLabelDecodec              3   ,   #    U  H
  nS U;   v   M     g7f)DistillationNRTRLossN ).0ds     U/var/www/html/banglarbhumi/venv/lib/python3.13/site-packages/paddleocr/tools/train.py	<genexpr>main.<locals>.<genexpr>c   s      !CA /!3!Cs   NRTRLabelDecodeout_channels_listout_channelsSARLossNRTRLossuse_sync_bnFuse_npuconvert_sync_batchnorm	Optimizer	epoch_num)epochsstep_each_epochmodelMetricztrain dataloader has {} iterszvalid dataloader has {} itersuse_amp	amp_levelO2	amp_dtypefloat16amp_custom_black_listamp_custom_white_listsave_model_dirztrain_result.json)(FLAGS_cudnn_batchnorm_spatial_persistent*FLAGS_gemm_use_half_precision_compute_type
scale_lossg      ?use_dynamic_loss_scaling)init_loss_scalingrK   T)models
optimizerslevelmaster_weightdtype
model_typefind_unused_parameters)rS   ))distinit_parallel_envr   r   lenerrorr   hasattrgetattrlistkeysanyr   getnaive_sync_bnconvert_syncbnpaddlennSyncBatchNormr9   infor   r	   r
   r   formatospathexistsjoinremoveis_compiled_with_cudaupdate	set_flagsamp
GradScalerdecorater   DataParallelprogramtrain)configdevicelogger
vdl_writerseedglobal_configtrain_dataloadervalid_dataloaderstep_pre_epochpost_process_classchar_numkeyr3   r>   r7   
loss_class	optimizerlr_scheduler
eval_classr@   rA   rC   rE   rF   AMP_RELATED_FLAGS_SETTINGrJ   rK   scalerpre_best_model_dictrS   s                                 r/   mainr   .   sD   h& 8$M 'N
!c	

 	f~+FFFDQ)*N ,F=,A=Q !;//w1;?@.!+. 3
 
 n-h7>*84S9&A&I[Xm,V48TT#+a<m,V48UU#+a<(*%:B&67 VF^,>?CHHJKAN01
 &\ v'9:2>?TU* ?Gl)*:; !'0B!C   @H!|)*;< * >*84S9&A+ ! >*84S9&A&; 8@ N#F+F3{Bm$V,0@@#a<m$V,0AA#a< "2:./F6N#56q9>>@A!D	Q&>"45a8CK&1HF6N#56q9)D
 !1 6N#56q9)D^T 7?l!"23fVn%78;@@BCAF*T7?!|!"34BS>"6*+>?=E>"6*>:- (,<<-5\F6N>*~./E"&&}e<K(	511((/II++BB5IE,-E62E F6N+J .{h,,-	I| fX./J
KK/66s;K7LMN#3::3?O;PQRX""9e4Gx $$[$7Ix $$[)<I"8,001H"M"8,001H"M	ww~~
VH%&679LM 	IIVH-.>?ATU
 $&!''))%,,@ABC 	23H%)),<
#)(#3#7#7&$
  &&(%= ' 
 %zz22$"  3  E9  %y&"8"F h&!'!1!5!56NPU!V##*@
 MM'U	s   :W6 6W;c           
         [        U SX5      nSS KnUR                  5       nSn U" 5        Hd  nUS-  nUS-  S:X  d  M  UR                  5       U-
  nUR                  5       nUR                  SR                  U[	        US   5      U5      5        Mf     UR                  SR                  U5      5        g ! [
         a  n	UR                  U	5         S n	A	NAS n	A	ff = f)Nr   r   r'   zreader: {}, {}, {}zfinish reader: {}, Success!)r   timerc   rd   rV   	Exception)
rs   rt   ru   loaderr   	starttimecountdata
batch_timees
             r/   test_readerr      s    fgv>F		IE
HDQJEqyA~!YY[94
 IIK	(//s47|ZP  KK-44U;<  As   B5 AB5 5
C?CC__main__T)is_trainrw   r   i   )3
__future__r   r   r   re   sysrf   dirnameabspath__file____dir__appendinsertrh   yamlr`   paddle.distributedr   rT   
ppocr.datar   r   ppocr.modeling.architecturesr   ppocr.lossesr	   ppocr.optimizerr
   ppocr.postprocessr   ppocr.metricsr   ppocr.utils.save_loadr   ppocr.utils.utilityr   r   tools.programrq   tools.naive_sync_bnr^   get_world_sizer   r   __name__
preprocessrs   rt   ru   rv   rw   r,       r/   <module>r      s    '  % 	 

''//"''//(3
4   277??277<<#>? @   ! < 4 # + 0 & , ( 8  +    EP=( z)0););T)J&FFFJ'-1A'A6(F#tDTNT2	 r   