加入收藏 | 设为首页 | 会员中心 | 我要投稿 威海站长网 (https://www.0631zz.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 运营中心 > 建站资源 > 优化 > 正文

使用深度学习检测疟疾

发布时间:2019-05-25 06:42:32 所属栏目:优化 来源:Dipanjan (dj) Sarkar
导读:人工智能结合开源硬件工具能够提升严重传染病疟疾的诊断。 人工智能(AI)和开源工具、技术和框架是促进社会进步的强有力的结合。健康就是财富可能有点陈词滥调,但它却是非常准确的!在本篇文章,我们将测试 AI 是如何与低成本、有效、精确的开源深度学习

我们不会对我们的验证数据集应用任何转换(除非是调整大小,因为这是必须的),因为我们将使用它评估每个纪元的模型性能。对于在传输学习环境中的图像增强的详细解释,请随时查看我上面引用的文章。让我们从一批图像增强转换中查看一些样本结果。

  1. img_id = 0
  2. sample_generator = train_datagen.flow(train_data[img_id:img_id+1], train_labels[img_id:img_id+1],
  3. batch_size=1)
  4. sample = [next(sample_generator) for i in range(0,5)]
  5. fig, ax = plt.subplots(1,5, figsize=(16, 6))
  6. print('Labels:', [item[1][0] for item in sample])
  7. l = [ax[i].imshow(sample[i][0][0]) for i in range(0,5)]

使用深度学习检测疟疾

Sample augmented images

你可以清晰的看到与之前的输出的我们图像的轻微变化。我们现在构建我们的学习模型,确保 VGG-19 模型的最后两块是可以训练的。

  1. vgg = tf.keras.applications.vgg19.VGG19(include_top=False, weights='imagenet',
  2. input_shape=INPUT_SHAPE)
  3. # Freeze the layers
  4. vgg.trainable = True
  5.  
  6. set_trainable = False
  7. for layer in vgg.layers:
  8. if layer.name in ['block5_conv1', 'block4_conv1']:
  9. set_trainable = True
  10. if set_trainable:
  11. layer.trainable = True
  12. else:
  13. layer.trainable = False
  14. base_vgg = vgg
  15. base_out = base_vgg.output
  16. pool_out = tf.keras.layers.Flatten()(base_out)
  17. hidden1 = tf.keras.layers.Dense(512, activation='relu')(pool_out)
  18. drop1 = tf.keras.layers.Dropout(rate=0.3)(hidden1)
  19. hidden2 = tf.keras.layers.Dense(512, activation='relu')(drop1)
  20. drop2 = tf.keras.layers.Dropout(rate=0.3)(hidden2)
  21.  
  22. out = tf.keras.layers.Dense(1, activation='sigmoid')(drop2)
  23.  
  24. model = tf.keras.Model(inputs=base_vgg.input, outputs=out)
  25. model.compile(optimizer=tf.keras.optimizers.RMSprop(lr=1e-5),
  26. loss='binary_crossentropy',
  27. metrics=['accuracy'])
  28.  
  29. print("Total Layers:", len(model.layers))
  30. print("Total trainable layers:", sum([1 for l in model.layers if l.trainable]))
  31.  
  32.  
  33. # Output
  34. Total Layers: 28
  35. Total trainable layers: 16

在我们的模型中我们降低了学习率,因为我们不想在微调的时候对预训练的层做大的位权更新。模型的训练过程可能有轻微的不同,因为我们使用了数据生成器,因此我们将应用 fit_generator(...) 函数。

  1. tensorboard_callback = tf.keras.callbacks.TensorBoard(logdir, histogram_freq=1)
  2. reduce_lr = tf.keras.callbacks.ReduceLROnPlateau(monitor='val_loss', factor=0.5,
  3. patience=2, min_lr=0.000001)
  4.  
  5. callbacks = [reduce_lr, tensorboard_callback]
  6. train_steps_per_epoch = train_generator.n // train_generator.batch_size
  7. val_steps_per_epoch = val_generator.n // val_generator.batch_size
  8. history = model.fit_generator(train_generator, steps_per_epoch=train_steps_per_epoch, epochs=EPOCHS,
  9. validation_data=val_generator, validation_steps=val_steps_per_epoch,
  10. verbose=1)
  11.  
  12.  
  13. # Output
  14. Epoch 1/25
  15. 271/271 [====] - 133s 489ms/step - loss: 0.2267 - accuracy: 0.9117 - val_loss: 0.1414 - val_accuracy: 0.9531
  16. Epoch 2/25
  17. 271/271 [====] - 129s 475ms/step - loss: 0.1399 - accuracy: 0.9552 - val_loss: 0.1292 - val_accuracy: 0.9589
  18. ...
  19. ...
  20. Epoch 24/25
  21. 271/271 [====] - 128s 473ms/step - loss: 0.0815 - accuracy: 0.9727 - val_loss: 0.1466 - val_accuracy: 0.9682
  22. Epoch 25/25
  23. 271/271 [====] - 128s 473ms/step - loss: 0.0792 - accuracy: 0.9729 - val_loss: 0.1127 - val_accuracy: 0.9641

(编辑:威海站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读