web-dev-qa-db-ja.com

画像の類似性の比較

最初に cstheory.stackexchange.com でこの質問をしましたが、 stats.stackexchange.com

2つのビットマップイメージ間の類似性メトリックを返す既存のアルゴリズムはありますか? 「類似」とは、これら2つの画像が同じ写真から変更されたと人間が言うことを意味します。たとえば、アルゴリズムは次の3つの画像が同じであると言う必要があります(元の画像、位置がずれた画像、縮小した画像)。

同じ

enter image description hereenter image description hereenter image description here

歪んだ画像や反転した画像を検出する必要はありません。また、異なる方向の同じオブジェクトであるかどうかを検出する必要もありません。

異なる

enter image description hereenter image description here

このアルゴリズムを使用して、Webサイトでスパムを防止したいと思います。スパマーは怠けすぎてスパム画像を変更できないことに気付きました。顔に限定されません。すでに多くの優れた顔認識アルゴリズムが存在していることは既に知っています。スパム画像は、URLからサッカー場、裸体まで何でもかまいません。

27
JoJo

スタックオーバーフロー時の イメージ類似性アルゴリズム の説明があります。歪んだ画像や反転した画像を検出する必要はないため、画像の切り抜きがそれほど厳しくない場合は、ヒストグラムアプローチで十分です。

17
Jim M.

VGGなどの既存のディープラーニングアーキテクチャを使用して画像から特徴を生成し、コサイン類似度などの類似度メトリックを使用して、2つの画像が本質的に同じかどうかを確認できます。

パイプライン全体のセットアップは非常に簡単で、ニューラルネットワークアーキテクチャを理解する必要はありません(ブラックボックスのように扱うことができます)。また、これらの機能は非常に汎用的であり、顔だけでなく、あらゆる種類のオブジェクト間の類似性を見つけるために適用できます。

プロセスを順を追って説明するブログがいくつかあります。 http://blog.ethanrosenthal.com/2016/12/05/recasketch-keras/https://erikbern.com/2015/09/24/nearest-neighbor-methods -vector-models-part-1.html

7
Anvesh K

Amazonには Rekognition という新しいAPIがあり、2つの画像を比較して顔の類似性を確認できます。 APIは、各顔の相似性と各顔の境界ボックスを返します。

Rekognitionには、Facial Analysis(性別、おおよその年齢、その他の関連する顔の詳細を返す)とObject Scene Detection(画像内にあるオブジェクトのタグを返す)の両方のAPIも含まれています。

4
Aaron Landy

画像の類似性だけが必要な場合もありますが、顔の類似性はまったく別です。 2人の非常に異なる個人が同じ背景に表示され、画像の類似性の分析は同じであることを示しますが、同じ人物は2つの異なる設定で撮影され、類似性分析はそれらが異なることを示します。

顔の分析を行う必要がある場合は、それに固有のアルゴリズムを検索する必要があります。この種の分析では、目、鼻、口の相対的なサイズと位置の計算がよく行われます。

2
John

ロバストハッシュ関数それを行います。しかし、その領域ではまだ多くの研究が行われています。既に使用可能なプロトタイプがあるかどうかはわかりません。

お役に立てば幸いです。

2
philipp

https://github.com/Netflix/vmaf を使用して、2つの画像セットを比較します。

最初にffmpegを使用して画像をyuv422pに変換してから、テストを実行します。スコアの違いに注意してください。これは、画像が類似しているかどうかを判断するために使用できます。このサンプルでは、​​どちらも非常に似ています...

ffmpeg -i .\different-pose-1.jpg  -s 1920x1080 -pix_fmt yuv422p different-pose-1.yuv
ffmpeg -i .\different-pose-2.jpg  -s 1920x1080 -pix_fmt yuv422p different-pose-2.yuv
.\vmafossexec.exe yuv422p 1920 1080 different-pose-1.yuv different-pose-2.yuv vmaf_v0.6.1.pkl --ssim --ms-ssim --log-fmt json --log different.json
Start calculating VMAF score...
Exec FPS: 0.772885
VMAF score = 2.124272
SSIM score = 0.424488
MS-SSIM score = 0.415149

ffmpeg.exe -i .\same-pose-1.jpg  -s 1920x1080 -pix_fmt yuv422p same-pose-1.yuv
ffmpeg.exe -i .\same-pose-2.jpg  -s 1920x1080 -pix_fmt yuv422p same-pose-2.yuv
.\vmafossexec.exe yuv422p 1920 1080 same-pose-1.yuv same-pose-2.yuv vmaf_v0.6.1.pkl --ssim --ms-ssim --log-fmt json --log same.json
Start calculating VMAF score...
Exec FPS: 0.773098
VMAF score = 5.421821
SSIM score = 0.285583
MS-SSIM score = 0.400130

参考資料 buntuでJPEGまたはその他の画像からYUV422フレームを作成する方法

2
Fire