猫と犬の訓練のための訓練モデルの確立、予測セット全体に対するモデルの予測効果のテストのプログラム コードは、オンラインまたは一部の本で見つけることができますが、単一または単一の分類テスト手順はあまりありません。特定の写真、ここに参考ブログがあります: https://blog.csdn.net/baidu_35113561/article/details/79371716、私自身の要約は次のとおりです。
環境: Python+keras、バックエンド: tensorflow
トレーニング セット:ダウンロードはhttps://www.kaggle.com/c/dogs-vs-cats/dataで完了できます。合計 12,500 枚の猫と犬の写真 (条件による)限定的に、1000匹の猫と犬をトレーニングに連れて行き、検証セットでの精度検証は82%に達しました))。
テスト手順は次のとおりです。
import cv2
import numpy as np
from keras.models import load_model
from keras.preprocessing.image import ImageDataGenerator
test_dir="D:/研究生/lx/cats-vs-dogs-datasets/000/" # 加载图片目录
model=load_model('cats_and_dogs_small_1.h5') # 加载模型参数
for i in range(10):
print(str(i)+'.jpg')
img=cv2.imread(str(i)+'.jpg')
print(img.shape)
img=cv2.resize(img,(150,150))
print(img.shape) # 读取图片并将大小统一至模型输入要求
# cv2.imshow("img",img)
# cv2.waitKey()
img0 = (img.reshape(1,150,150,3).astype("float32"))/255 # 归一化
predict = model.predict_classes(img0)
if predict == 0:
print('识别为:猫')
image1=cv2.putText(img,'cat',(20,20),cv2.FONT_HERSHEY_SIMPLEX,0.5,(0,0,255),1,cv2.LINE_AA)
cv2.imshow('result',image1)
cv2.waitKey(10000)
else:
image2=cv2.putText(img, 'dog', (20, 20), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0, 0, 255), 1, cv2.LINE_AA)
print('识别为:狗')
cv2.imshow('result',image2)
cv2.waitKey(10000)
実行結果を図に示します.
いくつかの猫や犬があなたにとってかわいいかもしれないことは認めますが, まだ分類結果を見る必要があります. 10枚中7枚が正常に分類されており、予測正解率は70%であることがわかります。トレーニング プロセス中のモデルの検証精度にはまだ多少のギャップがありますが、テスト セットのサンプル サイズが小さいことを考えると、それは理解できます。
説明します:
- テスト中の画像のサイズは、モデルの構築時にトレーニング セットのサイズと一致させる必要があります。そうしないと、入力画像がモデルの要件を満たしていないためにエラーが発生します。私のモデルのサンプル サイズは 150*150 に統一されているため、テスト中に画像のサイズもそれに合わせて調整されました。
- ニューラル ネットワークは小さな入力値の処理に適しているため、ピクセル値 (0 ~ 255 の範囲) は [0,1] 間隔にスケーリングする必要があります。