Pythonでできる機械学習画像判定~TensorFlow(keras)で犬猫判定モデルを作ろう!~初心者でも簡単にAIができる!プログラムの作り方を紹介!
TensorFlowという機械学習ライブラリを使って、犬と猫の画像を分類するモデルを作っていきます。
機械学習に興味があるけど、難しそうだから手を出せなかったという方も、今回の動画を見れば初心者でも簡単にAIを体験することができます。
▶チャプターリスト(目次)
00:00 イントロダクション
00:10 オープニング
01:38 機械学習モデルの基本
09:19 プログラム解説
11:27 画像判定結果
13:50 まとめ
#tensorflow
#keras
#PIL
▼On-site programming developer training institution
↓↓↓VMaterial(現場のプログラム習得用タイムパーフォーマンスMAXの新ビデオ教材)のあるオンラインスクールはコチラです。
https://firesoft-developing-cource.teachable.com/
↓↓↓チャンネル登録はコチラ
https://www.youtube.com/channel/UC9LBFFnjLr8RRASYQZ1E3wg?sub_confirmation=1
【dog or cat画像判定】
※同じディレクトリに[cat]と[dog]のフォルダーを作りトレーニング用画像をデータセットとして入れておきます。
※エラーになりますので、トレーニング用画像かChoose Imageボタンで判定させる画像のパスか名前に、日本語が入らないようにして下さい。
▼predict_image.py
import os
import numpy as np
from keras.models import Sequential
from keras.layers import Conv2D, MaxPooling2D, Flatten, Dense
from keras.utils import to_categorical
import cv2
import tkinter as tk
from tkinter import filedialog
from PIL import ImageTk, Image
# 画像ファイルのパス
from tensorflow.python.keras.layers import Activation
IMG_SIZE = 64
# モデルの作成とトレーニング
data = []
labels = []
classes = ['cat', 'dog']
for c in classes:
path = os.path.join(os.getcwd(), c)
for img in os.listdir(path):
try:
img_path = os.path.join(path, img)
image = cv2.imread(img_path)
image = cv2.resize(image, (IMG_SIZE, IMG_SIZE))
data.append(image)
labels.append(classes.index(c))
print(img_path)
except Exception as e:
print(e)
data = np.array(data)
labels = np.array(labels)
# データをシャッフルする
idx = np.arange(data.shape[0])
np.random.shuffle(idx)
data = data[idx]
labels = labels[idx]
# データをトレーニング用と検証用に分割する
num_samples = len(data)
num_train = int(num_samples * 0.8)
x_train = data[:num_train]
y_train = labels[:num_train]
x_val = data[num_train:]
y_val = labels[num_train:]
# 画像データの正規化
x_train = x_train / 255.0
x_val = x_val / 255.0
# ラベルをone-hotエンコーディングに変換する
y_train = to_categorical(y_train)
y_val = to_categorical(y_val)
# モデルを構築する
model = Sequential()
model.add(Conv2D(32, (3, 3), input_shape=x_train.shape[1:]))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Conv2D(64, (3, 3)))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Flatten())
model.add(Dense(64))
model.add(Activation('relu'))
model.add(Dense(2))
model.add(Activation('softmax'))
# モデルをコンパイルする
model.compile(loss='categorical_crossentropy',
optimizer='adam',
metrics=['accuracy'])
# モデルをトレーニングする
model.fit(x_train, y_train, epochs=10, batch_size=32, validation_data=(x_val, y_val))
# GUIの作成
root = tk.Tk()
root.title("Cat or Dog Classifier")
root.geometry("500x500")
# ボタンのクリック時の処理
def predict():
# 画像を選択する
file_path = filedialog.askopenfilename()
# 選択された画像を表示する
image_tk = Image.open(file_path).resize((IMG_SIZE, IMG_SIZE))
image_tk = ImageTk.PhotoImage(image_tk)
img_label.configure(image=image_tk)
img_label.image = image_tk
print(file_path)
# 選択された画像をモデルに入力して予測結果を表示する
image_selected = cv2.imread(file_path)
image_selected = cv2.resize(image_selected, (IMG_SIZE, IMG_SIZE))
image_selected = np.expand_dims(image_selected, axis=0)
image_selected = image_selected / 255.0
prediction = model.predict(image_selected)
if np.argmax(prediction) == 0:
result_label.configure(text="This is a cat!")
else:
result_label.configure(text="This is a dog!")
# 画像を表示するラベルの作成
img_label = tk.Label(root)
img_label.pack()
# 予測結果を表示するラベルの作成
result_label = tk.Label(root, font=("Helvetica", 18))
result_label.pack()
# ボタンの作成
button = tk.Button(root, text="Choose Image", command=predict)
button.pack()
root.mainloop()
Что делает видео по-настоящему запоминающимся? Наверное, та самая атмосфера, которая заставляет забыть о времени. Когда вы заходите на RUVIDEO, чтобы посмотреть онлайн «Pythonでできる機械学習画像判定~TensorFlow(keras)で犬猫判定モデルを作ろう!~初心者でも簡単にAIができる!プログラムの作り方を紹介!», вы рассчитываете на нечто большее, чем просто загрузку плеера. И мы это понимаем. Контент такого уровня заслуживает того, чтобы его смотрели в HD 1080, без дрожания картинки и бесконечного буферизации.
Честно говоря, Rutube сегодня — это кладезь уникальных находок, которые часто теряются в общем шуме. Мы же вытаскиваем на поверхность самое интересное. Будь то динамичный экшн, глубокий разбор темы от любимого автора или просто уютное видео для настроения — всё это доступно здесь бесплатно и без лишних формальностей. Никаких «заполните анкету, чтобы продолжить». Только вы, ваш экран и качественный поток.
Если вас зацепило это видео, не забудьте взглянуть на похожие материалы в блоке справа. Мы откалибровали наши алгоритмы так, чтобы они подбирали контент не просто «по тегам», а по настроению и смыслу. Ведь в конечном итоге, онлайн-кинотеатр — это не склад файлов, а место, где каждый вечер можно найти свою историю. Приятного вам отдыха на RUVIDEO!
Видео взято из открытых источников Rutube. Если вы правообладатель, обратитесь к первоисточнику.