
    9i                     d    S SK Jr  S SKrS SKrS r      SS jrS\\R                     4S jrg)    )ListNc                   ^ ^^ [        T 5      S:X  a  0 $ UUU 4S jn[        T 5      0 S.nT S   R                  SS5      b  U" S5      US   S'   T S   R                  SS5      b8  [        R                  " T  Vs/ s H  oUR                  S5      PM     sn5      US'   T S   R                  S	S5      b  U" S	5      US	'   [        R
                  " T  Vs/ s H2  oUS	   R                  T5      R                  5       R                  5       PM4     sn5      nUR                  5       R                  5       nXtS
'   T S   R                  SS5      b  U" S5      US   S'   T S   R                  SS5      b.  [        R                  " T  Vs/ s H  oS   PM	     snSS9US   S'   T S   R                  SS5      b/  [        R                  " T  Vs/ s H  oS   PM	     sn5      US   S'   T S   R                  SS5      b/  [        R                  " T  Vs/ s H  oS   PM	     sn5      US   S'   T S   R                  SS5      b,  [        R                  " T  Vs/ s H  oS   PM	     sn5      US'   T S   R                  SS5      b+  [        R                  " T  Vs/ s H  oUS   PM	     snSS9US'   T S   R                  SS5      b,  [        R                  " T  Vs/ s H  oUS   PM	     sn5      US'   T S   R                  SS5      b:  [        R                  " T  Vs/ s H  oUS   PM	     sn5      R                  5       US'   T S   R                  SS5      b  U" S5      US'   T S   R                  SS5      b:  [        R                  " T  Vs/ s H  oUS   R                  5       PM     sn5      US'   T S   R                  SS5      b  U" S5      US'   T S   R                  S S5      b+  [        R                  " T  Vs/ s H  oUS    PM	     snSS9US!'   T S   R                  S"S5      b+  [        R                  " T  Vs/ s H  oUS"   PM	     snSS9US#'   T S   R                  S$S5      b+  [        R                  " T  Vs/ s H  oUS$   PM	     snSS9US%'   T S   R                  S&S5      b  T  Vs/ s H  oUS&   PM	     snUS''   T S   R                  S(S5      bo  [        T  Vs/ s H  oUS(   PM	     sn5      US   S('   [        R                  " T  Vs/ s H  oUS(   R                  S5      PM     sn[        R                  S)9US   S*'   T S   R                  S+S5      b/  [        R                  " T  Vs/ s H  oUS+   PM	     sn5      US   S,'   T S   R                  S-S5      b=  U" S-5      US   S.'   [        R                  " T  Vs/ s H  oUS/   PM	     sn5      US   S0'   T S   R                  S1S5      bS  U" S15      US1'   [        R                  " T  Vs/ s H  oUS1   R                  S5      PM     sn[        R                  S)9US2'   T S   R                  S3S5      b  T  Vs/ s H  oS3   PM	     n	nXS3'   T S   R                  S4S5      b  T  Vs/ s H  oS4   PM	     n
nXS4'   T S   R                  S5S5      b  U" S55      nXS   S5'   T S   R                  S6S5      b  U" S65      nXS   S6'   U$ s  snf s  snf s  snf s  snf s  snf s  snf s  snf s  snf s  snf s  snf s  snf s  snf s  snf s  snf s  snf s  snf s  snf s  snf s  snf s  snf s  snf )7z%
convert the sample to batch tensor.
r   c                 J   > [        T Vs/ s H  oU    PM	     snTTS9$ s  snf )N)eos_idx)collate_tokens)keysr   pad_idxsampless     j/var/www/html/land-doc-ocr/venv/lib/python3.13/site-packages/modelscope/preprocessors/ofa/utils/collate.pymergecollate_fn.<locals>.merge   s,    w7w!vw7%&-/ 	/7s    )
nsentences	net_inputsourceNr   	input_idsidtargetntokensprev_output_tokensdecoder_input_idspatch_image)dimpatch_images
patch_maskpatch_masks	code_mask
code_masks
code_imagecode_imagesconfref_dictlabellabelsconstraint_maskconstraint_masksdecoder_promptdecoder_promptsprefix_tokenprefix_tokensw_resize_ratiow_resize_ratiosh_resize_ratioh_resize_ratiosregion_coordregion_coordssampler   fbank)dtypefbank_length
fbank_maskfbank_masks
phone_itemphone_items
phone_maskphone_masksphone_targetphone_length	db_struct
mask_ratioseg_col_tokensseg_row_tokens)lengetnparraytorch
LongTensornelongsumitemstackcattolist_collate_framestensorsize)r   r
   r   r   batchr	   tgt_lengthsr   r1   r=   r>   r?   r@   s   ```          r   
collate_fnrS   	   s#    7|q	/ 'lE qz~~h%1*//k;'qz~~dD!-hhW=WdW=>dqz~~h%1/h&&;BC7ax[^^G$))+//17CE//#((*"iqz~~*D1=278L2Mk./qz~~mT*6-2[[189vM"9q.Bk>*qz~~lD)5,1II078fL!8-:k=) qz~~k4(4+099/67wVK w7,9k<(qz~~lD)5$yy078fL!8 :m qz~~fd#/		g">gV9g">AFfqz~~j$'3HHW%EW
mW%EFjqz~~gt$0((#@1gJ#@AHHJhqz~~'.:$)*;$< !qz~~&-9#%883:;7a '')7;$= qz~~nd+7!&~!6oqz~~&-9#(;;*12'Q '2$; qz~~&-9#(;;*12'Q '2$; qz~~nd+7!&(/01~0a"9oqz~~h%1189AhK9iqz~~gt$0&5!()AwZ)'+k7#-2\\)01AwZ__Q1.Ek>*qz~~lD)5,1II&-.g|_g.-0k=)qz~~lD)5,1,,?k=),1II&-.g|_g.-0k=)qz~~nd+7 %n 5n %0781~##A&8

!Ln qz~~k4(47>?wVK(w	?&kqz~~lD)59@Av\*
A(lqz~~&-9/0/=k+,qz~~&-9/0/=k+,La  > D : 9 8 9 #?%E#@
 < 3 3 19 *1 / / 9 @ Bs~   9[,9[1[6[;\ \\
\\\7\8\#9\(*\-\2\7-\< ]]]]c           	        ^^ [        S U  5       5      nUc  UO
[        X5      nUS:w  a  X-  S:w  a  [        US-
  U-  S-   U-  5      nUU4S jn	U S   R                  5       S:X  a.  U S   R                  [	        U 5      U5      R                  U5      n
OeU S   R                  5       S:X  aH  TSL d   eU S   R                  [	        U 5      UU S   R                  S5      5      R                  U5      n
O[        e[        U 5       H5  u  pU	" X(       a  X   U[	        U5      -
  S OX   S[	        U5       5        M7     U
$ )	z5Convert a list of 1d tensors into a padded 2d tensor.c              3   B   #    U  H  oR                  S 5      v   M     g7fr   NrP   ).0vs     r   	<genexpr>!collate_tokens.<locals>.<genexpr>z   s     )&Qvvayy&   N   r   g?c                    > UR                  5       U R                  5       :X  d   eT(       a  Tc	  U S   US'   OTUS'   U S S USS & g UR                  U 5        g )Nr   r]   )numelcopy_)srcdstr   move_eos_to_beginnings     r   copy_tensor#collate_tokens.<locals>.copy_tensor   sW    yy{ciik))) RA A#2hCGIIcN       F)	maxintr   newrA   fill_rP   NotImplementedError	enumerate)valuesr
   r   left_padrd   pad_to_lengthpad_to_multiple
pad_to_bszrP   re   resirY   s     ` `        r   r   r   o   s0    )&))D (4c$.FD! 6! ;TCZO3a7?JK
 ay}}!QimmCK.44W=	A	$---QimmCK"1INN1-//4uW~ 	 "!&!AsvdSVmn-svgs1vO "Jrg   framesc                     [        S U  5       5      nU S   R                  [        U 5      XS   R                  S5      45      n[	        U 5       H  u  p4XBUSUR                  S5      24'   M     U$ )a  
Convert a list of 2D frames into a padded 3D tensor
Args:
    frames (list): list of 2D frames of size L[i]*f_dim. Where L[i] is
        length of i-th frame and f_dim is static dimension of features
Returns:
    3D tensor of size len(frames)*len_max*f_dim where len_max is max of L[i]
c              3   B   #    U  H  oR                  S 5      v   M     g7frV   rW   )rX   frames     r   rZ   "_collate_frames.<locals>.<genexpr>   s     4VE**Q--Vr\   r   r]   N)ri   	new_zerosrA   rP   rn   )rv   max_lenoutru   rY   s        r   rN   rN      sl     4V44G
)

s6{GAY^^A5FG
HC&!Azq	zM "Jrg   )NFFNr]   N)	typingr   numpyrC   rE   rS   r   TensorrN    rg   r   <module>r      sF      cR 'TD. rg   