見出し画像

python:恥ずかしいので機械にエロ画像を仕分けしてもらう(畳み込み処理)

機械にエロ画像を仕分けしてもらうことが、個人的に必要となったので、人の画像と人以外の画像に分類してもらうコードを作成しました。

この記事では、画像多めで詳しく解説しているので、他の記事では理解できなかったpython初心者の方でも、機械学習による画像分類の方法が理解いただけると思います。また、このコードは人や人以外での画像分類以外でも簡流用できますので、ぜひご活用ください。

過去には梨とりんごを分類する健全なコードも書いています。

各種ライブラリのインポート

import keras
from keras.utils import np_utils
from keras.models import Sequential
from keras.layers.convolutional import Conv2D, MaxPooling2D
from keras.layers.core import Dense, Dropout, Activation, Flatten
import numpy as np
from sklearn.model_selection import train_test_split
from PIL import Image
import glob

フォルダ名の設定と画像サイズの設定

folder = ["その他画像",'人画像']
image_size = 100


X = []
Y = []

for index, name in enumerate(folder):
   dir = "C:/Users/user/Desktop/train/" + name
   files = glob.glob(dir + '/*.jpg')
   for i, file in enumerate(files):
       image = Image.open(file)
       image = image.convert('RGB')
       image = image.resize((image_size, image_size))
       data = np.asarray(image)
       X.append(data)
       Y.append(index)

X = np.array(X)
Y = np.array(Y)

C:/Users/user/Desktop/train/ へ 人以外の画像が入っている『その他画像』フォルダと人の画像が入っている『人画像』フォルダを作成しておきます。各フォルダにjpgの画像を何枚か入れておいてください。

enumerate関数は、指定した変数にIDを付けてくれるような関数です。今回はindexという変数に付与しており、出力してみると、下記のように0, 1…を付与してくれる。変数nameは一番初めに記載したfolderに格納されているものとなります。

キャプチャ

glob関数でdir + name によって生成された C:/Users/user/Desktop/train/その他画像とC:/Users/user/Desktop/train/人画像フォルダに入っているjpgファイルのパスを取得します。出力してみると以下のような感じ。

キャプチャ

以下は人画像フォルダ、その他画像フォルダに入っているそれぞれの画像を開き、RGB形式に変換し、100*100にリサイズ、np配列形式に変換し、Xというリストに入れ込んでいます。np.asarrayはnp.arrayでも良いんじゃないかな。

Yにはenumerateで作ったIDを正解ラベルとして、入れ込んでいます。

   for i, file in enumerate(files):
       image = Image.open(file)
       image = image.convert('RGB')
       image = image.resize((image_size, image_size))
       data = np.asarray(image)
       X.append(data)
       Y.append(index)

X = np.array(X)
Y = np.array(Y)

ここから先は

5,622字 / 8画像

¥ 580

この記事が気に入ったらサポートをしてみませんか?