V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
imn1
V2EX  ›  Python

以图搜图要靠算力么?

  •  
  •   imn1 · 2020-07-01 14:23:59 +08:00 · 3419 次点击
    这是一个创建于 1637 天前的主题,其中的信息可能已经有所发展或是发生改变。
    先把最后的问题提前:有没有减少循环的方法?

    图 A,图集 B,从 B 中找 A 相似
    图集 B,千万级,数据库,有字节、CRC32 、以及一些 image hash 数据等字段
    要实现上述需求是否只有乖乖的逐个算?有没有偷懒(省点算力)的方法?
    第 1 条附言  ·  2020-07-02 10:07:44 +08:00
    都在说算法
    我写了数据库中已经有 image hash 数据,就是特征值
    我是想问这些特征值还有没有“特征”,例如长度之类,当两者长度不同就是不相似,可以直接 continue 跳过不计算
    已有特征值包括 openCV 的:
    img_hash_PHash
    img_hash_AverageHash
    img_hash_RadialVarianceHash
    img_hash_ColorMomentHash
    12 条回复    2020-07-02 10:25:02 +08:00
    jtacm
        1
    jtacm  
       2020-07-01 14:35:08 +08:00
    kd tree
    ball tree
    jtacm
        2
    jtacm  
       2020-07-01 14:36:33 +08:00
    approximate nearest neighbor search
    GM
        3
    GM  
       2020-07-01 15:33:56 +08:00
    必然有快速算法,买下整个全世界服务器都不够 google 用
    ddgweb
        4
    ddgweb  
       2020-07-01 15:49:39 +08:00
    有,和搜索引擎思路一样,提前编码索引,然后对比交叉直接对比索引,和你图片没有关系了,哪怕你单张图片有 20M,识别只要 0.0001s
    azcvcza
        5
    azcvcza  
       2020-07-01 16:14:38 +08:00
    应该是会把整个图片矩阵算出一个特征值,然后根据特征值匹配的吧。应该不会实时跑矩阵相似运算的吧
    zjsxwc
        6
    zjsxwc  
       2020-07-01 16:48:39 +08:00
    图片提取特征后,计算图片特征矩阵之间的距离范数应该没有多大计算量,真的数据量大了就加机器呗
    triptipstop
        7
    triptipstop  
       2020-07-01 16:52:01 +08:00
    请参见,机器学习,特征工程。
    zjsxwc
        8
    zjsxwc  
       2020-07-01 16:56:43 +08:00
    而且可以先对 B 集里面每个图片归类,比如 B 集下面 可以有 猫、狗、人,鱼这 4 个归类的代表特征矩阵, 要搜索 A 时先 让 A 与 4 个归类的代表特征矩阵比较,然后再在最像的 归类下的 图片 比较;
    类似的,对归类 再归类,这样多分几个层次,运算量就小下来了。
    Tromso
        9
    Tromso  
       2020-07-01 16:57:43 +08:00
    关键词 simhash, faiss
    zjsxwc
        10
    zjsxwc  
       2020-07-01 17:01:45 +08:00
    这归类的归类的 N 层分类,
    可以 工程上, 定期,抽取 M 个随机图片 作为 第一级 归类的 M 个 代表特征矩阵, 然后 在 在 每个 归类特征 下 统一的方式 构建 第二级 归类, 其实就是索引了
    Morriaty
        11
    Morriaty  
       2020-07-01 17:10:47 +08:00
    抽象出的问题是 ANN (approximate nearest neighbor), 一般方法有

    - LSH and multiprobe LSH for euclidean distance
    - partition trees for euclidean/cosine distance
    - clustering-based approaches, including product quantization

    python 的话就直接调用 annoy
    ruanimal
        12
    ruanimal  
       2020-07-02 10:25:02 +08:00
    有,图库的图片先算好 simhash 或者 briefhash
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3058 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 13:07 · PVG 21:07 · LAX 05:07 · JFK 08:07
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.