
    9i                         S SK J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  SSKJrJr  S	 rS
\S\4S jr\R"                  " \	\R$                  S9 " S S\5      5       rg)    )DictN)Metrics)generate_summary)default_group   )Metric)METRICS
MetricKeysc                 Z   [        [        U 5      UR                  S   5      n[        R                  " U[
        S9n[        R                  " U[
        S9nXS[        U 5      & / n[        UR                  S   5       H  nX   USUR                  S   & XE-  n[        U5      [        U5      -  n	[        U5      [        U5      -  n
X-   S:X  a  UR                  S5        Md  SU	-  U
-  S-  X-   -  nUR                  U5        M     US:X  a  [        U5      $ [        U5      [        U5      -  $ )al  Compare the predicted summary with the user defined one(s).

:param ndarray predicted_summary: The generated summary from our model.
:param ndarray user_summary: The user defined ground truth summaries (or summary).
:param str eval_method: The proposed evaluation method; either 'max' (SumMe) or 'avg' (TVSum).
:return: The reduced fscore based on the eval_method
r   )dtypeNr      d   max)	r   lenshapenpzerosintrangesumappend)predicted_summaryuser_summaryeval_methodmax_lenSGf_scoresuser
overlapped	precisionrecallf_scores               m/var/www/html/land-doc-ocr/venv/lib/python3.13/site-packages/modelscope/metrics/video_summarization_metric.pyevaluate_summaryr%      s    #'(,*<*<Q*?@G
$A
$A!2sHl((+,$0$6
 <a !U
 
Oc!f,	Z3q6)"OOA)mf,s2i6HIGOOG$ - e8}8}s8},,    outputsinputsc                    U S   nUR                  S5      R                  5       R                  5       R                  5       nUS   R                  5       R                  5       S   nUS   R                  5       R                  5       S   nUS   R                  5       R                  5       S   nUS   R                  5       R                  5       S   n[	        U/U/U/U/5      S   n[        XsS5      nU$ )Nscoresr   r   change_pointsn_frames	positionsavg)squeezecpunumpytolistr   r%   )	r'   r(   r*   r   sbr,   r-   summaryr#   s	            r$   calculate_f_scorer5   1   s    XF^^A""$**,335F.)--/557:L		 	$	$	&	,	,	.q	1Bj!%%'--/2H{#'')//1!4ItfXzI;GJGwe<GNr&   )	group_keymodule_namec                   L    \ rS rSrSrS rS\S\4S jrS rSS jr	S	 r
S
 rSrg)VideoSummarizationMetric=   z-The metric for video summarization task.
    c                      / U l         / U l        g Nr(   r'   selfs    r$   __init__!VideoSummarizationMetric.__init__C   s    r&   r'   r(   c                 p    U R                   R                  U5        U R                  R                  U5        g r<   )r'   r   r(   )r?   r'   r(   s      r$   addVideoSummarizationMetric.addG   s&    G$6"r&   c                     [        U R                  U R                  5       VVs/ s H  u  p[        X5      PM     nnn[        R
                  [        U5      [        U5      -  0$ s  snnf r<   )zipr'   r(   r5   r
   FScorer   r   )r?   outputinputr   s       r$   evaluate!VideoSummarizationMetric.evaluateK   s_     "%T\\4;;!?
!? f,!? 	 

 !!3x=3x=#@AA
s   A%c                     U R                   R                  UR                   5        U R                  R                  UR                  5        g r<   )r(   extendr'   )r?   others     r$   mergeVideoSummarizationMetric.mergeS   s.    5<<(EMM*r&   c                 2    U R                   U R                  4$ r<   r=   r>   s    r$   __getstate__%VideoSummarizationMetric.__getstate__W   s    {{DLL((r&   c                 "    Uu  U l         U l        g r<   r=   )r?   states     r$   __setstate__%VideoSummarizationMetric.__setstate__Z   s    $)!T\r&   r=   N)rN   r9   )__name__
__module____qualname____firstlineno____doc__r@   r   rC   rJ   rO   rR   rV   __static_attributes__ r&   r$   r9   r9   =   s4    #4 # #B+)*r&   r9   )typingr   r1   r   modelscope.metainfor   3modelscope.models.cv.video_summarization.summarizerr   modelscope.utils.registryr   baser   builderr	   r
   r%   r5   register_modulevideo_summarization_metricr9   r^   r&   r$   <module>rg      sj      ' 3  (-B	t 	T 	 	)K)KM*v *M*r&   