
    9i                     x   S SK r S SKrS SKrS SKJr  S SKrS SKrS SKJ	r	J
r
  S SKJrJr  S SKrS SKrS SKJr  S SKJr  S SKJr  S SKJrJrJrJrJ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(J)r)  S SK*J+r+  \+" 5       r,\"RZ                  " \)R\                  \R\                  S9 " S S\ 5      5       r/g)    N)defaultdictdeque)AnyDict)tqdm)	Pipelines)Model)LengthAdaptiveTokenizerVoPinit_transform_dict	load_dataload_frames_from_video)
OutputKeys)InputPipeline)	PIPELINES)
load_image)Config)	ModelFileTasks)
get_logger)module_namec                      ^  \ rS rSrS\4U 4S jjrS\S\\\4   4S jr	S\\\4   S\\\4   4S jr
S\\\4   S\\\4   4S	 jrS
rU =r$ )VopRetrievalPipeline    modelc                 |  > [         TU ]  " SSU0UD6  [        R                  " S5      R	                  U R
                  5      U l        [        R                  S5        Xl	        [        R                  " [        R                  " U[        R                  5      5      U l        [#        U R                   R$                  R&                  5      S   U l        [        R                  S5        [*        R,                  " [        R                  " US5      5      R/                  5       R1                  S5      R3                  S5      n[5        U R                   R$                  U5      U l        [        R                  S	5        [9        [        R                  " US
5      U R
                  5      U l        [        R                  S5        g)za
use `model` to create a vop pipeline for retrieval
Args:
    model: model id on modelscope hub.
r   zdamo/cv_vit-b32_retrieval_vopzload model done	clip_testzload transform donezbpe_simple_vocab_16e6.txt.gzzutf-8
zload tokenizer donezVoP_msrvtt9k_features.pklzload database doneN )super__init__r	   from_pretrainedtodevicer   loggerinfo	local_pthr   	from_fileospjoinr   CONFIGURATIONcfgr   
hyperparam	input_resimg_transformgzipopenreaddecodesplitr
   	tokenizerr   database)selfr   kwargsbpe_path	__class__s       n/var/www/html/land-doc-ocr/venv/lib/python3.13/site-packages/modelscope/pipelines/cv/vop_retrieval_pipeline.pyr"   VopRetrievalPipeline.__init__$   s@    	/u// **+JKNNKK
%& ##CHHUI4K4K$LM0HH))++68)* 99SXX*, --1TVFF7OEE$K 	 11D1DhO)* "HHU78$++G()    inputreturnc           
      (   [        U[        5      (       GaZ  SU;   a  / nU4 H  n[        R                  " U R                  U5      n[        X0R                  R                  R                  U R                  R                  R                  5      u  pEU R                  U5      nUR                  U5        M     [        R                  " USS9R                  U R                  SS9nSnOU R!                  USSSS9n[        U[        R"                  5      (       a  UR                  U R                  SS9nO<UR%                  5        VVs0 s H  u  pxXxR                  U R                  SS9_M!     nnnS	nO['        S
[)        U5       35      eX&S.n	U	$ s  snnf )Nz.mp4r   )dimT)non_blockingv2tpt)return_tensorspadding
truncationt2vz input should be a str,  but got )
input_datamode)
isinstancestrr*   r+   r(   r   r-   r.   
num_framesvideo_sample_typer0   appendtorchstackr$   r%   r6   Tensoritems	TypeErrortype)
r8   r?   query
video_pathimgsidxsrK   keyvalresults
             r<   
preprocessVopRetrievalPipeline.preprocessD   s}   eS!!#('J!$$..*!EJ!7"HH$7$7$B$B++=="?JD  --d3DLL& #* q""$"$ #% #8  $ ' OeU\\22!HHT[[tHDE ).(5HC VVDKKdVCC(5    ))-e7 8 8 %4s   &Fc                    U R                   u  p#pE[        R                  " 5          US   S:X  a  U R                  R	                  US   5      nXcR
                  -  n[        R                  " XpR                  R                  R                  SS9S   R                  5       R                  5       n[        R                  " U5      U   n	OUS   S:X  a  U R                  R                  US   5      nXbR
                  -  n[        R                  " XpR                  R                  R                  SS9S   R                  5       R                  5       n[        R                  " U5      U   n	W	US   S.n
U
sS S S 5        $ ! , (       d  f       g = f)	NrK   rI   rJ   )krB      rD   )output_datarK   )r7   rQ   no_gradr   get_text_featuresTtopkr-   r.   cpunumpynparrayget_video_features)r8   r?   text_embedsvid_embeds_pooledvid_idstextsquery_featsscoreretrieval_idxsresresultss              r<   forwardVopRetrievalPipeline.forwardd   s<   9=6]]_V}%"jj::5;NO#&9&99!&XX0055"""suUUW  hhw'7v%'"jj;;,')#mm3!&XX0055"""suUUW  hhuon5&)5=AG# __s   EE::
Finputsc                     U$ )Nr    )r8   ry   s     r<   postprocess VopRetrievalPipeline.postprocessy   s    r>   )r-   r7   r0   r(   r   r6   )__name__
__module____qualname____firstlineno__rM   r"   r   r   r   r^   rw   r{   __static_attributes____classcell__)r;   s   @r<   r   r       sw    *c *@ $sCx. @T#s(^ S#X *$sCx. T#s(^  r>   r   )0r1   mathosos.pathpathr*   picklerandomcollectionsr   r   typingr   r   rj   rk   rQ   r   modelscope.metainfor   modelscope.modelsr	   "modelscope.models.cv.vop_retrievalr
   r   r   r   r   modelscope.outputsr   modelscope.pipelines.baser   r   modelscope.pipelines.builderr   modelscope.preprocessorsr   modelscope.utils.configr   modelscope.utils.constantr   r   modelscope.utils.loggerr   r&   register_modulevop_retrievalr   r    r>   r<   <module>r      s      	    *     ) #H H * 5 2 / * 6 .	 	Y%<%<>X8 X>Xr>   