基于tensorflow的交通标志识别代码
时间: 2023-08-01 10:14:26 浏览: 143
python基于深度学习的交通标志识别系统(tensorflow).zip
5星 · 资源好评率100%
以下是一个基于 TensorFlow 的交通标志识别代码示例,使用了预训练的 ResNet50 模型进行迁移学习:
```python
import tensorflow as tf
from tensorflow.keras.applications.resnet50 import ResNet50
from tensorflow.keras.preprocessing.image import ImageDataGenerator
from tensorflow.keras.layers import Dense, Flatten, Dropout
# 加载预训练模型
base_model = ResNet50(include_top=False, weights='imagenet', input_shape=(224, 224, 3))
for layer in base_model.layers:
layer.trainable = False
# 构建模型
model = tf.keras.Sequential([
base_model,
Flatten(),
Dense(512, activation='relu'),
Dropout(0.5),
Dense(256, activation='relu'),
Dropout(0.3),
Dense(128, activation='relu'),
Dropout(0.2),
Dense(43, activation='softmax')
])
# 编译模型
model.compile(optimizer='adam',
loss='categorical_crossentropy',
metrics=['accuracy'])
# 加载数据集
train_datagen = ImageDataGenerator(rescale=1./255,
shear_range=0.2,
zoom_range=0.2,
horizontal_flip=True)
test_datagen = ImageDataGenerator(rescale=1./255)
training_set = train_datagen.flow_from_directory('path/to/training_set',
target_size=(224, 224),
batch_size=32,
class_mode='categorical')
test_set = test_datagen.flow_from_directory('path/to/test_set',
target_size=(224, 224),
batch_size=32,
class_mode='categorical')
# 训练模型
model.fit(training_set,
epochs=10,
validation_data=test_set)
```
在上面的代码中,我们加载了预训练的 ResNet50 模型,并将其冻结以避免过拟合。然后我们构建了自己的模型,添加了全连接层和 Dropout 正则化层。我们使用了 Adam 优化器和交叉熵损失函数来编译模型并训练它。
在加载数据集时,我们使用了 Keras 的 ImageDataGenerator 类来进行数据增强,包括缩放、旋转、翻转等。最后,我们使用 flow_from_directory() 方法从文件夹中加载训练和测试数据集,将数据集归一化到 0 到 1 的范围内,并使用 fit() 方法来训练模型。
阅读全文