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)
ここから先は
¥ 580
この記事が気に入ったらサポートをしてみませんか?