Hashという基礎的な理論を使った類似画像検索プログラムをPythonで書いて検証してみました。プログラム自体は至って簡単ですので、興味のある方はぜひ試してみてください。Hashは画像の形状を手軽に計算することができる手法の1つです。画像から類似度を計算して比較することで、画像が似ているかどうかを判定するというものです。Hashの計算は以下の手順になっています。Hashで類似画像検索がどの程度できるのか検証してみました。事例としては、メルカリの洋服系画像を5000枚ほどスクレイピングで収集し、その画像を素材にしました。具体的には、「レディースのトップス」というカテゴリの洋服画像(下図)を使いました。プログラムの解説まず、必要なライブラリを読み込みます。plt続いて初期値を設定します。Hashの計算結果の値の差異を比較するためにハミング距離というものを計算します。Hash(ベクトル値)の差分情報だけを合計した値として計算します。Hash値を求めてみます。Hash値(target_dist)として形状(64,64)のデータが生成されます。続いて、検索対象となる約5000ファイルの情報を読み込みます。"*.jpg"))今回は4647個の画像ファイルを用意しました。Hash値(target_dist)に対するハミング距離を一気に求めます。※rateの値はハミング距離に対して類似画像と判定する閾値です。result.append([diff,fname])上記プログラムを実行すると、ハミング距離がrate以下である画像の情報がresult変数に格納されます。'C:\\Users\\sinfo\\scrp\\data\\img\\7_11.jpg']]これをmatplotlibで描画してみます。plt.imshow(img)結果は以下のようになりました。上の大きい画像が検索ターゲットの画像で、下の小さい画像が類似として判定された画像です。Hash値の計算ではうまく類似画像を判定できないようです。※圧縮サイズをもっと増やしてみましたが改善は見られませんでした。Hash値の計算プログラムをちょっとだけ改良してみました。変換モードをRGBへ。px変更したのは以下の2か所。※読み込んだ画像をグレースケール化しないように変更。変換モードをRGBへ。※画素データをArray化してReshapeする際にカラー画像を扱うために形状(size,size,3)に変換。上記設定で、再度類似度を計算して、グラフ描画してみたところ以下のような結果になりました。違う洋服もありますが、全体的にはピンク系統の似たような形状の画像が抽出されました。5000枚近くの画像からこれだけ絞り込めればそれなり使えそうな気はします。Hash値そのままの計算フロー(グレースケール化)だとうまく検出できない。グレースケール化しないようにすればそれなりの精度はでる。画像特性によるところが大きく、Mnistの手書き数字のような画像だとうまく画像判定できなかった。検索対象の画素数がもともと小さいと精度はあがらない。Hash値を使った類似画像判定に関する記事でした。WEBアプリ開発コース|siny|notehttps://note.mu/shinya_hd/m/m7c72d8925919以下のコースをまとめた割引プランです。¥500¥1,500相当のチュートリアルを、セット割で¥1,000で販売します。Djangoの応用事例を学習したい人にお勧めです。ボリュームは約13万字ありますので、200~300ページ程度の技術書と同等のボリュームがあると思います。初心者用に図解を多く(約90枚)取り入れて、説明も多く掲載しています。FacebookTwitterGoogle+はてブPocketFeedlyこの記事を書いた人siny現在の仕事は社内SEのお仕事です。趣味でDjango,Python,機械学習、ディープラーニングなどをやってます。自然言語処理(NLP)でできることとは?【入門者向け】おすすめの記事DeapLearning自然言語処理BERTの概要と実装ポイント、今後についてこんにちは。本記事では、Googleが2018年10月に発表した自然言語処理の手法であるBERTに関する情報を中心に2019...DeapLearningPytorchの使い方まとめ【入門者向け】こんにちは。基本知識をまとめて効率よく学習するためにpy...DeapLearningディープラーニングGANの基礎まとめ【初心者向け】こんにちは。この記事ではディープラーニングの画像生成手法の1つであるGANについて初学者向けに要点をまとめました。※基本的...Django文章の異常箇所を検知するLSTMを利用したAPIをDjangoで実装こんにちは。今回はリクルートテクノロジーズが公開しているA3RTのproofreadingというAPIを使ったAIデモアプリ...雑記Googleアドセンスに通らない人向け。合格までに実施した5つの施策こんにちは。古いネタなんですが、2019年1月14日にめでたくGoogleアドセンスに合格した時お話です。本格的に...Django爆速で作れるDjangoユーザ認証機能【django-allauth】こんにちは。最近、改めてDjango認証回りの勉強をしているのですが、Django標準である程度認証機能が付属しているとはい...DjangoDjangoユーザセッション管理機能を実装してみた。