Hautkrebs mittels Künstlicher Intelligenz erkennen — ResNet-50 und fast.ai

Maligner Tumor der Haut? (Quelle: International Skin Imaging Collaboration Archiv)

Evaluation

Sensitivität = Anzahl der klasssifizierten Bilder mit bösartigen Tumoren / Anzahl der Bilder mit tatsächlich bösartigen Hauttumoren
Spezifität = Anzahl der klassifizierten Bilder mit gutartigem Tumor / Anzahl der Bilder mit tatsächlich gutartigen Hauttumoren

ResNet-50: Daten und Infos

Laden der Bibliotheken

from fastai.vision import *
from fastai.metrics import error_rate

Importieren der Daten

path = Path(“data”)
df = pd.read_csv(path/’metadata.csv’)
df = df[[‘name’,’meta.clinical.benign_malignant’]]
df = df.loc[(df[‘meta.clinical.benign_malignant’] != ‘indeterminate’) & (df[‘meta.clinical.benign_malignant’] != ‘indeterminate/malignant’)]
np.random.seed(42)
bs = 16
#bs = 64
data = ImageDataBunch.from_df(path, df=df, ds_tfms=get_transforms(), suffix=’.jpg’, size=700, bs=bs).normalize(imagenet_stats)

Modellerstellung und -training

learn = cnn_learner(data, models.resnet50, metrics=error_rate)
learn.fit_one_cycle(10)

Erkenntnisse

# ResNet50 - 500px Bildgrößeepoch       train_loss       valid_loss       error_rate       time                       0       1.176972       0.747693       0.243697       00:50                 1       1.217858       1.338248       0.445378       00:38                 2       1.073678       0.790751       0.260504       00:38                 3       0.888978       0.603722       0.218487       00:39                 4       0.733704       0.563326       0.235294       00:38                 5       0.651154       0.597901       0.235294       00:38                 6       0.559720       0.502858       0.184874       00:38                 7       0.487279       0.519738       0.218487       00:39                 8       0.444007       0.494015       0.193277       00:39                 9       0.390069       0.484067       0.184874       00:40
Train- und Validation Loss über die Anzahl der verarbeiteten Batches
Binäre Klassifikationsmatrix
# Resnet34 - 600 Bilderepoch       train_loss       valid_loss       error_rate       time                       0       1.188662       0.645911       0.285714       00:36                 1       1.006285       0.654783       0.302521       00:36                 2       0.898887       0.800139       0.268908       00:36                 3       0.801402       0.660271       0.268908       00:36                 4       0.726627       0.625567       0.268908       00:35                 5       0.640710       0.505276       0.210084       00:35                 6       0.550985       0.546546       0.243697       00:36                 7       0.497960       0.522388       0.226891       00:35                 8       0.455487       0.504230       0.193277       00:36                 9       0.424492       0.509144       0.210084       00:35
ResNet-34 300 Bilderepoch       train_loss       valid_loss       error_rate       time                       0       1.388758       1.014975       0.525424       00:28                 1       1.154910       0.914468       0.355932       00:21                 2       1.052586       1.064909       0.288136       00:21                 3       0.936718       0.796608       0.254237       00:21                 4       0.820141       0.583715       0.203390       00:21                 5       0.681445       0.689949       0.254237       00:20                 6       0.612125       0.704821       0.288136       00:21                 7       0.554546       0.632347       0.220339       00:21                 8       0.483023       0.624757       0.237288       00:20                 9       0.459009       0.632007       0.254237       00:21

Fazit

  • einer hohen Bildqualität
  • große Anzahl an Bilddaten
  • großen Anzahl von Schichten (50 statt 34)
  • Progressive Resizing

--

--

--

Data Science | Python | Qlik Sense | Kaffee | Frankfurt | Kontakt: stefan-preusler.de

Love podcasts or audiobooks? Learn on the go with our new app.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store
Stefan Preusler

Stefan Preusler

Data Science | Python | Qlik Sense | Kaffee | Frankfurt | Kontakt: stefan-preusler.de

More from Medium

ComParE Challenge KSF-C 2022

Three Safety Questions for Tesla

The Discretion of Discrete Math

Flipping pennies in Penney’s Game