使用 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 等深度学习模型来执行复杂的图像分析任务并从视觉数据中生成见解。 网友回复
有没有不依赖embedding向量的RAG技术?
有没有支持实时打断语音通话并后台帮你执行任何的ai模型?
开源ai大模型文件格式GGUF、MLX、Safetensors、 ONNX 有什么区别?
出海挣钱支付收款PayPal、Wise 、PingPong、Stripe如何选择?
如何实现类似google的图片隐形水印添加和识别技术?
linux上如何运行任意windows程序?
ai能写出比黑客还厉害的零日漏洞等攻击工具攻击任意软件系统工程?
js如何获取浏览器的音频上下文指纹、Canvas指纹、WebGL渲染特征?
为啥ai开始抛弃markdown文本,重新偏好html文本了?
网站有没有办法鉴别访问请求是由ai操控chrome-devtools-mcp发出的?


