如何在一亿张美照中快速找出女朋友的照片?

简介: 如何在一亿张美照中快速找出女朋友的照片?

如何在一亿张美照中快速找出女朋友的照片?

假如现在亿张美照,如何快速判断这些照片中是否有你女朋友的照片呢?小孩子才做选择,成年人全都要,哈哈哈

数据分片

我们可以通过对图片信息进行提取,获取唯一标志,构建散列表,然后就可以通过判断新图片的唯一标志是否在散列表中,确认新图片是否在图库中存在。是不是很简单?如果构建散列表需要的空间超过了机器的内存,这时候就要增加多台机器了,然后把数据分给多台机器处理,每台主机构建一部分图片的散列表。往里面添加一个新的图片时,可以通过哈希函数计算获取的图片的哈希值,然后与机器的个数 n 求模,得到的值就为要存放图片的机器编号。判断一个图片是否在图库中存在时,通过同样的哈希算法,获取这个图片的哈希值,然后与机器的个数 n 求模,得到值 k,然后去编号为 k 机器上的散列表中查找。

估算一亿张图片构建散列表大概需要多少台机器?

散列表中存放的每个数据单元需要包含两个信息,哈希值和图片文件的路径,假设使用 MD5 计算哈希值,那么哈希值的长度就是128位(bit),也就是16字节(B),文件路径长度的上限是 256B,我们可以假设平均长度是128B,如果我们使用链表法解决散列冲突,那么还需要存储冲突,那还需要存储指针,指针只占用8B,所有散列表中每个单元就占用152B。(估算值)假设一台服务器的可用内存大小为4GB,散列表的负载因子为 0.75,那么一台机器大约可以构建两千万(4GB*0.75/152B)照片的散列表。所以对一亿张图片构建散列表索引,大约需要五六台机器,在工程中,估算项目需要的成本,可以让我们实现对需要投入的资源、自检有个大概的了解,能更好的评估解决方案的可行性。面对海量的数据时,对资源进行分片的分布式处理,可以突破单机性能的限制。

目录
相关文章
|
5月前
|
算法 数据处理 vr&ar
GaussianObject用4张照片生成高质量3D物体
【2月更文挑战第17天】GaussianObject用4张照片生成高质量3D物体
111 2
GaussianObject用4张照片生成高质量3D物体
|
编解码 定位技术 数据库
这个方法教你,下载 50 年前自己家乡的高清卫星照片
这个方法教你,下载 50 年前自己家乡的高清卫星照片
263 0
|
小程序 JavaScript 程序员
【开源】【猫咪卡通变 - 小程序】拍摄猫咪或上传猫咪照片,使其转化为卡通猫咪.(且上传图片必须为猫咪)
废话不多说,直接看吧! 涉及技术:微信小程序云开发 涉及API接口:百度云-图像增强、百度云-图像识别
278 0
【开源】【猫咪卡通变 - 小程序】拍摄猫咪或上传猫咪照片,使其转化为卡通猫咪.(且上传图片必须为猫咪)
|
数据采集 前端开发 开发工具
虎牙小姐姐照片
概述 最近几年由于网络直播的兴起,直播行业也是越来越火,一些老宅男也是比较喜欢看小姐姐,然而许多人却会碰到直播界面图片不会保存的问题,那么接下来我将用十几行代码告诉你如何拿到大量美女图片,拿去做手机壁纸。
365 0
虎牙小姐姐照片
从手机拍摄的图片里获取拍摄地点的经纬
从手机拍摄的图片里获取拍摄地点的经纬
133 0
从手机拍摄的图片里获取拍摄地点的经纬
|
安全 Python
你的照片安全么?
照片元信息 我们平时拍摄的图片,不仅包含了可见的像素信息,还包含了我们看不到的隐藏信息(元信息),而这些元信息,往往会不经意间泄露我们的隐私.
1031 0