o
    Ni!                     @   s   d Z ddlmZ ddlmZ ddlmZ ddlZddlm  mZ	 ddl
mZ dZdZdZd	ZG d
d dejjZdd ZG dd dejjZdS )zImagenette: a subset of 10 easily classified classes from Imagenet.

(tench, English springer, cassette player, chain saw, church, French horn,
garbage truck, gas pump, golf ball, parachute)
    )absolute_import)division)print_functionNz
@misc{imagenette,
  author    = "Jeremy Howard",
  title     = "imagenette",
  url       = "https://github.com/fastai/imagenette/"
}
aR  Imagenette is a subset of 10 easily classified classes from the Imagenet
dataset. It was originally prepared by Jeremy Howard of FastAI. The objective
behind putting together a small version of the Imagenet dataset was mainly
because running new ideas/algorithms/experiments on the whole Imagenet take a
lot of time.

This version of the dataset allows researchers/practitioners to quickly try out
ideas and share with others. The dataset comes in three variants:

  * Full size
  * 320 px
  * 160 px

Note: The v2 config correspond to the new 70/30 train/valid split (released
in Dec 6 2019).
z*image_classification/imagenette_labels.txtz+https://s3.amazonaws.com/fast-ai-imageclas/c                       s    e Zd ZdZ fddZ  ZS )ImagenetteConfigzBuilderConfig for Imagenette.c                    sV   t t| jd
||dkrdnd d|tjdd| |dddd	|  | _d S )Nimagenette2z-v2 z{} variant.z0.1.0)namedescriptionversionz-320z-160z	full-size320px160px )superr   __init__formattfdscoreVersiondirname)selfsizebasekwargs	__class__r   g/home/ubuntu/.local/lib/python3.10/site-packages/tensorflow_datasets/image_classification/imagenette.pyr   A   s   
zImagenetteConfig.__init__)__name__
__module____qualname____doc__r   __classcell__r   r   r   r   r   >   s    r   c                  C   s.   g } dD ]}dD ]}|  t||d qq| S )N)r   
imagenetter   )r   r   )appendr   )configsr   r   r   r   r   _make_builder_configsP   s   r%   c                   @   s:   e Zd ZdZejdZe Z	dd Z
dd Zdd Zd	S )

Imagenettez?A smaller subset of 10 easily classified classes from Imagenet.z0.1.1c              	   C   sF   t jt}t jj| tt jt jjddt jj	|ddddt
dS )Njpeg)encoding_format)
names_fileimagelabelz$https://github.com/fastai/imagenette)builderr	   featuressupervised_keyshomepagecitation)r   r   get_tfds_path_LABELS_FNAMEDatasetInfo_DESCRIPTIONr.   FeaturesDictImage
ClassLabel	_CITATION)r   r)   r   r   r   _info_   s   zImagenette._infoc                 C   sp   | j j}td| }||}tj||d}tj||d}tj	j
tjjd|idtj	j
tjjd|idgS )zReturns SplitGenerators.z{}.tgztrainvaldatapath)r   
gen_kwargs)builder_configr   _URL_PREFIXr   download_and_extractospathjoinr   r   SplitGeneratorSplitTRAIN
VALIDATION)r   
dl_managerr   urlrC   
train_pathval_pathr   r   r   _split_generatorsm   s    
zImagenette._split_generatorsc                 c   sZ    t jj|D ]"}t jjtj||dD ]}tj|}||d}||fV  qqdS )zYields examples.z*.JPEGr*   N)	tfiogfilelistdirglobrB   rC   rD   basename)r   r=   r,   fpathfnamerecordr   r   r   _generate_examples   s   zImagenette._generate_examplesN)r   r   r   r    r   r   r   VERSIONr%   BUILDER_CONFIGSr:   rM   rW   r   r   r   r   r&   X   s    r&   )r    
__future__r   r   r   rB   tensorflow.compat.v2compatv2rN   tensorflow_datasets.public_api
public_apir   r9   r5   r3   r@   r   BuilderConfigr   r%   GeneratorBasedBuilderr&   r   r   r   r   <module>   s   