元搜索 - 删除具有不同分辨率的重复图片 - 改进当前方法
Metasearch - Remove duplicated pictures with different resolution - improving on current approach
假设来自一个主机的一张具有不同分辨率的图片有不止一份份。
在 metasearcher 阶段,我想检查 2 张图片是否具有 相同的名称,但 不是平凡的名称(例如image.jpg, photo.jpg ...)。在这种情况下,我只想包含分辨率更高的图片。
示例:
搜索 "city"
https://znews-photo.zadn.vn/w480/Uploaded/lerl/2017_10_07/DJI_005701_zing.jpeg
https://znews-photo.zadn.vn/Uploaded/lerl/2017_10_07/DJI_005701_zing.jpeg
第一个不应该退回
这是网络搜索团队的工作分配,因此我非常关心性能。
我目前的做法:
*) 为了避免琐碎的名字,遍历图像搜索的测试查询,统计不同URL中每个token在被“/”分词后出现的次数,并手动选择URL中出现次数最多的token类似于"photo", "picture", "background",等等... 最后我来一组琐碎的名字。
*)对于同名图片,每张图片我得到它的dHash,它的分辨率,对于每对dHash差异小于某个阈值的图片,我丢弃分辨率较小的图片.
编辑:咨询了我的经理后,我意识到我误解了要求。我应该只在 URL 上工作而不访问实际图像(这太昂贵了)。通过上面的示例,我应该能够根据两个 URL 的差异丢弃第一张图片。此外,因此,期望准确度不高,任何 > 85% 的都应该是不错的。
我非常感谢 ideas/insights 对我当前方法的改进。
如果不访问图像内容,您将无法对此问题实施稳健的解决方案。但是,如果您仍想直接使用 URLs,这里有一些观察结果:
- 原始图片的网址中通常包含 "orig" 或 "original" 关键字,而缩略图包含 "thumb" 或 "thumbnails" 关键字
- URL缩略图通常包含宽度和高度数字(例如 640、768、1024)
- 一般而言,较长的URL(来自同一主机)表示缩略图。这是因为生成缩略图时,通常会在其名称后附加 width/height 个数字。
完全不同的方法是通过发出 HTTP HEAD 请求来检索图像字节大小。在 99% 的情况下,服务器将 return Content-Length
header。 HTTP HEAD 不下载内容,只下载 HTTP headers。因此,它并不像下载整个图像那么昂贵。
假设来自一个主机的一张具有不同分辨率的图片有不止一份份。
在 metasearcher 阶段,我想检查 2 张图片是否具有 相同的名称,但 不是平凡的名称(例如image.jpg, photo.jpg ...)。在这种情况下,我只想包含分辨率更高的图片。
示例: 搜索 "city"
https://znews-photo.zadn.vn/w480/Uploaded/lerl/2017_10_07/DJI_005701_zing.jpeg
https://znews-photo.zadn.vn/Uploaded/lerl/2017_10_07/DJI_005701_zing.jpeg
第一个不应该退回
这是网络搜索团队的工作分配,因此我非常关心性能。
我目前的做法:
*) 为了避免琐碎的名字,遍历图像搜索的测试查询,统计不同URL中每个token在被“/”分词后出现的次数,并手动选择URL中出现次数最多的token类似于"photo", "picture", "background",等等... 最后我来一组琐碎的名字。
*)对于同名图片,每张图片我得到它的dHash,它的分辨率,对于每对dHash差异小于某个阈值的图片,我丢弃分辨率较小的图片.
编辑:咨询了我的经理后,我意识到我误解了要求。我应该只在 URL 上工作而不访问实际图像(这太昂贵了)。通过上面的示例,我应该能够根据两个 URL 的差异丢弃第一张图片。此外,因此,期望准确度不高,任何 > 85% 的都应该是不错的。
我非常感谢 ideas/insights 对我当前方法的改进。
如果不访问图像内容,您将无法对此问题实施稳健的解决方案。但是,如果您仍想直接使用 URLs,这里有一些观察结果:
- 原始图片的网址中通常包含 "orig" 或 "original" 关键字,而缩略图包含 "thumb" 或 "thumbnails" 关键字
- URL缩略图通常包含宽度和高度数字(例如 640、768、1024)
- 一般而言,较长的URL(来自同一主机)表示缩略图。这是因为生成缩略图时,通常会在其名称后附加 width/height 个数字。
完全不同的方法是通过发出 HTTP HEAD 请求来检索图像字节大小。在 99% 的情况下,服务器将 return Content-Length
header。 HTTP HEAD 不下载内容,只下载 HTTP headers。因此,它并不像下载整个图像那么昂贵。