该项目是一个关于基于内容的图像检索(CBIR)的探索与实验。该项目是使用Python语言编写的,里面主要包括两块内容:一块是实验部分(寻找检索精度与速度表现较好的那个点);另一块是作为服务器使用,供Java编写的界面调用图像检索功能。 Java的项目在这:https://gitee.com/ssj9806/sf_web_system。
放在前面:项目中出现的任何与路径有关的错误,定位到将其修改成你电脑上的绝对路径即可。
该部分是对图像检索的探索与实验。讲述了我的图像检索功能是如何实现的,相关实验是如何开展的,希望能给大家有所帮助。如果只是想把图像检索作为服务器的一个功能使用可以直接跳到第三个标题。
IMAGE_DB_PATH = 'E:/xxx/CBIR/ImageDatabase/image_DB' # 存储图片集的路径
这是做图像检索实验的第一步,需要把每张图片的特征提取并保存到文件中,需要时加载即可,不然都放内存会装不下的。
上一步特征提取得到的是[h,w,c]的三维特征,需要聚合成一维的用于表示一张图片的特征,这样方面检索。
上一步聚合完特征就可以做检索精度的实验了,为了能提高检索的精度,我使用了行人重识别的k-reciprocal Encoding方法重排序。
由于以上只做了特征的提取,聚合和重排序还没做,我将其整合到experiment.py中了。
至此所有的实验就做完了,大家可以对感兴趣的部分自行设计实验去做。
该部分是图像检索功能作为服务器上的一个功能供Java页面调用的。如果只是想使用图像检索这样一个功能,不想做实验可以直接使用即可。该部分已经配置好了实验过程中效果不错的一些参数,可以放心使用。
在本项目外新建一个文件夹用于做图片数据库,例如命名为ImageDB。
在ImageDB文件夹下新建一个images文件夹,把所有图片都放到这个文件夹下,不用在其中再分类了。
在ImageDB文件夹下新建一个feature文件夹,把图片数据库的特征提前准备好放在这里。
假设你把这个ImageDB文件夹新建在了E盘,那么它的绝对路径就是:(记住这个绝对路径)其它的文件夹是Java项目需要的。
E:/ImageDB/
ImageDB的路径格式如下:
-ImageDB
-feature
-eachVideoFeature
-images
-incomplete
-images
-temp
-image
-video
-videos
-frame_list
-imageDBNamelist.py <== 这个文件后面会自动生成
在CBIR项目根目录下找到selectFiltersAndAggregation.py
文件,在里面的main方法直接运行即可,但是要注意两个路径参数值的改成你自己电脑上的路径。
originalPth = "E:/ImageDB/images/"
destinationPath = "E:/ImageDB/feature/"
将路径前缀E:/ImageDB/
改成你电脑上的绝对路径。
在CBIR项目根目录下找到utils.py
文件,在里面的main方法直接运行即可,但是要注意两个路径参数值的改成你自己电脑上的路径。
imgDB_path = "E:/ImageDB/images/"
imgDB_name_list_save_path = "E:/ImageDB/imageDBNamelist.npy"
将路径前缀E:/ImageDB/
改成你电脑上的绝对路径。
运行后控制台出现以下文字说明图像检索已在后台运行监听中,等待被请求。
服务器地址: ('127.0.0.1', 12345) 当前时间: 2023-01-12 17:25:18
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。