
    Ng#                     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  ej	        e
          Z G d de          ZdS )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                 4   t                                          |j        |j        dd|j        o|j        |j                   |j        | _        d| _        d | _	        d | _
        |                     |j        |j        |j        |j        |j                   d S )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/html/ai-engine/env/lib/python3.11/site-packages/effdet/data/parsers/parser_open_images.pyr   zOpenImagesParser.__init__   s    m~"'NBs/B) 	 	
 	
 	
 "%!2"#
 # 7!3)-+ 	 	
 	
 	
 	
 	
    r   r   r   r   r   c                 6    dd l t                              d                               |d           }|d                                          _        |d                                          _         fdt           j                  D              _         fd fd}d$ fd	} j	        r< j
        r4                    |          }	t          |	d	                                                   }
 |||

          \  }}|	d	                             |          |	d<   t          j        |	j        j        t          j                  r=|	                    d          }	|	j                            t          j                  |	d<   |	                    dd           |	d         j        }||         }|	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                  |	d<   t1          |	g d         j                            t          j                  |	dg         j                            t          j                  |	dg         j                   _        t          j        |dd          \  }}}t7          t9          ||                     _        n j
        rxt                              d                               |          }t          |d	                                                   }
 |||

          \  }}t                              d           |d	                             |          |d<   t          j        |j        j        t          j                  r=|                    d          }|j                            t          j                  |d<   |                    dd           |d         j        }||         }|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                                      t          j                  |d<   t1          |g d          j                            t          j                  |dd!g         j                            t          j                  "           _        t          j        |dd          \  }}}t7          t9          ||                     _        n ||           t                              d#           d S )%Nr   zLoading categories...)headerr   c                 ,    i | ]\  }}||j         z   S  )label_offset).0icr   s      r   
<dictcomp>z6OpenImagesParser._load_annotations.<locals>.<dictcomp>4   s'    ]]]TQ1t'8#8]]]r    c                     | z  }j         r1d | d j                  D             }t          j        j        g ||R  }|S )Nc                     g | ]}|S r$   r$   r&   r(   s     r   
<listcomp>zMOpenImagesParser._load_annotations.<locals>._img_filename.<locals>.<listcomp>:   s    EEE!EEEr    )r   ospathjoin)img_idfilenamelevelsr   r   s      r   _img_filenamez9OpenImagesParser._load_annotations.<locals>._img_filename6   sZ    #f,H% ;EEV,CT-C,C%DEEE7<:::::Or    c                 x    j         r1d | d j                  D             }t          j        j        g || R  } | S )Nc                     g | ]}|S r$   r$   r,   s     r   r-   zNOpenImagesParser._load_annotations.<locals>._mask_filename.<locals>.<listcomp>A   s    III!IIIr    )r   r.   r/   r0   )	mask_pathr3   r   s     r   _mask_filenamez:OpenImagesParser._load_annotations.<locals>._mask_filename>   sQ    & =IIY/G0G/G%HIIIGL<&<)<<<	r    c                    t                               d                               | d          }t                               d           ||j        |         }||d         j        k    |d         j        k    z           }t                               d           |j        |d<   |j                            fd	          |d
<   |g d         }|ddg         j        }|                    d          _	        |j        j        
                                _        d t          j                  D             }||fS )NzRead img_info csv...id)	index_colzFilter images...widthheightzMapping ids...r1   c                      |           S Nr$   )xr4   s    r   <lambda>zLOpenImagesParser._load_annotations.<locals>._load_img_info.<locals>.<lambda>Q   s    }}UVGWGW r    	file_name)r1   rB   r<   r=   recordsc                     i | ]\  }}||	S r$   r$   )r&   idxr1   s      r   r)   zNOpenImagesParser._load_annotations.<locals>._load_img_info.<locals>.<dictcomp>V   s    TTT[S&VSTTTr    )_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img_id_to_idxr4   pdr   s        r   _load_img_infoz:OpenImagesParser._load_annotations.<locals>._load_img_infoE   s>   LL/000++h$+??KLL+,,,))on=%W%)::{8?TX\Xi?ijlK LL)***$/$5K!'2'8'<'<=W=W=W=W'X'XK$%&P&P&PQK#Wh$78?I(00;;DN&,3::<<DLTTIdl<S<STTTMm++r    ImageID)rS   ImageIdxrows)axisT)inplaceBoxXMinBoxXMaxBoxYMinBoxYMax	LabelNameLabelIdx)r^   r`   r_   ra   MaskPath)bboxlabelr7   )return_indexreturn_countszLoading bbox...zProcess bbox...XMinXMaxYMinYMax)ri   rk   rj   rl   	IsGroupOf)re   rf   zAnnotations loaded!r?   )pandasrF   rG   rH   rO   cat_ids	cat_namesrQ   cat_id_to_labelr   r   sorteduniquerK   np
issubdtyperZ   dtypefloatingdropnaastypeint32sort_valuesrL   dictfloat32r   listzipr   )r   r   r   r   r   r   
classes_dfr8   rX   masks_dfanno_img_idsrU   rV   ann_img_idx_rircbbox_dfr4   rW   s   `  `              @@r   r   z"OpenImagesParser._load_annotations&   s    	,---[[!4T[BB
!!}++--#A--//]]]]Yt|E\E\]]]	 	 	 	 	 		 	 	 	 		, 	, 	, 	, 	, 	, 	, 	,(  :	.$/ :	.{{>22H "(9"5"<"<">">??L'5~6GXd'e'e'e$I}#+I#6#:#:=#I#IHZ }X.4bkBB J#???77'/'8'?'?'I'I$  T :::":.5K!+.I"*9"5	!!!Q$"GHY"*9"5	!!!Q$"GHY"*9"5	!!!Q$"GHY"*9"5	!!!Q$"GHY#+K#8#<#<T=Q#R#RHZ  JJJKRYYZ\Zdee
|,3::28DD"J<07  DJ
 	+DPTUUUIAr2#CBKK00D_ 	.LL*+++kk-00G "')"4";";"="=>>L'5~6GXd'e'e'e$I}LL*+++"))"4"8"8"G"GGJ}W-3R[AA H!..f.55&-&6&=&=bh&G&G
#
D999!*-4K!+.I%fo	!!!Q$?GFO%fo	!!!Q$?GFO%fo	!!!Q$?GFO%fo	!!!Q$?GFO")+"6":":4;O"P"P"W"WXZX`"a"aGJ===>ELLRZXXz;78?FFrxPP  DJ 	+DPTUUUIAr2#CBKK00DN,---*+++++r    c                      j         st                      S  j        |         \  t           j                                                  }t           fd|D                       }                     |||          S )Nc              3   H   K   | ]}j         |         z            V  d S r?   )r   )r&   knum_annr   	start_idxs     r   	<genexpr>z0OpenImagesParser.get_ann_info.<locals>.<genexpr>   s8      ZZA4:a=9w3F)FGZZZZZZr    )r   r|   r   tupler   keys_parse_ann_info)r   rE   ann_keys
ann_valuesr   r   s   `   @@r   get_ann_infozOpenImagesParser.get_ann_info   s     	66M!-c2	7**++ZZZZZZQYZZZ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?|d         d         }d}t          |d                   dk    r|d         d         }| j        r%t          j        |
|	||gt
          j                  }n|d         }|r|                    |           |                    |           |                    |           |rBt          j        |dt
          j        	          }t          j        |t
          j	                  }n@t          j
        d
t
          j                  }t          j        g t
          j	                  }| j        rD|r"t          j        |dt
          j        	          }n t          j
        d
t
          j                  }t          ||          }| j        rB|                    t          |t          j        g t
          j	                                       | j         r||d<   |S )z	
        r7   re   r   rf   r   F)rv      )ndminrv   )r      )re   cls)bbox_ignore
cls_ignoremasks)r   r   r|   lenyxyxrt   arrayr}   appendint64zerosr   update)r   img_idxr   r   	gt_bboxes	gt_labelsgt_bboxes_ignoregt_masksannx1y1x2y2rf   iscrowdre   s                   r   r   z OpenImagesParser._parse_ann_info   sZ    		 	(****H
# 	( 	(Cs8S))**C [NBBBw{{b2gkkLOEG3w<  1$$g,q/y #xRR 0
CCC6{ ( ''----  &&&  ''''  	5!2:FFFI"(;;;IIrz:::I28444I% 	F F#%8,<ARZ#X#X#X  #%8F"*#E#E#E 	y111% 	dJJt(8RXbXZX`EaEaEabbbccc 	$#CL
r    )
__name__
__module____qualname__r   r   strr   r   r   __classcell__)r   s   @r   r   r      s        
/ 
 
 
 
 
 
*o,!$o,  #o, 	o,
  o, o, o, o, o,b? ? ?4 4 4 4 4 4 4r    r   )__doc__numpyrt   r.   loggingparserr   parser_configr   	getLoggerr   rF   r   r$   r    r   <module>r      s         				        . . . . . .
'
H
%
%D D D D Dv D D D D Dr    