Spaces:
Runtime error
Runtime error
Download processor.py from william-renaldy/Image-Caption-Generator: direct link, hf CLI and curl.
- Browser
- Download file 2 kB
-
https://huggingface.co/spaces/william-renaldy/Image-Caption-Generator/resolve/main/processor.py
- Command line
-
hf download hf://spaces/william-renaldy/Image-Caption-Generator/processor.py
-
curl -L -o processor.py https://huggingface.co/spaces/william-renaldy/Image-Caption-Generator/resolve/main/processor.py
2 kB
| import pickle | |
| import numpy as np | |
| from PIL import Image | |
| import tensorflow as tf | |
| from tensorflow.keras.models import load_model | |
| from tensorflow.keras.preprocessing.sequence import pad_sequences | |
| from tensorflow.keras.applications.xception import Xception | |
| class GenerateDescription(): | |
| def __init__(self) -> None: | |
| self.max_length = 39 | |
| self.model = load_model(r"Saved_model/model_1") | |
| with open("tokenizer.pkl","rb") as tk: | |
| self.tokenizer = pickle.load(tk) | |
| def _load_test(self,img_path): | |
| model = Xception( include_top=False,pooling="max") | |
| print(f"[info] Loading image from {img_path}") | |
| image = Image.open(img_path) | |
| image = image.resize((299,299)) | |
| print(image.size) | |
| image = np.expand_dims(image, axis=0) | |
| image = image/127.5 | |
| image = image - 1.0 | |
| feature = model.predict(image) | |
| return feature | |
| def _word_for_id(self,integer): | |
| for word, index in self.tokenizer.word_index.items(): | |
| if index == integer: | |
| return word | |
| return None | |
| def _generate_desc(self, photo) -> str: | |
| in_text = 'start' | |
| for _ in range(self.max_length): | |
| sequence = self.tokenizer.texts_to_sequences([in_text])[0] | |
| sequence = pad_sequences([sequence], maxlen=self.max_length) | |
| pred = self.model.predict([photo,sequence], verbose=0) | |
| pred = np.argmax(pred) | |
| word = self._word_for_id(pred) | |
| if word is None: | |
| break | |
| in_text += ' ' + word | |
| if word == 'end': | |
| break | |
| return in_text | |
| def generate(self,img): | |
| photo = self._load_test(img) | |
| description = self._generate_desc(photo) | |
| return description | |
| if __name__ == "__main__": | |
| g = GenerateDescription() | |
| caption = g.generate(r"Sparks.png") | |
| print(caption) | |