图像识别的起点?
Starting point for image recognition?
我有一组 274 张彩色图像(每张都是 200x150 像素)。每个图像在视觉上都是不同的。我想构建一个应用程序,它接受一个基本图像集的 up/down-scaled 版本并确定最接近的匹配。
我是一名高级软件工程师,但对图像识别完全陌生。我非常感谢关于从哪里开始的任何建议。
如果您比较的是极其相似的图像,理论上计算两幅图像之间的欧氏距离就足够了。图像必须具有相同的大小才能这样做,因此通常需要重新缩放图像才能这样做(通常较大的图像会按比例缩小)。注意aliasing issues can happen here, so pay some attention to your downsampling algorithm。如果您的图片没有相同的宽高比,也会出现问题。
但是,这在实践中几乎从来没有做过,因为它非常慢。对于尺寸为 WxH 和 3 个颜色通道的 N 张图像,它需要 N x W x H x 3 次比较,这很快就会变得不可行(考虑到许多用户可以拥有超过 1000 张尺寸 >1000x1000 的图像)。
通常我们会尝试将图像缩小为更小的阵列,以更简洁地捕获图像信息,称为 visual descriptor。例如,将一张 1024x1024x3 的图像缩减为 128 长度的矢量。这只需要为参考图像计算一次,然后存储在适当的数据结构中。然后我们可以将查询图像的描述符与参考图像的描述符进行比较。
对于长度为 L 的描述符,为我们的 N 张图像数据集计算距离的成本是 N x L
而不是原来的 N x W x H x 3
因此,问题是要找到 (a) 计算成本低且 (b) 准确捕获图像的有效描述符。这仍然是一个活跃的研究领域,但我可以提出一些建议:
我有一组 274 张彩色图像(每张都是 200x150 像素)。每个图像在视觉上都是不同的。我想构建一个应用程序,它接受一个基本图像集的 up/down-scaled 版本并确定最接近的匹配。
我是一名高级软件工程师,但对图像识别完全陌生。我非常感谢关于从哪里开始的任何建议。
如果您比较的是极其相似的图像,理论上计算两幅图像之间的欧氏距离就足够了。图像必须具有相同的大小才能这样做,因此通常需要重新缩放图像才能这样做(通常较大的图像会按比例缩小)。注意aliasing issues can happen here, so pay some attention to your downsampling algorithm。如果您的图片没有相同的宽高比,也会出现问题。
但是,这在实践中几乎从来没有做过,因为它非常慢。对于尺寸为 WxH 和 3 个颜色通道的 N 张图像,它需要 N x W x H x 3 次比较,这很快就会变得不可行(考虑到许多用户可以拥有超过 1000 张尺寸 >1000x1000 的图像)。
通常我们会尝试将图像缩小为更小的阵列,以更简洁地捕获图像信息,称为 visual descriptor。例如,将一张 1024x1024x3 的图像缩减为 128 长度的矢量。这只需要为参考图像计算一次,然后存储在适当的数据结构中。然后我们可以将查询图像的描述符与参考图像的描述符进行比较。
对于长度为 L 的描述符,为我们的 N 张图像数据集计算距离的成本是 N x L
而不是原来的 N x W x H x 3
因此,问题是要找到 (a) 计算成本低且 (b) 准确捕获图像的有效描述符。这仍然是一个活跃的研究领域,但我可以提出一些建议: