
    9i                     @   S SK Jr  S SKJrJr  S SKrS SKrS SK	r	S SK
J
r
  S SKJr  S SK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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#\RH                  " \ RJ                  \RJ                  S9 " S S\5      5       r&g)    N)AnyDict)tqdm)	Pipelines)PGLVideoSummarizationsummary_format)bvlc_googlenet)generate_summaryget_change_points)
OutputKeys)InputPipeline)	PIPELINES)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SrU =r$ )VideoSummarizationPipeline   modelc                 0  > [         TU ]  " S
USS.UD6  [        R                  SU 35        [        R
                  " US5      n[        R
                  " U[        R                  5      n[        R                  SU 35        [        R                  " U5      U l
        [        5       U l        U R                  R                  R                  [        R                   " U[        R"                  " U R"                  5      SS95        U R                  R%                  U R"                  5      R'                  5       U l        [)        U5      U l        U R*                  R%                  U R"                  5      R'                  5       U l        [        R                  S5        g	)zr
use `model` to create a video summarization pipeline for prediction
Args:
    model: model id on modelscope hub.
F)r   auto_collatezloading model from zbvlc_googlenet.ptzloading config from T)map_locationweights_onlyzload model doneN )super__init__loggerinfoospjoinr   CONFIGURATIONr   	from_filecfgr	   googlenet_modelr   load_state_dicttorchloaddevicetoevalr   	pgl_model)selfr   kwargsgooglenet_model_pathconfig_path	__class__s        t/var/www/html/land-doc-ocr/venv/lib/python3.13/site-packages/modelscope/pipelines/cv/video_summarization_pipeline.pyr   #VideoSummarizationPipeline.__init__    s)    	Cu5CFC)%12"xx/BChhui&=&=>*;-89##K0-/""22JJ$"\\$++6!#	$
  $3366t{{CHHJ.u5**4;;7<<>%&    inputreturnc                 t   [        U[        5      (       d  [        S[        U5       35      e/ n/ n[        R
                  " U5      nUR                  [        R                  5      U l        UR                  [        R                  5      U l
        SnUR                  5       (       aa  UR                  5       u  pgU(       d  OGUS-  S:X  a"  UR                  U5        UR                  U5        US-  nUR                  5       (       a  Ma  UnU[        R                  " U5      U[        R                  " U5      S.n	U	$ )Nz input should be a str,  but got r         )
video_namevideo_framesn_framepicks)
isinstancestr	TypeErrortypecv2VideoCapturegetCAP_PROP_FPSfpsCAP_PROP_FRAME_COUNTframe_countisOpenedreadappendnparray)
r/   r7   framesr?   cap	frame_idxretframer>   results
             r4   
preprocess%VideoSummarizationPipeline.preprocess:   s   %%% ))-e7 8 8u%773++,773#;#;<	||~~JC2~"e$Y'NI ||~~   HHV,XXe_	
 r6   c                    / n[        US   5       H%  nU R                  U5      nUR                  U5        M'     [        X!S   5      u  pVU R	                  X!S   US   U5      n[        XpR                  5      n[        R                  U0$ )Nr=   r>   r?   )	r   r'   rM   r   	inferencer   rH   r   OUTPUT)	r/   r7   frame_featuresrT   featchange_pointsn_frame_per_segsummaryoutputs	            r4   forward"VideoSummarizationPipeline.forwardV   s    %/0E''.D!!$' 1 *;),*.& ..y1A!&w@  2!!6**r6   inputsc                     U$ )Nr   )r/   rc   s     r4   postprocess&VideoSummarizationPipeline.postprocessg   s    r6   c                 l   [         R                  " [        R                  " U[        R                  5      5      n[        R                  " U[        R
                  5      n[         R                  " 5          U R                  [        US95      nUS   nUR                  R                  S:X  d  UR                  5       nUR                  S5      R                  5       R                  5       n[        U/U/U/U/5      S   nS S S 5        UR                  5       $ ! , (       d  f       WR                  5       $ = f)N)r[   scorescpur   )r)   
from_numpyrN   rO   float32int32no_gradr.   dictr+   rC   ri   squeezenumpytolistr
   )r/   r[   n_framesr?   r]   resultsrh   r_   s           r4   rY   $VideoSummarizationPipeline.inferencej   s    ))"((>2::*NO)]]_nnT%HIGX&F==%%.^^A&,,.557F&8*(-w0013G  ~~ _ ~~s   4B
D
D3)r&   rH   rJ   r'   r.   )__name__
__module____qualname____firstlineno__rA   r   r   r   r   rV   ra   re   rY   __static_attributes____classcell__)r3   s   @r4   r   r      sz    'c '4 $sCx. 8+T#s(^ +S#X +"$sCx. T#s(^    r6   r   )'os.pathpathr"   typingr   r   rD   rp   rN   r)   r   modelscope.metainfor   (modelscope.models.cv.video_summarizationr   r   3modelscope.models.cv.video_summarization.base_modelr	   3modelscope.models.cv.video_summarization.summarizerr
   r   modelscope.outputsr   modelscope.pipelines.baser   r   modelscope.pipelines.builderr   modelscope.utils.configr   modelscope.utils.constantr   r   modelscope.utils.loggerr   r    register_modulevideo_summarizationr   r   r6   r4   <module>r      s      
    )F N) ) 5 2 * 6 .	 	9+H+HJY  Y JY r6   