2019.04.051みなさん、画像はどうやって管理していますか?私は画像ディレクトリに雑多に入れているため、いつも探すのが大変です。整理したいけど自分でやるのは面倒・・・。そんな時に「k-meansで分類できるんじゃない?」という話を聞いたので試してみました。Pythonを利用します。Pythonにはバージョンがありますが、今回は3を利用しています。notebook」というものを利用し、ブラウザからPythonが実行できる環境となっています。notebookのインストールは割愛いたします。そもそもk-meansって何?k-means(k平均法)とは、ウィキペディアによるとこんな感じだそうです。clustering)は、非階層型クラスタリングのアルゴリズム。k-平均法(k-means)、c-平均法(c-means)とも呼ばれる。https://ja.wikipedia.org/wiki/K平均法つまり、「個数kを指定すると、その数に自動的に分類してくれる」という感じみたいです。分類してみるでは画像を分類していきましょう。各種ライブラリなどを読み込みます。done.")次に、画像が保存されているディレクトリを指定し、中身のファイル一覧を取ってきます。※ここではソースコードと同じディレクトリにある「img」ディレクトリ内のjpgファイルのみ取得しています。done.")画像の一覧が取得出来たら、画像サイズを取得・チェックしましょう。done.")画像サイズを調整しながら、データセットを作成します。done.")データセットは多次元になっており、次元数が多すぎるため、「次元数の圧縮」を行います。done.")さて、お待たせしました。クラスタ数を指定し、分類を行っていきましょう。done.")ここまでのプログラムを実行すると、img内のjpg画像が5つに分類されるかと思います。まで5つに分けられ、中に画像がコピーされます)個数を指定したくない!!何個に分類するか、それすらも自動化したいめんどくさがりやさんな人は多いと思います。いうものがあるそうです。自動推定してくれるので、クラスタ数を指定する必要がなくなります。今回は「pyclustering」というライブラリを使用して、x-meansのクラスタ数推定を行ってみます。ライブラリの読み込みを追加しましょう。Step1の部分を改修します。done.")続いて、クラスタ数を指定する前に、x-meansでクラスタ数推定をします。str(cluster_size))あとは最適クラスタサイズを指定して分類すればOKです。確実なクラスタ数が取得できるわけではありません。「画像を足したら結果が変わった」というのはよくある話です。「完全な分類」をするのではなく、「与えられたものの中で大きく分類する」くらいの感覚が非常に近いです。以上、画像分類の自動化のお話でした。