diff --git a/.gitattributes b/.gitattributes index a6344aac8c09253b3b630fb776ae94478aa0275b..6c254f3783dc5c2531ae33e774e6109c2748d003 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1,35 +1 @@ -*.7z filter=lfs diff=lfs merge=lfs -text -*.arrow filter=lfs diff=lfs merge=lfs -text -*.bin filter=lfs diff=lfs merge=lfs -text -*.bz2 filter=lfs diff=lfs merge=lfs -text -*.ckpt filter=lfs diff=lfs merge=lfs -text -*.ftz filter=lfs diff=lfs merge=lfs -text -*.gz filter=lfs diff=lfs merge=lfs -text -*.h5 filter=lfs diff=lfs merge=lfs -text -*.joblib filter=lfs diff=lfs merge=lfs -text -*.lfs.* filter=lfs diff=lfs merge=lfs -text -*.mlmodel filter=lfs diff=lfs merge=lfs -text -*.model filter=lfs diff=lfs merge=lfs -text -*.msgpack filter=lfs diff=lfs merge=lfs -text -*.npy filter=lfs diff=lfs merge=lfs -text -*.npz filter=lfs diff=lfs merge=lfs -text -*.onnx filter=lfs diff=lfs merge=lfs -text -*.ot filter=lfs diff=lfs merge=lfs -text -*.parquet filter=lfs diff=lfs merge=lfs -text -*.pb filter=lfs diff=lfs merge=lfs -text -*.pickle filter=lfs diff=lfs merge=lfs -text -*.pkl filter=lfs diff=lfs merge=lfs -text -*.pt filter=lfs diff=lfs merge=lfs -text -*.pth filter=lfs diff=lfs merge=lfs -text -*.rar filter=lfs diff=lfs merge=lfs -text -*.safetensors filter=lfs diff=lfs merge=lfs -text -saved_model/**/* filter=lfs diff=lfs merge=lfs -text -*.tar.* filter=lfs diff=lfs merge=lfs -text -*.tar filter=lfs diff=lfs merge=lfs -text -*.tflite filter=lfs diff=lfs merge=lfs -text -*.tgz filter=lfs diff=lfs merge=lfs -text -*.wasm filter=lfs diff=lfs merge=lfs -text -*.xz filter=lfs diff=lfs merge=lfs -text -*.zip filter=lfs diff=lfs merge=lfs -text -*.zst filter=lfs diff=lfs merge=lfs -text -*tfevents* filter=lfs diff=lfs merge=lfs -text +unsplash-25k-photos-embeddings.pkl filter=lfs diff=lfs merge=lfs -text diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..b6e47617de110dea7ca47e087ff1347cc2646eda --- /dev/null +++ b/.gitignore @@ -0,0 +1,129 @@ +# Byte-compiled / optimized / DLL files +__pycache__/ +*.py[cod] +*$py.class + +# C extensions +*.so + +# Distribution / packaging +.Python +build/ +develop-eggs/ +dist/ +downloads/ +eggs/ +.eggs/ +lib/ +lib64/ +parts/ +sdist/ +var/ +wheels/ +pip-wheel-metadata/ +share/python-wheels/ +*.egg-info/ +.installed.cfg +*.egg +MANIFEST + +# PyInstaller +# Usually these files are written by a python script from a template +# before PyInstaller builds the exe, so as to inject date/other infos into it. +*.manifest +*.spec + +# Installer logs +pip-log.txt +pip-delete-this-directory.txt + +# Unit test / coverage reports +htmlcov/ +.tox/ +.nox/ +.coverage +.coverage.* +.cache +nosetests.xml +coverage.xml +*.cover +*.py,cover +.hypothesis/ +.pytest_cache/ + +# Translations +*.mo +*.pot + +# Django stuff: +*.log +local_settings.py +db.sqlite3 +db.sqlite3-journal + +# Flask stuff: +instance/ +.webassets-cache + +# Scrapy stuff: +.scrapy + +# Sphinx documentation +docs/_build/ + +# PyBuilder +target/ + +# Jupyter Notebook +.ipynb_checkpoints + +# IPython +profile_default/ +ipython_config.py + +# pyenv +.python-version + +# pipenv +# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. +# However, in case of collaboration, if having platform-specific dependencies or dependencies +# having no cross-platform support, pipenv may install dependencies that don't work, or not +# install all needed dependencies. +#Pipfile.lock + +# PEP 582; used by e.g. github.com/David-OConnor/pyflow +__pypackages__/ + +# Celery stuff +celerybeat-schedule +celerybeat.pid + +# SageMath parsed files +*.sage.py + +# Environments +.env +.venv +env/ +venv/ +ENV/ +env.bak/ +venv.bak/ + +# Spyder project settings +.spyderproject +.spyproject + +# Rope project settings +.ropeproject + +# mkdocs documentation +/site + +# mypy +.mypy_cache/ +.dmypy.json +dmypy.json + +# Pyre type checker +.pyre/ diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000000000000000000000000000000000000..261eeb9e9f8b2b4b0d119366dda99c6fd7d35c64 --- /dev/null +++ b/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/README.md b/README.md index c75b3de6e1d408c8afc6b2c1f550374d644cf1f9..16232077dd561c831ee4d5c2fb282ecf1345a58a 100644 --- a/README.md +++ b/README.md @@ -1,13 +1,38 @@ --- -title: Embrace Vision -emoji: 🏢 -colorFrom: yellow -colorTo: purple +title: CLIP Image Search +emoji: 📸 +colorFrom: pink +colorTo: pink sdk: gradio -sdk_version: 3.50.2 app_file: app.py pinned: false -license: apache-2.0 +python_version: 3.10.10 --- -Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference +# Configuration + +`title`: _string_ +Display title for the Space + +`emoji`: _string_ +Space emoji (emoji-only character allowed) + +`colorFrom`: _string_ +Color for Thumbnail gradient (red, yellow, green, blue, indigo, purple, pink, gray) + +`colorTo`: _string_ +Color for Thumbnail gradient (red, yellow, green, blue, indigo, purple, pink, gray) + +`sdk`: _string_ +Can be either `gradio` or `streamlit` + +`sdk_version` : _string_ +Only applicable for `streamlit` SDK. +See [doc](https://hf.co/docs/hub/spaces) for more info on supported versions. + +`app_file`: _string_ +Path to your main application file (which contains either `gradio` or `streamlit` Python code). +Path is relative to the root of the repository. + +`pinned`: _boolean_ +Whether the Space stays on top of your list. diff --git a/__pycache__/app.cpython-311.pyc b/__pycache__/app.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..0869912fbd3de66feadd0403c51c3df22c59c37d Binary files /dev/null and b/__pycache__/app.cpython-311.pyc differ diff --git a/app.py b/app.py new file mode 100644 index 0000000000000000000000000000000000000000..acbaf0aaf4e79d4b25f892029dac152ac61e092a --- /dev/null +++ b/app.py @@ -0,0 +1,240 @@ +import gradio as gr +from transformers import CLIPProcessor, CLIPModel, CLIPTokenizer, BlipProcessor, BlipForConditionalGeneration, pipeline +from sentence_transformers import SentenceTransformer, util +import pickle +import numpy as np +from PIL import Image, ImageEnhance +import os +import io +import concurrent.futures +import warnings + +warnings.filterwarnings("ignore") + + +class CLIPModelHandler: + def __init__(self, model_name): + self.model_name = model_name + self.img_names, self.img_emb = self.load_precomputed_embeddings() + + def load_precomputed_embeddings(self): + emb_filename = 'unsplash-25k-photos-embeddings.pkl' + with open(emb_filename, 'rb') as fIn: + img_names, img_emb = pickle.load(fIn) + return img_names, img_emb + + def search_text(self, query, top_k=1): + model = CLIPModel.from_pretrained(self.model_name) + processor = CLIPProcessor.from_pretrained(self.model_name) + tokenizer = CLIPTokenizer.from_pretrained(self.model_name) + + inputs = tokenizer([query], padding=True, return_tensors="pt") + query_emb = model.get_text_features(**inputs) + hits = util.semantic_search(query_emb, self.img_emb, top_k=top_k)[0] + + images = [Image.open(os.path.join("photos/", self.img_names[hit['corpus_id']])) for hit in hits] + return images + + def search_image(self, image_path, top_k=1): + model = CLIPModel.from_pretrained(self.model_name) + processor = CLIPProcessor.from_pretrained(self.model_name) + + # Load and preprocess the image + image = Image.open(image_path) + inputs = processor(images=image, return_tensors="pt") + + # Get the image features + outputs = model(**inputs) + image_emb = outputs.logits_per_image + + # Perform semantic search + hits = util.semantic_search(image_emb, self.img_emb, top_k=top_k)[0] + + # Retrieve and return the relevant images + result_images = [] + for hit in hits: + img = Image.open(os.path.join("photos/", self.img_names[hit['corpus_id']])) + result_images.append(img) + + return result_images + +class BLIPImageCaptioning: + def __init__(self, blip_model_name): + self.blip_model_name = blip_model_name + + def preprocess_image(self, image): + if isinstance(image, str): + return Image.open(image).convert('RGB') + elif isinstance(image, np.ndarray): + return Image.fromarray(np.uint8(image)).convert('RGB') + else: + raise ValueError("Invalid input type for image. Supported types: str (file path) or np.ndarray.") + + def generate_caption(self, image): + try: + model = BlipForConditionalGeneration.from_pretrained(self.blip_model_name).to("cuda") + processor = BlipProcessor.from_pretrained(self.blip_model_name) + + raw_image = self.preprocess_image(image) + inputs = processor(raw_image, return_tensors="pt").to("cuda") + out = model.generate(**inputs) + unconditional_caption = processor.decode(out[0], skip_special_tokens=True) + + return unconditional_caption + except Exception as e: + return {"error": str(e)} + + def generate_captions_parallel(self, images): + with concurrent.futures.ThreadPoolExecutor() as executor: + results = list(executor.map(self.generate_caption, images)) + + return results + + +# Initialize the CLIP model handler +clip_handler = CLIPModelHandler("openai/clip-vit-base-patch32") + +# Initialize the zero-shot image classification pipeline +clip_classifier = pipeline("zero-shot-image-classification", model="openai/clip-vit-base-patch32") + +# Load BLIP model directly +blip_processor = BlipProcessor.from_pretrained("Salesforce/blip-image-captioning-base") +blip_model_name = "Salesforce/blip-image-captioning-base" + +# Function for text-to-image search +def text_to_image_interface(query, top_k): + try: + # Perform text-to-image search + result_images = clip_handler.search_text(query, top_k) + + # Resize images before displaying + result_images_resized = [image.resize((224, 224)) for image in result_images] + + # Display more information about the results + result_info = [{"Image Name": os.path.basename(img_path)} for img_path in clip_handler.img_names] + + return result_images_resized, result_info + except Exception as e: + return gr.Error(f"Error in text-to-image search: {str(e)}") + + +# Gradio Interface function for zero-shot classification +def zero_shot_classification(image, labels_text): + try: + # Convert image to PIL format + PIL_image = Image.fromarray(np.uint8(image)).convert('RGB') + + # Split labels_text into a list of labels + labels = labels_text.split(",") + + # Perform zero-shot classification + res = clip_classifier(images=PIL_image, candidate_labels=labels, hypothesis_template="This is a photo of a {}") + + # Format the result as a dictionary + formatted_results = {dic["label"]: dic["score"] for dic in res} + + return formatted_results + except Exception as e: + return gr.Error(f"Error in zero-shot classification: {str(e)}") + + + +def preprocessing_interface(original_image, brightness_slider, contrast_slider, saturation_slider, sharpness_slider, rotation_slider): + try: + # Convert NumPy array to PIL Image + PIL_image = Image.fromarray(np.uint8(original_image)).convert('RGB') + + # Normalize slider values to be in the range [0, 1] + brightness_normalized = brightness_slider / 100.0 + contrast_normalized = contrast_slider / 100.0 + saturation_normalized = saturation_slider / 100.0 + sharpness_normalized = sharpness_slider / 100.0 + + # Apply preprocessing based on user input + PIL_image = PIL_image.convert("RGB") + PIL_image = PIL_image.rotate(rotation_slider) + + # Adjust brightness + enhancer = ImageEnhance.Brightness(PIL_image) + PIL_image = enhancer.enhance(brightness_normalized) + + # Adjust contrast + enhancer = ImageEnhance.Contrast(PIL_image) + PIL_image = enhancer.enhance(contrast_normalized) + + # Adjust saturation + enhancer = ImageEnhance.Color(PIL_image) + PIL_image = enhancer.enhance(saturation_normalized) + + # Adjust sharpness + enhancer = ImageEnhance.Sharpness(PIL_image) + PIL_image = enhancer.enhance(sharpness_normalized) + + # Return the processed image + return PIL_image + except Exception as e: + return gr.Error(f"Error in preprocessing: {str(e)}") + +def generate_captions(images): + blip_model = BlipForConditionalGeneration.from_pretrained(blip_model_name).to("cuda") + blip_processor = BlipProcessor.from_pretrained(blip_model_name) + + return [blip_model_instance.generate_caption(image) for image in images] + + +# Gradio Interfaces +zero_shot_classification_interface = gr.Interface( + fn=zero_shot_classification, + inputs=[ + gr.Image(label="Image Query", elem_id="image_input"), + gr.Textbox(label="Labels (comma-separated)", elem_id="labels_input"), + ], + outputs=gr.Label(elem_id="label_image"), +) + +text_to_image_interface = gr.Interface( + fn=text_to_image_interface, + inputs=[ + gr.Textbox( + lines=2, + label="Text Query", + placeholder="Enter text here...", + ), + gr.Slider(0, 5, step=1, label="Top K Results"), + ], + outputs=[ + gr.Gallery( + label="Text-to-Image Search Results", + elem_id="gallery_text", + grid_cols=2, + height="auto", + ), + gr.Text(label="Result Information", elem_id="text_info"), + ], +) + +blip_model = BLIPImageCaptioning(blip_model_name) # Instantiate the object +blip_captioning_interface = gr.Interface( + fn=blip_model.generate_caption, # Correct the method name + inputs=gr.Image(label="Image for Captioning", elem_id="blip_caption_image"), + outputs=gr.Textbox(label="Generated Captions", elem_id="blip_generated_captions", default=""), +) + +preprocessing_interface = gr.Interface( + fn=blip_model.preprocess_image, # Correct the method name + inputs=[ + gr.Image(label="Original Image", elem_id="original_image"), + ], + outputs=[ + gr.Image(label="Processed Image", elem_id="processed_image"), + ], +) + +# Tabbed Interface +app = gr.TabbedInterface( + interface_list=[text_to_image_interface, zero_shot_classification_interface, blip_captioning_interface], + tab_names=["Text-to-Image Search", "Zero-Shot Classification", "BLIP Image Captioning"], +) + +# Launch the Gradio interface +app.launch(debug=True, share="true") \ No newline at end of file diff --git a/features_extraction.py b/features_extraction.py new file mode 100644 index 0000000000000000000000000000000000000000..df28b32c1a48e9c1c1b62085841ac91fe8539442 --- /dev/null +++ b/features_extraction.py @@ -0,0 +1,44 @@ +import torch +from torchvision import models, transforms +from PIL import Image +import pickle +import os +from tqdm import tqdm # Import tqdm for the progress bar + +# Load a pretrained ResNet model +model = models.resnet50(pretrained=True) +model = model.eval() + +# Define preprocessing transforms +preprocess = transforms.Compose([ + transforms.Resize((224, 224)), + transforms.ToTensor(), + transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225]), +]) + +# Function to extract features from an image +def extract_features(image_path): + image = Image.open(image_path).convert('RGB') + input_tensor = preprocess(image) + input_batch = input_tensor.unsqueeze(0) + + with torch.no_grad(): + output = model(input_batch) + + return output.squeeze().numpy() + +# Directory containing your images +images_directory = "photos/" + +# Process each image and save features +image_features = {} +for filename in tqdm(os.listdir(images_directory), desc="Processing Images"): + if filename.endswith(".jpg") or filename.endswith(".png"): + image_path = os.path.join(images_directory, filename) + features = extract_features(image_path) + image_features[filename] = features + +# Save the features to a pickle file +output_file = "unsplash-25k-embeddings.pkl" +with open(output_file, 'wb') as f: + pickle.dump(image_features, f) \ No newline at end of file diff --git a/flagged/Text-to-Image Search Results/28b9820a-4b94-4951-8cde-6128980d10c6/4f98da9ec0f689294825687b767e5bd6abddd769/image.png b/flagged/Text-to-Image Search Results/28b9820a-4b94-4951-8cde-6128980d10c6/4f98da9ec0f689294825687b767e5bd6abddd769/image.png new file mode 100644 index 0000000000000000000000000000000000000000..9a952e9c29a4863f7b5fd151e7b8db695f566278 Binary files /dev/null and b/flagged/Text-to-Image Search Results/28b9820a-4b94-4951-8cde-6128980d10c6/4f98da9ec0f689294825687b767e5bd6abddd769/image.png differ diff --git a/flagged/Text-to-Image Search Results/28b9820a-4b94-4951-8cde-6128980d10c6/51731869eb38daa90d2c38be3879322cffd0e5a8/image.png b/flagged/Text-to-Image Search Results/28b9820a-4b94-4951-8cde-6128980d10c6/51731869eb38daa90d2c38be3879322cffd0e5a8/image.png new file mode 100644 index 0000000000000000000000000000000000000000..2dd4f7b06c6f77cc7dbfcbc9c1d62bff6b49ebc4 Binary files /dev/null and b/flagged/Text-to-Image Search Results/28b9820a-4b94-4951-8cde-6128980d10c6/51731869eb38daa90d2c38be3879322cffd0e5a8/image.png differ diff --git a/flagged/Text-to-Image Search Results/28b9820a-4b94-4951-8cde-6128980d10c6/873bcc5d4e101e2df7ec1db2a29b17dc0b13f072/image.png b/flagged/Text-to-Image Search Results/28b9820a-4b94-4951-8cde-6128980d10c6/873bcc5d4e101e2df7ec1db2a29b17dc0b13f072/image.png new file mode 100644 index 0000000000000000000000000000000000000000..a51942e2435c36411519501aba65ed17268fe9d2 Binary files /dev/null and b/flagged/Text-to-Image Search Results/28b9820a-4b94-4951-8cde-6128980d10c6/873bcc5d4e101e2df7ec1db2a29b17dc0b13f072/image.png differ diff --git a/flagged/Text-to-Image Search Results/28b9820a-4b94-4951-8cde-6128980d10c6/captions.json b/flagged/Text-to-Image Search Results/28b9820a-4b94-4951-8cde-6128980d10c6/captions.json new file mode 100644 index 0000000000000000000000000000000000000000..9c98fe56bfb2ab5374261761ec7813bc03b7818a --- /dev/null +++ b/flagged/Text-to-Image Search Results/28b9820a-4b94-4951-8cde-6128980d10c6/captions.json @@ -0,0 +1 @@ +{"C:\\Users\\basel\\OneDrive\\Desktop\\CLIP-Model-Image-Search\\flagged\\Text-to-Image Search Results\\28b9820a-4b94-4951-8cde-6128980d10c6\\4f98da9ec0f689294825687b767e5bd6abddd769\\image.png": null, "C:\\Users\\basel\\OneDrive\\Desktop\\CLIP-Model-Image-Search\\flagged\\Text-to-Image Search Results\\28b9820a-4b94-4951-8cde-6128980d10c6\\51731869eb38daa90d2c38be3879322cffd0e5a8\\image.png": null, "C:\\Users\\basel\\OneDrive\\Desktop\\CLIP-Model-Image-Search\\flagged\\Text-to-Image Search Results\\28b9820a-4b94-4951-8cde-6128980d10c6\\873bcc5d4e101e2df7ec1db2a29b17dc0b13f072\\image.png": null, "C:\\Users\\basel\\OneDrive\\Desktop\\CLIP-Model-Image-Search\\flagged\\Text-to-Image Search Results\\28b9820a-4b94-4951-8cde-6128980d10c6\\eb1653eec598be50fd369b3acc91857aa20a6c78\\image.png": null, "C:\\Users\\basel\\OneDrive\\Desktop\\CLIP-Model-Image-Search\\flagged\\Text-to-Image Search Results\\28b9820a-4b94-4951-8cde-6128980d10c6\\cc007a660fb213a4a5ca9b43229bc21f28fa5792\\image.png": null} \ No newline at end of file diff --git a/flagged/Text-to-Image Search Results/28b9820a-4b94-4951-8cde-6128980d10c6/cc007a660fb213a4a5ca9b43229bc21f28fa5792/image.png b/flagged/Text-to-Image Search Results/28b9820a-4b94-4951-8cde-6128980d10c6/cc007a660fb213a4a5ca9b43229bc21f28fa5792/image.png new file mode 100644 index 0000000000000000000000000000000000000000..c89178686c97d05d0124b8a637a628bc53d4be65 Binary files /dev/null and b/flagged/Text-to-Image Search Results/28b9820a-4b94-4951-8cde-6128980d10c6/cc007a660fb213a4a5ca9b43229bc21f28fa5792/image.png differ diff --git a/flagged/Text-to-Image Search Results/28b9820a-4b94-4951-8cde-6128980d10c6/eb1653eec598be50fd369b3acc91857aa20a6c78/image.png b/flagged/Text-to-Image Search Results/28b9820a-4b94-4951-8cde-6128980d10c6/eb1653eec598be50fd369b3acc91857aa20a6c78/image.png new file mode 100644 index 0000000000000000000000000000000000000000..f63c74606049232accd66309b46cd691b05130d2 Binary files /dev/null and b/flagged/Text-to-Image Search Results/28b9820a-4b94-4951-8cde-6128980d10c6/eb1653eec598be50fd369b3acc91857aa20a6c78/image.png differ diff --git a/flagged/Text-to-Image Search Results/578ec4d5-4c30-46d9-99b2-de30a7bf78d0/00d27721ded93f7833b7b8ccc2d98bd113c8f73b/image.png b/flagged/Text-to-Image Search Results/578ec4d5-4c30-46d9-99b2-de30a7bf78d0/00d27721ded93f7833b7b8ccc2d98bd113c8f73b/image.png new file mode 100644 index 0000000000000000000000000000000000000000..9a952e9c29a4863f7b5fd151e7b8db695f566278 Binary files /dev/null and b/flagged/Text-to-Image Search Results/578ec4d5-4c30-46d9-99b2-de30a7bf78d0/00d27721ded93f7833b7b8ccc2d98bd113c8f73b/image.png differ diff --git a/flagged/Text-to-Image Search Results/578ec4d5-4c30-46d9-99b2-de30a7bf78d0/1f6730d26ffc4df0fea7cf4d3d8e8f2f6c6521cd/image.png b/flagged/Text-to-Image Search Results/578ec4d5-4c30-46d9-99b2-de30a7bf78d0/1f6730d26ffc4df0fea7cf4d3d8e8f2f6c6521cd/image.png new file mode 100644 index 0000000000000000000000000000000000000000..c89178686c97d05d0124b8a637a628bc53d4be65 Binary files /dev/null and b/flagged/Text-to-Image Search Results/578ec4d5-4c30-46d9-99b2-de30a7bf78d0/1f6730d26ffc4df0fea7cf4d3d8e8f2f6c6521cd/image.png differ diff --git a/flagged/Text-to-Image Search Results/578ec4d5-4c30-46d9-99b2-de30a7bf78d0/9b260c660faf1bf2cf4485aa65897526cc03d2d3/image.png b/flagged/Text-to-Image Search Results/578ec4d5-4c30-46d9-99b2-de30a7bf78d0/9b260c660faf1bf2cf4485aa65897526cc03d2d3/image.png new file mode 100644 index 0000000000000000000000000000000000000000..a51942e2435c36411519501aba65ed17268fe9d2 Binary files /dev/null and b/flagged/Text-to-Image Search Results/578ec4d5-4c30-46d9-99b2-de30a7bf78d0/9b260c660faf1bf2cf4485aa65897526cc03d2d3/image.png differ diff --git a/flagged/Text-to-Image Search Results/578ec4d5-4c30-46d9-99b2-de30a7bf78d0/captions.json b/flagged/Text-to-Image Search Results/578ec4d5-4c30-46d9-99b2-de30a7bf78d0/captions.json new file mode 100644 index 0000000000000000000000000000000000000000..786a92f95d8e2ae4430a0144c9eb67d1a2a22f1a --- /dev/null +++ b/flagged/Text-to-Image Search Results/578ec4d5-4c30-46d9-99b2-de30a7bf78d0/captions.json @@ -0,0 +1 @@ +{"C:\\Users\\basel\\OneDrive\\Desktop\\CLIP-Model-Image-Search\\flagged\\Text-to-Image Search Results\\578ec4d5-4c30-46d9-99b2-de30a7bf78d0\\00d27721ded93f7833b7b8ccc2d98bd113c8f73b\\image.png": null, "C:\\Users\\basel\\OneDrive\\Desktop\\CLIP-Model-Image-Search\\flagged\\Text-to-Image Search Results\\578ec4d5-4c30-46d9-99b2-de30a7bf78d0\\cf2a6f967f1557bc9ca891594273f74ef7347f5d\\image.png": null, "C:\\Users\\basel\\OneDrive\\Desktop\\CLIP-Model-Image-Search\\flagged\\Text-to-Image Search Results\\578ec4d5-4c30-46d9-99b2-de30a7bf78d0\\9b260c660faf1bf2cf4485aa65897526cc03d2d3\\image.png": null, "C:\\Users\\basel\\OneDrive\\Desktop\\CLIP-Model-Image-Search\\flagged\\Text-to-Image Search Results\\578ec4d5-4c30-46d9-99b2-de30a7bf78d0\\dab41f873239f5a039d53fe0d6c1d4f1f0c3034e\\image.png": null, "C:\\Users\\basel\\OneDrive\\Desktop\\CLIP-Model-Image-Search\\flagged\\Text-to-Image Search Results\\578ec4d5-4c30-46d9-99b2-de30a7bf78d0\\1f6730d26ffc4df0fea7cf4d3d8e8f2f6c6521cd\\image.png": null} \ No newline at end of file diff --git a/flagged/Text-to-Image Search Results/578ec4d5-4c30-46d9-99b2-de30a7bf78d0/cf2a6f967f1557bc9ca891594273f74ef7347f5d/image.png b/flagged/Text-to-Image Search Results/578ec4d5-4c30-46d9-99b2-de30a7bf78d0/cf2a6f967f1557bc9ca891594273f74ef7347f5d/image.png new file mode 100644 index 0000000000000000000000000000000000000000..2dd4f7b06c6f77cc7dbfcbc9c1d62bff6b49ebc4 Binary files /dev/null and b/flagged/Text-to-Image Search Results/578ec4d5-4c30-46d9-99b2-de30a7bf78d0/cf2a6f967f1557bc9ca891594273f74ef7347f5d/image.png differ diff --git a/flagged/Text-to-Image Search Results/578ec4d5-4c30-46d9-99b2-de30a7bf78d0/dab41f873239f5a039d53fe0d6c1d4f1f0c3034e/image.png b/flagged/Text-to-Image Search Results/578ec4d5-4c30-46d9-99b2-de30a7bf78d0/dab41f873239f5a039d53fe0d6c1d4f1f0c3034e/image.png new file mode 100644 index 0000000000000000000000000000000000000000..f63c74606049232accd66309b46cd691b05130d2 Binary files /dev/null and b/flagged/Text-to-Image Search Results/578ec4d5-4c30-46d9-99b2-de30a7bf78d0/dab41f873239f5a039d53fe0d6c1d4f1f0c3034e/image.png differ diff --git a/flagged/log.csv b/flagged/log.csv new file mode 100644 index 0000000000000000000000000000000000000000..56d520382d80f8fbd1cae0cf3a0a424314714b7b --- /dev/null +++ b/flagged/log.csv @@ -0,0 +1,3 @@ +Text Query,Top K Results,Text-to-Image Search Results,flag,username,timestamp +man riding a horse,5,C:\Users\basel\OneDrive\Desktop\CLIP-Model-Image-Search\flagged\Text-to-Image Search Results\578ec4d5-4c30-46d9-99b2-de30a7bf78d0,,,2023-10-27 19:01:31.140298 +man riding a horse,5,C:\Users\basel\OneDrive\Desktop\CLIP-Model-Image-Search\flagged\Text-to-Image Search Results\28b9820a-4b94-4951-8cde-6128980d10c6,,,2023-10-27 19:01:36.052210 diff --git a/photos/--2IBUMom1I.jpg b/photos/--2IBUMom1I.jpg new file mode 100644 index 0000000000000000000000000000000000000000..296779b6da3bf7c252ebde0d59506b562bbf4512 Binary files /dev/null and b/photos/--2IBUMom1I.jpg differ diff --git a/photos/--6JlGcHl-w.jpg b/photos/--6JlGcHl-w.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a07a541620289a91876029ab02823aebd31e0324 Binary files /dev/null and b/photos/--6JlGcHl-w.jpg differ diff --git a/photos/--Jy_8mvs4E.jpg b/photos/--Jy_8mvs4E.jpg new file mode 100644 index 0000000000000000000000000000000000000000..b594f692179d14165f902b2d95e2be4126ba7475 Binary files /dev/null and b/photos/--Jy_8mvs4E.jpg differ diff --git a/photos/--SDX4KWIbA.jpg b/photos/--SDX4KWIbA.jpg new file mode 100644 index 0000000000000000000000000000000000000000..05b6e80f8fb32ac8a889c28debfc1d4ca9b17f41 Binary files /dev/null and b/photos/--SDX4KWIbA.jpg differ diff --git a/photos/--Tn3E5ZtfQ.jpg b/photos/--Tn3E5ZtfQ.jpg new file mode 100644 index 0000000000000000000000000000000000000000..b949ba1070e47b4af53bd39a5f0323ae089357ed Binary files /dev/null and b/photos/--Tn3E5ZtfQ.jpg differ diff --git a/photos/--e3kJUMSZw.jpg b/photos/--e3kJUMSZw.jpg new file mode 100644 index 0000000000000000000000000000000000000000..c515f7e9ac53267292e42910bc60ca78cd1e2af9 Binary files /dev/null and b/photos/--e3kJUMSZw.jpg differ diff --git a/photos/--kGuWTwn48.jpg b/photos/--kGuWTwn48.jpg new file mode 100644 index 0000000000000000000000000000000000000000..dec0517c1c7a17f029a5540b506ef8ef895da97d Binary files /dev/null and b/photos/--kGuWTwn48.jpg differ diff --git a/photos/--lzOIJ-a4U.jpg b/photos/--lzOIJ-a4U.jpg new file mode 100644 index 0000000000000000000000000000000000000000..686ca98f459d6779df8074db3db8bda8f61a224f Binary files /dev/null and b/photos/--lzOIJ-a4U.jpg differ diff --git a/photos/-0YZgPxq04k.jpg b/photos/-0YZgPxq04k.jpg new file mode 100644 index 0000000000000000000000000000000000000000..6f73c90abf5c3209f8c2dbe31732fe9bbf7a8891 Binary files /dev/null and b/photos/-0YZgPxq04k.jpg differ diff --git a/photos/-0_ww2ACIw8.jpg b/photos/-0_ww2ACIw8.jpg new file mode 100644 index 0000000000000000000000000000000000000000..045acfb6ce7fae88b0902b282125ec6da08cf9df Binary files /dev/null and b/photos/-0_ww2ACIw8.jpg differ diff --git a/photos/-0eINgEiNw4.jpg b/photos/-0eINgEiNw4.jpg new file mode 100644 index 0000000000000000000000000000000000000000..beef0feb418ac06cf3d24771379cd23249d7b845 Binary files /dev/null and b/photos/-0eINgEiNw4.jpg differ diff --git a/photos/-12cgSu9HW0.jpg b/photos/-12cgSu9HW0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..6124a1f4493e2c65580525fe117ed6fb9aaca249 Binary files /dev/null and b/photos/-12cgSu9HW0.jpg differ diff --git a/photos/-1a83VD65ss.jpg b/photos/-1a83VD65ss.jpg new file mode 100644 index 0000000000000000000000000000000000000000..5b28551ae0bc7f263edd4ef78357ea345d4ddc7a Binary files /dev/null and b/photos/-1a83VD65ss.jpg differ diff --git a/photos/-1lMrIXAn6Q.jpg b/photos/-1lMrIXAn6Q.jpg new file mode 100644 index 0000000000000000000000000000000000000000..eae1c5e4d874993ef7c8975d546966ef0c16c426 Binary files /dev/null and b/photos/-1lMrIXAn6Q.jpg differ diff --git a/photos/-1qb8SIBzKY.jpg b/photos/-1qb8SIBzKY.jpg new file mode 100644 index 0000000000000000000000000000000000000000..4c7a64a9e30ce0f327d0d1e290afbb5a59ecd244 Binary files /dev/null and b/photos/-1qb8SIBzKY.jpg differ diff --git a/photos/-2ii0_ctxpQ.jpg b/photos/-2ii0_ctxpQ.jpg new file mode 100644 index 0000000000000000000000000000000000000000..9f0bf5a9f61abb8c86e2209d3bb59e36fb4be1a3 Binary files /dev/null and b/photos/-2ii0_ctxpQ.jpg differ diff --git a/photos/-2loC3xzDF8.jpg b/photos/-2loC3xzDF8.jpg new file mode 100644 index 0000000000000000000000000000000000000000..4972b5a50de3fd2e4b43277cb4874e7f6f7f7641 Binary files /dev/null and b/photos/-2loC3xzDF8.jpg differ diff --git a/photos/-2pFSIxX9ow.jpg b/photos/-2pFSIxX9ow.jpg new file mode 100644 index 0000000000000000000000000000000000000000..431d16332cc135c83ad0bd1199dbce4144180b56 Binary files /dev/null and b/photos/-2pFSIxX9ow.jpg differ diff --git a/photos/-3IZERJGsm4.jpg b/photos/-3IZERJGsm4.jpg new file mode 100644 index 0000000000000000000000000000000000000000..eeecae2ee4640319fd4daed702a32a152390db1f Binary files /dev/null and b/photos/-3IZERJGsm4.jpg differ diff --git a/photos/-3LtGq_RPcY.jpg b/photos/-3LtGq_RPcY.jpg new file mode 100644 index 0000000000000000000000000000000000000000..cf17d4b2d042fce19adfcb13ed508617ded11eba Binary files /dev/null and b/photos/-3LtGq_RPcY.jpg differ diff --git a/photos/-3cTY-Q6k88.jpg b/photos/-3cTY-Q6k88.jpg new file mode 100644 index 0000000000000000000000000000000000000000..0646efad2312e9dcb8e98522d2e71350b3e6bbf4 Binary files /dev/null and b/photos/-3cTY-Q6k88.jpg differ diff --git a/photos/-3l6KX8uCAM.jpg b/photos/-3l6KX8uCAM.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a30ebc08bba9508ff4759a793aeb9016383489bf Binary files /dev/null and b/photos/-3l6KX8uCAM.jpg differ diff --git a/photos/-3qSsolbivo.jpg b/photos/-3qSsolbivo.jpg new file mode 100644 index 0000000000000000000000000000000000000000..5dc6ea4f353fccd6731cede6e7303ed9e327686e Binary files /dev/null and b/photos/-3qSsolbivo.jpg differ diff --git a/photos/-3uIUqsR-Rw.jpg b/photos/-3uIUqsR-Rw.jpg new file mode 100644 index 0000000000000000000000000000000000000000..5c69bcccdeb3cc70fc4904d4e4c36e5180771318 Binary files /dev/null and b/photos/-3uIUqsR-Rw.jpg differ diff --git a/photos/-43qvNitz5k.jpg b/photos/-43qvNitz5k.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a4fca0bc3ea13d19b2faaa5454388aa173ead0a8 Binary files /dev/null and b/photos/-43qvNitz5k.jpg differ diff --git a/photos/-4AR-vVjAbM.jpg b/photos/-4AR-vVjAbM.jpg new file mode 100644 index 0000000000000000000000000000000000000000..60dcaf1f3ba59d306d1b3ad5b443bb3c99ab5c93 Binary files /dev/null and b/photos/-4AR-vVjAbM.jpg differ diff --git a/photos/-4UwhAr4KYg.jpg b/photos/-4UwhAr4KYg.jpg new file mode 100644 index 0000000000000000000000000000000000000000..e28227b29bfcca0de71412f3a6dee51ed0b54597 Binary files /dev/null and b/photos/-4UwhAr4KYg.jpg differ diff --git a/photos/-4WLn9giArE.jpg b/photos/-4WLn9giArE.jpg new file mode 100644 index 0000000000000000000000000000000000000000..89fc12a0e6a7a3097a84e7a6ab1e335195add987 Binary files /dev/null and b/photos/-4WLn9giArE.jpg differ diff --git a/photos/-4qCLz3r1s8.jpg b/photos/-4qCLz3r1s8.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ae54943568c33d4dae6acb626452f893eea38b44 Binary files /dev/null and b/photos/-4qCLz3r1s8.jpg differ diff --git a/photos/-5WWw6DeQ8w.jpg b/photos/-5WWw6DeQ8w.jpg new file mode 100644 index 0000000000000000000000000000000000000000..d8d496f75f85100cc511ef88eb76071705dc55e4 Binary files /dev/null and b/photos/-5WWw6DeQ8w.jpg differ diff --git a/photos/-5_tGk7SUuM.jpg b/photos/-5_tGk7SUuM.jpg new file mode 100644 index 0000000000000000000000000000000000000000..684e6697e99fbfa0f7559302eda3e2dcd815c20e Binary files /dev/null and b/photos/-5_tGk7SUuM.jpg differ diff --git a/photos/-5eZ1-Ie68w.jpg b/photos/-5eZ1-Ie68w.jpg new file mode 100644 index 0000000000000000000000000000000000000000..3610e0e08919b82318bd9f0b2cf85da3acc0fed1 Binary files /dev/null and b/photos/-5eZ1-Ie68w.jpg differ diff --git a/photos/-6-uqd2hMCg.jpg b/photos/-6-uqd2hMCg.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a0892488b5de54898e2b13d127bdf6dd80e4f99f Binary files /dev/null and b/photos/-6-uqd2hMCg.jpg differ diff --git a/photos/-6HgkmXTWhs.jpg b/photos/-6HgkmXTWhs.jpg new file mode 100644 index 0000000000000000000000000000000000000000..27cbd8a414b7827eb2f25649e132bb68adc5289d Binary files /dev/null and b/photos/-6HgkmXTWhs.jpg differ diff --git a/photos/-6JK87e42iQ.jpg b/photos/-6JK87e42iQ.jpg new file mode 100644 index 0000000000000000000000000000000000000000..b7e84d21c212c8dc3ebb543742036966070ca55d Binary files /dev/null and b/photos/-6JK87e42iQ.jpg differ diff --git a/photos/-6UNL6Ghn_c.jpg b/photos/-6UNL6Ghn_c.jpg new file mode 100644 index 0000000000000000000000000000000000000000..9e7d5f237ff715038ed0c55a964dc6c9e0cf4c18 Binary files /dev/null and b/photos/-6UNL6Ghn_c.jpg differ diff --git a/photos/-6_jB6qjwCQ.jpg b/photos/-6_jB6qjwCQ.jpg new file mode 100644 index 0000000000000000000000000000000000000000..03fae10116b2c6e1f8cedf971930958603d2e441 Binary files /dev/null and b/photos/-6_jB6qjwCQ.jpg differ diff --git a/photos/-6e6HVEzgGs.jpg b/photos/-6e6HVEzgGs.jpg new file mode 100644 index 0000000000000000000000000000000000000000..7e0796a576dcc432c86efcafb5f04981fe63be25 Binary files /dev/null and b/photos/-6e6HVEzgGs.jpg differ diff --git a/photos/-6h-oYfdZDA.jpg b/photos/-6h-oYfdZDA.jpg new file mode 100644 index 0000000000000000000000000000000000000000..1734f72f5761d1b6c34b29e7ec63b8397901868c Binary files /dev/null and b/photos/-6h-oYfdZDA.jpg differ diff --git a/photos/-6hvB84fyYA.jpg b/photos/-6hvB84fyYA.jpg new file mode 100644 index 0000000000000000000000000000000000000000..2ad8359e9383318b68e45cce1a54acb4e94e7ba3 Binary files /dev/null and b/photos/-6hvB84fyYA.jpg differ diff --git a/photos/-6i6a23H5Ho.jpg b/photos/-6i6a23H5Ho.jpg new file mode 100644 index 0000000000000000000000000000000000000000..bc058ddd80814be9f691f88bcb926824c39655f5 Binary files /dev/null and b/photos/-6i6a23H5Ho.jpg differ diff --git a/photos/-7FQ56tDBWQ.jpg b/photos/-7FQ56tDBWQ.jpg new file mode 100644 index 0000000000000000000000000000000000000000..4fe6be185eb9edef94902dd159268758093f372d Binary files /dev/null and b/photos/-7FQ56tDBWQ.jpg differ diff --git a/photos/-7JAEi4PhTU.jpg b/photos/-7JAEi4PhTU.jpg new file mode 100644 index 0000000000000000000000000000000000000000..baf34c291d6d0950a07ac693bc34b83a6b10d88a Binary files /dev/null and b/photos/-7JAEi4PhTU.jpg differ diff --git a/photos/-7Mfzok9LNk.jpg b/photos/-7Mfzok9LNk.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a76b03e9923e5caff3bfa403480ae6d22c196014 Binary files /dev/null and b/photos/-7Mfzok9LNk.jpg differ diff --git a/photos/-7QeX7V2YLY.jpg b/photos/-7QeX7V2YLY.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ecb1ed2c4b10171eaa3386846806fe91538b7954 Binary files /dev/null and b/photos/-7QeX7V2YLY.jpg differ diff --git a/photos/-7_yLivAnMc.jpg b/photos/-7_yLivAnMc.jpg new file mode 100644 index 0000000000000000000000000000000000000000..d8eb32d8b2676bcf2637304b52f72496b5008be5 Binary files /dev/null and b/photos/-7_yLivAnMc.jpg differ diff --git a/photos/-7iCZvSYt6M.jpg b/photos/-7iCZvSYt6M.jpg new file mode 100644 index 0000000000000000000000000000000000000000..0fab091318dedee0dd36f2ca534c15d3cd54cce7 Binary files /dev/null and b/photos/-7iCZvSYt6M.jpg differ diff --git a/photos/-7pW0Lv1Zmo.jpg b/photos/-7pW0Lv1Zmo.jpg new file mode 100644 index 0000000000000000000000000000000000000000..856efb63381f9356660fe8ad43ba1f47ca9987cf Binary files /dev/null and b/photos/-7pW0Lv1Zmo.jpg differ diff --git a/photos/-81lVsfM4gQ.jpg b/photos/-81lVsfM4gQ.jpg new file mode 100644 index 0000000000000000000000000000000000000000..4bedb8e5e930990a1e10900568268ee2cd5cef99 Binary files /dev/null and b/photos/-81lVsfM4gQ.jpg differ diff --git a/photos/-87JyMb9ZfU.jpg b/photos/-87JyMb9ZfU.jpg new file mode 100644 index 0000000000000000000000000000000000000000..b15ba771c1e18f427b3e1a547921841b38f1e697 Binary files /dev/null and b/photos/-87JyMb9ZfU.jpg differ diff --git a/photos/-8AH9QUqYIo.jpg b/photos/-8AH9QUqYIo.jpg new file mode 100644 index 0000000000000000000000000000000000000000..bf6fe3d51282b566a09a0eb872afc94b6f776820 Binary files /dev/null and b/photos/-8AH9QUqYIo.jpg differ diff --git a/photos/-8dtqke9Z_0.jpg b/photos/-8dtqke9Z_0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..5efaf76ef7bfc94f770f725ac2b003b0d3899e16 Binary files /dev/null and b/photos/-8dtqke9Z_0.jpg differ diff --git a/photos/-8qcWyVHCDY.jpg b/photos/-8qcWyVHCDY.jpg new file mode 100644 index 0000000000000000000000000000000000000000..63dcbdd9cd09a132f4234daa1177a9445c38c09c Binary files /dev/null and b/photos/-8qcWyVHCDY.jpg differ diff --git a/photos/-93ArahrTKc.jpg b/photos/-93ArahrTKc.jpg new file mode 100644 index 0000000000000000000000000000000000000000..8d1cf8c4f8aacd028adb76598091666128f5fc48 Binary files /dev/null and b/photos/-93ArahrTKc.jpg differ diff --git a/photos/-95yF3Q4l8s.jpg b/photos/-95yF3Q4l8s.jpg new file mode 100644 index 0000000000000000000000000000000000000000..70a5f9f4e35db80e9f17530964be0ffd5e33f433 Binary files /dev/null and b/photos/-95yF3Q4l8s.jpg differ diff --git a/photos/-96qBKyFefQ.jpg b/photos/-96qBKyFefQ.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a956ccce3eabf77c45c3a8e981c4337d1c8980d1 Binary files /dev/null and b/photos/-96qBKyFefQ.jpg differ diff --git a/photos/-97jc08hg8Y.jpg b/photos/-97jc08hg8Y.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a08836dd5ee821ff3aed9a0676f369afc54c8b73 Binary files /dev/null and b/photos/-97jc08hg8Y.jpg differ diff --git a/photos/-9ERCZ-rgUc.jpg b/photos/-9ERCZ-rgUc.jpg new file mode 100644 index 0000000000000000000000000000000000000000..d428a7989ee0559beeaa8aa0af25fbf7c4925273 Binary files /dev/null and b/photos/-9ERCZ-rgUc.jpg differ diff --git a/photos/-9KvUbBuIXQ.jpg b/photos/-9KvUbBuIXQ.jpg new file mode 100644 index 0000000000000000000000000000000000000000..c7cfeecc1905ffca9473364a044aa1d79d110d46 Binary files /dev/null and b/photos/-9KvUbBuIXQ.jpg differ diff --git a/photos/-9SsJ2jHnkg.jpg b/photos/-9SsJ2jHnkg.jpg new file mode 100644 index 0000000000000000000000000000000000000000..1e4947bfe6b54a75d4f4936871b0e21944213dc9 Binary files /dev/null and b/photos/-9SsJ2jHnkg.jpg differ diff --git a/photos/-9XPWpGkOS4.jpg b/photos/-9XPWpGkOS4.jpg new file mode 100644 index 0000000000000000000000000000000000000000..bbba8b2e5363821d9f4e1fad6af8726294407022 Binary files /dev/null and b/photos/-9XPWpGkOS4.jpg differ diff --git a/photos/-9XaVmKS82w.jpg b/photos/-9XaVmKS82w.jpg new file mode 100644 index 0000000000000000000000000000000000000000..7c5399d72ec6155106489b74d7d5cf21b4139c23 Binary files /dev/null and b/photos/-9XaVmKS82w.jpg differ diff --git a/photos/-9cV7wTi--Y.jpg b/photos/-9cV7wTi--Y.jpg new file mode 100644 index 0000000000000000000000000000000000000000..c8409dccef5c78c0cfe26582ad13479737e6694d Binary files /dev/null and b/photos/-9cV7wTi--Y.jpg differ diff --git a/photos/-A18oTkoVjU.jpg b/photos/-A18oTkoVjU.jpg new file mode 100644 index 0000000000000000000000000000000000000000..4bc14054914572a267c4462a9b7f9e69039e6656 Binary files /dev/null and b/photos/-A18oTkoVjU.jpg differ diff --git a/photos/-AKxioM8JSU.jpg b/photos/-AKxioM8JSU.jpg new file mode 100644 index 0000000000000000000000000000000000000000..80460a83aeffbc66cefdc8f0b51094bf7995a0a3 Binary files /dev/null and b/photos/-AKxioM8JSU.jpg differ diff --git a/photos/-AbeoL252z0.jpg b/photos/-AbeoL252z0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a89a12db34ffe285bf7e9fbf8ed12837ca4ca8f1 Binary files /dev/null and b/photos/-AbeoL252z0.jpg differ diff --git a/photos/-BKkI_hy9PQ.jpg b/photos/-BKkI_hy9PQ.jpg new file mode 100644 index 0000000000000000000000000000000000000000..c5724a6d0f5614c5dd1bd0769e818d1ed517c191 Binary files /dev/null and b/photos/-BKkI_hy9PQ.jpg differ diff --git a/photos/-BSvBlnCvUU.jpg b/photos/-BSvBlnCvUU.jpg new file mode 100644 index 0000000000000000000000000000000000000000..86c768eeae855033517e1052c52f06bb651414fe Binary files /dev/null and b/photos/-BSvBlnCvUU.jpg differ diff --git a/photos/-BZc9Ee1qo0.jpg b/photos/-BZc9Ee1qo0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..beef43d493bd833855242c30cd1b1f96c8b2f5ec Binary files /dev/null and b/photos/-BZc9Ee1qo0.jpg differ diff --git a/photos/-BZyA3DIIsE.jpg b/photos/-BZyA3DIIsE.jpg new file mode 100644 index 0000000000000000000000000000000000000000..108be1025eea7a96cb3fd1c36de9f68bd9221250 Binary files /dev/null and b/photos/-BZyA3DIIsE.jpg differ diff --git a/photos/-BkZzidZIZg.jpg b/photos/-BkZzidZIZg.jpg new file mode 100644 index 0000000000000000000000000000000000000000..03b3b6eb428d4f4b53d16e8ebe388e4f6d24e22a Binary files /dev/null and b/photos/-BkZzidZIZg.jpg differ diff --git a/photos/-CBBc6Ia1rg.jpg b/photos/-CBBc6Ia1rg.jpg new file mode 100644 index 0000000000000000000000000000000000000000..7552453186a6fb7239c58ffd8b8131f0b9d99f45 Binary files /dev/null and b/photos/-CBBc6Ia1rg.jpg differ diff --git a/photos/-CKL7Ohzh7E.jpg b/photos/-CKL7Ohzh7E.jpg new file mode 100644 index 0000000000000000000000000000000000000000..3c02f0348a2c42084221631b0cf297833eb8761e Binary files /dev/null and b/photos/-CKL7Ohzh7E.jpg differ diff --git a/photos/-CVg4toX4dc.jpg b/photos/-CVg4toX4dc.jpg new file mode 100644 index 0000000000000000000000000000000000000000..f0c64fb487e89171d3e8c3b6156dcaa25a5b0536 Binary files /dev/null and b/photos/-CVg4toX4dc.jpg differ diff --git a/photos/-DApw8eRfR8.jpg b/photos/-DApw8eRfR8.jpg new file mode 100644 index 0000000000000000000000000000000000000000..1855ef87c4b02c480e74fb006b1a2e8993a3d01c Binary files /dev/null and b/photos/-DApw8eRfR8.jpg differ diff --git a/photos/-DKUThtgWI0.jpg b/photos/-DKUThtgWI0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..b0f42b7157e6665b5926b9cdaeea4e74647c54aa Binary files /dev/null and b/photos/-DKUThtgWI0.jpg differ diff --git a/photos/-DsfJVPr4vo.jpg b/photos/-DsfJVPr4vo.jpg new file mode 100644 index 0000000000000000000000000000000000000000..9fe8af79260f4e706cf71c342d104e4cf2b34946 Binary files /dev/null and b/photos/-DsfJVPr4vo.jpg differ diff --git a/photos/-a3q5i-Q7pQ.jpg b/photos/-a3q5i-Q7pQ.jpg new file mode 100644 index 0000000000000000000000000000000000000000..83143f2b1572c6a46d08fb698e71ada072235d6f Binary files /dev/null and b/photos/-a3q5i-Q7pQ.jpg differ diff --git a/photos/-aAucsS1f24.jpg b/photos/-aAucsS1f24.jpg new file mode 100644 index 0000000000000000000000000000000000000000..4f61805191f0546a44b6ec54782bd89563e8bc4d Binary files /dev/null and b/photos/-aAucsS1f24.jpg differ diff --git a/photos/-aImI5g9QXw.jpg b/photos/-aImI5g9QXw.jpg new file mode 100644 index 0000000000000000000000000000000000000000..d37696f4b02266437d23b8ff17800eac0caaca4b Binary files /dev/null and b/photos/-aImI5g9QXw.jpg differ diff --git a/photos/-aU22Nb4cZ4.jpg b/photos/-aU22Nb4cZ4.jpg new file mode 100644 index 0000000000000000000000000000000000000000..03708c2388777eba929175a1f47128ba8d3e1507 Binary files /dev/null and b/photos/-aU22Nb4cZ4.jpg differ diff --git a/photos/-anCWaNIJWQ.jpg b/photos/-anCWaNIJWQ.jpg new file mode 100644 index 0000000000000000000000000000000000000000..c57d91e43de613ade818d660726d29ac19108ffa Binary files /dev/null and b/photos/-anCWaNIJWQ.jpg differ diff --git a/photos/-aptt8SCOHI.jpg b/photos/-aptt8SCOHI.jpg new file mode 100644 index 0000000000000000000000000000000000000000..06a68196a9b7329c4c9ed80de431c997bb5d93a1 Binary files /dev/null and b/photos/-aptt8SCOHI.jpg differ diff --git a/photos/-b99oOqVJo4.jpg b/photos/-b99oOqVJo4.jpg new file mode 100644 index 0000000000000000000000000000000000000000..37afa0d2641972c272aee0e6bca8cd1aae00abee Binary files /dev/null and b/photos/-b99oOqVJo4.jpg differ diff --git a/photos/-bA6TkrToiY.jpg b/photos/-bA6TkrToiY.jpg new file mode 100644 index 0000000000000000000000000000000000000000..cd85e8d220cb3ef40c6fdffca0b43dc860a14cb0 Binary files /dev/null and b/photos/-bA6TkrToiY.jpg differ diff --git a/photos/-bAy8jTPWVo.jpg b/photos/-bAy8jTPWVo.jpg new file mode 100644 index 0000000000000000000000000000000000000000..cabec758a31c75049c90dd72a06d7712f213ff50 Binary files /dev/null and b/photos/-bAy8jTPWVo.jpg differ diff --git a/photos/-bDYrrVAZnc.jpg b/photos/-bDYrrVAZnc.jpg new file mode 100644 index 0000000000000000000000000000000000000000..4a25d3c355dd4f3532ed0b977922ae5432664b97 Binary files /dev/null and b/photos/-bDYrrVAZnc.jpg differ diff --git a/photos/-bH_SxERgTA.jpg b/photos/-bH_SxERgTA.jpg new file mode 100644 index 0000000000000000000000000000000000000000..6b5ad8dd8fd2644ae7ab5cf26abe1b7e22c1c326 Binary files /dev/null and b/photos/-bH_SxERgTA.jpg differ diff --git a/photos/-bSucp2nUdQ.jpg b/photos/-bSucp2nUdQ.jpg new file mode 100644 index 0000000000000000000000000000000000000000..cea4979e2b2b7bf3c2b4589fb79c5c4be0cf79ad Binary files /dev/null and b/photos/-bSucp2nUdQ.jpg differ diff --git a/photos/-bi0Rm6XM14.jpg b/photos/-bi0Rm6XM14.jpg new file mode 100644 index 0000000000000000000000000000000000000000..96b58aadf853782f2e37fe1204cd70eb5bbbdacc Binary files /dev/null and b/photos/-bi0Rm6XM14.jpg differ diff --git a/photos/-bxUoy7QNAw.jpg b/photos/-bxUoy7QNAw.jpg new file mode 100644 index 0000000000000000000000000000000000000000..9715c3c81b237ed9bdd6638c3ba86769706623db Binary files /dev/null and b/photos/-bxUoy7QNAw.jpg differ diff --git a/photos/-c0U7WKgEaI.jpg b/photos/-c0U7WKgEaI.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a1c596a09a5de1bdf518b2d7a7f0d48570d6c960 Binary files /dev/null and b/photos/-c0U7WKgEaI.jpg differ diff --git a/photos/-c3n3go1nJ4.jpg b/photos/-c3n3go1nJ4.jpg new file mode 100644 index 0000000000000000000000000000000000000000..3e7e1ebb2b19da7639d390310285d612d270e171 Binary files /dev/null and b/photos/-c3n3go1nJ4.jpg differ diff --git a/photos/-cKXtsJWU-I.jpg b/photos/-cKXtsJWU-I.jpg new file mode 100644 index 0000000000000000000000000000000000000000..554a818f98633a857e019c82bfee9aa32d155542 Binary files /dev/null and b/photos/-cKXtsJWU-I.jpg differ diff --git a/photos/-cTrUDVIwio.jpg b/photos/-cTrUDVIwio.jpg new file mode 100644 index 0000000000000000000000000000000000000000..e7a636e63780616456068179db0c4f5ddc6c6ab0 Binary files /dev/null and b/photos/-cTrUDVIwio.jpg differ diff --git a/photos/-cdWgzDnCCI.jpg b/photos/-cdWgzDnCCI.jpg new file mode 100644 index 0000000000000000000000000000000000000000..b9c39ef2ff62f5c66dec7c6c7a0fcb511188002a Binary files /dev/null and b/photos/-cdWgzDnCCI.jpg differ diff --git a/photos/-chdwgZoiRM.jpg b/photos/-chdwgZoiRM.jpg new file mode 100644 index 0000000000000000000000000000000000000000..4fcb02bffc284f3cf015e013402e383843f130bc Binary files /dev/null and b/photos/-chdwgZoiRM.jpg differ diff --git a/photos/-dMO9Dm-gkU.jpg b/photos/-dMO9Dm-gkU.jpg new file mode 100644 index 0000000000000000000000000000000000000000..811bd14e2ff58106cec960055fb70db2223f08c1 Binary files /dev/null and b/photos/-dMO9Dm-gkU.jpg differ diff --git a/photos/-daG1Gw7j6M.jpg b/photos/-daG1Gw7j6M.jpg new file mode 100644 index 0000000000000000000000000000000000000000..44edc8acafe33cd33537d77d6b83b9f199316666 Binary files /dev/null and b/photos/-daG1Gw7j6M.jpg differ diff --git a/photos/-dm8WfhnQU4.jpg b/photos/-dm8WfhnQU4.jpg new file mode 100644 index 0000000000000000000000000000000000000000..1daef2af313bc037c3766612ffe08fa1ddccf60b Binary files /dev/null and b/photos/-dm8WfhnQU4.jpg differ diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000000000000000000000000000000000000..e0b3d227c3c1f0d7d17df55a74caef315c5f940b --- /dev/null +++ b/requirements.txt @@ -0,0 +1,4 @@ +transformers +sentence-transformers +torch +gradio \ No newline at end of file diff --git a/temp_image.jpg b/temp_image.jpg new file mode 100644 index 0000000000000000000000000000000000000000..d3a2b33f0e369b4947f2c9f7654d7618d8a8de9d Binary files /dev/null and b/temp_image.jpg differ diff --git a/unsplash-25k-photos-embeddings.pkl b/unsplash-25k-photos-embeddings.pkl new file mode 100644 index 0000000000000000000000000000000000000000..06a7bfbf8082f0101321a79684e98c8d1910a463 --- /dev/null +++ b/unsplash-25k-photos-embeddings.pkl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9e60d49bd6334c29bc15fc2bc18c30b6d047a5584ad67c793eba376e95eaef8e +size 51816207