Ë
    Dêñih  ã                  ór   — d dl mZ d dl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lmZ  G d	„ d
e«      Zy)é    )ÚannotationsN)ÚPath)ÚAnyÚCallableé   )Údefault_loader)Údownload_and_extract_archiveÚverify_str_arg)ÚVisionDatasetc                  ót   ‡ — e Zd ZdZdZdddddef	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dˆ fd„Zdd„Zdd	„Zdd
„Z	dd„Z
ˆ xZS )ÚFGVCAircrafta2  `FGVC Aircraft <https://www.robots.ox.ac.uk/~vgg/data/fgvc-aircraft/>`_ Dataset.

    The dataset contains 10,000 images of aircraft, with 100 images for each of 100
    different aircraft model variants, most of which are airplanes.
    Aircraft models are organized in a three-levels hierarchy. The three levels, from
    finer to coarser, are:

    - ``variant``, e.g. Boeing 737-700. A variant collapses all the models that are visually
        indistinguishable into one class. The dataset comprises 100 different variants.
    - ``family``, e.g. Boeing 737. The dataset comprises 70 different families.
    - ``manufacturer``, e.g. Boeing. The dataset comprises 30 different manufacturers.

    Args:
        root (str or ``pathlib.Path``): Root directory of the FGVC Aircraft dataset.
        split (string, optional): The dataset split, supports ``train``, ``val``,
            ``trainval`` and ``test``.
        annotation_level (str, optional): The annotation level, supports ``variant``,
            ``family`` and ``manufacturer``.
        transform (callable, optional): A function/transform that takes in a PIL image or torch.Tensor, depends on the given loader,
            and returns a transformed version. E.g, ``transforms.RandomCrop``
        target_transform (callable, optional): A function/transform that takes in the
            target and transforms it.
        download (bool, optional): If True, downloads the dataset from the internet and
            puts it in root directory. If dataset is already downloaded, it is not
            downloaded again.
        loader (callable, optional): A function to load an image given its path.
            By default, it uses PIL as its image loader, but users could also pass in
            ``torchvision.io.decode_image`` for decoding image data into tensors directly.
    zWhttps://www.robots.ox.ac.uk/~vgg/data/fgvc-aircraft/archives/fgvc-aircraft-2013b.tar.gzÚtrainvalÚvariantNFc           
     ó,  •— t         ‰| �  |||¬«       t        |dd«      | _        t        |dd«      | _        t
        j                  j                  | j                  d«      | _	        |r| j                  «        | j                  «       st        d«      ‚t
        j                  j                  | j                  dd	d
ddœ| j                     «      }t        |«      5 }	|	D �
cg c]  }
|
j                  «       ‘Œ c}
| _        d d d «       t!        t#        | j                  t%        t'        | j                  «      «      «      «      | _        t
        j                  j                  | j                  dd«      }t
        j                  j                  | j                  dd| j                  › d| j                  › d�«      }g | _        g | _        t        |«      5 }	|	D ]‰  }
|
j                  «       j/                  dd«      \  }}| j*                  j1                  t
        j                  j                  ||› d�«      «       | j,                  j1                  | j(                  |   «       Œ‹ 	 d d d «       || _        y c c}
w # 1 sw Y   �ŒyxY w# 1 sw Y   || _        y xY w)N)Ú	transformÚtarget_transformÚsplit)ÚtrainÚvalr   ÚtestÚannotation_level)r   ÚfamilyÚmanufacturerzfgvc-aircraft-2013bz;Dataset not found. You can use download=True to download itÚdatazvariants.txtzfamilies.txtzmanufacturers.txtÚimagesÚimages_Ú_z.txtú r   z.jpg)ÚsuperÚ__init__r
   Ú_splitÚ_annotation_levelÚosÚpathÚjoinÚrootÚ
_data_pathÚ	_downloadÚ_check_existsÚRuntimeErrorÚopenÚstripÚclassesÚdictÚzipÚrangeÚlenÚclass_to_idxÚ_image_filesÚ_labelsr   ÚappendÚloader)Úselfr&   r   r   r   r   Údownloadr6   Úannotation_fileÚfÚlineÚimage_data_folderÚlabels_fileÚ
image_nameÚ
label_nameÚ	__class__s                  €úd/var/www/pod-logistic/pod-ai/venv/lib/python3.12/site-packages/torchvision/datasets/fgvc_aircraft.pyr    zFGVCAircraft.__init__.   s-  ø€ ô 	‰Ñ˜¨ÐEUÐÔVÜ$ U¨GÐ5YÓZˆŒÜ!/ØÐ0Ð2Wó"
ˆÔô Ÿ'™'Ÿ,™, t§y¡yÐ2GÓHˆŒÙØ�N‰NÔà×!Ñ!Ô#ÜÐ\Ó]Ð]äŸ'™'Ÿ,™,Ø�O‰OØà)Ø(Ø 3ñð ×$Ñ$ñ	&ó
ˆô �/Ó"ð 	8 aØ56Ö7¨T˜DŸJ™J�LÒ7ˆDŒL÷	8ô !¤ T§\¡\´5¼¸T¿\¹\Ó9JÓ3KÓ!LÓMˆÔäŸG™GŸL™L¨¯©¸&À(ÓKÐÜ—g‘g—l‘l 4§?¡?°F¸gÀd×F\ÑF\ÐE]Ð]^Ð_c×_jÑ_jÐ^kÐkoÐ<pÓqˆàˆÔØˆŒä�+Óð 	C !Øò C�Ø)-¯©«×);Ñ);¸CÀÓ)CÑ&�
˜JØ×!Ñ!×(Ñ(¬¯©¯©Ð6GÈJÈ<ÐW[ÐI\Ó)]Ô^Ø—‘×#Ñ# D×$5Ñ$5°jÑ$AÕBñC÷	Cð
 ˆ�ùò 8÷	8ñ 	8ú÷	Cð
 ˆ�ús+   ÃI6Ã I1Ã7I6ÇBJÉ1I6É6J ÊJc                ó,   — t        | j                  «      S ©N)r1   r3   ©r7   s    rA   Ú__len__zFGVCAircraft.__len__`   s   € Ü�4×$Ñ$Ó%Ð%ó    c                óÜ   — | j                   |   | j                  |   }}| j                  |«      }| j                  r| j                  |«      }| j                  r| j	                  |«      }||fS rC   )r3   r4   r6   r   r   )r7   ÚidxÚ
image_fileÚlabelÚimages        rA   Ú__getitem__zFGVCAircraft.__getitem__c   se   € Ø ×-Ñ-¨cÑ2°D·L±LÀÑ4E�Eˆ
Ø—‘˜JÓ'ˆà�>Š>Ø—N‘N 5Ó)ˆEà× Ò Ø×)Ñ)¨%Ó0ˆEà�eˆ|ÐrF   c                óf   — | j                  «       ryt        | j                  | j                  «       y)zW
        Download the FGVC Aircraft dataset archive and extract it under root.
        N)r)   r	   Ú_URLr&   rD   s    rA   r(   zFGVCAircraft._downloado   s%   € ð ×ÑÔØÜ$ T§Y¡Y°·	±	Õ:rF   c                óª   — t         j                  j                  | j                  «      xr) t         j                  j	                  | j                  «      S rC   )r#   r$   Úexistsr'   ÚisdirrD   s    rA   r)   zFGVCAircraft._check_existsw   s/   € Ü�w‰w�~‰~˜dŸo™oÓ.ÒQ´2·7±7·=±=ÀÇÁÓ3QÐQrF   )r&   z
str | Pathr   Ústrr   rR   r   úCallable | Noner   rS   r8   Úboolr6   zCallable[[str], Any]ÚreturnÚNone)rU   Úint)rH   rW   rU   ztuple[Any, Any])rU   rV   )rU   rT   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__rN   r   r    rE   rL   r(   r)   Ú__classcell__)r@   s   @rA   r   r      s�   ø„ ñð< e€Dð
  Ø )Ø%)Ø,0ØØ'5ð0àð0ð ð0ð ð	0ð
 #ð0ð *ð0ð ð0ð %ð0ð 
õ0ód&ó
ó;÷RrF   r   )Ú
__future__r   r#   Úpathlibr   Útypingr   r   Úfolderr   Úutilsr	   r
   Úvisionr   r   © rF   rA   ú<module>rd      s*   ðÝ "ã 	Ý ß  å "ç ?Ý !ôkR�=õ kRrF   