Iconfinder は、デザイナー、開発者、その他のクリエイティブ ワーカー向けに優れたアイコンを提供するアイコン検索エンジンです。現在 340,000 を超えるアイコンをホストしており、有料アイコン ライブラリとしては世界最大です。ユーザーは、Iconfinder の取引セクションでオリジナル作品をアップロードして販売することもできます。毎月、何千ものアイコンが、大量の海賊版画像とともに Iconfinder にアップロードされています。 Iconfinder のエンジニア Silviu Tantos は、この記事で著作権侵害を排除するための斬新で独創的な画像重複検出技術を提案しています。 今後数週間以内に、重複したアップロード アイコンを検出する機能を展開する予定です。たとえば、ユーザーがアイコンをダウンロードし、それをアップロードして収益を得ようとした場合(これは以前にも起こったことです)、当社のアプローチではアイコンがすでに存在するかどうかを検出し、アカウントを不正なものとしてフラグ付けすることができます。多数のファイルの中にファイルが既に存在するかどうかを検出する一般的な方法は、データセット内の各ファイルのハッシュ値を計算し、そのハッシュ値を配列ライブラリに保存することです。特定のファイルを検索する場合は、まずファイルのハッシュ値を計算し、次にデータベースでハッシュ値を検索します。 ハッシュアルゴリズムの選択暗号ハッシュ アルゴリズムは、一般的に使用されるハッシュ アルゴリズムです。 MD5、 SHA1、SHA256などの標準ライブラリはどの言語にも存在し、単純な使用例には非常に効果的です。 たとえば、 Pythonでは、まずhashlibモジュールをインポートし、次に関数を呼び出して文字列またはファイルのハッシュ値を生成します。
このアルゴリズムは、改ざんされていないアップロードされたファイルに対しては非常に有効です。入力データにわずかな変更があった場合、暗号化ハッシュ アルゴリズムによって雪崩効果が発生し、新しいファイルのハッシュ値が元のファイルのハッシュ値と完全に異なるものになります。 たとえば、次の例では、文末にピリオドが追加されています。 画像の背景色が変更されたり、画像が切り取られたり、回転したり、単一のピクセルが変更されたりすると、画像ハッシュ ライブラリと一致しなくなります。従来のハッシュ アルゴリズムは実用的ではないことがわかります。上記の例でわかるように、ハッシュ値 9e107d9d372bb6826bd81d3542a419d6 と e4d909c290d0fb1ca068ffaddf22cbd0 はほとんど異なります(いくつかの文字を除く)。 たとえば、画像内の猫の鼻の色を変更すると、画像のハッシュ値が変わります。 オリジナル画像 修正画像
知覚ハッシュ アルゴリズムは数多く存在します。この論文では、隣接するピクセル間の輝度差を計算し、相対的な勾配を決定する新しい dhash (差分ハッシュ) アルゴリズムを提案します。上記のユースケースでは、知覚ハッシュが非常にうまく機能します。知覚ハッシュ アルゴリズムは、ファイル コンテンツのさまざまな特徴からマルチメディア ファイルのフィンガープリントを取得し、異なるファイル間の微妙な違いを柔軟に区別できます。 dハッシュdHash アルゴリズムについて詳しく説明する前に、まず基本的な知識をいくつか紹介します。カラー画像は RGB の 3 つの原色で構成されており、赤、緑、青の 3 つの原色の色セットとして見ることができます。たとえば、Python Imaging Library (PIL) を使用して画像を読み込み、ピクセル値を出力します。 テスト画像
さて、dHash アルゴリズムに戻りましょう。アルゴリズムには 4 つのステップがあります。この記事では、各ステップを詳しく説明し、元の画像と変更された画像への影響を検証します。最初の 3 つのピクセルの赤、緑、青のカラー強度値はそれぞれ 255 で、他の 2 つのピクセルのカラー強度値はそれぞれ 0 です。純粋な黒のピクセルの 3 つの原色は 0 で、純粋な白のピクセルの 3 つの原色は 255 です。その他の色のピクセルは、3 つの原色値の異なる強度で構成されます。 1. グレースケール画像画像をグレースケール化すると、ピクセル値が光度値まで削減されます。たとえば、白いピクセル (255, 255, 255) は 255 になり、黒いピクセル (0,0,0) は 0 になります。 元の画像(手順 1 後) 変更後の画像(手順 1 後) #p# 2. 画像を一般的なサイズに縮小する画像を、幅と高さが 1 ピクセルの 9 x 8 ピクセルなどの共通の基本サイズに縮小します (このサイズである理由は手順 3 でわかります)。この方法では、画像から高周波と詳細が削除され、72 個の強度値を持つサンプルが生成されます。画像のサイズ変更や拡大を行ってもハッシュ値は変更されないため、すべての画像はこのサイズに正規化されます。 元の画像(手順2の後) 変更された画像(手順2の後) 3. 隣接するピクセルを比較する最初の 2 つの手順が実行されると、強度値のリストが取得され、このバイナリ値配列の各行の隣接するピクセルが比較されます。
最初の値 254 は 2 番目の値 254 と比較され、2 番目の値は 3 番目の値と比較され、以下同様にして、行ごとに 8 つのブール値が生成されます。
4. バイナリに変換するハッシュ値の保存と使用を容易にするために、8 つのブール値は 16 進文字列に変換されます。 True は 1 になり、False は 0 になります。 Python実装完全な Python で実装された完全なアルゴリズムは次のとおりです。
最も一般的なケースでは、画像がわずかに異なる場合、ハッシュ値は同じになる可能性が高いため、直接比較できます。
ハッシュ値を保存する SQL データベースがある場合は、ハッシュ値「4c8e3366c275650f」が存在するかどうかを簡単に判断できます。
ここで、大きな違いがある画像ではハッシュ値が異なる場合があるため、ある文字列を別の文字列に置き換えるために必要な最小文字数、つまりハミング距離を計算する必要があります。 Wikipedia には、2 つの文字列間のハミング距離を計算する Python のサンプル コードがいくつか掲載されています。ただし、MySQL データベースの計算とクエリに基づいて直接実装することもできます。
クエリされた値とデータベース内のハッシュ値に対して XOR 演算を実行し、異なる桁の数をカウントします。 BIT_COUNT は整数に対してのみ動作できるため、すべての 16 進ハッシュ値は 10 進数に変換する必要があります。 結論この記事では、紹介したアルゴリズムを実装するために Python を使用していますが、もちろん、読者は任意のプログラミング言語を使用してアルゴリズムを実装できます。 はじめに述べたように、この記事のアルゴリズムは、重複したアイコンの送信を防ぐために Iconfinder に適用されます。知覚ハッシュ アルゴリズムは、より実用的な用途を持つことが期待できます。類似した特徴を持つ画像は類似したハッシュ値を持つため、画像推奨システムが類似した画像を見つけるのに役立ちます。 オリジナルリンク: Silviu Tantos翻訳: Bole Online - Xiaoyu 翻訳リンク: http://blog.jobbole.com/65914/ |
<<: 靴下が山積みになっています。靴下をペアにするには、最も速くて効率的なアルゴリズムをどのように使用すればよいでしょうか?
[51CTO.com クイック翻訳] 機械学習を使用する開発者の間での議論のほとんどは、AI ベース...
CMQにおけるラフトの応用初期には、rabbitmqをベースにスケーラブルなメッセージミドルウェア...
CCTV スクリーンショット街面の李婷が報告顔認識の応用シナリオはますます多様化しており、その背後...
「顔認証」や「顔スキャン決済」は顔認識技術の継続的な発展です。今では、小型カメラの助けを借りて、私た...
中国、日本、韓国の囲碁名人数十人がこのゲームに挑み、アルファ碁は1敗もせずに60連勝した。その後、世...
データと機械学習アルゴリズムによって生成される洞察は非常に貴重ですが、間違いはあなたの評判、収益、さ...
量子コンピューティングと人工知能の融合により、大きな期待と可能性を秘めた研究の最前線である量子人工知...
「ニューラル ネットワークは数を数えるのと同じくらい簡単です」、「畳み込み層は単なるバット シグナル...
昨今、室温超伝導の再現に対する世界的な熱気は衰えを知らず、さまざまな有力者が自らの見解を表明している...
アディダスがドイツに開設したロボット靴製造工場「スピードファクトリー」が正式に生産を開始したと報じら...