首页 > 其他分享 >图像检索实践

图像检索实践

时间:2024-06-05 15:11:34浏览次数:27  
标签:检索 paths Datasets img feature 实践 im 图像 dir

1、Related_functions.py

import torch
from torchvision import models, transforms
from PIL import Image
import os
import numpy as np

import warnings
warnings.filterwarnings("ignore", category=Warning)

def get_feature(image_dir):
    vgg_model = models.vgg19(pretrained=True)
    new_classifier = torch.nn.Sequential(*list(vgg_model.children())[-1][:6])
    vgg_model.classifier = new_classifier
    trans = transforms.Compose([
            transforms.Resize((224, 224)),
            transforms.ToTensor(),
            transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225])
        ])
    im = Image.open(image_dir).convert('RGB')
    im = trans(im)
    im.unsqueeze_(dim=0)
    vgg_model = vgg_model.eval()
    y = vgg_model(im).data.numpy().tolist()
    feature  = y[0]
    return feature

def get_img_feature(img_dir):
    img_feature = get_feature(img_dir)
    return img_feature

def get_Datasets_feature(Datasets_dir):
    if not Datasets_dir.endswith('/'):
        Datasets_dir = Datasets_dir + '/'
    try:
        os.listdir(Datasets_dir)
    except:
        print('请检查数据库的路径')
    all_feature= []
    paths = []
    for fi in os.listdir(Datasets_dir):
        img_paths = Datasets_dir+fi+'/'
        for fj in os.listdir(img_paths):
            img_dir = img_paths+fj
            img_feature = get_img_feature(img_dir)
            all_feature.append(img_feature)
            paths.append(img_dir) 
            print('正在提特征的图像是:',img_dir)  
    return all_feature,paths  
def calEuclideanDistance(x,y):
    return np.sqrt(sum(pow(a-b,2) for a,b in zip(x,y)))
def query_sim_img(query_img_feature,Datasets_features,Datasets_paths,top_num):
    need_im_det_instance=[]
    for i in range(Datasets_features.shape[0]):
        img_feature = Datasets_features[i,:]
        dist=calEuclideanDistance(query_img_feature,img_feature) 
        need_im_det_instance.append(dist)
    im_distanc=np.array(need_im_det_instance)
    y = im_distanc.argsort()
    similar_img_path=[]
    for index in y[0:top_num]:
        similar_img_path.append(Datasets_paths[index])
    return similar_img_path

 

2、img_dataset_feature.py

# -*- coding:utf-8 -*-
import os
from Related_functions import *

if __name__ == '__main__':
    Datasets_dir = 'D:/My_work/python_code/03_lianxi/C00304/Animals_with_Attributes2/JPEGImages'
    features,paths = get_Datasets_feature(Datasets_dir)
    np.save('Datasets_features.npy', features)
    np.save('Datasets_paths.npy', paths)

 

 

 

标签:检索,paths,Datasets,img,feature,实践,im,图像,dir
From: https://www.cnblogs.com/wjjcjj/p/18233077

相关文章

  • 怎样将图像左右两边对调?5个非常好用的方法分享给你
    今天要给大家介绍的是两种非常高效的对图片进行水平翻转的方法,能轻轻松松、一次性实现将大量的图片进行水平翻转。接下来我们就一起来看下它是如何做到批量将多张图片进行水平翻转的吧。方法一:使用【汇帮图片处理器】里的批量旋转进行操作具体步骤:1,将汇帮图片处理器安装在电......
  • Samza在企业级应用中的最佳实践
    Samza在企业级应用中的最佳实践作者:禅与计算机程序设计艺术/ZenandtheArtofComputerProgramming1.背景介绍1.1大数据处理的挑战在当今大数据时代,企业面临着海量数据的采集、存储、处理和分析等一系列挑战。传统的批处理模式已经无法满足实时性要求,流式数据......
  • Python深度学习实践:自动编码器在数据降维中的应用
    Python深度学习实践:自动编码器在数据降维中的应用1.背景介绍在现代数据科学和机器学习领域中,高维数据处理是一个常见的挑战。许多真实世界的数据集包含大量的特征,这些特征往往存在高度的冗余和噪声。高维数据不仅增加了计算复杂性,还容易导致维数灾难(curseofdimensio......
  • GPEN——使用GANs恢复对人脸图像进行修复
    1.简介盲目的面部修复(BlindFaceRestoration,BFR)是一个活跃的研究领域,它涉及到在没有任何先验信息的情况下改善低质量(LowQuality,LQ)图像的质量。这确实是一个具有挑战性的问题,因为模型需要能够处理多种未知的退化,例如模糊、噪声、压缩伪影等,这些退化可能在训练数据中......
  • 基于Python混沌系统和DNA编码的图像加密算法
    欢迎大家点赞、收藏、关注、评论啦,由于篇幅有限,只展示了部分核心代码。文章目录一项目简介二、功能三、系统四.总结一项目简介  一、项目背景随着互联网和多媒体技术的快速发展,数字图像作为信息传递的重要媒介,在各个领域得到广泛应用。然而,图像信息的传输......
  • 基于Python+OpenCV使用DNA编码和混沌图创建图像加密算法
    欢迎大家点赞、收藏、关注、评论啦,由于篇幅有限,只展示了部分核心代码。文章目录一项目简介二、功能三、系统四.总结一项目简介  一、项目背景与意义在数字信息时代,图像作为信息的重要载体,其安全性尤为重要。传统的图像加密方法往往存在安全性不足、加密效......
  • Grafana监控系统的构建与实践
    本文深入探讨了Grafana的核心技术、数据源集成、仪表盘与可视化构建以及监控与告警配置,旨在为专业从业者提供全面的Grafana技术指南。关注【TechLeadCloud】,分享互联网架构、云服务技术的全维度知识。作者拥有10+年互联网服务架构、AI产品研发经验、团队管理经验,同济本复旦硕,复......
  • 【图像处理】交通标志检测(Matlab代码实现)
    ......
  • Python Socket编程:从原理到实践
    在当今的网络世界中,Socket编程是构建网络通信应用的关键技术之一。从简单的聊天应用到复杂的分布式系统,Socket编程都扮演着至关重要的角色。本文将首先介绍Socket编程的基本原理,然后详细讲解如何使用Python进行Socket编程。注意:文中谈到的TCP/IP协议可以去我另一篇文章看一下,......
  • 公安视频图像信息数据库及GA/T 1400视图库视频监控系统的使用场景
    随着科技的快速发展,大数据、人工智能等新技术不断融入各行各业,为各行各业带来了前所未有的变革。在公安领域,GA/T1400协议公安视频图像信息数据库的应用为视频监控场景提供了强有力的支持,极大地提升了公安工作的效率和准确性。一、公安视频图像信息数据库组成1、公安视频图像......