第一步:准备数据

3种水果成熟度数据:青红黄,总共有735张图片,每个文件夹单独放一种成熟度数据

14b4aee58392bf1b3031f18df2b6c258.png

第二步:搭建模型

本文选择一个简单cnn网络,其网络结构如下:

Model: "model_1"
_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
input_1 (InputLayer)         (None, 80, 128, 3)        0         
_________________________________________________________________
conv0 (Conv2D)               (None, 26, 42, 32)        896       
_________________________________________________________________
dropout_1 (Dropout)          (None, 26, 42, 32)        0         
_________________________________________________________________
bn0 (BatchNormalization)     (None, 26, 42, 32)        128       
_________________________________________________________________
activation_1 (Activation)    (None, 26, 42, 32)        0         
_________________________________________________________________
max_pool_1 (MaxPooling2D)    (None, 13, 21, 32)        0         
_________________________________________________________________
conv1 (Conv2D)               (None, 4, 7, 4)           1156      
_________________________________________________________________
dropout_2 (Dropout)          (None, 4, 7, 4)           0         
_________________________________________________________________
bn1 (BatchNormalization)     (None, 4, 7, 4)           16        
_________________________________________________________________
activation_2 (Activation)    (None, 4, 7, 4)           0         
_________________________________________________________________
max_pool_2 (MaxPooling2D)    (None, 2, 3, 4)           0         
_________________________________________________________________
flatten_1 (Flatten)          (None, 24)                0         
_________________________________________________________________
dense (Dense)                (None, 3)                 75        
=================================================================
Total params: 2,271
Trainable params: 2,199
Non-trainable params: 72

第三步:训练代码

1)损失函数为:交叉熵损失函数

2)训练代码:

    model.fit_generator(generate_arrays_from_file(lines[:num_train], batch_size, IMG_H, IMG_W),
                        steps_per_epoch=max(1, num_train // batch_size),
                        validation_data=generate_arrays_from_file(lines[num_train:], batch_size, IMG_H, IMG_W, flag=False),
                        validation_steps=max(1, num_val // batch_size),
                        epochs=100,
                        initial_epoch=0,
                        class_weight='auto',
                        callbacks=[checkpoint_period1, reduce_lr, early_stopping, csv_logger])
    model.save_weights(log_dir + 'last1.h5')

第四步:统计正确率

HappyModel_model_logep037-accuracy0.890-val_accuracy0.938.h5正确率高达93.8%

第五步:搭建GUI界面

83592ea35ca5d08132f1c33e334b073e.png

第六步:整个工程的内容

有训练代码和训练好的模型以及训练过程,提供数据,提供GUI界面代码,主要使用方法可以参考里面的“文档说明_必看.docx”

a53a922c912d13b77de96a298adbe263.png

fd45c4c71ec919a1986ef6e9367102ab.png

项目源码下载:

项目源码下载地址:关注WX【AI街潜水的八角】,回复【keras水果成熟度识别】即可下载

整套项目源码内容包含

有训练代码和训练好的模型以及训练过程,提供数据,提供GUI界面代码

更多推荐