Skip to content
Thomas Behan edited this page Apr 15, 2024 · 10 revisions

GitHub stars GitHub forks GitHub issues

Welcome to the SkinVestigatorAI wiki! This wiki provides an overview of the project, its components, and the underlying technology.

Table of Contents

  1. Mission
  2. Dataset
  3. Model
  4. Training Process
  5. Performance

Mission

To leverage the power of artificial intelligence to improve early detection and diagnosis of skin cancer. We believe that by providing a user-friendly, accurate, and reliable tool for medical professionals, we can help save lives and foster increased interest in using AI to solve complex medical problems.

Dataset

The DataScraper tool within this application is designed to download and preprocess skin lesion images. The M-3.1 dataset is 44,599 images.

Data Source

The dataset used for training the model is sourced from the International Skin Imaging Collaboration (ISIC) Archive. The ISIC Archive is a large-scale resource for skin image analysis, providing open access to a wide variety of images for the development and evaluation of automated diagnostic systems.

For more information about the ISIC Archive and to access the data, visit ISIC Archive.

Data Organization

The images are organized into three folders:

  1. data/train: Contains all images, which are used for training the model.
  2. Uses Stratified K-Fold for generating a validation and test dataset.

Model

The SVModel model employs a sophisticated deep learning architecture based on resnet50 but tailored for skin lesion classification.

Model Summary

   __________________________________________________________________________________________________
    Layer (type)                   Output Shape         Param Count   Connected to
   ==================================================================================================
    input_1 (InputLayer)           [(None, 150, 150, 3  0           []
                                   )]
   
    conv1_pad (ZeroPadding2D)      (None, 156, 156, 3)  0           ['input_1[0][0]']
   
    conv1_conv (Conv2D)            (None, 75, 75, 64)   9472        ['conv1_pad[0][0]']
   
    conv1_bn (BatchNormalization)  (None, 75, 75, 64)   256         ['conv1_conv[0][0]']
   
    conv1_relu (Activation)        (None, 75, 75, 64)   0           ['conv1_bn[0][0]']
   
    pool1_pad (ZeroPadding2D)      (None, 77, 77, 64)   0           ['conv1_relu[0][0]']
   
    pool1_pool (MaxPooling2D)      (None, 38, 38, 64)   0           ['pool1_pad[0][0]']
   
    conv2_block1_1_conv (Conv2D)   (None, 38, 38, 64)   4160        ['pool1_pool[0][0]']
   
    conv2_block1_1_bn (BatchNormal  (None, 38, 38, 64)  256         ['conv2_block1_1_conv[0][0]']
    ization)
   
    conv2_block1_1_relu (Activatio  (None, 38, 38, 64)  0           ['conv2_block1_1_bn[0][0]']
    n)
   
    conv2_block1_2_conv (Conv2D)   (None, 38, 38, 64)   36928       ['conv2_block1_1_relu[0][0]']
   
    conv2_block1_2_bn (BatchNormal  (None, 38, 38, 64)  256         ['conv2_block1_2_conv[0][0]']
    ization)
   
    conv2_block1_2_relu (Activatio  (None, 38, 38, 64)  0           ['conv2_block1_2_bn[0][0]']
    n)
   
    conv2_block1_0_conv (Conv2D)   (None, 38, 38, 256)  16640       ['pool1_pool[0][0]']
   
    conv2_block1_3_conv (Conv2D)   (None, 38, 38, 256)  16640       ['conv2_block1_2_relu[0][0]']
   
    conv2_block1_0_bn (BatchNormal  (None, 38, 38, 256)  1024       ['conv2_block1_0_conv[0][0]']
    ization)
   
    conv2_block1_3_bn (BatchNormal  (None, 38, 38, 256)  1024       ['conv2_block1_3_conv[0][0]']
    ization)
   
    conv2_block1_add (Add)         (None, 38, 38, 256)  0           ['conv2_block1_0_bn[0][0]',
                                                                     'conv2_block1_3_bn[0][0]']
   
    conv2_block1_out (Activation)  (None, 38, 38, 256)  0           ['conv2_block1_add[0][0]']
   
    conv2_block2_1_conv (Conv2D)   (None, 38, 38, 64)   16448       ['conv2_block1_out[0][0]']
   
    conv2_block2_1_bn (BatchNormal  (None, 38, 38, 64)  256         ['conv2_block2_1_conv[0][0]']
    ization)
   
    conv2_block2_1_relu (Activatio  (None, 38, 38, 64)  0           ['conv2_block2_1_bn[0][0]']
    n)
   
    conv2_block2_2_conv (Conv2D)   (None, 38, 38, 64)   36928       ['conv2_block2_1_relu[0][0]']
   
    conv2_block2_2_bn (BatchNormal  (None, 38, 38, 64)  256         ['conv2_block2_2_conv[0][0]']
    ization)
   
    conv2_block2_2_relu (Activatio  (None, 38, 38, 64)  0           ['conv2_block2_2_bn[0][0]']
    n)
   
    conv2_block2_3_conv (Conv2D)   (None, 38, 38, 256)  16640       ['conv2_block2_2_relu[0][0]']
   
    conv2_block2_3_bn (BatchNormal  (None, 38, 38, 256)  1024       ['conv2_block2_3_conv[0][0]']
    ization)
   
    conv2_block2_add (Add)         (None, 38, 38, 256)  0           ['conv2_block1_out[0][0]',
                                                                     'conv2_block2_3_bn[0][0]']
   
    conv2_block2_out (Activation)  (None, 38, 38, 256)  0           ['conv2_block2_add[0][0]']
   
    conv2_block3_1_conv (Conv2D)   (None, 38, 38, 64)   16448       ['conv2_block2_out[0][0]']
   
    conv2_block3_1_bn (BatchNormal  (None, 38, 38, 64)  256         ['conv2_block3_1_conv[0][0]']
    ization)
   
    conv2_block3_1_relu (Activatio  (None, 38, 38, 64)  0           ['conv2_block3_1_bn[0][0]']
    n)
   
    conv2_block3_2_conv (Conv2D)   (None, 38, 38, 64)   36928       ['conv2_block3_1_relu[0][0]']
   
    conv2_block3_2_bn (BatchNormal  (None, 38, 38, 64)  256         ['conv2_block3_2_conv[0][0]']
    ization)
   
    conv2_block3_2_relu (Activatio  (None, 38, 38, 64)  0           ['conv2_block3_2_bn[0][0]']
    n)
   
    conv2_block3_3_conv (Conv2D)   (None, 38, 38, 256)  16640       ['conv2_block3_2_relu[0][0]']
   
    conv2_block3_3_bn (BatchNormal  (None, 38, 38, 256)  1024       ['conv2_block3_3_conv[0][0]']
    ization)
   
    conv2_block3_add (Add)         (None, 38, 38, 256)  0           ['conv2_block2_out[0][0]',
                                                                     'conv2_block3_3_bn[0][0]']
   
    conv2_block3_out (Activation)  (None, 38, 38, 256)  0           ['conv2_block3_add[0][0]']
   
    conv3_block1_1_conv (Conv2D)   (None, 19, 19, 128)  32896       ['conv2_block3_out[0][0]']
   
    conv3_block1_1_bn (BatchNormal  (None, 19, 19, 128)  512        ['conv3_block1_1_conv[0][0]']
    ization)
   
    conv3_block1_1_relu (Activatio  (None, 19, 19, 128)  0          ['conv3_block1_1_bn[0][0]']
    n)
   
    conv3_block1_2_conv (Conv2D)   (None, 19, 19, 128)  147584      ['conv3_block1_1_relu[0][0]']
   
    conv3_block1_2_bn (BatchNormal  (None, 19, 19, 128)  512        ['conv3_block1_2_conv[0][0]']
    ization)
   
    conv3_block1_2_relu (Activatio  (None, 19, 19, 128)  0          ['conv3_block1_2_bn[0][0]']
    n)
   
    conv3_block1_0_conv (Conv2D)   (None, 19, 19, 512)  131584      ['conv2_block3_out[0][0]']
   
    conv3_block1_3_conv (Conv2D)   (None, 19, 19, 512)  66048       ['conv3_block1_2_relu[0][0]']
   
    conv3_block1_0_bn (BatchNormal  (None, 19, 19, 512)  2048       ['conv3_block1_0_conv[0][0]']
    ization)
   
    conv3_block1_3_bn (BatchNormal  (None, 19, 19, 512)  2048       ['conv3_block1_3_conv[0][0]']
    ization)
   
    conv3_block1_add (Add)         (None, 19, 19, 512)  0           ['conv3_block1_0_bn[0][0]',
                                                                     'conv3_block1_3_bn[0][0]']
   
    conv3_block1_out (Activation)  (None, 19, 19, 512)  0           ['conv3_block1_add[0][0]']
   
    conv3_block2_1_conv (Conv2D)   (None, 19, 19, 128)  65664       ['conv3_block1_out[0][0]']
   
    conv3_block2_1_bn (BatchNormal  (None, 19, 19, 128)  512        ['conv3_block2_1_conv[0][0]']
    ization)
   
    conv3_block2_1_relu (Activatio  (None, 19, 19, 128)  0          ['conv3_block2_1_bn[0][0]']
    n)
   
    conv3_block2_2_conv (Conv2D)   (None, 19, 19, 128)  147584      ['conv3_block2_1_relu[0][0]']
   
    conv3_block2_2_bn (BatchNormal  (None, 19, 19, 128)  512        ['conv3_block2_2_conv[0][0]']
    ization)
   
    conv3_block2_2_relu (Activatio  (None, 19, 19, 128)  0          ['conv3_block2_2_bn[0][0]']
    n)
   
    conv3_block2_3_conv (Conv2D)   (None, 19, 19, 512)  66048       ['conv3_block2_2_relu[0][0]']
   
    conv3_block2_3_bn (BatchNormal  (None, 19, 19, 512)  2048       ['conv3_block2_3_conv[0][0]']
    ization)
   
    conv3_block2_add (Add)         (None, 19, 19, 512)  0           ['conv3_block1_out[0][0]',
                                                                     'conv3_block2_3_bn[0][0]']
   
    conv3_block2_out (Activation)  (None, 19, 19, 512)  0           ['conv3_block2_add[0][0]']
   
    conv3_block3_1_conv (Conv2D)   (None, 19, 19, 128)  65664       ['conv3_block2_out[0][0]']
   
    conv3_block3_1_bn (BatchNormal  (None, 19, 19, 128)  512        ['conv3_block3_1_conv[0][0]']
    ization)
   
    conv3_block3_1_relu (Activatio  (None, 19, 19, 128)  0          ['conv3_block3_1_bn[0][0]']
    n)
   
    conv3_block3_2_conv (Conv2D)   (None, 19, 19, 128)  147584      ['conv3_block3_1_relu[0][0]']
   
    conv3_block3_2_bn (BatchNormal  (None, 19, 19, 128)  512        ['conv3_block3_2_conv[0][0]']
    ization)
   
    conv3_block3_2_relu (Activatio  (None, 19, 19, 128)  0          ['conv3_block3_2_bn[0][0]']
    n)
   
    conv3_block3_3_conv (Conv2D)   (None, 19, 19, 512)  66048       ['conv3_block3_2_relu[0][0]']
   
    conv3_block3_3_bn (BatchNormal  (None, 19, 19, 512)  2048       ['conv3_block3_3_conv[0][0]']
    ization)
   
    conv3_block3_add (Add)         (None, 19, 19, 512)  0           ['conv3_block2_out[0][0]',
                                                                     'conv3_block3_3_bn[0][0]']
   
    conv3_block3_out (Activation)  (None, 19, 19, 512)  0           ['conv3_block3_add[0][0]']
   
    conv3_block4_1_conv (Conv2D)   (None, 19, 19, 128)  65664       ['conv3_block3_out[0][0]']
   
    conv3_block4_1_bn (BatchNormal  (None, 19, 19, 128)  512        ['conv3_block4_1_conv[0][0]']
    ization)
   
    conv3_block4_1_relu (Activatio  (None, 19, 19, 128)  0          ['conv3_block4_1_bn[0][0]']
    n)
   
    conv3_block4_2_conv (Conv2D)   (None, 19, 19, 128)  147584      ['conv3_block4_1_relu[0][0]']
   
    conv3_block4_2_bn (BatchNormal  (None, 19, 19, 128)  512        ['conv3_block4_2_conv[0][0]']
    ization)
   
    conv3_block4_2_relu (Activatio  (None, 19, 19, 128)  0          ['conv3_block4_2_bn[0][0]']
    n)
   
    conv3_block4_3_conv (Conv2D)   (None, 19, 19, 512)  66048       ['conv3_block4_2_relu[0][0]']
   
    conv3_block4_3_bn (BatchNormal  (None, 19, 19, 512)  2048       ['conv3_block4_3_conv[0][0]']
    ization)
   
    conv3_block4_add (Add)         (None, 19, 19, 512)  0           ['conv3_block3_out[0][0]',
                                                                     'conv3_block4_3_bn[0][0]']
   
    conv3_block4_out (Activation)  (None, 19, 19, 512)  0           ['conv3_block4_add[0][0]']
   
    conv4_block1_1_conv (Conv2D)   (None, 10, 10, 256)  131328      ['conv3_block4_out[0][0]']
   
    conv4_block1_1_bn (BatchNormal  (None, 10, 10, 256)  1024       ['conv4_block1_1_conv[0][0]']
    ization)
   
    conv4_block1_1_relu (Activatio  (None, 10, 10, 256)  0          ['conv4_block1_1_bn[0][0]']
    n)
   
    conv4_block1_2_conv (Conv2D)   (None, 10, 10, 256)  590080      ['conv4_block1_1_relu[0][0]']
   
    conv4_block1_2_bn (BatchNormal  (None, 10, 10, 256)  1024       ['conv4_block1_2_conv[0][0]']
    ization)
   
    conv4_block1_2_relu (Activatio  (None, 10, 10, 256)  0          ['conv4_block1_2_bn[0][0]']
    n)
   
    conv4_block1_0_conv (Conv2D)   (None, 10, 10, 1024  525312      ['conv3_block4_out[0][0]']
                                   )
   
    conv4_block1_3_conv (Conv2D)   (None, 10, 10, 1024  263168      ['conv4_block1_2_relu[0][0]']
                                   )
   
    conv4_block1_0_bn (BatchNormal  (None, 10, 10, 1024  4096       ['conv4_block1_0_conv[0][0]']
    ization)                       )
   
    conv4_block1_3_bn (BatchNormal  (None, 10, 10, 1024  4096       ['conv4_block1_3_conv[0][0]']
    ization)                       )
   
    conv4_block1_add (Add)         (None, 10, 10, 1024  0           ['conv4_block1_0_bn[0][0]',
                                   )                                 'conv4_block1_3_bn[0][0]']
   
    conv4_block1_out (Activation)  (None, 10, 10, 1024  0           ['conv4_block1_add[0][0]']
                                   )
   
    conv4_block2_1_conv (Conv2D)   (None, 10, 10, 256)  262400      ['conv4_block1_out[0][0]']
   
    conv4_block2_1_bn (BatchNormal  (None, 10, 10, 256)  1024       ['conv4_block2_1_conv[0][0]']
    ization)
   
    conv4_block2_1_relu (Activatio  (None, 10, 10, 256)  0          ['conv4_block2_1_bn[0][0]']
    n)
   
    conv4_block2_2_conv (Conv2D)   (None, 10, 10, 256)  590080      ['conv4_block2_1_relu[0][0]']
   
    conv4_block2_2_bn (BatchNormal  (None, 10, 10, 256)  1024       ['conv4_block2_2_conv[0][0]']
    ization)
   
    conv4_block2_2_relu (Activatio  (None, 10, 10, 256)  0          ['conv4_block2_2_bn[0][0]']
    n)
   
    conv4_block2_3_conv (Conv2D)   (None, 10, 10, 1024  263168      ['conv4_block2_2_relu[0][0]']
                                   )
   
    conv4_block2_3_bn (BatchNormal  (None, 10, 10, 1024  4096       ['conv4_block2_3_conv[0][0]']
    ization)                       )
   
    conv4_block2_add (Add)         (None, 10, 10, 1024  0           ['conv4_block1_out[0][0]',
                                   )                                 'conv4_block2_3_bn[0][0]']
   
    conv4_block2_out (Activation)  (None, 10, 10, 1024  0           ['conv4_block2_add[0][0]']
                                   )
   
    conv4_block3_1_conv (Conv2D)   (None, 10, 10, 256)  262400      ['conv4_block2_out[0][0]']
   
    conv4_block3_1_bn (BatchNormal  (None, 10, 10, 256)  1024       ['conv4_block3_1_conv[0][0]']
    ization)
   
    conv4_block3_1_relu (Activatio  (None, 10, 10, 256)  0          ['conv4_block3_1_bn[0][0]']
    n)
   
    conv4_block3_2_conv (Conv2D)   (None, 10, 10, 256)  590080      ['conv4_block3_1_relu[0][0]']
   
    conv4_block3_2_bn (BatchNormal  (None, 10, 10, 256)  1024       ['conv4_block3_2_conv[0][0]']
    ization)
   
    conv4_block3_2_relu (Activatio  (None, 10, 10, 256)  0          ['conv4_block3_2_bn[0][0]']
    n)
   
    conv4_block3_3_conv (Conv2D)   (None, 10, 10, 1024  263168      ['conv4_block3_2_relu[0][0]']
                                   )
   
    conv4_block3_3_bn (BatchNormal  (None, 10, 10, 1024  4096       ['conv4_block3_3_conv[0][0]']
    ization)                       )
   
    conv4_block3_add (Add)         (None, 10, 10, 1024  0           ['conv4_block2_out[0][0]',
                                   )                                 'conv4_block3_3_bn[0][0]']
   
    conv4_block3_out (Activation)  (None, 10, 10, 1024  0           ['conv4_block3_add[0][0]']
                                   )
   
    conv4_block4_1_conv (Conv2D)   (None, 10, 10, 256)  262400      ['conv4_block3_out[0][0]']
   
    conv4_block4_1_bn (BatchNormal  (None, 10, 10, 256)  1024       ['conv4_block4_1_conv[0][0]']
    ization)
   
    conv4_block4_1_relu (Activatio  (None, 10, 10, 256)  0          ['conv4_block4_1_bn[0][0]']
    n)
   
    conv4_block4_2_conv (Conv2D)   (None, 10, 10, 256)  590080      ['conv4_block4_1_relu[0][0]']
   
    conv4_block4_2_bn (BatchNormal  (None, 10, 10, 256)  1024       ['conv4_block4_2_conv[0][0]']
    ization)
   
    conv4_block4_2_relu (Activatio  (None, 10, 10, 256)  0          ['conv4_block4_2_bn[0][0]']
    n)
   
    conv4_block4_3_conv (Conv2D)   (None, 10, 10, 1024  263168      ['conv4_block4_2_relu[0][0]']
                                   )
   
    conv4_block4_3_bn (BatchNormal  (None, 10, 10, 1024  4096       ['conv4_block4_3_conv[0][0]']
    ization)                       )
   
    conv4_block4_add (Add)         (None, 10, 10, 1024  0           ['conv4_block3_out[0][0]',
                                   )                                 'conv4_block4_3_bn[0][0]']
   
    conv4_block4_out (Activation)  (None, 10, 10, 1024  0           ['conv4_block4_add[0][0]']
                                   )
   
    conv4_block5_1_conv (Conv2D)   (None, 10, 10, 256)  262400      ['conv4_block4_out[0][0]']
   
    conv4_block5_1_bn (BatchNormal  (None, 10, 10, 256)  1024       ['conv4_block5_1_conv[0][0]']
    ization)
   
    conv4_block5_1_relu (Activatio  (None, 10, 10, 256)  0          ['conv4_block5_1_bn[0][0]']
    n)
   
    conv4_block5_2_conv (Conv2D)   (None, 10, 10, 256)  590080      ['conv4_block5_1_relu[0][0]']
   
    conv4_block5_2_bn (BatchNormal  (None, 10, 10, 256)  1024       ['conv4_block5_2_conv[0][0]']
    ization)
   
    conv4_block5_2_relu (Activatio  (None, 10, 10, 256)  0          ['conv4_block5_2_bn[0][0]']
    n)
   
    conv4_block5_3_conv (Conv2D)   (None, 10, 10, 1024  263168      ['conv4_block5_2_relu[0][0]']
                                   )
   
    conv4_block5_3_bn (BatchNormal  (None, 10, 10, 1024  4096       ['conv4_block5_3_conv[0][0]']
    ization)                       )
   
    conv4_block5_add (Add)         (None, 10, 10, 1024  0           ['conv4_block4_out[0][0]',
                                   )                                 'conv4_block5_3_bn[0][0]']
   
    conv4_block5_out (Activation)  (None, 10, 10, 1024  0           ['conv4_block5_add[0][0]']
                                   )
   
    conv4_block6_1_conv (Conv2D)   (None, 10, 10, 256)  262400      ['conv4_block5_out[0][0]']
   
    conv4_block6_1_bn (BatchNormal  (None, 10, 10, 256)  1024       ['conv4_block6_1_conv[0][0]']
    ization)
   
    conv4_block6_1_relu (Activatio  (None, 10, 10, 256)  0          ['conv4_block6_1_bn[0][0]']
    n)
   
    conv4_block6_2_conv (Conv2D)   (None, 10, 10, 256)  590080      ['conv4_block6_1_relu[0][0]']
   
    conv4_block6_2_bn (BatchNormal  (None, 10, 10, 256)  1024       ['conv4_block6_2_conv[0][0]']
    ization)
   
    conv4_block6_2_relu (Activatio  (None, 10, 10, 256)  0          ['conv4_block6_2_bn[0][0]']
    n)
   
    conv4_block6_3_conv (Conv2D)   (None, 10, 10, 1024  263168      ['conv4_block6_2_relu[0][0]']
                                   )
   
    conv4_block6_3_bn (BatchNormal  (None, 10, 10, 1024  4096       ['conv4_block6_3_conv[0][0]']
    ization)                       )
   
    conv4_block6_add (Add)         (None, 10, 10, 1024  0           ['conv4_block5_out[0][0]',
                                   )                                 'conv4_block6_3_bn[0][0]']
   
    conv4_block6_out (Activation)  (None, 10, 10, 1024  0           ['conv4_block6_add[0][0]']
                                   )
   
    conv5_block1_1_conv (Conv2D)   (None, 5, 5, 512)    524800      ['conv4_block6_out[0][0]']
   
    conv5_block1_1_bn (BatchNormal  (None, 5, 5, 512)   2048        ['conv5_block1_1_conv[0][0]']
    ization)
   
    conv5_block1_1_relu (Activatio  (None, 5, 5, 512)   0           ['conv5_block1_1_bn[0][0]']
    n)
   
    conv5_block1_2_conv (Conv2D)   (None, 5, 5, 512)    2359808     ['conv5_block1_1_relu[0][0]']
   
    conv5_block1_2_bn (BatchNormal  (None, 5, 5, 512)   2048        ['conv5_block1_2_conv[0][0]']
    ization)
   
    conv5_block1_2_relu (Activatio  (None, 5, 5, 512)   0           ['conv5_block1_2_bn[0][0]']
    n)
   
    conv5_block1_0_conv (Conv2D)   (None, 5, 5, 2048)   2099200     ['conv4_block6_out[0][0]']
   
    conv5_block1_3_conv (Conv2D)   (None, 5, 5, 2048)   1050624     ['conv5_block1_2_relu[0][0]']
   
    conv5_block1_0_bn (BatchNormal  (None, 5, 5, 2048)  8192        ['conv5_block1_0_conv[0][0]']
    ization)
   
    conv5_block1_3_bn (BatchNormal  (None, 5, 5, 2048)  8192        ['conv5_block1_3_conv[0][0]']
    ization)
   
    conv5_block1_add (Add)         (None, 5, 5, 2048)   0           ['conv5_block1_0_bn[0][0]',
                                                                     'conv5_block1_3_bn[0][0]']
   
    conv5_block1_out (Activation)  (None, 5, 5, 2048)   0           ['conv5_block1_add[0][0]']
   
    conv5_block2_1_conv (Conv2D)   (None, 5, 5, 512)    1049088     ['conv5_block1_out[0][0]']
   
    conv5_block2_1_bn (BatchNormal  (None, 5, 5, 512)   2048        ['conv5_block2_1_conv[0][0]']
    ization)
   
    conv5_block2_1_relu (Activatio  (None, 5, 5, 512)   0           ['conv5_block2_1_bn[0][0]']
    n)
   
    conv5_block2_2_conv (Conv2D)   (None, 5, 5, 512)    2359808     ['conv5_block2_1_relu[0][0]']
   
    conv5_block2_2_bn (BatchNormal  (None, 5, 5, 512)   2048        ['conv5_block2_2_conv[0][0]']
    ization)
   
    conv5_block2_2_relu (Activatio  (None, 5, 5, 512)   0           ['conv5_block2_2_bn[0][0]']
    n)
   
    conv5_block2_3_conv (Conv2D)   (None, 5, 5, 2048)   1050624     ['conv5_block2_2_relu[0][0]']
   
    conv5_block2_3_bn (BatchNormal  (None, 5, 5, 2048)  8192        ['conv5_block2_3_conv[0][0]']
    ization)
   
    conv5_block2_add (Add)         (None, 5, 5, 2048)   0           ['conv5_block1_out[0][0]',
                                                                     'conv5_block2_3_bn[0][0]']
   
    conv5_block2_out (Activation)  (None, 5, 5, 2048)   0           ['conv5_block2_add[0][0]']
   
    conv5_block3_1_conv (Conv2D)   (None, 5, 5, 512)    1049088     ['conv5_block2_out[0][0]']
   
    conv5_block3_1_bn (BatchNormal  (None, 5, 5, 512)   2048        ['conv5_block3_1_conv[0][0]']
    ization)
   
    conv5_block3_1_relu (Activatio  (None, 5, 5, 512)   0           ['conv5_block3_1_bn[0][0]']
    n)
   
    conv5_block3_2_conv (Conv2D)   (None, 5, 5, 512)    2359808     ['conv5_block3_1_relu[0][0]']
   
    conv5_block3_2_bn (BatchNormal  (None, 5, 5, 512)   2048        ['conv5_block3_2_conv[0][0]']
    ization)
   
    conv5_block3_2_relu (Activatio  (None, 5, 5, 512)   0           ['conv5_block3_2_bn[0][0]']
    n)
   
    conv5_block3_3_conv (Conv2D)   (None, 5, 5, 2048)   1050624     ['conv5_block3_2_relu[0][0]']
   
    conv5_block3_3_bn (BatchNormal  (None, 5, 5, 2048)  8192        ['conv5_block3_3_conv[0][0]']
    ization)
   
    conv5_block3_add (Add)         (None, 5, 5, 2048)   0           ['conv5_block2_out[0][0]',
                                                                     'conv5_block3_3_bn[0][0]']
   
    conv5_block3_out (Activation)  (None, 5, 5, 2048)   0           ['conv5_block3_add[0][0]']
   
    global_average_pooling2d (Glob  (None, 2048)        0           ['conv5_block3_out[0][0]']
    alAveragePooling2D)
   
    batch_normalization (BatchNorm  (None, 2048)        8192        ['global_average_pooling2d[0][0]'
    alization)                                                      ]
   
    dense (Dense)                  (None, 512)          1049088     ['batch_normalization[0][0]']
   
    dropout (Dropout)              (None, 512)          0           ['dense[0][0]']
   
    dense_1 (Dense)                (None, 256)          131328      ['dropout[0][0]']
   
    dropout_1 (Dropout)            (None, 256)          0           ['dense_1[0][0]']
   
    dense_2 (Dense)                (None, 27)           6939        ['dropout_1[0][0]']
   
   ==================================================================================================
   Total params: 24,783,259
   Trainable params: 5,657,115
   Non-trainable params: 19,126,144
__________________________________________________________________________________________________

Training Process

The model is trained using a combination of data augmentation, optimization techniques, and callbacks to ensure the best possible performance. The training process consists of several steps, including preprocessing the data, building the model, training the model, evaluating the model, and saving the model.

For a detailed explanation of the training process, refer to the Training Process wiki page.

Performance

The updated model demonstrates significant improvements in its ability to classify skin lesions accurately, achieving an accuracy of 84% and a loss of 0.23 on the testing dataset. The model's sensitivity, specificity, precision, and F1 score have also seen considerable enhancements, with the following scores reported on the testing dataset:

  • Recall: 69.24%
  • Precision: 77.94%
  • Accuracy: 72%
  • Loss: 1.04571

Targets

Metric Target Range Progress
Loss Close to 0 Progress
Accuracy 85% - 95% Progress
Precision 80% - 90% Progress
Recall 85% - 95% Progress
Clone this wiki locally