
    NgI^                     v    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dS )
tsungyi    N)defaultdict   )maskc                   H    e Zd ZddZd Zd Zd Zd Zd Zdd	Z	d
 Z
d ZdS )COCOevalNsegmc                    |st          d           || _        || _        t          t                    | _        i | _        t          t                    | _        t          t                    | _        t          |          | _
        i | _        g | _        i | _        |Xt          |                                          | j
        _        t          |                                          | j
        _        dS dS )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       P/var/www/html/ai-engine/env/lib/python3.11/site-packages/pycocotools/cocoeval.py__init__zCOCOeval.__init__<   s      	ECDDD#D))	%%	%%	W---
	~!'(8(8(:(:!;!;DK!'(8(8(:(:!;!;DK ~    c                 Z   d }| j         }|j        r}| j                            | j                            |j        |j                            }| j                            | j                            |j        |j                            }np| j                            | j                            |j                            }| j                            | j                            |j                            }|j        dk    r" ||| j                    ||| j                   |D ]D}d|v r|d         nd|d<   d|v o|d         |d<   |j        dk    r|d	         dk    p|d         |d<   Et          t                    | _        t          t                    | _        |D ]0}| j        |d
         |d         f                             |           1|D ]0}| j        |d
         |d         f                             |           1t          t                    | _        i | _        dS )z^
        Prepare ._gts and ._dts for evaluation based on params
        :return: None
        c                 D    | D ]}|                     |          }||d<   d S )Nsegmentation)annToRLE)annscocoannrles       r   _toMaskz"COCOeval._prepare.<locals>._toMaskY   s9     * *mmC((&)N##* *r!   )r   r   )r   r	   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9 	M$$T[%:%:!(STS[%:%\%\]]C$$T[%:%:!(STS[%:%\%\]]CC$$T[%:%:!(%:%K%KLLC$$T[%:%:!(%:%K%KLLC 9GC%%%GC%%% 	J 	JB+3r>>2h<<qBxL$?<r)}BxLyK'' "? 3q 8IR\8%%	%%	 	D 	DBIbnb&778??CCCC 	D 	DBIbnb&778??CCCC#D))			r!   c                    t          j                     }t          d           | j        j        ;j        dk    rdnd_        t          d                    j                             t          d                    j                             t          t          j        j	                            _	        j
        r+t          t          j        j                            _        t          j                  _        | _        |                                  j
        rj        ndgj        dk    sj        dk    r| j        nj        d	k    r| j        fd
j	        D             | _        | j        j        d         fdD             | _        t)          j        | j                  | _        t          j                     }t          d                    ||z
                       dS )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-   c                 8    i | ]}D ]}||f ||          S  r?   ).0imgIdcatIdr   
computeIoUs      r   
<dictcomp>z%COCOeval.evaluate.<locals>.<dictcomp>   sP     - - -!%+- -! U^ZZu%=%= - - - -r!   c           
      T    g | ]$}j         D ]}j        D ]} |||          %S r?   )areaRngr   )r@   rB   rF   rA   evaluateImgmaxDetr5   s       r   
<listcomp>z%COCOeval.evaluate.<locals>.<listcomp>   si        !	 h   %UE7FCC     r!   DONE (t={:0.2f}s).)timer   r   useSegmr   formatr   npuniquer   r1   r   r   maxDetsr:   rC   
computeOksr   rG   r   copydeepcopyr   )r   tictocr   rC   rG   rH   r5   s      @@@@@r   evaluatezCOCOeval.evaluatey   s   
 ikk/000Ky "#)q..fAIKRRSTS\]]^^^-44QY??@@@	!(++,,9 	1BIah//00AH19%%	Y0RD9!)v"5"5JJY+%%J- - - - -%&X- - -	 &2     $  
  =55ikk"))#c'2233333r!   c                    
  j         }|j        r j        |f         } j        |f         
n( fd|j        D             } fd|j        D             
t          |          dk    rt          
          dk    rg S t          j        d 
D             d          }
fd|D             
t          
          |j        d         k    r
d|j        d                  
|j	        d	k    rd
 |D             }d 
D             }n3|j	        dk    rd |D             }d 
D             }nt          d          d |D             }t          j        |||          }	|	S )Nc                 8    g | ]}j         |f         D ]}|S r?   r   r@   cId_rA   r   s      r   rI   z'COCOeval.computeIoU.<locals>.<listcomp>   1    FFF591EFFA!FFFFr!   c                 8    g | ]}j         |f         D ]}|S r?   r   rZ   s      r   rI   z'COCOeval.computeIoU.<locals>.<listcomp>   r]   r!   r   c                      g | ]}|d           S scorer?   r@   ds     r   rI   z'COCOeval.computeIoU.<locals>.<listcomp>   s    3331AgJ;333r!   	mergesortkindc                      g | ]
}|         S r?   r?   r@   ir9   s     r   rI   z'COCOeval.computeIoU.<locals>.<listcomp>   s    """be"""r!   r=   r	   c                     g | ]
}|d          S r$   r?   r@   gs     r   rI   z'COCOeval.computeIoU.<locals>.<listcomp>       ///q>"///r!   c                     g | ]
}|d          S rl   r?   rc   s     r   rI   z'COCOeval.computeIoU.<locals>.<listcomp>   ro   r!   r<   c                     g | ]
}|d          S r<   r?   rm   s     r   rI   z'COCOeval.computeIoU.<locals>.<listcomp>       '''q6'''r!   c                     g | ]
}|d          S rr   r?   rc   s     r   rI   z'COCOeval.computeIoU.<locals>.<listcomp>   rs   r!   z#unknown iouType for iou computationc                 8    g | ]}t          |d                    S r,   intr@   os     r   rI   z'COCOeval.computeIoU.<locals>.<listcomp>   $    1113q|$$111r!   )r   r1   r   r   r   lenrN   argsortrP   r   	Exception	maskUtilsiou)r   rA   rB   r5   r8   indsrn   rd   r,   r   r9   s   ``        @r   rC   zCOCOeval.computeIoU   s   K9 	G5;'B5;'BBFFFFFqxFFFBFFFFFqxFFFBr77a<<CGGaKKIz33333+FFF""""T"""r77QYr]""!AIbM/"B9//B///A//B///AAY&  ''B'''A''B'''AAABBB 21b111}Qq))r!   c                 "   | j         }| j        ||f         }| j        ||f         t          j        d D             d          }fd|D             t                    |j        d         k    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k              }|d         }|d         |d         z
  }|d         |d         dz  z   }|d
         |d	         z
  }|d
         |d	         dz  z   }t                    D ]D\  }}t          j
        |d                   }|dd d	         }|d
d d	         }|dk    r||z
  }||z
  }nt          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k    r||dk             }t          j        t          j        |                     |j        d         z  |||
f<   F|S )Nc                      g | ]}|d           S ra   r?   rc   s     r   rI   z'COCOeval.computeOks.<locals>.<listcomp>   s    4441AgJ;444r!   re   rf   c                      g | ]
}|         S r?   r?   )r@   rj   r7   s     r   rI   z'COCOeval.computeOks.<locals>.<listcomp>   s    $$$!s1v$$$r!   r=   r      r-      r   r<   axisarea)r   r   r   rN   r}   r|   rP   zeroskpt_oks_sigmas	enumeratearraycount_nonzeromaxspacingsumexpshape) r   rA   rB   r5   r6   r   r   sigmasvarskjr8   rn   xgygvgk1bbx0x1y0y1rj   r9   rd   xdyddxdyzer7   s                                   @r   rQ   zCOCOeval.computeOks   s   Kiu%iu%z44444;GGG$$$$t$$$s88aim##a	"o&Cs88q==CHHMMIxS3s88,--!
QKKs^^ 	= 	=EArK))A14a4BqAw"Qqt!tW!"q&))BFBAABRURUQY%6AABRURUQY%6"3 = =2HR_--qt!tW1QTT7ba44bBbBB !ABrE
222261be*!3L3L3LLBBrE
222261be*!3L3L3LLBURU]d*bjA.FG!K66QiAVBFA2JJ//!'!*<QT

=  r!   c                 N     j         }|j        r j        |f          j        |f         n( fd|j        D              fd|j        D             t                    dk    rt                    dk    rdS D ]9}|d         s$|d         d         k     s|d         d         k    rd|d<   4d|d<   :t          j        d	 D             d
          }fd|D             t          j        d D             d
          }fd|d|         D             d D             }	t           j        |f                   dk    r j        |f         dd|f         n j        |f         }
t          |j	                  }t                    }t                    }t          j
        ||f          }t          j
        ||f          }t          j        d D                       }t          j
        ||f          }t          |
          dk    st          |j	                  D ]\  }}t                    D ]\  }}t          |dg          }d}t                    D ]W\  }}|||f         dk    r	|	|         s|dk    r||         dk    r||         dk    r n|
||f         |k     rK|
||f         }|}X|dk    r||         |||f<   |         d         |||f<   |d         |||f<   t          j        fdD                                           dt                    f          }t          j        |t          j        |dk    t          j        ||d                              }||d D             d D             ||d D             ||dS )zo
        perform evaluation for single category and image
        :return: dict (single image results)
        c                 8    g | ]}j         |f         D ]}|S r?   rY   rZ   s      r   rI   z(COCOeval.evaluateImg.<locals>.<listcomp>   r]   r!   c                 8    g | ]}j         |f         D ]}|S r?   r_   rZ   s      r   rI   z(COCOeval.evaluateImg.<locals>.<listcomp>   r]   r!   r   Nr+   r   r   _ignorec                     g | ]
}|d          S r   r?   rm   s     r   rI   z(COCOeval.evaluateImg.<locals>.<listcomp>  s    555QAiL555r!   re   rf   c                      g | ]
}|         S r?   r?   )r@   rj   r8   s     r   rI   z(COCOeval.evaluateImg.<locals>.<listcomp>  s    ###be###r!   c                      g | ]}|d           S ra   r?   rc   s     r   rI   z(COCOeval.evaluateImg.<locals>.<listcomp>  s    444AQwZK444r!   c                      g | ]
}|         S r?   r?   ri   s     r   rI   z(COCOeval.evaluateImg.<locals>.<listcomp>  s    ---be---r!   c                 8    g | ]}t          |d                    S rv   rw   ry   s     r   rI   z(COCOeval.evaluateImg.<locals>.<listcomp>  r{   r!   c                     g | ]
}|d          S r   r?   rm   s     r   rI   z(COCOeval.evaluateImg.<locals>.<listcomp>  s    222!9222r!   gA?r=   idc                 X    g | ]&}|d          d         k     p|d          d         k    'S )r   r   r   r?   )r@   rd   aRngs     r   rI   z(COCOeval.evaluateImg.<locals>.<listcomp>*  s8    IIIaiQ'<1V9T!W+<IIIr!   c                     g | ]
}|d          S r   r?   rc   s     r   rI   z(COCOeval.evaluateImg.<locals>.<listcomp>2       5 5 5Q4 5 5 5r!   c                     g | ]
}|d          S r   r?   rm   s     r   rI   z(COCOeval.evaluateImg.<locals>.<listcomp>3  r   r!   c                     g | ]
}|d          S ra   r?   rc   s     r   rI   z(COCOeval.evaluateImg.<locals>.<listcomp>6  s     8 8 87 8 8 8r!   )r/   r0   r   rH   dtIdsgtIds	dtMatches	gtMatchesdtScoresgtIgnoredtIgnore)r   r1   r   r   r   r|   rN   r}   r   iouThrsr   r   r   minreshape
logical_orlogical_andrepeat)r   rA   rB   r   rH   r5   rn   gtinddtindr,   r   TGDgtmdtmgtIgdtIgtindtdindrd   r   mgindar9   r8   s   `` `                      @@r   rG   zCOCOeval.evaluateImg   sE   
 K9 	G5;'B5;'BBFFFFFqxFFFBFFFFFqxFFFBr77a<<CGGaKK4 	! 	!A{ !qya00AfId1g4E4E ) ) 
55"555KHHH####U###
44444;GGG----U1V8_---11b11147	%,8O4P4PST4T4Tty&qqq%x00Z^ZcdikpdpZq	NNGGGGx1x1x22r22233x14yy!||$QY// . .a(}} . .GD!qk**CA#,R==  atDy>!++GDM+$R44DGQJJ4:q==!ET	?S00$ dO2vv &*1gDdO&(eDkCT	N&'gCQKK-.0 HIIIIbIIIJJRRTUWZ[]W^W^S_``}T2>#q&")Aa:J:J#K#KLL !& % $ & 5 5" 5 5 5 5 5" 5 5 5 # # 8 8R 8 8 8 $ $  	r!   c                     0123456 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          |          5t          t          t           |j	                            3t          |j
                  6t          |j                  45fdt%          |j                  D             }6fdt%          |j
                  D             }3fdt%          t          d	 |j	                            D             }4fd
t%          |j                  D             }t          |j                  }t          |j	                  }t%          |          D ]\  }}||z  |z  1t%          |          D ]\  }}||z  0t%          |          D ]}\  }201 fd|D             }d |D             }t          |          dk    r6t          j        2fd|D                       }t          j        | d          }||         }t          j        2fd|D             d          dd|f         }t          j        2fd|D             d          dd|f         }t          j        d |D                       }t          j        |dk              }|dk    rt          j        |t          j        |                    } t          j        t          j        |          t          j        |                    }!t          j        | d                              t4                    }"t          j        |!d                              t4                    }#t%          t7          |"|#                    D ]\  }$\  }%}&t          j        |%          }%t          j        |&          }&t          |%          }'|%|z  }(|%|&|%z   t          j        d          z   z  })t          j        |f          }*t          j        |f          }+|'r|(d         |	|$|||f<   n	d|	|$|||f<   |)                                })|*                                }*tA          |'dz
  dd          D ]%},|)|,         |)|,dz
           k    r|)|,         |)|,dz
  <   &t          j!        |(|j        d          }	 t%          |          D ]\  }-}.|)|.         |*|-<   ||.         |+|-<   n#  Y nxY wt          j        |*          ||$dd|||f<   t          j        |+          |
|$dd|||f<   ||||||gtD          j"        #                                $                    d          ||	|
d _%        t          j                    }/t          d&                    |/|z
                       dS )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                 "    g | ]\  }}|v 	|S r?   r?   )r@   nr   setKs      r   rI   z'COCOeval.accumulate.<locals>.<listcomp>Z  "    BBB1T		!			r!   c                 "    g | ]\  }}|v 	|S r?   r?   )r@   r   r   setMs      r   rI   z'COCOeval.accumulate.<locals>.<listcomp>[  r   r!   c                 "    g | ]\  }}|v 	|S r?   r?   )r@   r   r   setAs      r   rI   z'COCOeval.accumulate.<locals>.<listcomp>\  s)    [[[1QRVZQZQZ!QZQZQZr!   c                      t          |           S N)tuple)xs    r   <lambda>z%COCOeval.accumulate.<locals>.<lambda>\  s    a r!   c                 "    g | ]\  }}|v 	|S r?   r?   )r@   r   rj   setIs      r   rI   z'COCOeval.accumulate.<locals>.<listcomp>]  r   r!   c                 6    g | ]}j         z   |z            S r?   )r   )r@   rj   NaNkr   s     r   rI   z'COCOeval.accumulate.<locals>.<listcomp>f  s(    DDDrBw{3DDDr!   c                     g | ]}||S r   r?   r@   r   s     r   rI   z'COCOeval.accumulate.<locals>.<listcomp>g  s    777qQYYYYr!   r   c                 0    g | ]}|d          d         S )r   r   r?   r@   r   rH   s     r   rI   z'COCOeval.accumulate.<locals>.<listcomp>j  s&    .R.R.R1q}QvX/F.R.R.Rr!   re   rf   c                 8    g | ]}|d          dddf         S )r   Nr   r?   r   s     r   rI   z'COCOeval.accumulate.<locals>.<listcomp>q  s.    *Q*Q*Q!1[>!!!AfH*+E*Q*Q*Qr!   r   c                 8    g | ]}|d          dddf         S )r   Nr   r?   r   s     r   rI   z'COCOeval.accumulate.<locals>.<listcomp>r  s.    *Q*Q*Q!1Z=1V8+D*Q*Q*Qr!   c                     g | ]
}|d          S )r   r?   r   s     r   rI   z'COCOeval.accumulate.<locals>.<listcomp>s  s    *D*D*DQ1Z=*D*D*Dr!   )dtypeleft)sidez%Y-%m-%d %H:%M:%S)r   countsdate	precisionrecallscoresrJ   )'r   rK   r   r   r1   r   r|   r   recThrsrF   rP   rN   onesr   setmapr   r   r   concatenater}   r   r   logical_notcumsumastypefloatzipr   r   r   tolistrangesearchsorteddatetimenowstrftimer   rM   )7r   r5   rT   r   RKAMr   r   r   _per   k_listm_lista_listi_listI0A0r   k0r   a0r   Er   r   dtScoresSortedr   r   r   npigtpsfpstp_sumfp_sumr   tpfpndrcprqssrj   ripirU   r   r   rH   r   r   r   r   s7   `                                               @@@@@@@r   
accumulatezCOCOeval.accumulate;  s    	2333ikk} 	1/0009A yA~~188B4!)nn!)nn'(y7c!(mmma!)nn!)nnw!Aa{+++	w!Aay)))w!Aa{+++ "{46{{3uck**++3;3:BBBB	!( 3 3BBBBBBB	!) 4 4BBB[[[[	#.@.@!)*L*L M M[[[BBBB	!( 3 3BBB__v&& 9	9 9	9EArBrB"6** 79 792U!*6!2!2 59 59IAvDDDDDDVDDDA77A777A1vv{{ !~.R.R.R.RPQ.R.R.RSSH :xikBBBD%-d^N>*Q*Q*Q*Qq*Q*Q*QXYZZZ[\[\[\]a[abC>*Q*Q*Q*Qq*Q*Q*QXYZZZ[\[\[\]a[abD>*D*D!*D*D*DEED+D!G55Dqyy .bnT>R>RTTC.)<)<bnT>R>RTTCYs333:::GGFYs333:::GGF'0VV1D1D'E'E 9 98BXb\\Xb\\ WW$Y2b5A#67Xqd^^Xqd^^ 0.0fF1Qq7OO./F1Qq7O  YY[[ahhjj!!&r!tQ!3!3 0 0A!!ur!A#w*,Q%1Q3!r196JJJ!*3D// < <B(*2")7);2<! D/1x{{	!AAAa!),,.HRLLq1Qqy))=9/5979r !Q1o%))++445HII"
 
	 ikk"))3s73344444s   +W		Wc                      d fd	 fd}fd} j         st          d           j        j        }|d	k    s|d
k    r|}n|dk    r|} |             _        dS )z
        Compute and display summary metrics for evaluation results.
        Note this functin can *only* be applied on the default parameter setting
        r   Nalld   c           
      R   j         }d}| dk    rdnd}| dk    rdnd}|,d                    |j        d         |j        d	                   nd
                    |          }fdt          |j                  D             }	fdt          |j                  D             }
| dk    rNj        d         }|+t          j        ||j        k              d         }||         }|d d d d d d |	|
f         }nJj        d         }|+t          j        ||j        k              d         }||         }|d d d d |	|
f         }t          ||d	k                       dk    rd	}nt          j
        ||d	k                       }t          |                    ||||                     |S )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}c                 &    g | ]\  }}|k    |S r?   r?   )r@   rj   r   rF   s      r   rI   z:COCOeval.summarize.<locals>._summarize.<locals>.<listcomp>  s"    PPP'!TAr!   c                 &    g | ]\  }}|k    |S r?   r?   )r@   rj   mDetrP   s      r   rI   z:COCOeval.summarize.<locals>._summarize.<locals>.<listcomp>  s"    MMM'!TTW__A___r!   r   r   )r   rM   r   r   
areaRngLblrP   r   rN   wherer|   meanr   )apiouThrrF   rP   r5   iStrtitleStrtypeStriouStraindmindsr   mean_sr   s     ``          r   
_summarizez&COCOeval.summarize.<locals>._summarize  s   AWD.0Agg**;KH "Aff6G> '--ailAIbMJJJ'0'7'7'?'?  QPPPYq|%<%<PPPDMMMMYqy%9%9MMMDQwwIk*%19!455a8A!Aaaa!!!Do& Ih'%19!455a8A!Aaaa$tm$1QrT7||Q1R4))$++h'6RRSSSMr!   c                     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         ?r   )r1  rP         ?small)rF   rP   r   medium   large   rP            	   
      )rN   r   r   rP   )r   r:  r   s    r   _summarizeDetsz*COCOeval.summarize.<locals>._summarizeDets  s   HUOOE!z!}}E!H!z!B8KA8NOOOE!H!z!C9LQ9OPPPE!H!z!Wdk>QRS>TUUUE!H!z!Xt{?RST?UVVVE!H!z!Wdk>QRS>TUUUE!H!z!T[-@-CDDDE!H!z!T[-@-CDDDE!H!z!T[-@-CDDDE!H!z!Wdk>QRS>TUUUE!H"
1h@STU@VWWWE"I"
1gt{?RST?UVVVE"ILr!   c                     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)rI  r      rD  r   r=  )rP   r1  r>  r   r@  )rP   rF   r   rB  rA  rC  rE  rF  rG  rH  )rN   r   )r   r:  s    r   _summarizeKpsz)COCOeval.summarize.<locals>._summarizeKps  s   HUOOE!z!R000E!H!z!R;;;E!H!z!R<<<E!H!z!RBBBE!H!z!RAAAE!H!z!R000E!H!z!R;;;E!H!z!R<<<E!H!z!RBBBE!H!z!RAAAE!HLr!   zPlease run accumulate() firstr	   r<   r-   )r   Nr'  r(  )r   r~   r   r   r   )r   rK  rN  r   	summarizer:  s   `    @r   rO  zCOCOeval.summarize  s    
	 	 	 	 	 	>	 	 	 	 	 		 	 	 	 	 y 	=;<<<+%f6 1 1&II##%IY[[


r!   c                 .    |                                   d S r   )rO  r   s    r   __str__zCOCOeval.__str__  s    r!   )NNr	   r   )__name__
__module____qualname__r    r:   rV   rC   rQ   rG   r%  rO  rR  r?   r!   r   r   r   
   s        d< < < <0# # #J(4 (4 (4T  :) ) )VN N N`i5 i5 i5 i5VG! G! G!R    r!   r   c                   &    e Zd ZdZd Zd ZddZdS )r   z(
    Params for coco evaluation api
    c           	      v   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| _        d S )Nr=  ffffff?!@r   Tendpoint              ?      Y@)r   rI  r(  r       _B    $  )r'  r?  r@  rB  )r   r   rN   linspacerx   roundr   r   rP   rF   r-  r1   rQ  s    r   setDetParamszParams.setDetParams  s    {2tS:K1L1L-M-MPQ-Q\`aaa{2tS:K1L1L-M-MPQ-Q\`aaa#||*VW,=?QT[]eSf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  | _        d S )Nr=  rX  rY  r   TrZ  r\  r]  r^  rM  r   r_  r`  ra  )r'  r@  rB  )gp=
ף?      ?rf  ffffff?rg  HzG?rh  
ףp=
?ri  ףp=
?rj  Q?rk  ףp=
?rl  {Gz?rm  g      $@)r   r   rN   rb  rx   rc  r   r   rP   rF   r-  r1   r   r   rQ  s    r   setKpParamszParams.setKpParams  s    {2tS:K1L1L-M-MPQ-Q\`aaa{2tS:K1L1L-M-MPQ-Q\`aaat*Wg,>(@ST444 h'}'}'}~~  @D  Dr!   r	   c                     |dk    s|dk    r|                                   n*|dk    r|                                  nt          d          || _        d | _        d S )Nr	   r<   r-   ziouType not supported)rd  rn  r~   r   rL   )r   r   s     r   r    zParams.__init__  sm    f6 1 1##3444r!   N)r	   )rS  rT  rU  __doc__rd  rn  r    r?   r!   r   r   r     sS         	 	 	
D 
D 
D	 	 	 	 	 	r!   r   )
__author__numpyrN   r  rK   collectionsr    r   r   rR   r   r   r?   r!   r   <module>ru     s   
       # # # # # #       f f f f f f f fP$ $ $ $ $ $ $ $ $ $r!   