CoolFace
Apppublic

Reverb/Embrace-Vision

sourceHugging Faceupdated 3y agoView on Hugging Face
0likes
app.cpython-311.pyc57 linesDownload Raw Back to __pycache__
1�

2&@<e!#�3���ddlZddlmZmZmZmZmZmZddl	m4Z5mZddlZddl
ZddlmZmZddlZddlZddlZddlZejd��Gd�d��ZGd�d	��Zed6��Zedd7���Zejd
��Zd
Zd�Zd�Z d�Z!d�Z"ej#e ejdd���ej$dd���gej%d������Z&ej#eej$ddd���ej'dddd �!��gej(d"d#dd$�%��ej)d&d'���g���Zee��Z*ej#e*j+ejd(d)���ej$d*d+d,�-�����Z,ej#e*j-ejd.d/���gejd0d1���g���Z!ej.ee&e,ggd2��3��Z/e/�0d4d5�6��dS)7�N)�
CLIPProcessor�	CLIPModel�
CLIPTokenizer�
BlipProcessor�BlipForConditionalGeneration�pipeline)�SentenceTransformer�util)�Image�ImageEnhance�ignorec�*�eZdZd�Zd�Zdd�Zdd�ZdS)�CLIPModelHandlerc�V�||_|���\|_|_dS�N)�8model_name�load_precomputed_embeddings�	img_names�img_emb)�selfrs  �>C:\Users\basel\OneDrive\Desktop\CLIP-Model-Image-Search\app.py�__init__zCLIPModelHandler.__init__s'��$���'+�'G�'G�'I�'I�$�������c��d}t|d��5}tj|��\}}ddd��n#1swxYwY||fS)Nz"unsplash-25k-photos-embeddings.pkl�rb)�open�pickle�load)r�emb_filename�fInrrs     rrz,CLIPModelHandler.load_precomputed_embeddingss���;��
�,��
%�
%�	2��!'��S�!1�!1��I�w�	2�	2�	2�	2�	2�	2�	2�	2�	2�	2�	2����	2�	2�	2�	2��'�!�!s�7�;�;�c�6��tj�j��}tj�j��}t	j�j��}||gdd���}|jdi|��}t
j|�j|���d}�fd�|D��}	|	S)NT�pt)�padding�return_tensors��top_krc9���g|]E}tjtj�d�j|d������FS)�photos/�	corpus_id)rr�os�path�joinr)�.0�hitrs  �r�10<listcomp>z0CLIPModelHandler.search_text.<locals>.<listcomp>#s@���h�h�h�\_�%�*�R�W�\�\�)�T�^�C��DT�5U�V�V�W�W�h�h�hr�)	r�from_pretrainedrrr�get_text_featuresr11�semantic_searchr)12r�queryr'�model�	processor�	tokenizer�inputs�	query_emb�hits�imagess13`         r�search_textzCLIPModelHandler.search_texts�����)�$�/�:�:��!�1�$�/�B�B�	�!�1�$�/�B�B�	���E�7�D��F�F�F��+�E�+�5�5�f�5�5�	��#�I�t�|�5�I�I�I�!�L��h�h�h�h�cg�h�h�h���
rc	���tj|j��}tj|j��}t	j|��}||d���}|di|��}|j}tj||j	|���d}	g}14|	D]Z}t	jtj�d|j
|d����}|15�|���[|16S)Nr#)r<r%r&rr)r*r1)rr2rrrr�logits_per_imager17r4rr+r,r-r�append)
r�18image_pathr'r6r7�imager9�outputs�	image_embr;�
result_imagesr/�imgs
             r�search_imagezCLIPModelHandler.search_image&s����)�$�/�:�:��!�1�$�/�B�B�	��19�:�&�&����%��=�=�=���%�/�/�&�/�/���,�	��#�I�t�|�5�I�I�I�!�L���
��	&�	&�C��*�R�W�\�\�)�T�^�C��DT�5U�V�V�W�W�C�� � ��%�%�%�%��rN)r!)�__name__�20__module__�__qualname__rrr=rGr1rrrrs]������J�J�J�"�"�"�21�22�23�24������rrc�&�eZdZd�Zd�Zd�Zd�ZdS)�BLIPImageCaptioningc��||_dSr)�blip_model_name)rrNs  rrzBLIPImageCaptioning.__init__>s��.����rc�>�t|t��r'tj|���d��St|t25j��r9tjtj|�����d��Std���)N�RGBzMInvalid input type for image. Supported types: str (file path) or np.ndarray.)26�27isinstance�strrr�convert�np�ndarray�	fromarray�uint8�28ValueError)rrBs  r�preprocess_imagez$BLIPImageCaptioning.preprocess_imageAs}���e�S�!�!�	n��:�e�$�$�,�,�U�3�3�3�
��r�z�
*�
*�	n��?�2�8�E�?�?�3�3�;�;�E�B�B�B��l�m�m�mrc��	tj|j���d��}t	j|j��}|�|��}||d����d��}|jdi|��}|�|dd���}|S#t$r}dt|��icYd}~Sd}~wwxYw)	N�cudar#)r%rT)�skip_special_tokens�errorr1)29rr2rN�torrY�generate�decode�	ExceptionrR)	rrBr6r7�	raw_imager9�out�unconditional_caption�es	         r�generate_captionz$BLIPImageCaptioning.generate_captionIs���	%�0�@��AU�V�V�Y�Y�Z`�a�a�E�%�5�d�6J�K�K�I��-�-�e�4�4�I��Y�y��>�>�>�A�A�&�I�I�F� �%�.�*�*�6�*�*�C�$-�$4�$4�S��V�QU�$4�$V�$V�!�(�(���	%�	%�	%��S��V�V�$�$�$�$�$�$�$�����	%���s�B%B(�(30C
�2C�C
�C
c���tj���5}t|�|j|����}ddd��n#1swxYwY|Sr)�31concurrent�futures�ThreadPoolExecutor�list�maprf)rr<�executor�resultss    r�generate_captions_parallelz.BLIPImageCaptioning.generate_captions_parallelWs���
�
�
2�
2�
4�
4�	H���8�<�<��(=�v�F�F�G�G�G�	H�	H�	H�	H�	H�	H�	H�	H�	H�	H�	H����	H�	H�	H�	H��s�)A�A�AN)rHrIrJrrYrfror1rrrLrL=sS������/�/�/�n�n�n�%�%�%�����rrLzopenai/clip-vit-base-patch32zzero-shot-image-classification)r6z%Salesforce/blip-image-captioning-basec���	t�||��}d�|D��}d�tjD��}||fS#t$r.}t	jdt
|������cYd}~Sd}~wwxYw)Nc�8�g|]}|�d����S))��rr)�resize�r.rBs  rr0z+text_to_image_interface.<locals>.<listcomp>os$�� U� U� U�e����j�!9�!9� U� U� Urc�P�g|]#}dtj�|��i��$S)z32Image Name)r+r,�basename)r.�img_paths  rr0z+text_to_image_interface.<locals>.<listcomp>rs-��i�i�i�h��b�g�&6�&6�x�&@�&@�A�i�i�irzError in text-to-image search: )�clip_handlerr=rra�gr�ErrorrR)r5r'rE�result_images_resized�result_infores      r�text_to_image_interfacer}is���D�$�0�0���>�>�
�!V� U�}� U� U� U��j�i�R^�Rh�i�i�i��$�k�1�1���D�D�D��x�B�#�a�&�&�B�B�C�C�C�C�C�C�C�C�����D���s�AA�33A;�
#A6�0A;�6A;c�V�	tjtj|�����d��}|�d��}t
||d���}d�|D��}|S#t$r.}tj	dt|������cYd}~Sd}~wwxYw)NrP�,zThis is a photo of a {})r<�candidate_labels�hypothesis_templatec�,�i|]}|d|d��S)�label�scorer1)r.�dics  r�34<dictcomp>z,zero_shot_classification.<locals>.<dictcomp>�s"��G�G�G�C�S��\�3�w�<�G�G�Grz#Error in zero-shot classification: )rrVrTrWrS�split�clip_classifierraryrzrR)rB�labels_text�	PIL_image�labels�res�formatted_resultsres       r�zero_shot_classificationr�zs���H��O�B�H�U�O�O�4�4�<�<�U�C�C�	��"�"�3�'�'���Y��]v�w�w�w��H�G�3�G�G�G�� � ���H�H�H��x�F�c�!�f�f�F�F�G�G�G�G�G�G�G�G�����H���s�A-A0�035B(�:#B#�B(�#B(c��	tjtj|�����d��}|dz}|dz}|dz}	|dz}36|�d��}|�|��}t
j|��}|�|��}t
j	|��}|�|��}t
j37|��}|�|	��}t
j|��}|�|38��}|S#t$r.}tjdt|������cYd}~Sd}~wwxYw)NrPgY@zError in preprocessing: )rrVrTrWrS�rotater�39Brightness�enhance�Contrast�Color�	SharpnessraryrzrR)
�original_image�brightness_slider�contrast_slider�saturation_slider�sharpness_slider�rotation_sliderr��brightness_normalized�contrast_normalized�saturation_normalized�sharpness_normalized�enhancerres
             r�preprocessing_interfacer��sq��!=��O�B�H�^�$<�$<�=�=�E�E�e�L�L�	�!2�E� 9��-��5�� 1�E� 9��/�%�7���%�%�e�,�,�	��$�$�_�5�5�	� �*�9�5�5���$�$�%:�;�;�	� �(��3�3���$�$�%8�9�9�	� �%�i�0�0���$�$�%:�;�;�	� �)�)�4�4���$�$�%9�:�:�	�����=�=�=��x�;�3�q�6�6�;�;�<�<�<�<�<�<�<�<�����=���s�DD�40E�)#E�E�Ec��tjt���d��}t	jt��}d�|D��S)Nr[c�B�g|]}t�|����Sr1)�blip_model_instancerfrts  rr0z%generate_captions.<locals>.<listcomp>�s'��L�L�L�E��0�0��7�7�L�L�Lr)rr2rNr^r)r<�41blip_model�blip_processors   r�generate_captionsr��sE��-�=�o�N�N�Q�Q�RX�Y�Y�J�"�2�?�C�C�N�L�L�V�L�L�L�LrzImage Query�image_input)r��elem_idzLabels (comma-separated)�labels_input�label_image)r�)�fnr9rC�z42Text QueryzEnter text here...)�linesr��placeholder�r!z
Top K Results)�stepr�zText-to-Image Search Results�gallery_text�auto)r�r��	grid_cols�heightzResult Information�	text_infozImage for Captioning�blip_caption_imagezGenerated Captions�blip_generated_captions�)r�r��defaultzOriginal Imager�zProcessed Image�processed_image)zText-to-Image SearchzZero-Shot ClassificationzBLIP Image Captioning)�interface_list�	tab_namesT�true)�debug�share)1�gradiory�transformersrrrrrr�sentence_transformersr	r43r�numpyrT�PILrrr+�io�concurrent.futuresrh�warnings�filterwarningsrrLrxr�r2r�rNr}r�r�r��	Interface�Textbox�Label�"zero_shot_classification_interface�Slider�Gallery�Textr�rf�blip_captioning_interfacerY�TabbedInterface�app�launchr1rr�<module>r�s�������w�w�w�w�w�w�w�w�w�w�w�w�w�w�w�w�;�;�;�;�;�;�;�;�
�
�
�
�����#�#�#�#�#�#�#�#�	�	�	�	�	�	�	�	�������������!�!�!�,�,�,�,�,�,�,�,�\��������D �� >�?�?���(�;�Ca�b�b�b��/��.�/V�W�W��9��
D�
D�
D�"H�H�H�("=�"=�"=�HM�M�M�&2�R�\�����}�m�<�<�<���44�3�^�L�L�L��
�B�H�]�+�+�+�
&�&�&�"�'�"�,����45���,�	46�	47�	48�49	��	�!�Q�Q�o�6�6�6�
�	��50�0�"���		51�	52�	53�	���*�K�@�@�@�
�����*!�
 ��
1�
1�54�(�B�L��"��2�8�0�:N�O�O�O��B�J�1�;T�^`�a�a�a�����'�"�,��"����'�1A�B�B�B��	���(�2C�D�D�D�
������b��+�-O�Qj�k�[�[�[������55�56��V�57�$�$�$�$�$r