根据https://tensorflow.google.cn/tutorials/images/classification 里的例子进行图像二分类
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from PIL import Image
import tensorflow as tf
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, Conv2D, Flatten, Dropout, MaxPooling2D
from tensorflow.keras.preprocessing.image import ImageDataGenerator
train_yes_dir = 'E:\\ml\\tr\\logo_yes\\'
train_no_dir = 'E:\\ml\\tr\\logo_no\\'
validation_yes_dir = 'E:\\ml\\v\\yes_v\\'
validation_no_dir = 'E:\\ml\\v\\no_v\\'
train_image_generator = ImageDataGenerator(rescale=1./255) # Generator for our training data
validation_image_generator = ImageDataGenerator(rescale=1./255)
batch_size = 32
epochs = 10
IMG_HEIGHT = 64
IMG_WIDTH = 64
# 训练数据
train_data_gen = train_image_generator.flow_from_directory(batch_size=batch_size,
directory='E:\\ml\\tr\\',
color_mode='rgb',
shuffle=True,
target_size=(IMG_HEIGHT, IMG_WIDTH),
class_mode='binary')
# 验证数据
val_data_gen = validation_image_generator.flow_from_directory(batch_size=batch_size,
directory='E:\\ml\\v\\',
color_mode='rgb',
shuffle=True,
target_size=(IMG_HEIGHT, IMG_WIDTH),
class_mode='binary')
# 建立模型
model = Sequential([
Conv2D(16, 3, padding='same', activation='relu', input_shape=(IMG_HEIGHT, IMG_WIDTH ,3)),
MaxPooling2D(),
Conv2D(32, 3, padding='same', activation='relu'),
MaxPooling2D(),
Conv2D(64, 3, padding='same', activation='relu'),
MaxPooling2D(),
Flatten(),
Dense(512, activation='relu'),
Dense(1)
])
model.compile(optimizer='adam',
loss=tf.keras.losses.BinaryCrossentropy(from_logits=True),
metrics=['accuracy'])
model.summary()
Model: "sequential"
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
conv2d_12 (Conv2D) (None, 64, 64, 16) 448
_________________________________________________________________
max_pooling2d_12 (MaxPooling (None, 32, 32, 16) 0
_________________________________________________________________
conv2d_13 (Conv2D) (None, 32, 32, 32) 4640
_________________________________________________________________
max_pooling2d_13 (MaxPooling (None, 16, 16, 32) 0
_________________________________________________________________
conv2d_14 (Conv2D) (None, 16, 16, 64) 18496
_________________________________________________________________
max_pooling2d_14 (MaxPooling (None, 8, 8, 64) 0
_________________________________________________________________
flatten_4 (Flatten) (None, 4096) 0
_________________________________________________________________
dense_8 (Dense) (None, 512) 2097664
_________________________________________________________________
dense_9 (Dense) (None, 1) 513
=================================================================
Total params: 2,121,761
Trainable params: 2,121,761
Non-trainable params: 0
_________________________________________________________________
history = model.fit_generator(
train_data_gen,
steps_per_epoch=312 // batch_size,
epochs=epochs,
validation_data=val_data_gen,
validation_steps=100 // batch_size
)
Epoch 1/10
9/9 [==============================] - 1s 120ms/step - loss: 0.7537 - accuracy: 0.5357 - val_loss: 0.6520 - val_accuracy: 0.5000
Epoch 2/10
9/9 [==============================] - 1s 111ms/step - loss: 0.5691 - accuracy: 0.5590 - val_loss: 0.4826 - val_accuracy: 0.7917
Epoch 3/10
9/9 [==============================] - 1s 112ms/step - loss: 0.4936 - accuracy: 0.7750 - val_loss: 0.2535 - val_accuracy: 1.0000
Epoch 4/10
9/9 [==============================] - 1s 106ms/step - loss: 0.2540 - accuracy: 0.9571 - val_loss: 0.1010 - val_accuracy: 1.0000
Epoch 5/10
9/9 [==============================] - 1s 108ms/step - loss: 0.1271 - accuracy: 0.9714 - val_loss: 0.0308 - val_accuracy: 1.0000
Epoch 6/10
9/9 [==============================] - 1s 112ms/step - loss: 0.1058 - accuracy: 0.9786 - val_loss: 0.0299 - val_accuracy: 1.0000
Epoch 7/10
9/9 [==============================] - 1s 109ms/step - loss: 0.0296 - accuracy: 0.9964 - val_loss: 0.0173 - val_accuracy: 1.0000
Epoch 8/10
9/9 [==============================] - 1s 111ms/step - loss: 0.0463 - accuracy: 0.9929 - val_loss: 0.0119 - val_accuracy: 1.0000
Epoch 9/10
9/9 [==============================] - 1s 110ms/step - loss: 0.0471 - accuracy: 0.9893 - val_loss: 0.0150 - val_accuracy: 1.0000
Epoch 10/10
9/9 [==============================] - 1s 115ms/step - loss: 0.0303 - accuracy: 0.9893 - val_loss: 0.0151 - val_accuracy: 1.0000
结果红框的值无限在跑 不出结果
求大神解答