o
    ß¥µi   ã                   @   s&   d dl Zd dlmZ G dd„ dƒZdS )é    N)Úconfigc                   @   s4   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ ZdS )Ú
GroupTrackc                 C   s4   d | _ d | _d| _tjj| _tjj| _tjj	| _	d S )NT)
Ú	old_frameÚprevious_landmarks_setÚwith_landmarkÚcfgÚTRACEÚpixel_thresÚthresÚsmooth_landmarkÚalphaÚ	iou_thres)Úself© r   ú^/home/ubuntu/.local/lib/python3.10/site-packages/modelscope/models/cv/cartoon/facelib/LK/lk.pyÚ__init__
   s   

zGroupTrack.__init__c              	   C   sÈ   | j d u r|| _ |}nO| j jd }|dkr|| _ |}|S g }t|jd ƒD ]4}d}t|ƒD ]"}|  || | j | ¡| jkrO| |  || | j | ¡¡ d} nq-|rY| || ¡ q%t |¡}|| _ |S )Nr   TF)	r   ÚshapeÚrangeÚiour   ÚappendÚsmoothÚnpÚarray)r   ÚimgÚcurrent_landmarks_setÚresultÚprevious_lm_numÚiÚnot_in_flagÚjr   r   r   Ú	calculate   s>   

ÿþ
ÿÿù€
zGroupTrack.calculatec                 C   sd  t  |d d …df ¡t  |d d …df ¡t  |d d …df ¡t  |d d …df ¡g}t  |d d …df ¡t  |d d …df ¡t  |d d …df ¡t  |d d …df ¡g}|d |d  |d |d   }|d |d  |d |d   }|| }t|d |d ƒ}t|d |d ƒ}	t|d |d ƒ}
t|d |d ƒ}td|
| ƒtd||	 ƒ }|||  }|S )Nr   é   é   é   )r   ÚminÚmax)r   Úp_set0Úp_set1Úrec1Úrec2ÚS_rec1ÚS_rec2Úsum_areaÚx1Úy1Úx2Úy2Ú	intersectr   r   r   r   r   1   s(   üü  zGroupTrack.iouc                 C   s    g }t |jd ƒD ]A}|| d || d  }|| d || d  }t t |¡t |¡ ¡}|| jk r=| || ¡ q	| |  || || ¡¡ q	t |¡S )Nr   r!   )	r   r   r   ÚsqrtÚsquarer
   r   Údo_moving_averager   )r   Únow_landmarksÚprevious_landmarksr   r   ÚxÚyÚdisr   r   r   r   R   s   

ÿÿ
zGroupTrack.smoothc                 C   s   | j | d| j  |  }|S )Nr!   )r   )r   Úp_nowÚ
p_previousÚpr   r   r   r4   a   s   zGroupTrack.do_moving_averageN)Ú__name__Ú
__module__Ú__qualname__r   r    r   r   r4   r   r   r   r   r      s    !r   )Únumpyr   Ú+modelscope.models.cv.cartoon.facelib.configr   r   r   r   r   r   r   Ú<module>   s   