ó
    Eñi1   ã                   óŽ   • S SK r S SKJrJr  S SKJr  S SKJrJrJ	r	J
r
  S SKrS SKJr  SSKJrJrJrJr  SSKJr   " S	 S
\5      rg)é    N)ÚabspathÚ
expanduser)ÚPath)ÚAnyÚCallableÚOptionalÚUnion)ÚImageé   )Údownload_and_extract_archiveÚdownload_file_from_google_driveÚextract_archiveÚverify_str_arg)ÚVisionDatasetc                   óÞ   ^ • \ rS rSrSrSr/ SQrSr    SS\\	\
4   S\	S	\\   S
\\   S\SS4U 4S jjjrS\S\\\4   4S jrS\4S jrS\	4S jrSS jrSS jrS\4S jrSS jrSrU =r$ )Ú	WIDERFaceé   u  `WIDERFace <http://shuoyang1213.me/WIDERFACE/>`_ Dataset.

Args:
    root (str or ``pathlib.Path``): Root directory where images and annotations are downloaded to.
        Expects the following folder structure if download=False:

        .. code::

            <root>
                â””â”€â”€ widerface
                    â”œâ”€â”€ wider_face_split ('wider_face_split.zip' if compressed)
                    â”œâ”€â”€ WIDER_train ('WIDER_train.zip' if compressed)
                    â”œâ”€â”€ WIDER_val ('WIDER_val.zip' if compressed)
                    â””â”€â”€ WIDER_test ('WIDER_test.zip' if compressed)
    split (string): The dataset split to use. One of {``train``, ``val``, ``test``}.
        Defaults to ``train``.
    transform (callable, optional): A function/transform that takes in a PIL image
        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.

        .. warning::

            To download the dataset `gdown <https://github.com/wkentaro/gdown>`_ is required.

Ú	widerface))Ú!15hGDLhsx8bLgLcIRD5DhYt5iBxnjNF1MÚ 3fedf70df600953d25982bcd13d91ba2zWIDER_train.zip)Ú!1GUCogbp16PMGa39thoMMeWxp7Rp5oM8QÚ dfa7d7e790efa35df3788964cf0bbaeazWIDER_val.zip)Ú!1HIfDbVEWKmsYKJZm4lchTBDLW5N7dY5TÚ e5d8f4248ed24c334bbd12f49c29dd40zWIDER_test.zip)zLhttp://shuoyang1213.me/WIDERFACE/support/bbx_annotation/wider_face_split.zipÚ 0e3767bcf0e326556d407bf5bff5d27czwider_face_split.zipNÚrootÚsplitÚ	transformÚtarget_transformÚdownloadÚreturnc                 ór  >• [         TU ]  [        R                  R	                  XR
                  5      X4S9  [        USS5      U l        U(       a  U R                  5         U R                  5       (       d  [        S5      e/ U l        U R                  S;   a  U R                  5         g U R                  5         g )N)r   r   r   r   )ÚtrainÚvalÚtestzTDataset not found or corrupted. You can use download=True to download and prepare it)r#   r$   )ÚsuperÚ__init__ÚosÚpathÚjoinÚBASE_FOLDERr   r   r    Ú_check_integrityÚRuntimeErrorÚimg_infoÚ parse_train_val_annotations_fileÚparse_test_annotations_file)Úselfr   r   r   r   r    Ú	__class__s         €Ú[/home/mande/repo/quber/.venv/lib/python3.13/site-packages/torchvision/datasets/widerface.pyr'   ÚWIDERFace.__init__:   s•   ø€ ô 	‰ÑÜ—‘—‘˜d×$4Ñ$4Ó5Àð 	ñ 	
ô $ E¨7Ð4LÓMˆŒ
æØ�M‰MŒOà×$Ñ$×&Ñ&ÜÐuÓvÐvàNPˆŒØ�:‰:Ð)Ó)Ø×1Ñ1Õ3à×,Ñ,Õ.ó    Úindexc                 ó  • [         R                  " U R                  U   S   5      nU R                  b  U R                  U5      nU R                  S:X  a  SOU R                  U   S   nU R
                  b  U R                  U5      nX#4$ )z©
Args:
    index (int): Index

Returns:
    tuple: (image, target) where target is a dict of annotations for all faces in the image.
    target=None for the test split.
Úimg_pathNr%   Úannotations)r
   Úopenr.   r   r   r   )r1   r6   ÚimgÚtargets       r3   Ú__getitem__ÚWIDERFace.__getitem__T   s|   € ô �jŠj˜Ÿ™ uÑ-¨jÑ9Ó:ˆà�>‰>Ñ%Ø—.‘. Ó%ˆCàŸ™ vÓ-‘°4·=±=ÀÑ3GÈÑ3VˆØ× Ñ Ñ,Ø×*Ñ*¨6Ó2ˆFàˆ{Ðr5   c                 ó,   • [        U R                  5      $ )N)Úlenr.   )r1   s    r3   Ú__len__ÚWIDERFace.__len__j   s   € Ü�4—=‘=Ó!Ð!r5   c                 ó^   • S/nSR                  U5      R                  " S0 U R                  D6$ )NzSplit: {split}Ú
© )r*   ÚformatÚ__dict__)r1   Úliness     r3   Ú
extra_reprÚWIDERFace.extra_reprm   s+   € Ø!Ð"ˆØ�y‰y˜Ó×&Ò&Ñ7¨¯©Ñ7Ð7r5   c                 ó´  • U R                   S:X  a  SOSn[        R                  R                  U R                  SU5      n[        U5       nUR                  5       nSu  pVnSu  p‰/ n
U GHÍ  nUR                  5       nU(       aS  [        R                  R                  U R                  SU R                   -   SU5      n[        [        U5      5      nS	nS
nMn  U(       a  [        U5      nS	nS
nM†  U(       Ga4  U	S-  n	UR                  S5      nU Vs/ s H  n[        U5      PM     nnU
R                  U5        X˜:¼  aê  S	nS
n[        R                  " U
5      nU R                  R                  WUS S 2SS24   R                  5       US S 2S4   R                  5       US S 2S4   R                  5       US S 2S4   R                  5       US S 2S4   R                  5       US S 2S4   R                  5       US S 2S4   R                  5       S.S.5        Sn	U
R!                  5         GM¿  GMÂ  [#        SU 35      e   S S S 5        g s  snf ! , (       d  f       g = f)Nr#   zwider_face_train_bbx_gt.txtzwider_face_val_bbx_gt.txtÚwider_face_split)TFF)r   r   ÚWIDER_ÚimagesFTr   Ú r   é   é   é   é   é   é	   )ÚbboxÚblurÚ
expressionÚilluminationÚ	occlusionÚposeÚinvalid)r8   r9   zError parsing annotation file )r   r(   r)   r*   r   r:   Ú	readlinesÚrstripr   r   ÚintÚappendÚtorchÚtensorr.   ÚcloneÚclearr-   )r1   ÚfilenameÚfilepathÚfrH   Úfile_name_lineÚnum_boxes_lineÚbox_annotation_lineÚ	num_boxesÚbox_counterÚlabelsÚliner8   Ú
line_splitÚxÚline_valuesÚlabels_tensors                    r3   r/   Ú*WIDERFace.parse_train_val_annotations_fileq   s  € Ø48·J±JÀ'Ó4IÑ0ÐOjˆÜ—7‘7—<‘< §	¡	Ð+=¸xÓHˆä�(Œ^˜qØ—K‘K“MˆEØBTÑ?ˆNÐ,?Ø%)Ñ"ˆIØˆFÜ�Ø—{‘{“}�Þ!Ü!Ÿw™wŸ|™|¨D¯I©I°xÀ$Ç*Á*Ñ7LÈhÐX\Ó]�HÜ&¤z°(Ó';Ó<�HØ%*�NØ%)’NÞ#Ü # D£	�IØ%*�NØ*.Ò'ß(Ø 1Ñ$�KØ!%§¡¨C£�JÙ3=Ó">²:¨a¤3 q¦6±:�KÐ">Ø—M‘M +Ô.Ø"Ó/Ø.3Ð+Ø)-˜Ü(-¯ª°VÓ(<˜ØŸ™×,Ñ,à,4à,9º!¸Q¸q¸S¸&Ñ,A×,GÑ,GÓ,IØ,9º!¸Q¸$Ñ,?×,EÑ,EÓ,GØ2?ÂÀ1ÀÑ2E×2KÑ2KÓ2MØ4AÂ!ÀQÀ$Ñ4G×4MÑ4MÓ4OØ1>ºqÀ!¸tÑ1D×1JÑ1JÓ1LØ,9º!¸Q¸$Ñ,?×,EÑ,EÓ,GØ/<ºQÀ¸TÑ/B×/HÑ/HÓ/Jñ0"ñôð '(˜ØŸ™Ÿò' 0ô* 'Ð)GÈÀzÐ'RÓSÐSñK ÷ ˆ^ùò& #?÷' �^ús    ÁCI	ÄIÄ&DI	ÉI	É	
Ic                 óØ  • [         R                  R                  U R                  SS5      n[	        [        U5      5      n[        U5       nUR                  5       nU Hp  nUR                  5       n[         R                  R                  U R                  SSU5      n[	        [        U5      5      nU R                  R                  SU05        Mr     S S S 5        g ! , (       d  f       g = f)NrL   zwider_face_test_filelist.txtÚ
WIDER_testrN   r8   )r(   r)   r*   r   r   r   r:   r]   r^   r.   r`   )r1   rf   rg   rH   rn   r8   s         r3   r0   Ú%WIDERFace.parse_test_annotations_file¡   s¢   € Ü—7‘7—<‘< §	¡	Ð+=Ð?]Ó^ˆÜœ: hÓ/Ó0ˆÜ�(Œ^˜qØ—K‘K“MˆEÛ�Ø—{‘{“}�ÜŸ7™7Ÿ<™<¨¯	©	°<ÀÈ4ÓP�Ü"¤:¨hÓ#7Ó8�Ø—‘×$Ñ$ j°(Ð%;Ö<ñ	 ÷ �^Ž^ús   ÁBCÃ
C)c                 óh  • U R                   R                  5       nUR                  U R                  5        U Hw  u  p#n[        R
                  R                  U5      u  pV[        R
                  R                  U R                  U5      n[        R
                  R                  U5      (       a  Mw    g   g)NFT)
Ú	FILE_LISTÚcopyr`   ÚANNOTATIONS_FILEr(   r)   Úsplitextr*   r   Úexists)r1   Ú	all_filesÚ_Úmd5re   ÚfileÚextÚextracted_dirs           r3   r,   ÚWIDERFace._check_integrity¬   s€   € à—N‘N×'Ñ'Ó)ˆ	Ø×Ñ˜×.Ñ.Ô/Û )ÑˆA�HÜŸ™×(Ñ(¨Ó2‰IˆDÜŸG™GŸL™L¨¯©°DÓ9ˆMÜ—7‘7—>‘> -×0Ó0Ùñ	 !*ð
 r5   c                 óP  • U R                  5       (       a  g U R                   HQ  u  pn[        XR                  X25        [        R
                  R                  U R                  U5      n[        U5        MS     [        U R                  S   U R                  U R                  S   S9  g )Nr   r   )ÚurlÚdownload_rootr   )
r,   rx   r   r   r(   r)   r*   r   r   rz   )r1   Úfile_idr   re   rf   s        r3   r    ÚWIDERFace.download·   sƒ   € Ø× Ñ ×"Ñ"Øð '+§n¤nÑ"ˆG˜(Ü+¨G·Y±YÀÔNÜ—w‘w—|‘| D§I¡I¨xÓ8ˆHÜ˜HÖ%ñ '5ô 	%Ø×%Ñ% aÑ(¸¿	¹	Àt×G\ÑG\Ð]^ÑG_ó	
r5   )r.   r   )r#   NNF)r!   N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r+   rx   rz   r	   Ústrr   r   r   Úboolr'   r_   Útupler   r=   rA   rI   r/   r0   r,   r    Ú__static_attributes__Ú__classcell__)r2   s   @r3   r   r      sØ   ø† ñð< €Kò€IðÐð Ø(,Ø/3Øñ/à�C˜�IÑð/ð ð/ð ˜HÑ%ð	/ð
 # 8Ñ,ð/ð ð/ð 
÷/ð /ð4 ð ¨¨s°C¨x©ô ð,"˜ô "ð8˜Cô 8ô.Tô`	=ð	 $ô 	÷
ò 
r5   r   )r(   Úos.pathr   r   Úpathlibr   Útypingr   r   r   r	   ra   ÚPILr
   Úutilsr   r   r   r   Úvisionr   r   rE   r5   r3   Ú<module>r™      s1   ðÛ 	ß 'Ý ç 1Ó 1ã Ý ç qÓ qÝ !ôv
�õ v
r5   