
    ^j$                        d dl mZ d dlmZ d dlmZ d dlZd dlmZm	Z	 d dl
mZ d dl
mZ d dlmZmZ d d	lmZ d d
lmZmZ ddZddZddZddZy)    )annotations)Path)AnyN)DatasetSubset)infer_coco_keypoint_schema)infer_yolo_keypoint_schema)
build_cocobuild_roboflow_from_coco)
build_o365)YoloDetectionbuild_roboflow_from_yoloc                    t        d      D ]  }t        | t              s| j                  } ! t        | t        j
                  j                        r| j                  S t        | t              r| j                  S y )N
   )	range
isinstancer   datasettorchvisiondatasetsCocoDetectioncocor   )r   _s     c/var/www/ramen.bs-engineer-server.com/venv/lib/python3.12/site-packages/rfdetr/datasets/__init__.pyget_coco_api_from_datasetr       sa    2Y &gv&ooG& ';//==>||'=)||    c                    | dz  dz  }|j                         ry| dz  }| dz  }| dz  dz  }|j                         s|j                         r|j                         ryt        d|  d	      )
a  Detect if a Roboflow dataset is in COCO or YOLO format.

    Args:
        dataset_dir: Path to the Roboflow dataset root directory

    Returns:
        'coco' if COCO format detected, 'yolo' if YOLO format detected

    Raises:
        ValueError: If neither format is detected
    trainz_annotations.coco.jsonr   z	data.yamlzdata.ymlimagesyoloz#Could not detect dataset format in zs. Expected either COCO format (train/_annotations.coco.json) or YOLO format (data.yaml or data.yml + train/images/))exists
ValueError)dataset_dircoco_annotationyolo_data_file_yamlyolo_data_file_ymlyolo_images_dirs        r   detect_roboflow_formatr'   +   s     "G+.FFO &3$z1!G+h6O""$(:(A(A(CI_I_Ia

-k] ;A 	B r   c                    t        |j                        }|j                         sJ d| d       t        |      }|dk(  rt	        | ||      S t        | ||      S )zBuild a Roboflow dataset, auto-detecting COCO or YOLO format.

    This function detects the dataset format and delegates to the appropriate builder function.
    zprovided Roboflow path z does not existr   )r   r"   r    r'   r   r   )	image_setargs
resolutionrootdataset_formats        r   build_roboflowr.   J   sa    
   !D;;=I3D6II=+D1N'	4DD#ItZ@@r   c                   |j                   dk(  rt        | ||      S |j                   dk(  rt        | ||      S |j                   dk(  rt        | ||      S |j                   dk(  rt	        | ||      S t        d|j                    d      )Nr   o365roboflowr   zdataset z not supported)dataset_filer
   r   r.   r   r!   )r)   r*   r+   s      r   build_datasetr3   Y   s    F")T:66F")T:66J&iz::F"'	4DD
x 1 12.A
BBr   )r   Dataset[Any]returnz
Any | None)r"   r   r5   str)r)   r6   r*   r   r+   intr5   r4   )
__future__r   pathlibr   typingr   r   torch.utils.datar   r    rfdetr.datasets._keypoint_schemar   r	   rfdetr.datasets.cocor
   r   rfdetr.datasets.o365r   rfdetr.datasets.yolor   r   r   r'   r.   r3    r   r   <module>rA      s;   " #    , e e E + H>A	Cr   