使用 VGG16 模型从图像中提取特征并计算它们之间的相似度分数。 我们首先导入必要的库,初始化 VGG16 模型,并定义用于加载和处理图像、计算其嵌入以及计算相似性分数的函数。
import numpy as np from PIL import Image from tensorflow.keras.preprocessing import image import matplotlib.pyplot as plt import matplotlib.image as mpimg from keras.applications.vgg16 import VGG16 from sklearn.metrics.pairwise import cosine_similarity vgg16 = VGG16(weights='imagenet', include_top=False, pooling='max', input_shape=(224, 224, 3)) # print the summary of the model's architecture. vgg16.summary() for model_layer in vgg16.layers: model_layer.trainable = False #输入图像预处理 def load_image(image_path): """ ----------------------------------------------------- Process the image provided. - Resize the image ----------------------------------------------------- return resized image """ input_image = Image.open(image_path) resized_image = input_image.resize((224, 224)) return resized_image #、输入图像嵌入向量计算 def get_image_embeddings(object_image : image): """ ----------------------------------------------------- convert image into 3d array and add additional dimension for model input ----------------------------------------------------- return embeddings of the given image """ image_array = np.expand_dims(image.img_to_array(object_image), axis = 0) image_embedding = vgg16.predict(image_array) return image_embedding #、余弦相似度计算 def get_similarity_score(first_image : str, second_image : str): """ ----------------------------------------------------- Takes image array and computes its embedding using VGG16 model. ----------------------------------------------------- return embedding of the image """ first_image = load_image(first_image) second_image = load_image(second_image) first_image_vector = get_image_embeddings(first_image) second_image_vector = get_image_embeddings(second_image) similarity_score = cosine_similarity(first_image_vector, second_image_vector).reshape(1,) return similarity_score #、图像显示 def show_image(image_path): image = mpimg.imread(image_path) imgplot = plt.imshow(image) plt.show() #、两个图像的比较 # define the path of the images sunflower = '/content/sunflower.jpeg' helianthus = '/content/helianthus.jpeg' tulip = '/content/Tulip.jpeg' # use the show_image function to plot the images show_image(sunflower), show_image(helianthus)然后,我们将这些函数应用于一组图像,并使用各种技术将结果可视化。 总体而言,该项目展示了如何利用 VGG16 等深度学习模型来执行复杂的图像分析任务并从视觉数据中生成见解。
网友回复
为啥所有的照片分辨率提升工具都会修改照片上的图案细节?
js如何在浏览器中将webm视频的声音分离为单独音频?
微信小程序如何播放第三方域名url的mp4视频?
ai多模态大模型能实时识别视频中的手语为文字吗?
如何远程调试别人的chrome浏览器获取调试信息?
为啥js打开新网页window.open设置窗口宽高无效?
浏览器中js的navigator.mediaDevices.getDisplayMedia屏幕录像无法录制SpeechSynthesisUtterance产生的说话声音?
js中mediaRecorder如何录制window.speechSynthesis声音音频并下载?
python如何直接获取抖音短视频的音频文件url?
js在浏览器中如何使用MediaStream与MediaRecorder实现声音音频多轨道混流?