| | 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 |
| |
|