本文讲述从0到1搭建一个完整的水果分类系统,模型使用的是CNN,从模型的训练开始,到模型的预测再到模型丰封装,前后端集成。
- 1、搭建神经网络模型,模型选择为卷积神经网络,模型结构如下所示:
def model_config():
model = Sequential()
model.add(Conv2D(32, (3, 3), activation='relu',
kernel_initializer='he_uniform', input_shape=(100, 100, 3)))
model.add(MaxPooling2D(2, 2))
model.add(Conv2D(32, (3, 3), activation='relu',
kernel_initializer='he_uniform'))
model.add(MaxPooling2D(2, 2))
model.add(Conv2D(32, (3, 3), activation='relu',
kernel_initializer='he_uniform'))
model.add(MaxPooling2D(2, 2))
model.add(Conv2D(32, (3, 3), activation='relu',
kernel_initializer='he_uniform'))
model.add(MaxPooling2D(2, 2))
model.add(Flatten())
model.add(Dense(200, activation='relu', kernel_initializer='he_uniform'))
model.add(Dense(131, activation='softmax'))
# compile the model
opt = SGD(lr=0.01, momentum=0.9)
model.compile(optimizer=opt, loss='categorical_crossentropy',
metrics=['accuracy', keras.metrics.TopKCategoricalAccuracy()])
return model
-
2、开始模型的训练
3、模型训练结束之后,生成权重后,使用预测脚本去预测图片类别
#加载图片和类别
def start_example():
# load the image
img = load_image('./0_100.jpg')
# load model
model = tf.keras.models.load_model('./fruits_model20230301.h5')
# load label_names
data_loading = load_files(test_dir)
target_labels = np.array(data_loading['target_names'])
print(target_labels)
# print("target labels size: ", len(target_labels)) #131
# predict the class
fruit = model.predict_classes(img)
print(fruit)
print('predicted fruit: {0}, {1} '.format(
fruit[0], target_labels[fruit[0]]))
start_example()
- 3、具体的预测结果如下:
-
-
4、开始搭建前后端页面,使用技术为flask,搭建的框架如下图所示:
-
5开始启动本地Server后,进入Web页面,可进行图片检测
- 6、模型训练过程中的epoch的TensorBoard结果展示图如下所示:
本篇是基于深度学习水果分类搭建的系统,对图像分类以及前后端学习较大指导意义。如果本篇对您有帮助,关注下博主。需要具体源码或者系统以及技术交流可以邮箱联系:sessioncookies@163.com。
版权声明:本文为zhangxing6666原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。