In diesem Artikel KI-Wettbewerbe produzieren keine nützlichen Modelle Ist die aktuelle Netzwerkarchitektur, die in% 20newsletter definiert wurde, nicht einfach ein Übertraining des Datensatzes und eine Outperformance gegenüber dem Glücksspiel? Ziel ist es, die Geschichte mit dem Weitwinkel-Fundus-Datensatz [^ 1] zu untersuchen. Außerdem werde ich Anfängern erklären, wie man aus den trainierten Gewichten von ImageNet [^ 2] mithilfe des in tf.keras
implementierten Netzwerks eine Feinabstimmung durchführt.
Diesmal unter Verwendung des Weitwinkel-Fundus-Datensatzes [^ 1], VGG16 [^ 3], DenseNet121 [^ 4], ResNet50 [^ 5], InceptionV3 [^ 6], NASNetMobile [^ 7], EfficientNet-B0 [^ 8] ] Leistungsbewertung, um herauszufinden, ob sich das Netzwerk nach VGG16 wirklich verbessert.
In diesem Artikel (Bildklassifizierung nach Weitwinkel-Fundus-Bilddatensatz) finden Sie Erläuterungen zum Weitwinkel-Fundus-Datensatz und zur Aufteilung der Daten. ..
In diesem Kapitel wird beschrieben, wie Sie mit dem trainierten Modell von Implemented Network & ImageNet [^ 2] eine Feinabstimmung vornehmen, um loszulegen. Übrigens trägt das Fine * -Drehen nicht zur Verbesserung der Genauigkeit bei, da sich die Bilddomäne zu stark von der von ImageNet im Weitwinkel-Fundus-Dataset unterscheidet, trägt jedoch zur Verbesserung der Konvergenzgeschwindigkeit bei. Weitere Informationen finden Sie unter [Artikel (Wirksamkeit des Transferlernens auf medizinische Bilder)](https://speakerdeck.com/uchi_k/lun-wen-shao-jie-yi-yong-hua-xiang-hefalsezhuan-yi- xue-xi-falseyou-xiao-xing-nituit-transfusionsverständnis-transfer-lernen-für-medizinische-bildgebung). Ändern Sie das Modellkonstruktionsteil aus diesem Artikel (Bildklassifizierung nach Weitwinkel-Fundusbilddatensatz). Der Lernparameter änderte die Lernrate auf "0,00001". Zuerst "importieren" Sie die Bibliothek.
from tensorflow.keras.applications import VGG16
from tensorflow.keras.models import Model
from tensorflow.keras.layers import Dense, Activation
Bauen Sie dann das Netzwerk auf. Dieses Mal werde ich die Verwendung von VGG16 als Beispiel erläutern. Laden Sie zunächst VGG16 als Basismodell. Dieses Mal besteht der Zweck darin, aus den trainierten Gewichten von ImageNet [^ 2] eine Feinabstimmung vorzunehmen. Bauen Sie also mit include_top = False
ein Netzwerk bis zur endgültigen Faltungsschicht auf und lernen Sie ImageNet [^ 2] mit weight = 'imagenet'
. Lesen Sie die fertigen Gewichte ab. Kombinieren Sie es dann wie Artikel (Bildklassifizierung nach Weitwinkel-Fundus-Bilddatensatz) mit dem vollständig verbundenen schichtgeladenen VGG16.
base_model = VGG16(include_top=False, weights='imagenet', pooling='avg',
input_shape=(image_size[0], image_size[1], 3))
x = Dense(256, kernel_initializer='he_normal')(base_model.output)
x = Dense(classes, kernel_initializer='he_normal')(x)
outputs = Activation('softmax')(x)
model = Model(inputs=base_model.inputs, outputs=outputs)
Wenn Sie ein anderes Netzwerk verwenden, z. B. ResNet50, können Sie es verwenden, indem Sie "VGG16" in "ResNet50" ändern. Beispielcode für andere Netzwerke wird hier hochgeladen [https://github.com/burokoron/StaDeep/tree/master/fine-turning]. EfficientNet-B0 wurde übrigens nicht veröffentlicht, aber implementiert, also keras-team / keras-applications'efficientnet.py auf GitHub. Ich habe Anwendungen / blob / master / keras_applications / componentnet.py heruntergeladen und verwendet.
Die Lernergebnisse sind wie folgt. NASNetMobile [^ 7] ist das einzige, das keine Diskrepanz zwischen Lernverlust und Verifizierungsverlust aufweist. Obwohl die Akkreditierung unterschiedlich ist. EfficientNet-B0 [^ 8] Ist es wirklich schön, weil es nur das neueste Modell gibt? ist.
Die Bewertung wurde unter Verwendung des F-Werts auf die gleiche Weise wie in diesem Artikel (Bildklassifizierung nach Weitwinkel-Fundusbild-Datensatz) durchgeführt. Die Ergebnisse sind unten gezeigt.
# VGG16
precision recall f1-score support
AMD 0.28 0.53 0.37 75
DR_DM 0.81 0.75 0.78 620
Gla 0.73 0.76 0.74 459
MH 0.12 0.22 0.16 32
Normal 0.75 0.75 0.75 871
RD 0.93 0.77 0.84 176
RP 0.91 0.78 0.84 50
RVO 0.84 0.60 0.70 107
accuracy 0.73 2390
macro avg 0.67 0.65 0.65 2390
weighted avg 0.76 0.73 0.74 2390
# ResNet50
precision recall f1-score support
AMD 0.26 0.56 0.36 75
DR_DM 0.95 0.61 0.74 620
Gla 0.78 0.61 0.68 459
MH 0.30 0.25 0.27 32
Normal 0.64 0.84 0.73 871
RD 0.85 0.85 0.85 176
RP 0.64 0.88 0.74 50
RVO 0.85 0.57 0.68 107
accuracy 0.71 2390
macro avg 0.66 0.65 0.63 2390
weighted avg 0.76 0.71 0.71 2390
# InceptionV3
precision recall f1-score support
AMD 0.28 0.53 0.37 75
DR_DM 0.84 0.68 0.75 620
Gla 0.74 0.68 0.71 459
MH 0.29 0.16 0.20 32
Normal 0.69 0.81 0.74 871
RD 0.91 0.80 0.85 176
RP 0.83 0.76 0.79 50
RVO 0.64 0.52 0.57 107
accuracy 0.72 2390
macro avg 0.65 0.62 0.62 2390
weighted avg 0.74 0.72 0.72 2390
# DenseNet121
precision recall f1-score support
AMD 0.25 0.60 0.36 75
DR_DM 0.94 0.66 0.78 620
Gla 0.82 0.58 0.68 459
MH 0.45 0.16 0.23 32
Normal 0.65 0.87 0.74 871
RD 0.94 0.82 0.88 176
RP 0.98 0.86 0.91 50
RVO 0.91 0.64 0.75 107
accuracy 0.73 2390
macro avg 0.74 0.65 0.67 2390
weighted avg 0.78 0.73 0.73 2390
# NASNetMobile
precision recall f1-score support
AMD 0.25 0.52 0.34 75
DR_DM 0.84 0.66 0.74 620
Gla 0.59 0.81 0.69 459
MH 0.16 0.22 0.18 32
Normal 0.72 0.70 0.71 871
RD 0.94 0.76 0.84 176
RP 0.94 0.60 0.73 50
RVO 0.75 0.43 0.55 107
accuracy 0.69 2390
macro avg 0.65 0.59 0.60 2390
weighted avg 0.73 0.69 0.70 2390
# EfficientNet-B0
precision recall f1-score support
AMD 0.32 0.44 0.37 75
DR_DM 0.94 0.60 0.73 620
Gla 0.79 0.57 0.66 459
MH 0.21 0.38 0.27 32
Normal 0.63 0.88 0.73 871
RD 0.94 0.85 0.89 176
RP 0.80 0.80 0.80 50
RVO 0.83 0.56 0.67 107
accuracy 0.71 2390
macro avg 0.68 0.63 0.64 2390
weighted avg 0.76 0.71 0.71 2390
Darüber hinaus sind die Ergebnisse von ImageNet [^ 2] und die Ergebnisse dieser Zeit in der folgenden Tabelle zusammengefasst. Die Ergebnisse für ImageNet [^ 2] wurden von keras-team / keras-applications auf GitHub übernommen. In ImageNet [^ 2] ist das Netzwerk nach VGG16 sicherlich genauer als VGG16, aber in diesem Weitwinkel-Fundus-Datensatz [^ 1] ist DenseNet121 das einzige Netzwerk, das VGG16 überlegen ist. Da es 2390 Testdaten gibt, führt ein signifikanter Differenztest bei 95% zu einer Unschärfe von ± 1 bis 2%, sodass nicht gesagt werden kann, dass DenseNet121 VGG16 statistisch überlegen ist.
Netzwerk | ImageNet Top-1 Acc [%] | Weitwinkel-Fundus-Datensatz F1-score |
---|---|---|
VGG16 | 71.268 | 0.65 |
ResNet50 | 74.928 | 0.63 |
InceptionV3 | 77.898 | 0.62 |
DenseNet121 | 74.972 | 0.67 |
NASNetMobile | 74.366 | 0.60 |
EfficientNet-B0 | 77.190 | 0.64 |
In diesem Artikel haben wir den Weitwinkel-Fundus-Datensatz [^ 1] verwendet, um zu untersuchen, ob sich das Netzwerk nach VGG16 wirklich verbessert. Außerdem habe ich Anfängern erklärt, wie man die trainierten Gewichte von Implemented Network & ImageNet [^ 2] fein dreht. Als Ergebnis des Experiments war nur DenseNet121 VGG16 überlegen. Es gab jedoch keinen signifikanten Unterschied und es war statistisch nicht überlegen. Diesmal habe ich es mit einem Weitwinkel-Fundus-Datensatz gemacht, aber ich denke, wenn ich es mit einem anderen Datensatz mache, wird das Ergebnis anders sein, und da ich kaum eine Bilderweiterungsverarbeitung durchgeführt habe, wird sich das Ergebnis ändern, wenn ich die neueste Methode verwende. Es gibt auch eine Möglichkeit. Normalerweise beschäftige ich mich jedoch hauptsächlich mit medizinischen Bildern auf dem Gebiet der Augenheilkunde, aber DenseNet liefert gute Ergebnisse, daher denke ich, dass das Ergebnis genauso erfahren ist. (Ich weiß nicht, warum DenseNet gut ist, also lass es mich wissen.) Übrigens betrug der F-Wert des einfachen 10-Schicht-CNN von Letztes Mal (Bildklassifizierung nach Weitwinkel-Fundus-Bilddatensatz) 0,59, also setzen Sie das Netzwerk auf DenseNet121. Ich konnte es um 0,08 bis 0,67 verbessern. Ich möchte weiterhin verschiedene neueste Methoden anwenden, um die Genauigkeit zu verbessern.
Recommended Posts