Ë
    Dêñi‹,  ã                   ó¢   — d dl Z d dlmZ d dlmZmZmZmZ ddlm	Z	 ddl
mZmZmZmZ ddlmZ  G d„ d	e«      Z G d
„ de«      Z G d„ de«      Zy)é    N)ÚPath)ÚAnyÚCallableÚOptionalÚUnioné   )Údefault_loader)Úcheck_integrityÚdownload_and_extract_archiveÚdownload_urlÚverify_str_arg)ÚVisionDatasetc                   óò   ‡ — e Zd ZdZdZddddœZddd	d
ddddœZddddœZdZddde	fde
eef   dedededee   dee   dedeegef   ddfˆ fd„Zdefd „Zd'd!„Zd"ed#e
eef   defd$„Zdefd%„Zdefd&„Zˆ xZS )(Ú_LFWzlfw-pyz http://vis-www.cs.umass.edu/lfw/)Úlfwzlfw.tgzÚ a17d05bd522c52d84eca14327a23d494)Úlfw_funneledzlfw-funneled.tgzÚ 1b42dfed7d15c9b2dd63d5e5840c86ad)zlfw-deepfunneledzlfw-deepfunneled.tgzÚ 68331da3eb755a505a502b5aacb3c201)ÚoriginalÚfunneledÚdeepfunneledÚ 9f1ba174e4e1c508ff7cdf10ac338a7dÚ 5132f7440eb68cf58910c8a45a2ac10bÚ 4f27cbf15b2da4a85c1907eb4181ad21Ú 450f0863dd89e85e73936a6d71a3474bÚ e4bf5be0a43b5dcd9dc5ccfcb8fb19c5Ú 54eaac34beb6d042ed3a7d883e247a21Ú a6d0a479bd074669f656265a6e693f6d)z	pairs.txtzpairsDevTest.txtzpairsDevTrain.txtz
people.txtzpeopleDevTest.txtzpeopleDevTrain.txtúlfw-names.txtÚ ÚDevTrainÚDevTest©Ú10foldÚtrainÚtestr    NFÚrootÚsplitÚ	image_setÚviewÚ	transformÚtarget_transformÚdownloadÚloaderÚreturnc	                 óä  •— t         ‰
| �  t        j                  j	                  || j
                  «      ||¬«       t        |j                  «       d| j                  j                  «       «      | _
        | j                  | j                     \  }	| _        | _        t        |j                  «       dddg«      | _        t        |j                  «       dg d¢«      | _        | j                  › | j                  | j                     › d�| _        g | _        |rt%        d	«      ‚| j)                  «       st+        d
«      ‚t        j                  j	                  | j,                  |	«      | _        || _        y )N)r,   r-   r*   r+   ÚpeopleÚpairsr)   r$   z.txtz|LFW dataset is no longer available for download.Please download the dataset manually and place it in the specified directoryzHDataset not found or corrupted. You can use download=True to download it)ÚsuperÚ__init__ÚosÚpathÚjoinÚbase_folderr   ÚlowerÚ	file_dictÚkeysr*   ÚfilenameÚmd5r+   r)   Ú
annot_fileÚlabels_fileÚdataÚ
ValueErrorr.   Ú_check_integrityÚRuntimeErrorr(   Ú
images_dirÚ_loader)Úselfr(   r)   r*   r+   r,   r-   r.   r/   rE   Ú	__class__s             €úZ/var/www/pod-logistic/pod-ai/venv/lib/python3.12/site-packages/torchvision/datasets/lfw.pyr5   z_LFW.__init__    s  ø€ ô 	‰ÑœŸ™Ÿ™ d¨D×,<Ñ,<Ó=ÈÐeuÐÔvä'¨	¯©Ó(9¸;ÈÏÉ×H[ÑH[ÓH]Ó^ˆŒØ.2¯n©n¸T¿^¹^Ñ.LÑ+ˆ
�D”M 4¤8ä" 4§:¡:£<°¸(ÀGÐ9LÓMˆŒ	Ü# E§K¡K£M°7Ò<WÓXˆŒ
Ø"Ÿi™i˜[¨¯©¸¿¹Ñ)DÐ(EÀTÐJˆÔØ!ˆŒ	áÜð_óð ð ×$Ñ$Ô&ÜÐiÓjÐjäŸ'™'Ÿ,™, t§y¡y°*Ó=ˆŒØˆ�ó    c                 ó  — t        t        j                  j                  | j                  | j
                  «      | j                  «      }t        t        j                  j                  | j                  | j                  «      | j                  | j                     «      }|r|sy| j                  dk(  rUt        t        j                  j                  | j                  | j                  «      | j                  | j                     «      S y)NFr2   T)r
   r6   r7   r8   r(   r=   r>   r@   Ú	checksumsr+   Únames)rG   Úst1Úst2s      rI   rC   z_LFW._check_integrityB   s©   € ÜœbŸg™gŸl™l¨4¯9©9°d·m±mÓDÀdÇhÁhÓOˆÜœbŸg™gŸl™l¨4¯9©9°d×6FÑ6FÓGÈÏÉÐX\×XhÑXhÑIiÓjˆÙ™#ØØ�9‰9˜Ò Ü"¤2§7¡7§<¡<°·	±	¸4¿:¹:Ó#FÈÏÉÐW[×WaÑWaÑHbÓcÐcØrJ   c                 óŒ  — | j                  «       ry | j                  › | j                  › �}t        || j                  | j                  | j
                  ¬«       t        | j                  › | j                  › �| j                  «       | j                  dk(  r/t        | j                  › | j                  › �| j                  «       y y )N)r=   r>   r2   )
rC   Údownload_url_prefixr=   r   r(   r>   r   r@   r+   rM   )rG   Úurls     rI   r.   z_LFW.downloadK   sŸ   € Ø× Ñ Ô"ØØ×)Ñ)Ð*¨4¯=©=¨/Ð:ˆÜ$ S¨$¯)©)¸d¿m¹mÐQU×QYÑQYÕZÜ˜×0Ñ0Ð1°$×2BÑ2BÐ1CÐDÀdÇiÁiÔPØ�9‰9˜Ò Ü˜D×4Ñ4Ð5°d·j±j°\ÐBÀDÇIÁIÕNð !rJ   ÚidentityÚnoc           	      óx   — t         j                  j                  | j                  ||› dt	        |«      d›d�«      S )NÚ_Ú04dz.jpg)r6   r7   r8   rE   Úint)rG   rS   rT   s      rI   Ú	_get_pathz_LFW._get_pathT   s1   € Ü�w‰w�|‰|˜DŸO™O¨X¸(¸À1ÄSÈÃWÈSÀMÐQUÐ7VÓWÐWrJ   c                 ó:   — d| j                   › d| j                  › �S )NzAlignment: z
Split: )r*   r)   ©rG   s    rI   Ú
extra_reprz_LFW.extra_reprW   s   € Ø˜TŸ^™^Ð,¨I°d·j±j°\ÐBÐBrJ   c                 ó,   — t        | j                  «      S )N)ÚlenrA   r[   s    rI   Ú__len__z_LFW.__len__Z   s   € Ü�4—9‘9‹~ÐrJ   )r0   N)Ú__name__Ú
__module__Ú__qualname__r9   rQ   r;   rL   r?   rM   r	   r   Ústrr   r   r   Úboolr   r5   rC   r.   rX   rY   r\   r_   Ú__classcell__©rH   s   @rI   r   r   
   s.  ø„ à€KØ<Ðð KØ\Øhñ€Ið 8Ø>Ø?Ø8Ø?Ø@Ø;ñ€Ið ¨¸YÑG€JØ€Eð )-Ø/3ØØ'5ñ à�C˜�IÑð ð ð ð ð	 ð
 ð ð ˜HÑ%ð ð # 8Ñ,ð ð ð ð ˜#˜ ˜Ñ$ð ð 
õ ðD $ó óOðX #ð X¨5°°c°©?ð X¸só XðC˜Có Cð˜÷ rJ   r   c                   óÌ   ‡ — e Zd ZdZdddddefdededed	ee   d
ee   dedeege	f   ddfˆ fd„Z
deee   ee   f   fd„Zdeeef   fd„Zdedee	e	f   fd„Zdefˆ fd„Zˆ xZS )Ú	LFWPeoplea;  `LFW <http://vis-www.cs.umass.edu/lfw/>`_ Dataset.

    .. warning:

        The LFW dataset is no longer available for automatic download. Please
        download it manually and place it in the specified directory.

    Args:
        root (str or ``pathlib.Path``): Root directory of dataset where directory
            ``lfw-py`` exists or will be saved to if download is set to True.
        split (string, optional): The image split to use. Can be one of ``train``, ``test``,
            ``10fold`` (default).
        image_set (str, optional): Type of image funneling to use, ``original``, ``funneled`` or
            ``deepfunneled``. Defaults to ``funneled``.
        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): NOT SUPPORTED ANYMORE, leave to False.
        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.
    r%   r   NFr(   r)   r*   r,   r-   r.   r/   r0   c           
      ó˜   •— t         ‰| �  |||d||||¬«       | j                  «       | _        | j	                  «       \  | _        | _        y )Nr2   ©r/   )r4   r5   Ú_get_classesÚclass_to_idxÚ_get_peoplerA   Útargets©	rG   r(   r)   r*   r,   r-   r.   r/   rH   s	           €rI   r5   zLFWPeople.__init__w   sN   ø€ ô 	‰Ñ˜˜u i°¸9ÐFVÐX`ÐioÐÔpà ×-Ñ-Ó/ˆÔØ"&×"2Ñ"2Ó"4ÑˆŒ	�4•<rJ   c           	      óÔ  — g g }}t        t        j                  j                  | j                  | j
                  «      «      5 }|j                  «       }| j                  dk(  rt        |d   «      dfnd\  }}t        |«      D ]Ä  }t        ||   «      }||dz   ||z   dz    D �	cg c]!  }	|	j                  «       j                  d«      ‘Œ# }
}	||dz   z  }t        |
«      D ]f  \  }\  }}t        dt        |«      dz   «      D ]C  }| j                  ||«      }|j                  |«       |j                  | j                  |   «       ŒE Œh ŒÆ 	 d d d «       ||fS c c}	w # 1 sw Y   ||fS xY w)Nr%   r   r   )r   r   ú	)Úopenr6   r7   r8   r(   r@   Ú	readlinesr)   rX   ÚrangeÚstripÚ	enumeraterY   Úappendrl   )rG   rA   rn   ÚfÚlinesÚn_foldsÚsÚfoldÚn_linesÚliner2   ÚirS   Únum_imgsÚnumÚimgs                   rI   rm   zLFWPeople._get_people†   sj  € Ø˜BˆgˆÜ”"—'‘'—,‘,˜tŸy™y¨$×*:Ñ*:Ó;Ó<ð 	DÀØ—K‘K“MˆEØ/3¯z©z¸XÒ/Eœ#˜e A™h›-¨Ñ+È6‰JˆG�Qä˜g›ò D�Ü˜e A™h›-�Ø?DÀQÈÁUÈQÐQXÉ[Ð[\É_Ð?]Ö^°t˜$Ÿ*™*›,×,Ñ,¨TÕ2Ð^�Ð^Ø�W˜q‘[Ñ �Ü/8¸Ó/@ò DÑ+�AÑ+˜ (Ü$ Q¬¨H«¸Ñ(9Ó:ò D˜Ø"Ÿn™n¨X°sÓ;˜ØŸ™ CÔ(ØŸ™ t×'8Ñ'8¸Ñ'BÕCñDñDñ	D÷		Dð �Wˆ}Ðùò _÷	Dð �Wˆ}Ðús    ÁA!EÂ#&EÃ	B EÅEÅE'c                 óx  — t        t        j                  j                  | j                  | j
                  «      «      5 }|j                  «       }|D �cg c]#  }|j                  «       j                  «       d   ‘Œ% }}d d d «       t        «      D ��ci c]  \  }}||“Œ
 }}}|S c c}w # 1 sw Y   Œ.xY wc c}}w )Nr   )
rr   r6   r7   r8   r(   rM   rs   ru   r)   rv   )rG   rx   ry   r~   rM   r   Únamerl   s           rI   rk   zLFWPeople._get_classes˜   s¡   € Ü”"—'‘'—,‘,˜tŸy™y¨$¯*©*Ó5Ó6ð 	@¸!Ø—K‘K“MˆEØ9>Ö?°�T—Z‘Z“\×'Ñ'Ó)¨!Ó,Ð?ˆEÐ?÷	@ô 09¸Ó/?×@¡G A t˜˜a™Ð@ˆÑ@ØÐùò @÷	@ð 	@üó As#   ¾B*Á(B%Á;B*ÂB6Â%B*Â*B3Úindexc                 óØ   — | j                  | j                  |   «      }| j                  |   }| j                  �| j                  |«      }| j                  �| j	                  |«      }||fS )z�
        Args:
            index (int): Index

        Returns:
            tuple: Tuple (image, target) where target is the identity of the person.
        )rF   rA   rn   r,   r-   )rG   r…   r‚   Útargets       rI   Ú__getitem__zLFWPeople.__getitem__Ÿ   sg   € ð �l‰l˜4Ÿ9™9 UÑ+Ó,ˆØ—‘˜eÑ$ˆà�>‰>Ð%Ø—.‘. Ó%ˆCà× Ñ Ð,Ø×*Ñ*¨6Ó2ˆFà�Fˆ{ÐrJ   c                 óR   •— t         ‰| �  «       dt        | j                  «      › �z   S )Nz
Classes (identities): )r4   r\   r^   rl   )rG   rH   s    €rI   r\   zLFWPeople.extra_repr²   s*   ø€ Ü‰wÑ!Ó#Ð(@ÄÀT×EVÑEVÓAWÐ@XÐ&YÑYÐYrJ   )r`   ra   rb   Ú__doc__r	   rc   r   r   rd   r   r5   ÚtupleÚlistrX   rm   Údictrk   rˆ   r\   re   rf   s   @rI   rh   rh   ^   så   ø„ ñð6 Ø#Ø(,Ø/3ØØ'5ñ5àð5ð ð5ð ð	5ð
 ˜HÑ%ð5ð # 8Ñ,ð5ð ð5ð ˜#˜ ˜Ñ$ð5ð 
õ5ð˜U 4¨¡9¨d°3©iÐ#7Ñ8ó ð$˜d 3¨ 8™nó ð ð ¨¨s°C¨x©ó ð&Z˜C÷ Zñ ZrJ   rh   c                   óÈ   ‡ — e Zd ZdZdddddefdededed	ee   d
ee   dedeege	f   ddfˆ fd„Z
dedeeeeef      eeeef      ee   f   fd„Zdedee	e	ef   fd„Zˆ xZS )ÚLFWPairsa   `LFW <http://vis-www.cs.umass.edu/lfw/>`_ Dataset.

    .. warning:

        The LFW dataset is no longer available for automatic download. Please
        download it manually and place it in the specified directory.

    Args:
        root (str or ``pathlib.Path``): Root directory of dataset where directory
            ``lfw-py`` exists or will be saved to if download is set to True.
        split (string, optional): The image split to use. Can be one of ``train``, ``test``,
            ``10fold``. Defaults to ``10fold``.
        image_set (str, optional): Type of image funneling to use, ``original``, ``funneled`` or
            ``deepfunneled``. Defaults to ``funneled``.
        transform (callable, optional): A function/transform that takes in a PIL image
            and returns a transformed version. E.g, ``transforms.RandomRotation``
        target_transform (callable, optional): A function/transform that takes in the
            target and transforms it.
        download (bool, optional): NOT SUPPORTED ANYMORE, leave to False.
        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.

    r%   r   NFr(   r)   r*   r,   r-   r.   r/   r0   c           
      ó�   •— t         ‰| �  |||d||||¬«       | j                  | j                  «      \  | _        | _        | _        y )Nr3   rj   )r4   r5   Ú
_get_pairsrE   Ú
pair_namesrA   rn   ro   s	           €rI   r5   zLFWPairs.__init__Ð   sE   ø€ ô 	‰Ñ˜˜u i°¸)ÐEUÐW_ÐhnÐÔoà37·?±?À4Ç?Á?Ó3SÑ0ˆŒ˜œ D¥LrJ   rE   c           	      óp  — g g g }}}t        t        j                  j                  | j                  | j
                  «      «      5 }|j                  «       }| j                  dk(  r.|d   j                  d«      \  }}t        |«      t        |«      }}ndt        |d   «      }}d}	t        |«      D �]a  }
||	|	|z    D �cg c]!  }|j                  «       j                  d«      ‘Œ# }}||	|z   |	d|z  z    D �cg c]!  }|j                  «       j                  d«      ‘Œ# }}|	d|z  z  }	|D ]q  }| j                  |d   |d   «      | j                  |d   |d   «      d}}}|j                  |d   |d   f«       |j                  ||f«       |j                  |«       Œs |D ]q  }| j                  |d   |d   «      | j                  |d   |d   «      d}}}|j                  |d   |d   f«       |j                  ||f«       |j                  |«       Œs �Œd 	 d d d «       |||fS c c}w c c}w # 1 sw Y   ŒxY w)Nr%   r   rq   r   é   é   )rr   r6   r7   r8   r(   r@   rs   r)   rX   rt   ru   rY   rw   )rG   rE   r’   rA   rn   rx   ry   rz   Ún_pairsr{   r|   r~   Úmatched_pairsÚunmatched_pairsÚpairÚimg1Úimg2Úsames                     rI   r‘   zLFWPairs._get_pairsÞ   sF  € Ø$&¨¨B˜'�Dˆ
Ü”"—'‘'—,‘,˜tŸy™y¨$×*:Ñ*:Ó;Ó<ð 	)ÀØ—K‘K“MˆEØ�z‰z˜XÒ%Ø#(¨¡8§>¡>°$Ó#7Ñ �˜Ü#& w£<´°W³˜‘à#$¤c¨%°©(£m˜�ØˆAä˜g›ó )�ØFKÈAÐPQÐT[ÑP[ÐF\Ö ]¸d §¡£×!3Ñ!3°DÕ!9Ð ]�Ð ]ØHMÈaÐRYÉkÐ\]ÐabÐelÑalÑ\mÐHnÖ"oÀ 4§:¡:£<×#5Ñ#5°dÕ#;Ð"o�Ð"oØ�Q˜‘[Ñ �Ø)ò )�DØ'+§~¡~°d¸1±g¸tÀA¹wÓ'GÈÏÉÐX\Ð]^ÑX_ÐaeÐfgÑahÓIiÐkl ˜$�DØ×%Ñ% t¨A¡w°°Q±Ð&8Ô9Ø—K‘K  t Ô-Ø—N‘N 4Õ(ð	)ð
 ,ò )�DØ'+§~¡~°d¸1±g¸tÀA¹wÓ'GÈÏÉÐX\Ð]^ÑX_ÐaeÐfgÑahÓIiÐkl ˜$�DØ×%Ñ% t¨A¡w°°Q±Ð&8Ô9Ø—K‘K  t Ô-Ø—N‘N 4Õ(ò	)ñ)÷	)ð0 ˜4 Ð(Ð(ùò !^ùÚ"o÷	)ð 	)ús,   ÁA9H,Â=&H"Ã#H,Ã5&H'ÄC9H,È"
H,È,H5r…   c                 ó(  — | j                   |   \  }}| j                  |«      | j                  |«      }}| j                  |   }| j                  �"| j                  |«      | j                  |«      }}| j                  �| j	                  |«      }|||fS )z¿
        Args:
            index (int): Index

        Returns:
            tuple: (image1, image2, target) where target is `0` for different indentities and `1` for same identities.
        )rA   rF   rn   r,   r-   )rG   r…   rš   r›   r‡   s        rI   rˆ   zLFWPairs.__getitem__ú   s�   € ð —Y‘Y˜uÑ%‰
ˆˆdØ—\‘\ $Ó'¨¯©°dÓ);ˆdˆØ—‘˜eÑ$ˆà�>‰>Ð%ØŸ™¨Ó-¨t¯~©~¸dÓ/C�$ˆDà× Ñ Ð,Ø×*Ñ*¨6Ó2ˆFà�T˜6Ð!Ð!rJ   )r`   ra   rb   rŠ   r	   rc   r   r   rd   r   r5   r‹   rŒ   rX   r‘   rˆ   re   rf   s   @rI   r�   r�   ¶   sî   ø„ ñð8 Ø#Ø(,Ø/3ØØ'5ñTàðTð ðTð ð	Tð
 ˜HÑ%ðTð # 8Ñ,ðTð ðTð ˜#˜ ˜Ñ$ðTð 
õTð) Sð )¨U°4¸¸cÀ3¸h¹Ñ3HÈ$ÈuÐUXÐZ]ÐU]ÉÑJ_ÐaeÐfiÑajÐ3jÑ-kó )ð8" ð "¨¨s°C¸¨}Ñ)=÷ "rJ   r�   )r6   Úpathlibr   Útypingr   r   r   r   Úfolderr	   Úutilsr
   r   r   r   Úvisionr   r   rh   r�   © rJ   rI   ú<module>r¤      sK   ðÛ 	Ý ß 1Ó 1å "ß ^Ó ^Ý !ôQˆ=ô QôhUZ�ô UZôpV"ˆtõ V"rJ   