Ce projet vise à la classification des lésions cutanées à l’aide de l’apprentissage en profondeur et à la création d’une application flottante pour faciliter la même chose pour le grand public.
Base de données
Méthodologie
Analyse EDA de l’ensemble de données Pré-traitement Création d’une ligne de base et utilisation de modèles pré-entraînés Réglage fin Assemblage des 2 meilleurs modèles Test et choix du meilleur
Créer une application en flutter
Problème technique
Tous les ordinateurs portables utilisant Keras 2.2.4 et Tensorflow 1.11. La couche Batch-Norm dans cette version de Keras est implémentée de manière à ce que : pendant la formation, votre réseau utilise toujours les statistiques du mini-lot, que la couche BN soit gelée ou non ; également lors de l’inférence, vous utiliserez les statistiques précédemment apprises des couches BN gelées. Par conséquent, si vous affinez les couches supérieures, leurs poids seront ajustés à la moyenne/variance du nouvel ensemble de données. Néanmoins, lors de l’inférence, ils recevront des données qui sont mises à l’échelle différemment car la moyenne/variance de l’ensemble de données d’origine sera utilisée. Par conséquent, si vous utilisez les exemples de codes de Keras pour affiner Inception V3 ou tout réseau avec une couche de norme par lots, les résultats seront très mauvais. Veuillez vous référer au problème #9965 et #9214. Une solution temporaire est :
for layer in pre_trained_model.layers:
if hasattr(layer, 'moving_mean') and hasattr(layer, 'moving_variance'):
layer.trainable = True
K.eval(K.update(layer.moving_mean, K.zeros_like(layer.moving_mean)))
K.eval(K.update(layer.moving_variance, K.zeros_like(layer.moving_variance)))
else:
layer.trainable = False
Résultats
Des modèles | Validation | Test | Profondeur | # paramètres |
---|---|---|---|---|
Ligne de base | 77,48% | 76,54 % | 11 couches | 2 124 839 |
VGG16 affiné (du dernier bloc) | 79,82 % | 79,64 % | 23 couches | 14 980 935 |
Inception V3 affiné (à partir des 2 derniers blocs d’inception) | 79.935% | 79,94 % | 315 couches | 22 855 463 |
Inception-ResNet V2 affiné (depuis Inception-ResNet-C) | 80,82 % | 82,53% | 784 couches | 55 127 271 |
DenseNet 201 affiné (à partir du dernier bloc dense) | 85,8 % | 83,9 % | 711 couches | 19 309 127 |
Inception V3 affiné (toutes les couches) | 86,92 % | 86,826% | _ | _ |
DenseNet 201 optimisé (toutes les couches) | 86,696% | 87,725% | _ | _ |
Ensemble d’Inception V3 et de DenseNet 201 entièrement optimisés | 88,8 % | 88,52 % | _ | _ |
L’interface
L’ensemble de données
GitHub
Voir Github