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