imagededup は、画像コレクション内で完全に重複するものとほぼ重複するものを見つけるタスクを簡素化する Python パッケージです。
このパッケージは、正確な重複の検索に特に優れたハッシュ アルゴリズムと、ほぼ重複の検索にも優れた畳み込みニューラル ネットワークを利用する機能を提供します。特定のデータセットの重複排除の品質を判断するための評価フレームワークも提供されます。
パッケージによって提供される機能の詳細は次のとおりです。
次のアルゴリズムのいずれかを使用して、ディレクトリ内の重複を検索します。
畳み込みニューラル ネットワーク (CNN) - いくつかのパッケージ化されたモデルから選択するか、独自のカスタム モデルを提供します。
知覚的ハッシュ (PHash)
差分ハッシュ (DHash)
ウェーブレット ハッシュ (WHash)
平均ハッシュ (AHash)
上記のアルゴリズムのいずれかを使用して画像のエンコーディングを生成します。
グラウンド トゥルース マッピングを基に重複排除の有効性を評価するフレームワーク。
指定されたイメージ ファイルで見つかった重複をプロットします。
パッケージの詳細なドキュメントは、https://idealo.github.io/imagededup/ にあります。
imagededup は Python 3.8 以降と互換性があり、Linux、MacOS X、および Windows 上で実行できます。これは、Apache 2.0 ライセンスに基づいて配布されます。
インストール
クイックスタート
ベンチマーク
貢献する
引用
メンテナー
ライセンス
imagededup をインストールするには 2 つの方法があります。
PyPI から imagededup をインストールします (推奨):
pip install imagededup
GitHub ソースから imagededup をインストールします。
git clone https://github.com/idealo/imagededup.gitcd imagededup pip install "cython>=0.29"python setup.py install
知覚ハッシュを使用して画像ディレクトリ内の重複を見つけるには、次のワークフローを使用できます。
知覚的ハッシュ法をインポートする
imagededup.methods からインポート PHashphasher = PHash()
画像ディレクトリ内のすべての画像のエンコーディングを生成します
エンコーディング = phasher.encode_images(image_dir='パス/画像/ディレクトリへ')
生成されたエンコーディングを使用して重複を検索する
重複 = phasher.find_duplicates(encoding_map=encodings)
重複ディクショナリを使用して、指定されたファイル (例: 'ukbench00120.jpg') に対して取得された重複をプロットします。
from imagededup.utils import Lot_duplicatesplot_duplicates(image_dir='path/to/image/directory',duplicate_map=duplicates,filename='ukbench00120.jpg')
出力は以下のようになります。
ワークフローの完全なコードは次のとおりです。
from imagededup.methods import PHashphasher = PHash()# 画像ディレクトリ内のすべての画像のエンコーディングを生成しますencodings = phasher.encode_images(image_dir='path/to/image/directory')# 生成されたエンコーディングを使用して重複を検索しますduplicates = phasher.find_duplicates(encoding_map =encodings)# 重複辞書を使用して、指定されたファイルに対して取得された重複をプロットします。 imagededup.utils import Lot_duplicatesplot_duplicates(image_dir='path/to/image/directory',duplicate_map=duplicates,filename='ukbench00120.jpg')
CNN メソッドを使用して重複を見つけるために独自のカスタム モデルを使用することもできます。
例については、リポジトリのこの部分を参照してください。
パッケージ機能の詳細な使用方法については、https://idealo.github.io/imagededup/ を参照してください。
更新: 提供されたベンチマークは、 imagededup v0.2.2
までのみ有効です。次のリリースではすべてのメソッドに大幅な変更が加えられるため、現在のベンチマークは維持できない可能性があります。
さまざまな方法の速度と分類メトリクスに関する詳細なベンチマークがドキュメントに記載されています。一般的に言えば、次のような結論が得られます。
CNN は、ほぼ重複したものや、変換を含むデータセットに最適に機能します。
すべての重複排除手法は、完全な重複を含むデータセットではうまく機能しますが、差分ハッシュが最も高速です。
あらゆる種類の貢献を歓迎します。詳細については、貢献ガイドを参照してください。
研究に役立つ場合は、出版物の中で Imagededup を引用してください。 BibTeX エントリの例を次に示します。
@misc{idealods2019imagededup、title={Imagededup}、author={Tanuj Jain、Christopher Lennan、Zubin John、Dat Tran}、year={2019}、howpublished={url{https://github.com/idealo/imagededup} }、 }
タヌジ・ジェイン、github: Tanujjain
クリストファー・レナン、github: clennan
Dat Tran、github: datitran
詳細については、「ライセンス」を参照してください。