本文讲述从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'))
opt = SGD(lr=0.01, momentum=0.9)
model.compile(optimizer=opt, loss='categorical_crossentropy',
metrics=['accuracy', keras.metrics.TopKCategoricalAccuracy()])
return model
- 2、开始模型的训练
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/a52e7768a6f020e9d026898522a62bda.png)
3、模型训练结束之后,生成权重后,使用预测脚本去预测图片类别
def start_example():
img = load_image('./0_100.jpg')
model = tf.keras.models.load_model('./fruits_model20230301.h5')
data_loading = load_files(test_dir)
target_labels = np.array(data_loading['target_names'])
print(target_labels)
fruit = model.predict_classes(img)
print(fruit)
print('predicted fruit: {0}, {1} '.format(
fruit[0], target_labels[fruit[0]]))
start_example()
- 3、具体的预测结果如下:
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/e09db8c9acaffc2375f5aeac2494dcbe.png)
- 4、开始搭建前后端页面,使用技术为flask,搭建的框架如下图所示:
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/1f9bb7824853179211e141e25a2e83ce.png)
- 5开始启动本地Server后,进入Web页面,可进行图片检测
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/98e441a7e5e3ccecfe6b2497d757a73a.png)
- 6、模型训练过程中的epoch的TensorBoard结果展示图如下所示:
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/0ec8a5dd79161dbf27e3490ebd4ba3d6.png)
本篇是基于深度学习水果分类搭建的系统,对图像分类以及前后端学习较大指导意义。如果本篇对您有帮助,关注下博主。需要具体源码或者系统以及技术交流可以邮箱联系:sessioncookies@163.com。