PaddlePaddle / PaddleClas

A treasure chest for visual classification and recognition powered by PaddlePaddle
Apache License 2.0
5.5k stars 1.17k forks source link

PPShitu特征提取后,为何2张图很相似的图,特征向量的距离值很大(distance: [0.27994147])? #3157

Open GreenValue opened 6 months ago

GreenValue commented 6 months ago

欢迎您使用PaddleClas并反馈相关问题,非常感谢您对PaddleClas的贡献! 提出issue时,辛苦您提供以下信息,方便我们快速定位问题并及时有效地解决您的问题:

  1. PaddleClas版本以及PaddlePaddle版本: conda中安装了 paddlepaddle 2.4.2 py310_cpu_windows https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/Paddle

然后在conda环境中,用PaddleClas release/2.5代码,执行了 python setup.py install

  1. 涉及的其他产品使用的版本号:
  2. 训练环境信息: a. 具体操作系统,如Windows 的conda环境 b. Python版本号,如F:\PaddleClas\deploy\python\predict_rec.py c. CUDA/cuDNN版本:无
  3. 完整的代码(相比于repo中代码,有改动的地方)、详细的错误信息及相关log

按照【特征提取

使用模型:general_PPLCNetV2_base_pretrained_v1.0_infer

color_small color_big

F:\PaddleClas\deploy>python python/predict_rec.py -c configs/inference_rec.yaml inference_rec.yaml的内容,如附件inference_rec.txt

抽取2图特征向量,并求2个特征向量的距离。 看起来很相似的图,但距离值很大,distance: [0.27994147]

这是自己写的求特征向量距离的函数:

def euclidean_distance(output1, output2):

计算两个batch_output之间的差值

diff = output1 - output2
# 计算每个样本的平方差值
squared_diff = np.square(diff)
# 沿axis=1对每个样本的平方差值求和
sum_squared_diff = np.sum(squared_diff, axis=1)
# 求和后再开平方得到欧几里德距离
distances = np.sqrt(sum_squared_diff)

return distances
cuicheng01 commented 6 months ago

建议去看下余弦距离哦