标签:gpu nginx 模糊 速度 完成 内网 原版 外网 问题
近日接手一图片网站,维护有200w张左右的摄影图片,整体部署在阿里云,其中图片文件保存在OSS-保存有加水印预览图/不同尺寸的裁剪图/原图等,RDS数据库-保存相关交易/用户等系统数据,两台负载均衡的ECS主机,部署php/java服务,nginx,es等.
相似图片,页面展示效果为,用户点击进入某个图片,系统将展示图库中与之类似的5张图片,选择 查看更多,将展示获取到的所有相似图片,并分页展示.
业务逻辑:获取数据库中该图片的所有标签,es搜索获取匹配结果的top5,并返回
查看更多的业务逻辑就比较蛋疼,原版处理逻辑为直接以图片title使用es搜索并返回结果.
分为两步,第一步获取es返回结果的全集,第二步根据图片深度特征计算相似图片得分排名,阈值过滤并返回.
首先,根据yolo数据集训练并获取类别特征模型,同时按照传统方法得到颜色特征,最终效果为:输入一张图片,返回top10的类别及得分集合,eg:[1_0.9,2_0.2,3_0.1,4_0.07....],并二值化得到23位hash,及23位颜色特征hash.
有了训练模型,就需要对库中所有图片完成特征提取入库,便于后期即时的相似图片搜索.这里需要考虑一点,即用户当天上传图片的特征入库,因而事情需要如下几步:
针对上述情况,异步实现图片特征入库正合时宜,整体需要一台部署图片提取本地服务的GPU机器,开通外网端口的redis更新rds库中的图片信息(基于list实现队列),hbase集群保存图片特征并便于之后搜索的批量获取,mysql保存整个过程的图片处理状态及保障各类异常情况处理逻辑实现,具体代码实现为:
图片特征模糊搜索实现
标签:gpu nginx 模糊 速度 完成 内网 原版 外网 问题
原文地址:https://www.cnblogs.com/nyatom/p/12461425.html