| from tensorflow.keras.preprocessing import image |
| import tensorflow as tf |
| from tensorflow.keras.models import load_model |
| import numpy as np |
| from transformers import pipeline |
| import gdown |
| import os |
|
|
| git_pipe = pipeline("image-to-text", model="microsoft/git-large-textcaps") |
|
|
| flower_output = "Flower_classifier.h5" |
| flower_model_id = "1AlBunIPDg4HYYCqhcHtOiXxnPFhmsoSn" |
| flower_url = f"https://drive.google.com/uc?id={flower_model_id}" |
| if not os.path.exists(flower_output): |
| gdown.download(flower_url, flower_output, quiet=False) |
| flower_model = load_model(flower_output) |
| flower_model.summary() |
|
|
|
|
| bird_output = "Bird_classifier.h5" |
| bird_model_id = "1a6vqFERbrr_Cw-NyBqVHG7fsjU2-xKJ4" |
| bird_url = f"https://drive.google.com/uc?id={bird_model_id}" |
| if not os.path.exists(bird_output): |
| gdown.download(bird_url, bird_output, quiet=False) |
| bird_model = load_model(bird_output) |
| bird_model.summary() |
|
|
|
|
| dog_output = "DogClassifier.h5" |
| dog_model_id = "1UFn1NGVtP5rhvcWnAANQ_4E9YRJvDEad" |
| dog_url = f"https://drive.google.com/uc?id={dog_model_id}" |
| if not os.path.exists(dog_output): |
| gdown.download(dog_url, dog_output, quiet=False) |
| dog_model = load_model(dog_output) |
| dog_model.summary() |
|
|
|
|
| landmark_output = "LandmarkClassifierV5.h5" |
| landmark_model_id = "1PXixJsrUaVcHEEC-jDlv4tHT2qrCrf5c" |
| landmark_url = f"https://drive.google.com/uc?id={landmark_model_id}" |
| if not os.path.exists(landmark_output): |
| gdown.download(landmark_url, landmark_output, quiet=False) |
| landmark_model = load_model(landmark_output) |
| landmark_model.summary() |
|
|
|
|
| dog_list = [ |
| "Bulldog", |
| "Chihuahua (dog breed)", |
| "Dobermann", |
| "German Shepherd", |
| "Golden Retriever", |
| "Husky", |
| "Labrador Retriever", |
| "Pomeranian dog", |
| "Pug", |
| "Rottweiler", |
| "Street dog", |
| ] |
| flower_list = [ |
| "Jasmine", |
| "Lavender", |
| "Lily", |
| "Lotus", |
| "Orchid", |
| "Rose", |
| "Sunflower", |
| "Tulip", |
| "daisy", |
| "dandelion", |
| ] |
| bird_list = [ |
| "Crow", |
| "Eagle", |
| "Flamingo", |
| "Hummingbird", |
| "Parrot", |
| "Peacock", |
| "Pigeon", |
| "Sparrow", |
| "Swan", |
| ] |
| landmark_list = [ |
| "The Agra Fort", |
| "Ajanta Caves", |
| "Alai Darwaza", |
| "Amarnath Temple", |
| "The Amber Fort", |
| "Basilica of Bom Jesus", |
| "Brihadisvara Temple", |
| "Charar-e-Sharief shrine", |
| "Charminar", |
| "Chhatrapati Shivaji Terminus", |
| "Chota Imambara", |
| "Dal Lake", |
| "The Elephanta Caves", |
| "Ellora Caves", |
| "Fatehpur Sikri", |
| "Gateway of India", |
| "Ghats in Varanasi", |
| "Gol Gumbaz", |
| "Golden Temple", |
| "Group of Monuments at Mahabalipuram", |
| "Hampi", |
| "Hawa Mahal", |
| "Humayun's Tomb", |
| "The India gate", |
| "Iron Pillar", |
| "Jagannath Temple, Puri", |
| "Jageshwar", |
| "Jama Masjid", |
| "Jamali Kamali Tomb", |
| "Jantar Mantar, Jaipur", |
| "Jantar Mantar, New Delhi", |
| "Kedarnath Temple", |
| "Khajuraho Temple", |
| "Konark Sun Temple", |
| "Mahabodhi Temple", |
| "Meenakshi Temple", |
| "Nalanda mahavihara", |
| "Parliament House, New Delhi", |
| "Qutb Minar", |
| "Qutb Minar Complex", |
| "Ram Mandir", |
| "Rani ki Vav", |
| "Rashtrapati Bhavan", |
| "The Red Fort", |
| "Sanchi", |
| "Supreme Court of India", |
| "Swaminarayan Akshardham (Delhi)", |
| "Taj Hotels", |
| "The Lotus Temple", |
| "The Mysore Palace", |
| "The Statue of Unity", |
| "The Taj Mahal", |
| "Vaishno Devi Temple", |
| "Venkateswara Temple, Tirumala", |
| "Victoria Memorial, Kolkata", |
| "Vivekananda Rock Memorial", |
| ] |
|
|
|
|
| def identify_dog(img): |
| img = img.resize((224, 224)) |
| img_array = image.img_to_array(img) |
| img_array = np.expand_dims(img_array, axis=0) |
| img_array /= 255.0 |
|
|
| |
| predictions = dog_model.predict(img_array) |
|
|
| |
| predicted_class_index = np.argmax(predictions[0]) |
|
|
| |
| predicted_probability = predictions[0][predicted_class_index] |
|
|
| |
| predicted_class_label = dog_list[predicted_class_index] |
|
|
| return predicted_class_label |
|
|
|
|
|
|
| def identify_flower(img): |
| img = img.resize((224, 224)) |
| img_array = image.img_to_array(img) |
| img_array = np.expand_dims(img_array, axis=0) |
| img_array /= 255.0 |
|
|
| |
| predictions = flower_model.predict(img_array) |
|
|
| |
| predicted_class_index = np.argmax(predictions[0]) |
|
|
| |
| predicted_probability = predictions[0][predicted_class_index] |
|
|
| |
| predicted_class_label = flower_list[predicted_class_index] |
|
|
| return predicted_class_label |
|
|
|
|
|
|
| def identify_bird(img): |
| |
| img = img.resize((224, 224)) |
| img_array = image.img_to_array(img) |
| img_array = np.expand_dims(img_array, axis=0) |
| img_array /= 255.0 |
|
|
| |
| predictions = bird_model.predict(img_array) |
|
|
| |
| predicted_class_index = np.argmax(predictions[0]) |
|
|
| |
| predicted_probability = predictions[0][predicted_class_index] |
|
|
| |
| predicted_class_label = bird_list[predicted_class_index] |
|
|
| return predicted_class_label |
|
|
|
|
| def identify_landmark(img): |
| |
| img = img.resize((224, 224)) |
| img_array = image.img_to_array(img) |
| img_array = np.expand_dims(img_array, axis=0) |
| img_array /= 255.0 |
|
|
| |
| predictions = landmark_model.predict(img_array) |
|
|
| |
| predicted_class_index = np.argmax(predictions[0]) |
|
|
| |
| predicted_probability = predictions[0][predicted_class_index] |
|
|
| |
| predicted_class_label = landmark_list[predicted_class_index] |
|
|
| return predicted_class_label |
|
|
|
|
| def generate_final_caption(image): |
| caption_dict = git_pipe(image) |
| caption = caption_dict[0]["generated_text"] |
| image = image.resize((256, 256)) |
| caption = caption_dict[0]["generated_text"] |
| phrases_to_cut = ["with the word", "that says"] |
| for phrase in phrases_to_cut: |
| index = caption.find(phrase) |
| if index != -1: |
| caption = caption[:index].strip() |
|
|
| if ( |
| "building" in caption.lower() |
| or "monument" in caption.lower() |
| or "tower" in caption.lower() |
| ): |
| caption += "\nThe landmark is : " + identify_landmark(image) |
| elif "flower" in caption.lower() or "flowers" in caption.lower(): |
| caption += "\nThe Flower is : " + identify_flower(image) |
| elif "dog" in caption.lower() or "puppy" in caption.lower(): |
| caption += "\nThe Dog is : " + identify_dog(image) |
| elif "birds" in caption.lower() or "bird" in caption.lower(): |
| caption += "\nThe Bird is : " + identify_bird(image) |
| return caption |
|
|