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
daohuo
V2EX  ›  Python

计算机视觉模型,需求是对比两张图片的相似度,求指点或者有大佬愿意尝试一下,可有偿

  •  
  •   daohuo · 40 天前 · 2299 次点击
    这是一个创建于 40 天前的主题,其中的信息可能已经有所发展或是发生改变。

    本人对这块一窍不通,目前借着 GPT 根据颜色和人体姿态求的相似度,东拼西凑的做出来了,只能说差强人意,堪堪能用,领导希望一个模型解决问题,并且随着训练的材料越多,模型越准确

    基于需求,标照片和客片这两张图,即使是按照人眼评判标准相似度足够的,也可能在整体饱和度,亮度,色调,人体姿态,背景颜色等有差异

    而需要评判的图片,背景,物体和人物姿态,衣服都会有变化

    如果有直接能用的开源项目,或者不需要太多相关知识就能达成的学习路线,希望有大佬指点一二

    或者有大佬愿意尝试,可以谈一下报酬看看我们领导是否能接受

    30 条回复    2024-04-12 17:44:17 +08:00
    daohuo
        1
    daohuo  
    OP
       40 天前
    对比的客片和标准片,是人物艺术照之类的
    ShadowPower
        2
    ShadowPower  
       40 天前
    resnet 或者 vit 模型,生成 embedding 之后比对余弦相似度就可以了
    daohuo
        3
    daohuo  
    OP
       40 天前
    @ShadowPower 有尝试过这个模型,利用的是提取图片特征,(不知道你说的是不是这个),有的可以,但是有时候会出现很离谱的结果,而且对于不同颜色饱和度和亮度的处理,感觉没有处理出来
    ShadowPower
        4
    ShadowPower  
       40 天前
    可以用这个:
    https://github.com/mlfoundations/open_clip
    只用图片那部分,不用文本模型
    ShadowPower
        5
    ShadowPower  
       40 天前
    @daohuo 有些结果不准确这点还真没有办法,因为没有那种准确率能达到 100%的模型……
    daohuo
        6
    daohuo  
    OP
       40 天前
    @ShadowPower 好的,我去了解尝试一下
    daohuo
        7
    daohuo  
    OP
       40 天前
    @ShadowPower 不能说不准确,而是用这个提取特征,余弦相似度对比,会有很多姿态不同,衣服颜色不同的图片,但是相似度差异不大,比如一个 0.6 一个 0.7 (这里按照 1 为完全相同),这样的结果
    ShadowPower
        8
    ShadowPower  
       40 天前   ❤️ 1
    @daohuo 这种情况要考虑针对某项要求专门实现,比如用 openpose 来得到人物姿态的关键点,然后收集关键点数据再去训练一个姿态相似度模型。
    这样就可以得出某项指标的相似度……
    不过我不清楚什么模型适合这个场景,得试试看。
    daohuo
        9
    daohuo  
    OP
       40 天前
    @ShadowPower 目前我是搞了每 10 个像素颜色分别对比平均 HSV 的差异来获取颜色相似度,然后使用 mmpose 来获取姿态相似度,这个姿态还是利用 GPT 生成的关键点夹角和相对距离得到的,也结合了这个提取图片特征来对比相似度,然后加权平均,但还是效果不理想,主要是颜色部分,不同的饱和度和亮度,在整体图片中,从人眼看,差距不大,但对计算数据来说,差异很大,这块处理不了,然后老板觉得我做的这个只是勉强能用,希望找一个模型,能提供成对的相似度的图片和不相似的图片,持续训练,得到一个更准确的评判模型,,,,因为我目前了解的计算机视觉方面,还是图片分类和识别比较多,像这种不针对特定内容的比对,我是没找到,让我自己做一个,我也没完全这个能力和知识储备
    mightybruce
        10
    mightybruce  
       40 天前   ❤️ 3
    其实就是多媒体信息检索了,和文本检索原理像 es 、solr 一样,除了提取特征外。
    大致是多选取几个角度去提取特征,建立起词袋模型,然后还是 tf-idf , 词袋模型里面的 word 就是各种图像的特征,你可以选几种,色彩一个特征、纹理一个特征,混合特征, 最后基于这个做各种距离比较
    我很多年前用过 LIRE (Lucene Image Retrieval)是一个基于内容的图像检索的开源库,现在已经有更新的东西了
    可以看看这个
    https://zhuanlan.zhihu.com/p/147509861

    相关入门可以看看斯坦福的经典书 information retrieval
    https://nlp.stanford.edu/IR-book/information-retrieval-book.html
    mightybruce
        11
    mightybruce  
       40 天前
    你要多找找一些深度学习模型能够提取出反应这种差异,多试试
    ShadowPower
        12
    ShadowPower  
       40 天前
    @daohuo 按理来说,如果用卷积神经网络,不同饱和度和亮度应该不会对结果产生影响,除非训练阶段专门区分了它们……
    0xFDA64
        13
    0xFDA64  
       40 天前   ❤️ 1
    你这个需求估计得按照你们的数据集来训练,才能到达预期效果。因为公开模型的训练用的相似照片和你的需求不一样,例如你想要综合衣服、姿态、背景来做相似度比较,但是别人模型训练时的相似图片只是简单的两只狗。

    如果要自己训练,模型训练不难,难的是准备你们的数据集。你不是搞这个,建议申请好预算找人,或者多试试公开工具,效果差不多就行了。
    zhouquan03
        14
    zhouquan03  
       40 天前   ❤️ 1
    meta 的 dinov2 提取特征试试,不过由于训练数据的限制,风格、色彩等等,效果肯定不会很好的。我在用的这个工具: https://github.com/vra/dinov2-retrieval
    daohuo
        15
    daohuo  
    OP
       40 天前
    @ShadowPower 要求是不同颜色有影响,不同饱和度和亮度按照人眼的视觉感觉有影响,就是在人眼下,一定范围内,饱和度和亮度调整不会改变对颜色的认知,但是超过一定范围就会了
    daohuo
        16
    daohuo  
    OP
       40 天前
    @mightybruce 好的,我试试看看
    NCE
        17
    NCE  
       40 天前
    用 CNN/RNN ,类似识别车牌号的算法。
    daohuo
        18
    daohuo  
    OP
       40 天前
    @0xFDA64 你的意思是,还是用提取特征计算相似度的方法,但是这个提取特征的模型需要自己准备数据集来训练吗?有没有推荐的开源项目我试一下
    mightybruce
        19
    mightybruce  
       40 天前
    @daohuo 需要根据提取的特征进行训练的, 我多年前用 LIRE 也是要用你自己的数据集提取的特征去训练

    图像检索这块就是这么做的
    DIMOJANG
        20
    DIMOJANG  
       40 天前   ❤️ 1
    感觉听你的描述,可以试试用一些类似 BD-CSPN 、TIM 之类的基于度量学习的 Transductive 方法。应该可以满足“并且随着训练的材料越多,模型越准确”的要求。骨干网络选一个强一点的预训练网络应该就可以提取到比较复杂的特征。
    daohuo
        21
    daohuo  
    OP
       40 天前
    @DIMOJANG 好的,感觉这个度量学习比较接近需求,我去看看
    NoOneNoBody
        22
    NoOneNoBody  
       40 天前
    你的描述并没有说清需求,这个“相似度”是如何定义的?
    一个百分比数值?那还需要定义权重,颜色、主体(如人物)哪个重要
    如果没有定义,纯整体比较,计算 mse 就是了,很简单的一两行代码(用 pyvips 就一行)
    一般说“相似度”就是求 mse ,但以你的描述,则是比较复杂,颜色、明暗度都要判断,还有主体姿态

    其他方面去看 opencv.img_hash 模块的各种计算,模块内有两图计算值 compute 方法,得出的是单一浮点数

    如果主体的姿态还需要描述的话,例如站着、坐着、单手上举……需要能描述的模型
    如果只是找出不同,不需要描述,按下面找茬方式就行


    找出不同之处?就是类似“找茬”游戏
    找茬核心是 skimage.metrics.structural_similarity ,根据其计算结果,在 mask 上描线
    网上有例子和代码

    其实两图尺寸和内容基本一致的话,找成对相似是比较容易的,都有现成的模块可以完成
    我遇到的难题是旋转、裁边(将原图裁掉边缘部分,多数是因为切去水印,然后放大到原尺寸)……这些就很棘手
    ihciah
        23
    ihciah  
       40 天前
    https://github.com/ihciah/deep-fashion-retrieval
    贴一个 7 年前的代码,是不是类似需求?评判相似度并做 retrieval 。
    “相似”的定义是不好描述的,所以需要你收集相似的和不相似的样本并 finetune 一下网络。
    tfdetang
        24
    tfdetang  
       40 天前
    如果是私有场景,估计很难直接通过开源模型实现吧,最起码要自己训练或者(few shot)。 我个人觉得这个场景类似于小区的人脸识别门禁那种 pair-wise 的思路,是用两个正例对与负例组成样本对来找出相似度边界
    DigitalG
        25
    DigitalG  
       40 天前
    听上去你的标准有些模糊。打分标准不明确的话,不是很好做。至少细化下“如何判断相似度”的规则,要达到能够给标注团队看过之后能制作训练集的程度吧。

    而且你提到人眼也无法判断的情况。我倾向建议不要依赖单一模型去解决。比如由多个不同的模型分别或依次判断,单一模型只提供某个方面的相似度评分。最后综合判断,你可以简单设置多个阈值,每个模型的评分可以有自己的权重(或者这个步骤用另一个回归模型得到一个总分)。

    另外,上面说的多个不同的模型,也可以加入传统 cv 的方法去判断饱和度等,不一定非得深度学习。(这也不会影响训练材料越多,模型约准确的要求)
    EndlessMemory
        26
    EndlessMemory  
       39 天前
    这个一般使用孪生神经网络吧
    openmynet
        28
    openmynet  
       39 天前
    如果相似度受到整体饱和度,亮度,色调,人体姿态,背景颜色的方面的影响,感觉 image hash 可能更适合你
    SunDoge
        29
    SunDoge  
       39 天前
    我觉得这个需求挺有意思的,想试试,能提供一些 example data 吗?
    yichengxian
        30
    yichengxian  
       39 天前
    Deeplearning4j
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2701 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 41ms · UTC 14:09 · PVG 22:09 · LAX 07:09 · JFK 10:09
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.