Ë
    šÓ^jI^  ã                   óh   — d Z ddlZddlZddlZddlmZ ddlmZ	 ddl
Z
 G d„ d«      Z G d„ d	«      Zy)
Útsungyié    N)Údefaultdicté   )Úmaskc                   óF   — e Zd Zdd„Zd„ Zd„ Zd„ Zd„ Zd„ Zdd„Z	d	„ Z
d
„ Zy)ÚCOCOevalNc                 ó²  — |st        d«       || _        || _        t        t        «      | _        i | _        t        t        «      | _        t        t        «      | _        t        |¬«      | _
        i | _        g | _        i | _        |�Qt        |j                  «       «      | j                  _        t        |j#                  «       «      | j                  _        yy)zÔ
        Initialize CocoEval using coco APIs for gt and dt
        :param cocoGt: coco object with ground truth annotations
        :param cocoDt: coco object with detection results
        :return: None
        z/iouType not specified. use default iouType segm)ÚiouTypeN)ÚprintÚcocoGtÚcocoDtr   ÚlistÚevalImgsÚevalÚ_gtsÚ_dtsÚParamsÚparamsÚ_paramsEvalÚstatsÚiousÚsortedÚ	getImgIdsÚimgIdsÚ	getCatIdsÚcatIds)Úselfr   r   r
   s       ú_/var/www/ramen.bs-engineer-server.com/venv/lib/python3.12/site-packages/pycocotools/cocoeval.pyÚ__init__zCOCOeval.__init__<   s©   € ñ ÜÐCÔDØˆŒØˆŒÜ#¤DÓ)ˆŒØˆŒ	Ü¤Ó%ˆŒ	Ü¤Ó%ˆŒ	Ü WÔ-ˆŒØˆÔØˆŒ
ØˆŒ	Øˆ~Ü!'¨×(8Ñ(8Ó(:Ó!;ˆD�K‰KÔÜ!'¨×(8Ñ(8Ó(:Ó!;ˆD�K‰KÕð ó    c                 óŽ  — d„ }| j                   }|j                  r•| j                  j                  | j                  j	                  |j
                  |j                  ¬«      «      }| j                  j                  | j                  j	                  |j
                  |j                  ¬«      «      }n~| j                  j                  | j                  j	                  |j
                  ¬«      «      }| j                  j                  | j                  j	                  |j
                  ¬«      «      }|j                  dk(  r& ||| j                  «        ||| j                  «       |D ]@  }d|v r|d   nd|d<   d|v xr |d   |d<   |j                  dk(  sŒ/|d	   dk(  xs |d   |d<   ŒB t        t        «      | _        t        t        «      | _        |D ](  }| j                  |d
   |d   f   j                  |«       Œ* |D ](  }| j                  |d
   |d   f   j                  |«       Œ* t        t        «      | _        i | _        y)z^
        Prepare ._gts and ._dts for evaluation based on params
        :return: None
        c                 ó>   — | D ]  }|j                  |«      }||d<   Œ y )NÚsegmentation)ÚannToRLE)ÚannsÚcocoÚannÚrles       r   Ú_toMaskz"COCOeval._prepare.<locals>._toMaskY   s)   € àò *�Ø—m‘m CÓ(�Ø&)��NÒ#ñ*r    )r   r   )r   ÚsegmÚignorer   ÚiscrowdÚ	keypointsÚnum_keypointsÚimage_idÚcategory_idN)r   ÚuseCatsr   ÚloadAnnsÚ	getAnnIdsr   r   r   r
   r   r   r   r   Úappendr   r   )r   r)   ÚpÚgtsÚdtsÚgtÚdts          r   Ú_preparezCOCOeval._prepareT   sú  € ò
	*ð
 �K‰KˆØ�9Š9Ø—‘×$Ñ$ T§[¡[×%:Ñ%:À!Ç(Á(ÐST×S[ÑS[Ð%:Ó%\Ó]ˆCØ—‘×$Ñ$ T§[¡[×%:Ñ%:À!Ç(Á(ÐST×S[ÑS[Ð%:Ó%\Ó]‰Cà—‘×$Ñ$ T§[¡[×%:Ñ%:À!Ç(Á(Ð%:Ó%KÓLˆCØ—‘×$Ñ$ T§[¡[×%:Ñ%:À!Ç(Á(Ð%:Ó%KÓLˆCð �9‰9˜ÒÙ�C˜Ÿ™Ô%Ù�C˜Ÿ™Ô%àò 	JˆBØ+3°r©>˜2˜hš<¸qˆBˆx‰LØ$¨˜?Ò<¨r°)©}ˆBˆx‰LØ�y‰y˜KÓ'Ø " ?Ñ 3°qÑ 8ÒI¸RÀ¹\��8’ð		Jô
  ¤Ó%ˆŒ	Ü¤Ó%ˆŒ	Øò 	DˆBØ�I‰I�b˜‘n b¨Ñ&7Ð7Ñ8×?Ñ?ÀÕCð	Dàò 	DˆBØ�I‰I�b˜‘n b¨Ñ&7Ð7Ñ8×?Ñ?ÀÕCð	Dä#¤DÓ)ˆŒØˆ�	r    c                 ó  — t        j                   «       }t        d«       | j                  }|j                  �<|j                  dk(  rdnd|_        t        dj                  |j                  «      «       t        dj                  |j                  «      «       t        t        j                  |j                  «      «      |_	        |j                  r-t        t        j                  |j                  «      «      |_        t        |j                  «      |_        || _        | j                  «        |j                  r|j                  ndg}|j                  dk(  s|j                  dk(  r| j                  }n|j                  d	k(  r| j                   }|j                  D ��ci c]  }|D ]  }||f ||«      “Œ Œ c}}| _        | j$                  }|j                  d   }|D ��	�cg c]/  }|j&                  D ]  }	|j                  D ]  } ||||	|«      ‘Œ Œ  Œ1 c}}	}| _        t+        j,                  | j                  «      | _        t        j                   «       }
t        d
j                  |
|z
  «      «       yc c}}w c c}}	}w )z„
        Run per image evaluation on given images and store results (a list of dict) in self.evalImgs
        :return: None
        zRunning per image evaluation...Nr   r*   Úbboxz7useSegm (deprecated) is not None. Running {} evaluationzEvaluate annotation type *{}*éÿÿÿÿr-   úDONE (t={:0.2f}s).)Útimer   r   ÚuseSegmr
   Úformatr   ÚnpÚuniquer   r1   r   r   ÚmaxDetsr:   Ú
computeIoUÚ
computeOksr   ÚevaluateImgÚareaRngr   ÚcopyÚdeepcopyr   )r   Úticr5   r   rE   ÚimgIdÚcatIdrG   ÚmaxDetrH   Útocs              r   ÚevaluatezCOCOeval.evaluatey   s
  € ô
 �i‰i‹kˆÜÐ/Ô0Ø�K‰Kˆà�y‰yÐ Ø"#§)¡)¨q¢.™°fˆAŒIÜÐK×RÑRÐST×S\ÑS\Ó]Ô^ÜÐ-×4Ñ4°Q·Y±YÓ?Ô@ÜœŸ	™	 !§(¡(Ó+Ó,ˆŒØ�9Š9ÜœBŸI™I a§h¡hÓ/Ó0ˆAŒHÜ˜1Ÿ9™9Ó%ˆŒ	ØˆŒà�‰ŒàŸYšY�—’¨R¨Dˆà�9‰9˜Ò !§)¡)¨vÒ"5ØŸ™‰JØ�Y‰Y˜+Ò%ØŸ™ˆJà%&§X¡X÷-Ø!Ø%+ò-à!ð ˜U�^¡Z°°uÓ%=Ñ=ð -�^ó -ˆŒ	ð ×&Ñ&ˆØ—‘˜2‘ˆà$÷ð ØØ !§	¡	òàØŸh™hòð ñ % U¨E°7¸FÕCð ÐCð ÐCô ˆŒô
  Ÿ=™=¨¯©Ó5ˆÔÜ�i‰i‹kˆÜÐ"×)Ñ)¨#¨c©'Ó2Õ3ùó-ùôs   ÆI7Ç#4I=c                 óü  — | j                   }|j                  r#| j                  ||f   }| j                  ||f   }nb|j                  D ��cg c]  }| j                  ||f   D ]  }|‘Œ Œ }}}|j                  D ��cg c]  }| j                  ||f   D ]  }|‘Œ Œ }}}t        |«      dk(  rt        |«      dk(  rg S t        j                  |D �cg c]  }|d    ‘Œ
 c}d¬«      }	|	D �
cg c]  }
||
   ‘Œ	 }}
t        |«      |j                  d   kD  r|d|j                  d    }|j                  dk(  r'|D �cg c]  }|d   ‘Œ	 c}}|D �cg c]  }|d   ‘Œ	 c}}nA|j                  dk(  r'|D �cg c]  }|d   ‘Œ	 c}}|D �cg c]  }|d   ‘Œ	 c}}nt        d	«      ‚|D �cg c]  }t        |d
   «      ‘Œ }}t        j                  |||«      }|S c c}}w c c}}w c c}w c c}
w c c}w c c}w c c}w c c}w c c}w )Nr   ÚscoreÚ	mergesort©Úkindr=   r*   r#   r<   z#unknown iouType for iou computationr,   )r   r1   r   r   r   ÚlenrB   ÚargsortrD   r
   Ú	ExceptionÚintÚ	maskUtilsÚiou)r   rL   rM   r5   r8   r9   ÚcIdÚ_ÚdÚindsÚiÚgÚor,   r   s                  r   rE   zCOCOeval.computeIoU£   sß  € Ø�K‰KˆØ�9Š9Ø—‘˜5 ˜;Ñ'ˆBØ—‘˜5 ˜;Ñ'‰Bà Ÿx™x×F˜°·±¸5À¸9Ñ1EÒF¨A’!ÐF�!ÐFˆBÑFØ Ÿx™x×F˜°·±¸5À¸9Ñ1EÒF¨A’!ÐF�!ÐFˆBÑFÜˆr‹7�aŠ<œC ›G ašKØˆIÜ�z‰z°Ö3¨1˜A˜g™Jš;Ò3¸+ÔFˆØ!Ö"˜ˆb�‹eÐ"ˆÐ"Üˆr‹7�Q—Y‘Y˜r‘]Ò"Ø�!�A—I‘I˜b‘MÐ"ˆBà�9‰9˜ÒØ,.Ö/ q��>Ó"Ò/ˆAØ,.Ö/ q��>Ó"Ò/‰AØ�Y‰Y˜&Ò Ø$&Ö'˜q��6“Ò'ˆAØ$&Ö'˜q��6“Ò'‰AäÐAÓBÐBð /1Ö1¨”3�q˜‘|Õ$Ð1ˆÐ1Ü�}‰}˜Q˜q Ó)ˆØˆùó+ GùÛFùò 4ùÚ"ùò
 0ùÚ/ùâ'ùÚ'ùò
 2s6   ÁGÁ<GÃGÃ)G Ä7G%Å
G*Å-G/Æ G4ÆG9c                 óÒ  — | j                   }| j                  ||f   }| j                  ||f   }t        j                  |D �cg c]  }|d    ‘Œ
 c}d¬«      }|D �cg c]  }||   ‘Œ	 }}t        |«      |j                  d   kD  r|d|j                  d    }t        |«      dk(  st        |«      dk(  rg S t        j                  t        |«      t        |«      f«      }	|j                  }
|
dz  dz  }t        |
«      }t        |«      D �]Ñ  \  }}t        j                  |d   «      }|dd d…   }|d	d d…   }|dd d…   }t        j                  |dkD  «      }|d
   }|d   |d   z
  }|d   |d   dz  z   }|d	   |d   z
  }|d	   |d   dz  z   }t        |«      D �]=  \  }}t        j                  |d   «      }|dd d…   }|d	d d…   }|dkD  r||z
  }||z
  }n‡t        j                  |«      }t        j                  |||z
  fd¬«      t        j                  |||z
  fd¬«      z   }t        j                  |||z
  fd¬«      t        j                  |||z
  fd¬«      z   }|dz  |dz  z   |z  |d   t        j                  d	«      z   z  dz  }|dkD  r||dkD     }t        j                  t        j                  | «      «      |j                   d   z  |	||f<   �Œ@ �ŒÔ |	S c c}w c c}w )NrR   rS   rT   r=   r   é   r-   é   r   r<   ©ÚaxisÚarea)r   r   r   rB   rW   rV   rD   ÚzerosÚkpt_oks_sigmasÚ	enumerateÚarrayÚcount_nonzeroÚmaxÚspacingÚsumÚexpÚshape) r   rL   rM   r5   r6   r7   r^   r_   r`   r   ÚsigmasÚvarsÚkÚjr8   ra   ÚxgÚygÚvgÚk1ÚbbÚx0Úx1Úy0Úy1r9   ÚxdÚydÚdxÚdyÚzÚes                                    r   rF   zCOCOeval.computeOksÀ   sò  € Ø�K‰Kˆà�i‰i˜˜u˜Ñ%ˆØ�i‰i˜˜u˜Ñ%ˆÜ�z‰z°Ö4¨1˜A˜g™Jš;Ò4¸;ÔGˆØ#Ö$˜!ˆs�1‹vÐ$ˆÐ$Üˆs‹8�a—i‘i ‘mÒ#Ø�a˜Ÿ	™	 "™Ð&ˆCäˆs‹8�qŠ=œC ›H¨šMØˆIÜ�x‰xœ˜S›¤3 s£8Ð,Ó-ˆØ×!Ñ!ˆØ˜‘
˜Q‰ˆÜ�‹Kˆä˜s“^ó 	=‰EˆAˆrä—‘˜˜K™Ó)ˆAØ�1�4�a�4‘ˆB˜q   A ™w˜"¨Q¨q¨t°!¨t©W¨Ü×!Ñ! " q¡&Ó)ˆBØ�F‘ˆBØ�A‘˜˜A™‘ˆB R¨¡U¨R°©U°Q©YÑ%6 Ø�A‘˜˜A™‘ˆB R¨¡U¨R°©U°Q©YÑ%6 Ü" 3›ó =‘��2Ü—H‘H˜R ™_Ó-�Ø�q�t˜!�t‘W� 1 Q T¨ T¡7˜bØ�a’4à˜b™�BØ˜b™‘Bô Ÿ™ !›�AÜŸ™  B r¡E 
°Ô2´2·6±6¸1¸bÀ¹e¸*È!Ô3LÑL�BÜŸ™  B r¡E 
°Ô2´2·6±6¸1¸bÀ¹e¸*È!Ô3LÑL�BØ˜‘U˜R ™U‘] dÑ*¨b°©j¼¿¹ÀA»Ñ.FÑGÈ!ÑK�Ø˜’6Ø˜˜Q™‘i�AÜŸV™V¤B§F¡F¨A¨2£JÓ/°!·'±'¸!±*Ñ<��Q˜�T“
ò=ð	=ð0 ˆùòI 5ùÚ$s   ÁKÁK$c                 óZ  — | j                   }|j                  r#| j                  ||f   }| j                  ||f   }nb|j                  D ��	cg c]  }| j                  ||f   D ]  }	|	‘Œ Œ }}}	|j                  D ��	cg c]  }| j                  ||f   D ]  }	|	‘Œ Œ }}}	t        |«      dk(  rt        |«      dk(  ry|D ](  }
|
d   s|
d   |d   k  s|
d   |d   kD  rd|
d<   Œ$d|
d<   Œ* t        j                  |D �
cg c]  }
|
d   ‘Œ	 c}
d¬«      }|D �cg c]  }||   ‘Œ	 }}t        j                  |D �cg c]  }|d	    ‘Œ
 c}d¬«      }|d| D �cg c]  }||   ‘Œ	 }}|D �cg c]  }t        |d
   «      ‘Œ }}t        | j                  ||f   «      dkD  r| j                  ||f   dd…|f   n| j                  ||f   }t        |j                  «      }t        |«      }t        |«      }t        j                  ||f«      }t        j                  ||f«      }t        j                  |D �
cg c]  }
|
d   ‘Œ	 c}
«      }t        j                  ||f«      }t        |«      dk(  s´t        |j                  «      D ]œ  \  }}t        |«      D ]‰  \  }}t        |dg«      }d}t        |«      D ]@  \  }}
|||f   dkD  r||   sŒ|dkD  r||   dk(  r
||   dk(  r n|||f   |k  rŒ8|||f   }|}ŒB |dk(  rŒi||   |||f<   ||   d   |||f<   |d   |||f<   Œ‹ Œž t        j                  |D �cg c]  }|d   |d   k  xs |d   |d   kD  ‘Œ c}«      j                  dt        |«      f«      }t        j                   |t        j"                  |dk(  t        j$                  ||d«      «      «      }|||||D �cg c]  }|d   ‘Œ	 c}|D �
cg c]  }
|
d   ‘Œ	 c}
|||D �cg c]  }|d	   ‘Œ	 c}||dœS c c}	}w c c}	}w c c}
w c c}w c c}w c c}w c c}w c c}
w c c}w c c}w c c}
w c c}w )zo
        perform evaluation for single category and image
        :return: dict (single image results)
        r   Nr+   rh   r   Ú_ignorerS   rT   rR   r,   g�Aòÿÿÿï?r=   Úid)r/   r0   ÚaRngrN   ÚdtIdsÚgtIdsÚ	dtMatchesÚ	gtMatchesÚdtScoresÚgtIgnoreÚdtIgnore)r   r1   r   r   r   rV   rB   rW   rY   r   ÚiouThrsri   rl   rk   ÚminÚreshapeÚ
logical_orÚlogical_andÚrepeat) r   rL   rM   r‰   rN   r5   r8   r9   r\   r]   ra   Úgtindr`   r^   Údtindrb   r,   r   ÚTÚGÚDÚgtmÚdtmÚgtIgÚdtIgÚtindÚtÚdindr[   ÚmÚgindÚas                                    r   rG   zCOCOeval.evaluateImgë   sV  € ð
 �K‰KˆØ�9Š9Ø—‘˜5 ˜;Ñ'ˆBØ—‘˜5 ˜;Ñ'‰Bà Ÿx™x×F˜°·±¸5À¸9Ñ1EÒF¨A’!ÐF�!ÐFˆBÑFØ Ÿx™x×F˜°·±¸5À¸9Ñ1EÒF¨A’!ÐF�!ÐFˆBÑFÜˆr‹7�aŠ<œC ›G ašKØàò 	!ˆAØ�Š{˜q ™y¨¨a©Ò0°A°f±I¸dÀ1¹gÒ4EØ ��)’à ��)’ð		!ô —
‘
°"Ö5¨Q˜A˜i›LÒ5¸KÔHˆØ"Ö#˜ˆb�‹eÐ#ˆÐ#Ü—
‘
°Ö4¨A˜Q˜w™ZšKÒ4¸;ÔGˆØ" 1 V˜_Ö-˜ˆb�‹eÐ-ˆÐ-Ø.0Ö1¨”3�q˜‘|Õ$Ð1ˆÐ1ä47¸¿	¹	À%ÈÀ,Ñ8OÓ4PÐSTÒ4Tˆt�y‰y˜ ˜Ñ&¢q¨% xÒ0ÐZ^×ZcÑZcÐdiÐkpÐdpÑZqˆä�—	‘	‹NˆÜ�‹GˆÜ�‹GˆÜ�x‰x˜˜1˜‹ˆÜ�x‰x˜˜1˜‹ˆÜ�x‰x¨rÖ2¨!˜˜9›Ò2Ó3ˆÜ�x‰x˜˜1˜‹ˆÜ�4‹y˜!Š|Ü$ Q§Y¡YÓ/ò .‘��aÜ(¨›}ò .‘G�D˜!ä˜q ˜kÓ*�CØ�AÜ#,¨R£=ò ™˜˜aà˜t D˜y™>¨!Ò+°G¸D²MØ$à˜Rš4 D¨¡G¨Q¢J°4¸±:¸q²=Ù!à  T 	™?¨SÒ0Ø$à   d ™O˜Ø™ðð ˜2’vØ Ø&*¨1¡g�D˜˜d˜‘OØ&(¨¡e¨D¡k�C˜˜T˜	‘NØ&'¨¡g�C˜˜Q˜’Kñ-.ð.ô2 �H‰HÀbÖIÀ�a˜‘i  Q¡Ñ'Ò<¨1¨V©9°T¸!±WÑ+<Ñ<ÒIÓJ×RÑRÐTUÔWZÐ[]ÓW^ÐS_Ó`ˆÜ�}‰}˜T¤2§>¡>°#°q±&¼"¿)¹)ÀAÀaÈÓ:JÓ#KÓLˆð !&Ø %Ø $Ø &Ø24Ö 5¨Q  4£Ò 5Ø24Ö 5¨Q  4£Ò 5Ø #Ø #Ø57Ö 8°  7£Ò 8Ø $Ø $ñð 	ùóq GùÛFùò 6ùÚ#ùÚ4ùÚ-ùÚ1ùò 3ùò8 Jùò !6ùÚ 5ùò !9sH   ÁO/Á<O5Ã;O;ÄP Ä5PÅP
Å$PÈ-PÌ,PÎ6PÏP#ÏP(c                 ó.  — t        d«       t        j                  «       }| j                  st        d«       |€| j                  }|j                  dk(  r|j
                  ndg|_        t        |j                  «      }t        |j                  «      }|j                  rt        |j
                  «      nd}t        |j                  «      }t        |j                  «      }t        j                  |||||f«       }t        j                  ||||f«       }	t        j                  |||||f«       }
| j                  }|j                  r|j
                  ndg}t        |«      }t        t        t         |j                  «      «      }t        |j                  «      }t        |j"                  «      }t%        |j
                  «      D ��cg c]  \  }}||v sŒ|‘Œ }}}t%        |j                  «      D ��cg c]  \  }}||v sŒ|‘Œ }}}t%        t        d„ |j                  «      «      D ��cg c]  \  }}||v sŒ|‘Œ }}}t%        |j"                  «      D ��cg c]  \  }}||v sŒ|‘Œ }}}t        |j"                  «      }t        |j                  «      }t%        |«      D �]È  \  }}||z  |z  }t%        |«      D �]«  \  }}||z  }t%        |«      D �]‘  \  }} |D �cg c]  }| j                  ||z   |z      ‘Œ }!}|!D �"cg c]  }"|"€Œ|"‘Œ	 }!}"t        |!«      dk(  rŒJt        j&                  |!D �"cg c]
  }"|"d   d|  ‘Œ c}"«      }#t        j(                  |# d	¬
«      }$|#|$   }%t        j&                  |!D �"cg c]  }"|"d   dd…d| …f   ‘Œ c}"d¬«      dd…|$f   }&t        j&                  |!D �"cg c]  }"|"d   dd…d| …f   ‘Œ c}"d¬«      dd…|$f   }'t        j&                  |!D �"cg c]  }"|"d   ‘Œ	 c}"«      }(t        j*                  |(dk(  «      })|)dk(  r�ŒEt        j,                  |&t        j.                  |'«      «      }*t        j,                  t        j.                  |&«      t        j.                  |'«      «      }+t        j0                  |*d¬«      j3                  t4        ¬«      },t        j0                  |+d¬«      j3                  t4        ¬«      }-t%        t7        |,|-«      «      D �]y  \  }.\  }/}0t        j8                  |/«      }/t        j8                  |0«      }0t        |/«      }1|/|)z  }2|/|0|/z   t        j:                  d«      z   z  }3t        j<                  |f«      }4t        j<                  |f«      }5|1r|2d   |	|.|||f<   n	d|	|.|||f<   |3j?                  «       }3|4j?                  «       }4tA        |1dz
  dd«      D ]  }|3|   |3|dz
     kD  sŒ|3|   |3|dz
  <   Œ t        jB                  |2|j                  d¬«      }$	 t%        |$«      D ]  \  }6}7|3|7   |4|6<   |%|7   |5|6<   Œ 	 t        j8                  |4«      ||.dd…|||f<   t        j8                  |5«      |
|.dd…|||f<   �Œ| �Œ” �Œ® �ŒË ||||||gtD        jD                  jG                  «       jI                  d«      ||	|
dœ| _%        t        j                  «       }8t        djM                  |8|z
  «      «       yc c}}w c c}}w c c}}w c c}}w c c}w c c}"w c c}"w c c}"w c c}"w c c}"w #  Y ŒôxY w)zŸ
        Accumulate per image evaluation results and store the result in self.eval
        :param p: input params for evaluation
        :return: None
        z"Accumulating evaluation results...zPlease run evaluate() firstNr   r=   c                 ó   — t        | «      S ©N)Útuple)Úxs    r   ú<lambda>z%COCOeval.accumulate.<locals>.<lambda>\  s
   € ¼¸a»€ r    r   rŽ   rS   rT   rŒ   rf   r�   r�   )ÚdtypeÚleft)Úsidez%Y-%m-%d %H:%M:%S)r   ÚcountsÚdateÚ	precisionÚrecallÚscoresr>   )'r   r?   r   r   r1   r   rV   r‘   ÚrecThrsrH   rD   rB   Úonesr   ÚsetÚmapr©   r   rk   ÚconcatenaterW   rm   r•   Úlogical_notÚcumsumÚastypeÚfloatÚziprl   ro   ri   ÚtolistÚrangeÚsearchsortedÚdatetimeÚnowÚstrftimer   rA   )9r   r5   rK   r™   ÚRÚKÚAÚMr±   r²   r³   Ú_per   ÚsetKÚsetAÚsetMÚsetIÚnru   Úk_listr£   Úm_listr¥   Úa_listr`   Úi_listÚI0ÚA0Úk0ÚNkÚa0ÚNarN   ÚEr…   rŽ   r_   ÚdtScoresSortedr�   rŸ   rž   ÚnpigÚtpsÚfpsÚtp_sumÚfp_sumr¡   ÚtpÚfpÚndÚrcÚprÚqÚssÚriÚpirO   s9                                                            r   Ú
accumulatezCOCOeval.accumulate;  s:  € ô 	Ð2Ô3Ü�i‰i‹kˆØ�}Š}ÜÐ/Ô0àˆ9Ø—‘ˆAØ Ÿy™y¨Aš~�1—8’8°B°4ˆŒÜ˜!Ÿ)™)“nˆÜ˜!Ÿ)™)“nˆØ'(§y¢y”c˜!Ÿ(™(”m°aˆÜ˜!Ÿ)™)“nˆÜ˜!Ÿ)™)“nˆÜ—w‘w  ! A a¨˜{Ó+Ð+ˆ	Ü—w‘w  ! A a˜yÓ)Ð)ˆÜ—w‘w  ! A a¨˜{Ó+Ð+ˆð ×ÑˆØ"Ÿ{š{�—’°°ˆÜ�6‹{ˆÜ”3”u˜cŸk™kÓ*Ó+ˆÜ�3—;‘;ÓˆÜ�3—:‘:‹ˆä )¨!¯(©(Ó 3×B™˜˜1¸¸Tº	’!ÐBˆÑBÜ )¨!¯)©)Ó 4×B™˜˜1¸¸Tº	’!ÐBˆÑBÜ )¬#Ñ.@À!Ç)Á)Ó*LÓ M×[™˜˜1ÐQRÐVZÒQZ’!Ð[ˆÑ[Ü )¨!¯(©(Ó 3×B™˜˜1¸¸Tº	’!ÐBˆÑBÜ�—‘‹_ˆÜ�—‘Óˆä˜vÓ&ó 9	9‰EˆAˆrØ�B‘�r‘ˆBÜ" 6Ó*ó 79‘��2Ø˜‘U�Ü!*¨6Ó!2ó 59‘I�A�vØ=CÖD¸˜Ÿ™ r¨B¡w°¡{Ó3ÐD�AÐDØ$%Ö7˜q¨Q©YšÐ7�AÐ7Ü˜1“v ’{Ø Ü!Ÿ~™~ÐPQÖ.RÈ1¨q°©}¸Q¸vÒ/FÒ.RÓS�Hô Ÿ:™: x i°kÔB�DØ%-¨d¡^�NäŸ>™>ÈqÖ*QÈ!¨1¨[©>º!¸A¸f¸H¸*Ó+EÒ*QÐXYÔZÒ[\Ð]aÐ[aÑb�CÜŸ>™>ÈqÖ*QÈ!¨1¨Z©=º¸1¸V¸8¸Ó+DÒ*QÐXYÔZÒ[\Ð]aÐ[aÑb�DÜŸ>™>À!Ö*D¸Q¨1¨Z«=Ò*DÓE�DÜ×+Ñ+¨D°!©GÓ5�DØ˜q’yÙ ÜŸ.™.¸¼b¿n¹nÈTÓ>RÓT�CÜŸ.™.¬¯©¸Ó)<¼b¿n¹nÈTÓ>RÓT�CäŸY™Y s°Ô3×:Ñ:ÄÐ:ÓG�FÜŸY™Y s°Ô3×:Ñ:ÄÐ:ÓG�FÜ'0´°V¸VÓ1DÓ'Eó 9™˜™8˜B ÜŸX™X b›\˜ÜŸX™X b›\˜Ü  ›W˜Ø $™Y˜Ø 2 b¡5¬¯©°A«Ñ#6Ñ7˜ÜŸX™X q d›^˜ÜŸX™X q d›^˜áØ.0°©f˜F 1 Q q¨ 7šOà./˜F 1 Q q¨ 7™Oð  ŸY™Y›[˜¨a¯h©h«j¨!ä!& r¨!¡t¨Q°Ó!3ò 0˜AØ! !™u r¨!¨A©#¡w›Ø*,¨Q©%  1 Q¡3¢ð0ô  "Ÿ™¨r°1·9±9À6ÔJ˜ð!Ü*3°D«/ò <¡  BØ(*¨2©  "¡Ø)7¸Ñ);  2¢ñ<ô
 02¯x©x¸«{˜	 !¢A a¨¨! )Ñ,Ü,.¯H©H°R«L˜˜q¢ 1 Q q˜yÓ)ò=9ò/59ò79ð9	9ðv Ø˜!˜Q  1�oÜ×%Ñ%×)Ñ)Ó+×4Ñ4Ð5HÓIØ"ØØñ
ˆŒ	ô �i‰i‹kˆÜÐ"×)Ñ)¨3¨s©7Ó3Õ4ùóU CùÛBùÛ[ùÛBùò EùÚ7ùò /Sùò +RùÚ*QùÚ*DøðH!Ù úsf   Ç[Ç[Ç2[ Ç?[ È)[&È6[&É[,É"[,Ë[2
Ë<[7
Ì[7
Ì,[<Í2\Î*\Ï"\×<#\Ü\c                 óÄ   ‡ ‡— d	ˆ fd„	Šˆˆ fd„}ˆfd„}‰ j                   st        d«      ‚‰ j                  j                  }|dk(  s|dk(  r|}n|dk(  r|} «       ‰ _        y)
zž
        Compute and display summary metrics for evaluation results.
        Note this functin can *only* be applied on the default parameter setting
        Nc           
      óf  •— ‰j                   }d}| dk(  rdnd}| dk(  rdnd}|€,dj                  |j                  d   |j                  d	   «      nd
j                  |«      }t        |j                  «      D �	�
cg c]  \  }	}
|
|k(  sŒ|	‘Œ }}	}
t        |j
                  «      D �	�cg c]  \  }	}||k(  sŒ|	‘Œ }}	}| dk(  rL‰j                  d   }|�*t        j                  ||j                  k(  «      d   }||   }|d d …d d …d d …||f   }nH‰j                  d   }|�*t        j                  ||j                  k(  «      d   }||   }|d d …d d …||f   }t        ||d	kD     «      dk(  rd	}nt        j                  ||d	kD     «      }t        |j                  ||||||«      «       |S c c}
}	w c c}}	w )NzB {:<18} {} @[ IoU={:<9} | area={:>6s} | maxDets={:>3d} ] = {:0.3f}r   zAverage PrecisionzAverage Recallz(AP)z(AR)z{:0.2f}:{:0.2f}r   r=   z{:0.2f}r±   r²   )r   rA   r‘   rk   Ú
areaRngLblrD   r   rB   ÚwhererV   Úmeanr   )ÚapÚiouThrrH   rD   r5   ÚiStrÚtitleStrÚtypeStrÚiouStrr`   r‰   ÚaindÚmDetÚmindÚsr¡   Úmean_sr   s                    €r   Ú
_summarizez&COCOeval.summarize.<locals>._summarize«  s­  ø€ Ø—‘ˆAØWˆDØ.0°AªgÑ*Ð;KˆHØ " A¢‘f¨6ˆGà�>ð '×-Ñ-¨a¯i©i¸©l¸A¿I¹IÀb¹MÔJØ'0×'7Ñ'7¸Ó'?ð ô &/¨q¯|©|Ó%<×P™'˜!˜TÀÈÃ’AÐPˆDÑPÜ%.¨q¯y©yÓ%9×M™'˜!˜T¸TÀW»_’AÐMˆDÑMØ�QŠwà—I‘I˜kÑ*�àÐ%ÜŸ™ ¨1¯9©9Ñ!4Ó5°aÑ8�AØ˜!™�AØ’ašš!˜D �oÑ&‘ð —I‘I˜hÑ'�ØÐ%ÜŸ™ ¨1¯9©9Ñ!4Ó5°aÑ8�AØ˜!™�AØ’aš˜$˜t�mÑ$�Ü�1�Q�r‘T‘7‹|˜QŠØ‘äŸ™  1 R¡4¡Ó)�Ü�$—+‘+˜h¨°¸À'È6ÓRÔSØˆMùó- QùÛMs   Á9F'ÂF'Â&F-Â4F-c                  óp  •— t        j                  d«      }  ‰d«      | d<    ‰dd‰j                  j                  d   ¬«      | d<    ‰dd‰j                  j                  d   ¬«      | d<    ‰dd‰j                  j                  d   ¬	«      | d
<    ‰dd‰j                  j                  d   ¬	«      | d<    ‰dd‰j                  j                  d   ¬	«      | d<    ‰d‰j                  j                  d   ¬«      | d<    ‰d‰j                  j                  d   ¬«      | d<    ‰d‰j                  j                  d   ¬«      | d<    ‰dd‰j                  j                  d   ¬	«      | d<    ‰dd‰j                  j                  d   ¬	«      | d<    ‰dd‰j                  j                  d   ¬	«      | d<   | S )N)é   r   r   ç      à?rd   )rï   rD   ç      è?Úsmall)rH   rD   re   Úmediumé   Úlargeé   ©rD   é   é   é   é	   é
   é   )rB   ri   r   rD   )r   rù   r   s    €€r   Ú_summarizeDetsz*COCOeval.summarize.<locals>._summarizeDetsÊ  s�  ø€ Ü—H‘H˜U“OˆEÙ! !“}ˆE�!‰HÙ! !¨B¸¿¹×8KÑ8KÈAÑ8NÔOˆE�!‰HÙ! !¨C¸¿¹×9LÑ9LÈQÑ9OÔPˆE�!‰HÙ! !¨W¸d¿k¹k×>QÑ>QÐRSÑ>TÔUˆE�!‰HÙ! !¨X¸t¿{¹{×?RÑ?RÐSTÑ?UÔVˆE�!‰HÙ! !¨W¸d¿k¹k×>QÑ>QÐRSÑ>TÔUˆE�!‰HÙ! !¨T¯[©[×-@Ñ-@ÀÑ-CÔDˆE�!‰HÙ! !¨T¯[©[×-@Ñ-@ÀÑ-CÔDˆE�!‰HÙ! !¨T¯[©[×-@Ñ-@ÀÑ-CÔDˆE�!‰HÙ! !¨W¸d¿k¹k×>QÑ>QÐRSÑ>TÔUˆE�!‰HÙ" 1¨hÀÇÁ×@SÑ@SÐTUÑ@VÔWˆE�"‰IÙ" 1¨g¸t¿{¹{×?RÑ?RÐSTÑ?UÔVˆE�"‰IØˆLr    c                  óF  •— t        j                  d«      }  ‰dd¬«      | d<    ‰ddd¬«      | d<    ‰ddd¬«      | d	<    ‰ddd
¬«      | d<    ‰ddd¬«      | d<    ‰dd¬«      | d<    ‰ddd¬«      | d<    ‰ddd¬«      | d<    ‰ddd
¬«      | d<    ‰ddd¬«      | d<   | S )N)r  r   é   r  r   rü   )rD   rï   rý   rd   rÿ   )rD   rH   re   r  r   r  r  r  r  r  )rB   ri   )r   rù   s    €r   Ú_summarizeKpsz)COCOeval.summarize.<locals>._summarizeKpsÙ  sÅ   ø€ Ü—H‘H˜U“OˆEÙ! !¨RÔ0ˆE�!‰HÙ! !¨R¸Ô;ˆE�!‰HÙ! !¨R¸Ô<ˆE�!‰HÙ! !¨R¸ÔBˆE�!‰HÙ! !¨R¸ÔAˆE�!‰HÙ! !¨RÔ0ˆE�!‰HÙ! !¨R¸Ô;ˆE�!‰HÙ! !¨R¸Ô<ˆE�!‰HÙ! !¨R¸ÔBˆE�!‰HÙ! !¨R¸ÔAˆE�!‰HØˆLr    zPlease run accumulate() firstr*   r<   r-   )r   NÚalléd   )r   rX   r   r
   r   )r   r
  r  r
   Ú	summarizerù   s   `    @r   r  zCOCOeval.summarize¦  s`   ù€ õ
	õ>	ô	ð �yŠyÜÐ;Ó<Ð<Ø—+‘+×%Ñ%ˆØ�fÒ ¨6Ò 1Ø&‰IØ˜Ò#Ø%ˆIÙ“[ˆ�
r    c                 ó$   — | j                  «        y r¨   )r  ©r   s    r   Ú__str__zCOCOeval.__str__ï  s   € Ø�‰Õr    )NNr*   r¨   )Ú__name__Ú
__module__Ú__qualname__r   r:   rP   rE   rF   rG   rè   r  r  © r    r   r   r   
   s9   „ ód<ò0#òJ(4òTò:)òVNó`i5òVG!óRr    r   c                   ó$   — e Zd ZdZd„ Zd„ Zdd„Zy)r   z(
    Params for coco evaluation api
    c           	      ól  — g | _         g | _        t        j                  ddt	        t        j
                  d«      «      dz   d¬«      | _        t        j                  ddt	        t        j
                  d	«      «      dz   d¬«      | _        g d
¢| _        ddgddgddgddgg| _	        g d¢| _
        d| _        y )Nrü   çffffffî?çÿÿÿÿÿÿ!@r   T©Úendpointç        ç      ð?ç      Y@)r   r  r  r   ç    _ Bé   é $  )r  rþ   rÿ   r  )r   r   rB   ÚlinspacerY   Úroundr‘   r´   rD   rH   rë   r1   r  s    r   ÚsetDetParamszParams.setDetParamsö  s£   € ØˆŒØˆŒä—{‘{ 2 t¬S´·±Ð:KÓ1LÓ-MÐPQÑ-QÐ\`ÔaˆŒÜ—{‘{ 2 t¬S´·±Ð:KÓ1LÓ-MÐPQÑ-QÐ\`ÔaˆŒÚ#ˆŒØ Ð*¨V°WÐ,=ÀÈÐ?QÐT[Ð]eÐSfÐgˆŒÚ=ˆŒØˆ�r    c           	      ó¢  — g | _         g | _        t        j                  ddt	        t        j
                  d«      «      dz   d¬«      | _        t        j                  ddt	        t        j
                  d	«      «      dz   d¬«      | _        d
g| _        ddgddgddgg| _	        g d¢| _
        d| _        t        j                  g d¢«      dz  | _        y )Nrü   r  r  r   Tr  r  r  r   r  r   r!  r"  r#  )r  rÿ   r  )g¤p=
×£Ð?ç      Ð?r(  çffffffÖ?r)  çHáz®Gé?r*  ç
×£p=
ç?r+  ç×£p=
×ã?r,  ç…ëQ¸ñ?r-  ç×£p=
×ë?r.  ç{®Gázì?r/  g      $@)r   r   rB   r$  rY   r%  r‘   r´   rD   rH   rë   r1   rl   rj   r  s    r   ÚsetKpParamszParams.setKpParams  s»   € ØˆŒØˆŒä—{‘{ 2 t¬S´·±Ð:KÓ1LÓ-MÐPQÑ-QÐ\`ÔaˆŒÜ—{‘{ 2 t¬S´·±Ð:KÓ1LÓ-MÐPQÑ-QÐ\`ÔaˆŒØ�tˆŒØ Ð*¨W°gÐ,>ÀÈ(Ð@SÐTˆŒÚ4ˆŒØˆŒÜ Ÿh™hÒ'}Ó~ð  @Dñ  DˆÕr    c                 ó˜   — |dk(  s|dk(  r| j                  «        n!|dk(  r| j                  «        nt        d«      ‚|| _        d | _        y )Nr*   r<   r-   ziouType not supported)r&  r0  rX   r
   r@   )r   r
   s     r   r   zParams.__init__  sK   € Ø�fÒ ¨6Ò 1Ø×ÑÕØ˜Ò#Ø×ÑÕäÐ3Ó4Ð4ØˆŒàˆ�r    N)r*   )r  r  r  Ú__doc__r&  r0  r   r  r    r   r   r   ò  s   „ ñò	ò
Dô	r    r   )Ú
__author__ÚnumpyrB   rÁ   r?   Úcollectionsr   Ú r   rZ   rI   r   r   r  r    r   ú<module>r7     s3   ðØ€
ã Û Û Ý #Ý Û ÷fñ f÷P$ò $r    