Spaces:
Running
Running
| import torch | |
| from PIL import Image | |
| from transformers import AutoModel, AutoTokenizer | |
| class ImageChatbot: | |
| def __init__(self, model_name='openbmb/MiniCPM-Llama3-V-2_5-int4'): | |
| self.model = AutoModel.from_pretrained(model_name, trust_remote_code=True) | |
| self.tokenizer = AutoTokenizer.from_pretrained(model_name, trust_remote_code=True) | |
| self.model.eval() | |
| def load_image(self, image_path): | |
| image = Image.open(image_path).convert('RGB') | |
| return image | |
| def display_image(self, image): | |
| import matplotlib.pyplot as plt | |
| plt.imshow(image) | |
| plt.axis('off') | |
| plt.show() | |
| def chat_with_image(self, image_path, question, sampling=True, temperature=0.7): | |
| image = self.load_image(image_path) | |
| self.display_image(image) | |
| msgs = [{'role': 'user', 'content': question}] | |
| res = self.model.chat( | |
| image=image, | |
| msgs=msgs, | |
| tokenizer=self.tokenizer, | |
| sampling=sampling, | |
| temperature=temperature, | |
| ) | |
| generated_text = "" | |
| for new_text in res: | |
| generated_text += new_text | |
| print(new_text, flush=True, end='') | |
| return generated_text | |
| # Example usage | |
| if __name__ == "__main__": | |
| image_chatbot = ImageChatbot() | |
| image_path = '/content/sample_data/Cat-profile-picture-35.jpg' | |
| question = 'این شکل چی هست ؟' | |
| generated_text = image_chatbot.chat_with_image(image_path, question) | |