o
    NiE                     @   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Zddlm  m	Z	 ddl
m  mZ ddlmZ dZdZdZd	Zd
ZdZdZdZdZG dd dejjZdS )z<Dataset class for Places365-Standard small(256x256) dataset.    )absolute_import)division)print_functionNz+http://data.csail.mit.edu/places/places365/ztrain_256_places365standard.tarztest_256.tarzval_256.tarzfilelist_places365-standard.tar)   r      zThe Places365-Standard dataset contains 1.8 million train images from 365 scene categories,which are used to train the Places365 CNNs.There are 50 images per category in the validation set and 900 images per category in the testing set.z-image_classification/categories_places365.txta7  
 @article{zhou2017places,
  title={Places: A 10 million Image Database for Scene Recognition},
  author={Zhou, Bolei and Lapedriza, Agata and Khosla, Aditya and Oliva, Aude and Torralba, Antonio},
  journal={IEEE Transactions on Pattern Analysis and Machine Intelligence},
  year={2017},
  publisher={IEEE}
}

c                   @   s4   e Zd ZdZejdZdd Zdd Z	dd Z
d	S )
Places365SmallzPlaces365 Images dataset.z2.0.0c              	   C   sF   t jt}t jj| tt jt jjt	dt jj
|ddddtdS )N)shape)
names_fileimagelabelzhttp://places2.csail.mit.edu/)builderdescriptionfeaturessupervised_keyshomepagecitation)tfdscoreget_tfds_path_LABELS_FNAMEDatasetInfo_DESCRIPTIONr   FeaturesDictImage_IMAGE_SHAPE
ClassLabel	_CITATION)selfr	    r   l/home/ubuntu/.local/lib/python3.10/site-packages/tensorflow_datasets/image_classification/places365_small.py_info>   s   zPlaces365Small._infoc              
   C   s   | tjtttjtttjttd}|tjtt	}t
jjd||d dtj|ddddt
jjd||d dtj|d	dddt
jjd
||d
 dtj|dd
ddgS )N)traintest
validationr"   data_256zplaces365_train_standard.txt)archivepath_prefixannotation_path
split_name)name
gen_kwargsr#   test_256zplaces365_test.txtr$   val_256zplaces365_val.txt)downloadurllibparseurljoin	_BASE_URL
_TRAIN_URL	_TEST_URL
_VALID_URLdownload_and_extract_FILE_ANNOTATION_URLr   r   SplitGeneratoriter_archiveospathjoin)r   
dl_manageroutput_archivesr(   r   r   r    _split_generatorsK   sF   z Places365Small._split_generatorsc                 c   s    t jj|%}|dkrdd tj|ddD }ndd tj|ddD }W d    n1 s0w   Y  |D ]1\}}|dd}||sHJ |d	krPt|nt|d
 }	||	d  }
||
 }|||dfV  q7d S )Nr#   c                 S   s   i | ]}|d  dqS )r   r   .0xr   r   r    
<dictcomp>   s    z5Places365Small._generate_examples.<locals>.<dictcomp> )	delimiterc                 S   s   i | ]}|d  t |d qS )r      )intrA   r   r   r    rD      s    \/r"   rG   r
   )	tfiogfileGFilecsvreaderreplace
startswithlen)r   r&   r'   r)   r(   ffile_to_classfnamefobjchopkeyclass_idr   r   r    _generate_examples   s   z!Places365Small._generate_examplesN)__name__
__module____qualname____doc__r   r   VersionVERSIONr!   r?   r[   r   r   r   r    r   9   s    4r   )r_   
__future__r   r   r   rO   r:   six.moves.urllibmovesr/   tensorflow.compat.v2compatv2rK   tensorflow_datasets.public_api
public_apir   r2   r3   r4   r5   r7   r   r   r   r   r   GeneratorBasedBuilderr   r   r   r   r    <module>   s(   