a
    _Df8                     @   sH  d dl Z d dlZd dlmZ d dlmZ ddlmZ ddlm	Z	 ddl
mZ h dZh ed	Zh eZd
d Zd*e jeee dddZe jdddZe jdddZe jdddZe jdddZe jdddZe jedddZd+e jee eddd Ze jed!d"d#Ze jeed$d%d&Zd'd( Zed)krDe  dS ),    N)Path)Optional   )AnnotationSet)	BoxFormat)COCOEvaluator>   cocoimagenet	pascalvocyolov7labelmevia-jsoncvat	openimageyolov5yolo-darknettxtcoco_resultc                  C   st   t  } | jdddd | jddd td | jdd	}|d
}|d}|d}t| t| t| | 	 S )Nz--quietz-q
store_trueactionz	--threadsz-j)defaulttypemode)destconvertsummaryevaluate)
argparseArgumentParseradd_argumentintadd_subparsers
add_parseradd_convert_argsadd_stats_argsadd_eval_args
parse_args)parserZ
subparsersZconvert_parserZstats_parserZeval_parser r)   W/nfs/NAS7/SABIOD/METHODE/ermites/ermites_venv/lib/python3.9/site-packages/globox/cli.pyr'      s    


r'   input)r(   metavarlabelc                 C   s   | j dt|d | |d u r dn|}|j ddttdd |j dd	td d
 |j ddtd dd |j ddtdddd |j ddtdddd |j ddtddd |j ddtd d!d |j d"d#td$d%d d S )&Nr+   )r   r,   zParse optionsz--formatz-f	format_inr   choicesr   z--img_folderz-dr   r   z	--mappingz-m
mapping_inr   r   r   z--bb_fmtz-bltrbZltwhZxywhr5   	bb_fmt_inr   r0   r   r   z--normz-nabsrelr9   norm_inz--extz-e.txtext_inz	--img_extz-g.jpg
img_ext_inz--sepz-p sep_in)r    r   add_argument_groupstrPARSE_CHOICES)r(   r,   r-   groupr)   r)   r*   add_parse_args-   s*    
rF   r(   c                 C   s   | j dtd | d}|j ddttd |j ddtd d	 |j d
dtdddd |j ddtdddd |j ddtdd	 |j ddtdd	 |j ddtdd	 d S )Npredictionsr   zPredictions parse optionsz--format_dets-F)r   r0   z--mapping_dets-Mr1   z--bb_fmt_dets-Br4   r5   bb_fmt_detsr7   z--norm_dets-Nr8   r9   norm_in_detsz
--ext_dets-Er<   z--img_ext_detsz-Gr>   z
--sep_dets-Pr@   )r    r   rB   rC   PARSE_CHOICES_EXT)r(   rE   r)   r)   r*   add_parse_dets_argsJ   s.    
rS   c                 C   s   | j dtd | d}|j ddttdd |j dd	td
dd |j ddtddd |j ddtdd |j ddtdd |j dddd | }|j ddtd d |j ddtd d d S ) NoutputrI   zSave optionsz
--save_fmtrJ   
format_outr/   z--bb_fmt_outrL   r4   r5   )r   r0   r   z
--norm_outrN   r8   r9   z	--sep_outrQ   r@   r1   z	--ext_outrP   r<   z--coco_auto_idsz-Ar   r   z--mapping_outrK   z--reverse_mapping_outz-R)r    r   rB   rC   SAVE_CHOICESadd_mutually_exclusive_group)r(   rE   Zmapping_groupr)   r)   r*   add_save_argse   s"    



rX   c                 C   s   t |  d S N)rF   rG   r)   r)   r*   r%   {   s    r%   c                 C   s   t |  t|  d S rY   )rF   rX   rG   r)   r)   r*   r$      s    r$   c                 C   s.   t | ddd t|  | jddtd dd d S )NgroundtruthszGround-truths parse options)r,   r-   z--savez-ssave_csv_pathr3   )rF   rS   r    r   rG   r)   r)   r*   r&      s    r&   )argsreturnc              
   C   s  | j   }| j}| j }|dkr2tj||dS |dksB|dkrPtj||dS |dkr| jd usjJ d| j  }tj	|||dS |dkrtj
||dS |d	krtj||dS |d
kr| j}tj||dS | j}d }| jd u r| j  }|dkrtj||||d}n|dkr0tj||||d}nv|dkrNtj||||d}nX|dkrt| j}| jdk}	| j}
| j}tj||||	|
|||d}ntd| d| jd ur| j  }t|}|| |S d S )Nr   verboser
   r	   r   `The image directory must be provided for openimage format (required for reading the image size).image_folderr_   r   r   r   rb   r   rb   image_extensionr_   r   r   r   r:   rb   
box_formatrelativefile_extensionre   	separatorr_   zInput format '	' unknown)r+   
expanduserresolver.   quietr   	from_cocofrom_xml
img_folderfrom_openimagefrom_labelme	from_cvatfrom_via_jsonr?   from_yolo_darknetfrom_yolo_v5from_yolo_v7r   from_stringr6   r;   r=   rA   from_txt
ValueErrorr2   parse_names_file
map_labels)r\   r+   r.   r_   img_dirimg_ext	image_dirannotationsformatrh   	extensionsepmap_pathmappingr)   r)   r*   parse_annotations   sx    






r   )r\   coco_gtsr]   c              
   C   s  | j   }| j}| j }|dkr2tj||dS |dkrX|d u rJtd|j||dS |dksh|dkrvtj	||dS |dkr| j
d usJ d| j
  }tj|||d	S |d
krtj||dS |dkrtj||dS |dk r| j
}tj||dS | j}d }| j
d ur| j
  }|dkr:tj||||d}n|dkrXtj||||d}nv|dkrvtj||||d}nX|dkrt| j}	| jdk}
| j}| j}tj|||	|
||||d}ntd| d| jd ur| j  }t|}|| |S d S )Nr   r^   r   zMWhen using 'COCO results', the parsed ground truths must be in 'COCO' format.r
   r	   r   r`   ra   r   r   r   rc   r   rd   r   r   r   r:   rf   zGroundtruth format 'rk   )rH   rl   rm   format_detsrn   r   ro   r{   Zfrom_resultsrp   rq   rr   rs   rt   ru   Zimg_ext_detsrv   rw   rx   r   ry   rM   rO   Zext_detsZsep_detsrz   Zmapping_detsr|   r}   )r\   r   r+   r   r_   r~   r   r   r   bb_fmtrh   r   r   r   r   r)   r)   r*   parse_dets_annotations   s    







r   )r\   r   c              	   C   s  | j   }| j}| j }| jd urJ| j  }t|}|| n>| j	d ur| j	  }t|}dd |
 D }|| |dkr|j|| j|d n>|dkr|j||d n$|dkr|j||d n
|dkr|j||d n|d	kr|j||d n|d
kr@| j}|d us.J d|j|||d n|dkrZ|j||d n|dkrt|j||d np|dkr|j||d nV|dkrt| j}| jdk}	| j}
| j}|j|d ||	||
|d ntd| dd S )Nc                 S   s   i | ]\}}||qS r)   r)   ).0kvr)   r)   r*   
<dictcomp>2      z$save_annotations.<locals>.<dictcomp>r   )Zauto_idsr_   r
   r^   r   r   r   r   zNThe image folder must be provided with `--img_folder` for via-json conversion.ra   r   r   r   r   r:   )Zlabel_to_idrg   rh   rj   ri   r_   zSave format 'rk   )rT   rl   rm   rU   rn   Zmapping_outr   r|   r}   Zreverse_mapping_outitemsZ	save_cocoZcoco_auto_idsZsave_xmlZsave_openimageZsave_labelmeZ	save_cvatrq   Zsave_via_jsonZsave_yolo_darknetZsave_yolo_v5Zsave_yolo_v7r   ry   Z
bb_fmt_outZnorm_outZext_outZsep_outZsave_txtr{   )r\   r   rT   rU   r_   r   r   rb   r   rh   r   r   r)   r)   r*   save_annotations&  sd    












r   )r\   rZ   rH   c                 C   sf   | j  }t||d}|j|d | jd urb| j  }|j|dd |rbtd| j dtj	d d S )N)Zground_truthsrH   r^   FzEvaluation saved to 'z'.)file)
rn   r   Zshow_summaryr[   rl   rm   Zsave_csvprintsysstderr)r\   rZ   rH   r_   Z	evaluatorpathr)   r)   r*   r   _  s    
r   c                  C   s   t  } | jd u s,| jdks,J d| j d| j}|dkrNt| }t| | nf|dkrht| }|  nL|dkrt| }| jdkr|nd }t| |d}t| || nt	d	| d
d S )Nr   zThe number of threads 'z-' should either be None or be greater than 0.r   r   r   r   )r   zSub-command 'z' not recognized.)
r'   threadsr   r   r   Z
show_statsr   r   r   r{   )r\   r   r   rZ   r   rH   r)   r)   r*   maino  s(    
r   __main__)r+   N)N)r   r   pathlibr   typingr   Zannotationsetr   Zboundingboxr   Z
evaluationr   rD   rR   rV   r'   r   rC   rF   rS   rX   r%   r$   r&   	Namespacer   r   r   r   r   __name__r)   r)   r)   r*   <module>   sF     H P:
