
    kh#                     r    d Z ddlZddlZddlZddlmZ ddlmZ  ej                  e
      Z G d de      Zy)z9 OpenImages dataset parser

Copyright 2020 Ross Wightman
    N   )Parser)OpenImagesParserCfgc            
       L     e Zd Zdef fdZdededededef
dZd	 Zd
 Z xZ	S )OpenImagesParsercfgc                 x   t         |   |j                  |j                  dd|j                  xr |j                  |j
                         |j                  | _        d| _        d | _	        d | _
        | j                  |j                  |j                  |j                  |j                  |j                          y )NF)	bbox_yxyx
has_labelsinclude_masksinclude_bboxes_ignoreignore_empty_gtmin_img_sizer   )categories_filenameimg_info_filenameimg_filenamemasks_filenamebbox_filename)super__init__r
   r   r   r   prefix_levelsimg_prefix_levelsmask_prefix_levels_anns_img_to_ann_load_annotationsr   r   r   r   r   )selfr   	__class__s     b/var/www/teggl/fontify/venv/lib/python3.12/site-packages/effdet/data/parsers/parser_open_images.pyr   zOpenImagesParser.__init__   s    mm~~"'NNBs/B/B)) 	 	
 "%!2!2"#
 # 7 7!33))--++ 	 	
    r   r   r   r   r   c                 
    dd l t        j                  d       j                  |d       }|d   j	                          _        |d   j	                          _        t         j
                        D ci c]  \  }}|| j                  z    c}} _	         fd fd}	d# fd	}
 j                  r j                  rj                  |      }t        |d   j                               } |
||	      \  }}|d   j                  |      |d
<   t        j                   |j"                  j$                  t        j&                        r>|j)                  d      }|j"                  j+                  t        j,                        |d
<   |j/                  d
d       |d
   j0                  }||   }|d   |d d df   z  |d<   |d   |d d df   z  |d<   |d   |d d df   z  |d<   |d   |d d df   z  |d<   |d   j                   j                        |d<   t3        |g d   j0                  j+                  t        j4                        |dg   j0                  j+                  t        j,                        |dg   j0                         _        t        j                  |dd      \  }}}t9        t;        ||             _        nT j                  r?t        j                  d       j                  |      }t        |d   j                               } |
||	      \  }}t        j                  d       |d   j                  |      |d
<   t        j                   |j"                  j$                  t        j&                        r>|j)                  d      }|j"                  j+                  t        j,                        |d
<   |j/                  d
d       |d
   j0                  }||   }|d   |d d df   z  |d<   |d   |d d df   z  |d<   |d   |d d df   z  |d<   |d   |d d df   z  |d<   |d   j                   j                        j+                  t        j,                        |d<   t3        |g d   j0                  j+                  t        j4                        |dd g   j0                  j+                  t        j,                        !       _        t        j                  |dd      \  }}}t9        t;        ||             _        n |
|       t        j                  d"       y c c}}w )$Nr   zLoading categories...)headerr   c                     | z  }j                   r=| d j                    D cg c]  }| }}t        j                  j                  g || }|S c c}w N)r   ospathjoin)img_idfilenameclevelsr   r   s       r   _img_filenamez9OpenImagesParser._load_annotations.<locals>._img_filename6   s\    #f,H%%%+,CT-C-C%DE!EE77<<:::O Fs   	Ac                     j                   r=| d j                    D cg c]  }| }}t        j                  j                  g ||  } | S c c}w r$   )r   r%   r&   r'   )	mask_pathr*   r+   r   s      r   _mask_filenamez:OpenImagesParser._load_annotations.<locals>._mask_filename>   sS    &&%./G0G0G%HI!IIGGLL<&<)<	 Js   	Ac                    t         j                  d       j                  | d      }t         j                  d       ||j                  |   }||d   	j                  k\  |d   	j                  k\  z     }t         j                  d       |j
                  |d<   |j
                  j                  fd	      |d
<   |g d   }|ddg   j                  }|j                  d      	_	        |j
                  j                  j                         	_        t        	j                        D ci c]  \  }}||
 }}}||fS c c}}w )NzRead img_info csv...id)	index_colzFilter images...widthheightzMapping ids...r(   c                      |       S r$    )xr,   s    r   <lambda>zLOpenImagesParser._load_annotations.<locals>._load_img_info.<locals>.<lambda>Q   s    }UVGW r    	file_name)r(   r9   r3   r4   records)_loggerinforead_csvlocr   indexmapvaluesto_dict	img_infostolistimg_ids	enumerate)
csv_fileselect_img_idsimg_info_df	img_sizesidxr(   img_id_to_idxr,   pdr   s
          r   _load_img_infoz:OpenImagesParser._load_annotations.<locals>._load_img_infoE   s5   LL/0++h$+?KLL+,))oon=%W%):)::{8?TX\XiXi?ijlK LL)*$/$5$5K!'2'8'8'<'<=W'XK$%&PQK#Wh$78??I(00;DN&,,33::<DL<Edll<ST[S&VS[TMTm++ Us   ,E ImageID)rH   ImageIdxrows)axisT)inplaceBoxXMinBoxXMaxBoxYMinBoxYMax	LabelNameLabelIdx)rT   rV   rU   rW   MaskPath)bboxlabelr.   )return_indexreturn_countszLoading bbox...zProcess bbox...XMinXMaxYMinYMax)r_   ra   r`   rb   	IsGroupOf)r[   r\   zAnnotations loaded!r$   )pandasr;   r<   r=   rD   cat_ids	cat_namesrF   label_offsetcat_id_to_labelr   r   sorteduniquer@   np
issubdtyperP   dtypefloatingdropnaastypeint32sort_valuesrA   dictfloat32r   listzipr   )r   r   r   r   r   r   
classes_dfir*   r/   rN   masks_dfanno_img_idsrJ   rL   ann_img_idx_rircbbox_dfr,   rM   s   `  `                @@r   r   z"OpenImagesParser._load_annotations&   s    	,-[[!4T[B
!!}++-#A--/ENt||E\]TQ1t'8'8#8 8]			,( $//{{>2H "(9"5"<"<">?L'56GXd'e$I}#+I#6#:#:=#IHZ }}X..44bkkB#???7'/'8'8'?'?'I$  T :":.55K!+.I"*9"5	!Q$"GHY"*9"5	!Q$"GHY"*9"5	!Q$"GHY"*9"5	!Q$"GHY#+K#8#<#<T=Q=Q#RHZ  JKRRYYZ\ZdZde
|,33::288D"J<077DJ
 		+DPTUIAr2#CBK0D__LL*+kk-0G "')"4";";"=>L'56GXd'e$I}LL*+"))"4"8"8"GGJ}}W--33R[[A!..f.5&-&6&6&=&=bhh&G
#
D9!*-44K!+.I%fo	!Q$?GFO%fo	!Q$?GFO%fo	!Q$?GFO%fo	!Q$?GFO")+"6":":4;O;O"P"W"WXZX`X`"aGJ=>EELLRZZXz;78??FFrxxPDJ 		+DPTUIAr2#CBK0D,-*+C  ^s   9T:c                       j                   s
t               S  j                  |   \  t         j                  j                               }t         fd|D              } j                  |||      S )Nc              3   H   K   | ]  }j                   |   z      y wr$   )r   ).0knum_annr   	start_idxs     r   	<genexpr>z0OpenImagesParser.get_ann_info.<locals>.<genexpr>   s%     ZA4::a=9w3FGZs   ")r   rs   r   tupler   keys_parse_ann_info)r   rK   ann_keys
ann_valuesr   r   s   `   @@r   get_ann_infozOpenImagesParser.get_ann_info   sa    6M!--c2	7*+ZQYZZ
##C:>>r    c           	         g }g }g }| j                   rd|v sJ g }t        | D ]  }t        t        ||            }|d   \  }	}
}}||	z
  dk  s||
z
  dk  r3|d   d   }d}t        |d         dkD  r|d   d   }| j                  r*t        j                  |
|	||gt
        j                        }n|d   }|r|j                  |       |j                  |       |j                  |        |rLt        j                  |dt
        j                  	      }t        j                  |t
        j                        }nJt        j                  d
t
        j                        }t        j                  g t
        j                        }| j                  rN|r't        j                  |dt
        j                  	      }n%t        j                  d
t
        j                        }t        ||      }| j                  r?|j                  t        |t        j                  g t
        j                                     | j                   r|d<   |S )z	
        r.   r[   r   r\   r   F)rm      )ndminrm   )r      )r[   cls)bbox_ignore
cls_ignoremasks)r   rv   rs   lenyxyxrk   arrayrt   appendint64zerosr   update)r   img_idxr   r   	gt_bboxes	gt_labelsgt_bboxes_ignoregt_masksannx1y1x2y2r\   iscrowdr[   s                   r   r   z OpenImagesParser._parse_ann_info   s    		(***H
# 	(Cs8S)*C [NBBBw{b2gkLOEG3w< 1$g,q/yyxxRR 0

C6{ ''-  &  '#	(. !2::FI"((;Irzz:I2884I%%#%88,<ARZZ#X #%88F"**#E 	y1%%JJt(8RXXbXZX`X`Eabc#CL
r    )
__name__
__module____qualname__r   r   strr   r   r   __classcell__)r   s   @r   r   r      sV    
/ 
*o,!$o,  #o, 	o,
  o, o,b?4r    r   )__doc__numpyrk   r%   loggingparserr   parser_configr   	getLoggerr   r;   r   r6   r    r   <module>r      s;     	   .
'

H
%Dv Dr    