← back to Dw Photo Capture

visual-search/train/__pycache__/finetune_aug.cpython-312.pyc

60 lines

�

�\Mjd����ddlZddlZddlZddlZddlZddlZejjdd�ddlZddl	m
cmZddl
mZmZddlmZmZmZddlZddlZej.j1ej.j3e��Zej.j9ed�Zej.j9ed�Zde_d�Z Gd	�d
e�Z!d�Z"e#dk(re"�yy)
�N�PYTORCH_ENABLE_MPS_FALLBACK�1)�Dataset�
DataLoader)�Image�ImageFilter�ImageEnhance�cache�ckptc��|jdks|jdkr|S|j\}}tj�dkr(|j	tj
dd�dd��}tj�dkr�tj
dd	�tj
dd	�}}t
||z�t
||z�t
|d
|z
z�t
|d
|z
z�f\}}}}||z
dk\r||z
dk\r|j||||f�}tj�dkr8|jtjtj
d
d���}tj�dkr8tj|�jtj
dd��}tj�dkr8tj|�jtj
dd��}tj�dkr�|jdk\r�|jdk\rt	tj �}	|j#|	dtj$dd���|	j'd�t)j*|	�j-d�}|S|S#t.$rY|SwxYw)N�0gffffff�?i�����F)��rr)�expand�	fillcolorg{�G�z�?皙�����?�� g333333�?g�������?g�������?g333333�?g�������?g�?g�������?gffffff�?�JPEG�-�P)�qualityr�RGB)�width�height�size�random�rotate�uniform�int�crop�filterr�GaussianBlurr	�
Brightness�enhance�Contrast�io�BytesIO�save�randint�seekr�open�convert�	Exception)
�im�w�h�cx�cy�l�t�r�bt�bs
          �O/Users/macstudio3/Projects/dw-photo-capture/visual-search/train/finetune_aug.py�augmentr:s!��	�x�x�"�}��	�	�B��r�	�
�7�7�D�A�q�
�}�}����2�9�9�V�^�^�B��-B�5�\i�9�#j�b�
�}�}��������d�+�V�^�^�D�$�-G�B���q��t�9�c�!�B�$�i��Q��"��X���A�q��t�H�
�E���!�A�b��Q�3�"�9��A����"�'�'�1�Q�q��*�*=�R�
�}�}����2�9�9�[�-E�-E�f�n�n�UX�Z]�F^�-_�#`�b�
�}�}����<�#:�#:�2�#>�#F�#F�v�~�~�VZ�\`�Ga�#b�b�
�}�}����<�#8�#8��#<�#D�#D�V�^�^�TX�Z^�E_�#`�b�
�}�}�������R��B�I�I��O�	��
�
��A�b�g�g�a������B�9O�g�P�RS�RX�RX�YZ�R[�bg�bl�bl�mn�bo�bw�bw�x}�b~�]_�
�I�2�I����$�
�I�	�s�;A1J0�0	J=�<J=c��eZdZd�Zd�Zd�Zy)�AugSetc�.�||_||_||_y�N)�rows�pp�tok)�selfr?�
preprocess�	tokenizers    r9�__init__zAugSet.__init__&s����	�J�$�'�9���c�,�t|j�Sr>)�lenr?)rBs r9�__len__zAugSet.__len__(s��c�$�)�)�n�,rFc���|j|\}}}}}	tjtjjt|dz��jd�}|jt|��}|jtj||||�g�d}	||	fS#t$r-|j|dzt|j�z�cYSwxYw)Nz.jpgrrr)r?rr,�os�path�join�CACHEr-r@r:r.�__getitem__rHrA�T�caption)
rB�i�idv�pat�col�ven�typr/�img�txts
          r9rOzAugSet.__getitem__)s���"&�)�)�A�,���S�#�s�C�	>����B�G�G�L�L���f��=�>�F�F�u�M�B��'�'�'�"�+�&�C��h�h��	�	�#�s�C��5�6�7��:���C�x����	>��#�#�Q��U�c�$�)�)�n�$<�=�=�	>�s�A#B)�)3C�CN)�__name__�
__module__�__qualname__rErIrO�rFr9r<r<%s��E�,�rFr<c
�
�tj�}|jdtd��|jdtd��|jdtd��|jdtd	��|j�}tjjj�rd
nd}tjdd
��\}}}tjd�}tjjt d�}|j#t
j$|d��d��t'd|d��|j)|�j	�}|j+�t-j.�}t'dt1|���d��t3t5|||�|j6dddd��}	tj8j;|j=�|j>d��}
tAj@�}d}tC|jD�D�]�}
|	D�]M\}}|j)|�}|j)|�}tGjH|jK|�d��}tGjH|jM|�d��}|jNjQ�jSd��}||z|jU�z}t
jV|jYd�|� �}tGjZ||�tGjZ|jU�|�zd!z}|
j]�|j_�|
ja�t
jb�5|jNjedd"�ddd�|d#z
}|d$zdk(rBt'd%|
�d&|�d'|jg�d(�d)tAj@�|z
d*zd+�d,�	d��tAj@�|z
d*z|jhkDs���t
jj|jm�tjjt d-��t'd.d��yt
jj|jm�tjjt d/|
�d0���t'd1|
��d�����t
jj|jm�tjjt d-��t'd2tAj@�|z
d*zd+�d3�d��y#1swY���xYw)4Nz--epochs�)�type�defaultz--batch�`z--lrg�������>z--max_hoursg@�mps�cpuzViT-B-32�laion2b_s34b_b79k)�
pretrainedz
dw_clip_ft.pt)�map_locationF)�strictu)warm-started from dw_clip_ft.pt · deviceT)�flushztraining pairs (cached): �)�
batch_size�shuffle�num_workers�	drop_last�persistent_workersr)�lr�weight_decayr�����)�dim�d)�max)�device�g$(~��k@r��epz stepz loss=z.4fz	 elapsed=iz.2fr1zdw_clip_ft_aug.ptumax_hours — saved�dw_clip_ft_aug_epz.ptzsaved epu1DONE — aug weights → ckpt/dw_clip_ft_aug.pt (zh))7�argparse�ArgumentParser�add_argumentr �float�
parse_args�torch�backendsrc�is_available�	open_clip�create_model_and_transforms�
get_tokenizerrKrLrM�CKPT�load_state_dict�load�print�to�trainrP�	load_rowsrHrr<�batch�optim�AdamW�
parametersrp�time�range�epochs�F�	normalize�encode_image�encode_text�logit_scale�exp�clampr5�aranger�
cross_entropy�	zero_grad�backward�step�no_grad�clamp_�item�	max_hoursr)�
state_dict)�ap�a�dev�model�_rCrD�warmr?�dl�opt�t0r�ry�imgs�txts�imf�txf�scale�logits�labels�losss                      r9�mainr�3s��	�	 �	 �	"�B��O�O�J�S�!�O�4��O�O�I�C��O�4��O�O�F���O�5��O�O�M��s�O�;�
�
�
��A��>�>�%�%�2�2�4�%�%�C�$�@�@��Xk�l��E�1�j��'�'�
�3�I�
�7�7�<�<��o�.�D�	���%�*�*�T��>�u��M�	�
5�s�$�G��H�H�S�M���!�E�5�;�;�=��;�;�=�D�	�%�c�$�i�[�
1��>�	�F�4��Y�7�A�G�G�UY� !�T�d�
L�B�
�+�+�
�
�E�,�,�.�1�4�4�c�
�
J�C�	
����B�Q�d��A�H�H�o���J�D�$��7�7�3�<�D��������+�+�e�0�0��6�B�?�C��+�+�e�/�/��5�2�>�C��%�%�)�)�+�1�1�c�1�:�E��S�[�3�5�5�7�*�F��\�\�&�+�+�a�.��=�F��O�O�F�F�3�a�o�o�f�h�h�j�RX�6Y�Y�]^�^�D��M�M�O�T�]�]�_�c�h�h�j�����%�"3�"3�":�":�1�f�"E���A�I�D��b�y�A�~�u�r�"��U�4�&��t�y�y�{�3�>O�y�Z^�Zc�Zc�Ze�fh�Zh�jn�Yn�or�Xs�st�%u�~B� C��	�	��B���$�q�{�{�2��
�
�5�+�+�-�r�w�w�|�|�D�BU�/V�W�Y^�_t�}A�ZB�DJ��	�
�
�5�#�#�%�r�w�w�|�|�D�<M�b�T�QT�:U�'V�W�
����o�T�*�!�"
�J�J�u���!�2�7�7�<�<��6I�#J�K�	�=�t�y�y�{�2�~�t�>S�TW�=X�XZ�
[�cg�h�!��s�U�U�__main__)$rK�sysr'r�rr{�environ�
setdefaultr��torch.nn.functional�nn�
functionalr��torch.utils.datarr�PILrrr	r��finetunerPrL�dirname�abspath�__file__�HERErMrNr��MAX_IMAGE_PIXELSr:r<r�rZr]rFr9�<module>r�s���+�*�*��
�
���3�S�9�&�&�0�0�0���	�w�w���r�w�w���x�0�1��
�����T�7�#��B�G�G�L�L��v�,F�T�����$�W��(i�T�z���F�rF