问题标签 [siamese-network]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
22 浏览

machine-learning - 处理低内部方差和小数据集

我正在尝试开发一种计算机视觉算法。该系统的目标是从图像中分类感兴趣的区域,其中目标类具有非常小的内部方差,而背景类具有巨大的内部方差(基本上是无限的)。

考虑到低内部方差,我首先研究了 SIFT 和 HoG 等关键点算法。遗憾的是,它们不起作用,因为目标类中的一些图像具有不同程度的清晰度,并且大多数关键点都没有被检测到。合乎逻辑的下一步是尝试使用某种形式的深度学习。对于目标类,我每个类大约有 20 个示例,因此从头开始构建模型不是可行的方法。我研究了使用连体网络,在该网络中,我将特征生成部分完全固定(因此没有梯度),并且只训练一个密集层,将 cnn 的扁平输出映射到 128 维表示。

我希望这会奏效,并且使用简单的 KNN 分类,我能够获得几乎 100% 的训练错误。然而,当我在生产中测试它时,分类完全关闭,我只得到背景类作为预测。我的两分钱是,即使我只使用预训练 CNN 的前 2 层,甚至修复这些层,模型仍然严重过度拟合。我尝试向密集层添加辍学,但这似乎并没有给出令人满意的结果。

有人对下一步去哪里有建议吗?如何确保我面临的问题是由于过度拟合而不是欠拟合?考虑到我在这 20 个实例上训练连体网络,我真的不能使用留一份简历。

0 投票
0 回答
223 浏览

python - 具有曼哈顿距离的 Siamese BiLSTM 神经网络每次对相同的测试数据给出非常不同的相似度分数

我正在使用字符级序列和长文本嵌入来应用连体双向 LSTM (BiLSTM)。嵌入模型是 Word2vec,序列长度是None以处理可变序列长度 (180-550),批量大小为 8,模型使用带有 TF 后端的 Keras 训练 100 个 epoch。曼哈顿距离是左侧网络和右侧网络之间的相似性度量。

现在,evaluate.py 调用 h5 模型文件并将结果输出到 csv 文件中。问题是我第一次调用文件和第二次调用相同的测试数据的结果非常不同!如何概括结果?例如,如果我第一次获得 10.txt 和 20.txt 90% 之间的相似度分数,那么我可以在第二次/第三次/等次获得接近 90% 的分数?

PS:附图显示第一次结果在第三列,第二次结果在第四列。 结果

0 投票
1 回答
158 浏览

tensorflow - 珊瑚上的 re3-tensorflow 或 SiamMask

是否可以运行 Re3: Real-Time Recurrent Regression Networks for Visual Tracking of Generic Objects ( https://github.com/danielgordon10/re3-tensorflow ) 或 SiamMask ( https://github.com/foolwood/SiamMask )在谷歌珊瑚 edgeTPU 上?

我的 PC 上运行了 re3 和 SiamMask,但我很想在 EdgeTPU 上尝试一下。

谢谢!

0 投票
1 回答
22 浏览

tensorflow - 给定连体模型图像的输出向量

此页面 ( https://keras.io/examples/mnist_siamese/ ) 重点介绍了我们如何训练 Siamese 模型。该模型将在给定两个图像输入的情况下输出分数。我想要做的是,在推理过程中,给定一个图像,我希望它返回一个代表图像的 128 维向量,我应该如何实现呢?

0 投票
1 回答
194 浏览

python - 为什么使用 ResNet50 架构的连体网络比从头训练的网络效果差?

我正在尝试构建基于 ResNet50 架构的产品识别工具,如下所示

有生成训练批次的功能

权重和偏差设置

模型编译和训练

我想知道为什么这个网络无法识别几乎相似的图片。我还使用此处描述的架构构建了另一个网络http://www.cs.utoronto.ca/~gkoch/files/msc-thesis.pdf 这个网络在识别产品方面确实做得很好。

我想知道为什么使用预训练层的网络比从一开始就训练的结果更差。

0 投票
1 回答
174 浏览

neural-network - 我的连体网络有什么问题?为什么无论输入对如何,它都会输出相同的值(appx 0.5)?

我正在尝试为https://www.kaggle.com/moltean/fruits数据集建立一个连体网络。我从这个数据集中为每个班级挑选了 10 张图片。该数据集中共有 131 个类。我正在使用下面的模型来训练我的网络。但是,它无法收敛。我看到了一个奇怪的行为,在 3000 个 epoch 之后,无论我给出的输入对如何,我的结果都是 0.5000003,并且我的损失停止在 0.61。网络规格如论文中所述。我尝试更改以下内容,

  1. 将 Denes 层激活更改为 ReLU
  2. 导入 ResNet50 的“ImageNet”权重
  3. 尝试增加和减少学习率。

我还检查了批输入以查看正确的输入对 (x) 是否与正确的 y 值配对。但是,我认为我做的事情基本上是错误的。很高兴你能帮助我。谢谢 :)

该笔记本托管在 Kaggle https://www.kaggle.com/krishnaprasad96/siamese-network中。如果您对代码的某些部分的工作方式有疑问,请参阅https://medium.com/@krishnaprasad_54871/siamese-networks-line-by-line-explanation-for-beginners-55b8be1d2fc6

0 投票
1 回答
105 浏览

python - 二维数组的连体网络架构问题。(TypeError:'int' object is not iterable)

我正在开发一个基于连体的神经网络模型,以下是我需要提供给连体网络的两个数组,即我有两对输入,每对大小为 30,因此一对来自左侧,另一对来自对将来自右侧。

现在我想开发一个由两个神经网络组成的连体神经网络模型,我将按照我之前所说的那样对这些数据进行训练

SIAMESE_MODEL

错误

有人可以指导我为 2D 矩阵构建连体网络的正确方法是什么,对于图像有可用的资源,但是对于这类问题,我没有找到任何有用的资源?

问候

更新 是的,第一个问题是输入的形状,我没有正确指定它,所以在做之后,它运行良好

我现在作为连体模特总结得到关注

我的问题是其他层(如 20 和 10)现在消失了,有什么问题吗?

0 投票
1 回答
141 浏览

python - Keras 中的连体神经网络 + 分类器 (FFN)

我会尝试实现一个连体神经网络,它不仅具有相似性度量作为输出,而且还能够对每对输入的标签进行分类。输入是语义音频嵌入。其实我有两个问题:

1:在连体神经网络中,标签是“对的标签”?是否也有可能保留单个输入的标签?我的意思是有可能计算一个结合分类器损失+相似性度量的损失函数吗?

2:你认为我应该划分问题吗?我的意思是两个网络,一个是孪生网络,然后得到孪生网络的输出嵌入,并将孪生输出馈送到前馈网络?(保存相似性度量并在第二个神经网络的损失函数中使用?)

希望我能很好地解释这个问题,并希望有人有解决方案。麦克风

0 投票
0 回答
228 浏览

keras - 具有分类标签和余弦相似层的连体神经网络

我创建了一个带有分类标签的以下连体神经网络

首次实施

第一个模型总结

二次实施

第二个模型总结

所以我的问题是哪个是正确和更好的实现,因为两者都工作正常,它们与这些模型中的任何一个是否存在一些微妙的问题,因为我相信余弦相似层只会给出一个缩放器张量,这在这种情况下让我感到困惑?

0 投票
1 回答
293 浏览

machine-learning - 试图写一个连体网络

我想让 2 个或更多相同的网络输出到另一个网络

但是当我试图将 output_x1 和 output_x2 作为输入到另一个网络时,我在 outputModel 中遇到了一些错误。我试过没有连接但没有成功。

我想实现与文章类似的东西: https ://medium.com/predict/face-recognition-from-scratch-using-siamese-networks-and-tensorflow-df03e32f8cd0 不使用卷积神经网络

对于上述代码的一些错误,我得到:

如果在 outputModel 方法中,我改为执行以下操作:

完整代码见: https ://trinket.io/python/ceafe7a256