| Literature DB >> 34908638 |
Abstract
Automatic and rapid screening of COVID-19 from the radiological (X-ray or CT scan) images has become an urgent need in the current pandemic situation of SARS-CoV-2 worldwide. However, accurate and reliable screening of patients is challenging due to the discrepancy between the radiological images of COVID-19 and other viral pneumonia. So, in this paper, we design a new stacked convolutional neural network model for the automatic diagnosis of COVID-19 disease from the chest X-ray and CT images. In the proposed approach, different sub-models have been obtained from the VGG19 and the Xception models during the training. Thereafter, obtained sub-models are stacked together using softmax classifier. The proposed stacked CNN model combines the discriminating power of the different CNN's sub-models and detects COVID-19 from the radiological images. In addition, we collect CT images to build a CT image dataset and also generate an X-ray images dataset by combining X-ray images from the three publicly available data repositories. The proposed stacked CNN model achieves a sensitivity of 97.62% for the multi-class classification of X-ray images into COVID-19, Normal and Pneumonia Classes and 98.31% sensitivity for binary classification of CT images into COVID-19 and no-Finding classes. Our proposed approach shows superiority over the existing methods for the detection of the COVID-19 cases from the X-ray radiological images.Entities:
Keywords: Automatic screening; CT scan images; Chest X-ray images; Deep learning; Keyword: COVID-19; Softmax classifier; Stacked ensemble
Year: 2021 PMID: 34908638 PMCID: PMC8654581 DOI: 10.1016/j.bbe.2021.12.001
Source DB: PubMed Journal: Biocybern Biomed Eng ISSN: 0208-5216 Impact factor: 5.687
Fig. 1Block diagram of proposed Stacked CNN model.
Fig. 2Sample X-ray images of Chest from the COVID19CXr dataset; where image in (a) COVID-19, (b) NORMAL, (c) PNEUMONIA.
Images distribution in the training set, validation set and test set, corresponding to folds of COVID19CXr dataset.
| 382 | 798 | 948 | |||
| 55 | 113 | 136 | |||
| Fold1 | 109 | 228 | 271 | ||
| 381 | 799 | 951 | |||
| 54 | 113 | 135 | |||
| Fold2 | 111 | 227 | 269 | ||
| 382 | 798 | 950 | |||
| 55 | 113 | 134 | |||
| Fold3 | 109 | 228 | 271 | ||
| 380 | 797 | 945 | |||
| 56 | 114 | 136 | |||
| Fold4 | 110 | 228 | 274 | ||
| 382 | 798 | 952 | |||
| 56 | 113 | 136 | |||
| Fold5 | 108 | 228 | 267 |
Fig. 3Sample CT images of different patients from the COVID19CTs dataset.; where images in (a) COVID-19 and in (b) no-Findings.
Images distribution in the training set, validation set and test set of the COVID19CTs dataset.
| Training | COVID-19 | 24 | 1478 |
| no-Findings | 19 | 1606 | |
| Validation | COVID-19 | 4 | 281 |
| no-Findings | 4 | 280 | |
| Test | COVID-19 | 7 | 490 |
| no-Findings | 7 | 510 | |
Diagnosis performance of stacked CNN model on COVID19CXr dataset.
| Fold1 | 98.96 | 99.37 | 98.95 | 98.85 | 99.02 | 0.989 | 1.00 |
| Fold2 | 98.13 | 98.74 | 98.12 | 97.69 | 97.91 | 0.980 | 0.996 |
| Fold3 | 98.28 | 99.07 | 98.27 | 98.19 | 98.13 | 0.982 | 0.995 |
| Fold4 | 95.30 | 96.93 | 95.21 | 94.44 | 94.75 | 0.950 | 0.994 |
| Fold5 | 97.42 | 98.51 | 97.42 | 97.18 | 97.01 | 0.972 | 0.996 |
Fig. 4Confusion matrix for the stacked CNN model on the different folds.
Fig. 5ROC curve for stacked CNN model on the different folds.
Diagnosis performance of stacked CNN model on COVID19CTs dataset.
| 98.31 | 98.31 | 98.30 | 98.30 | 98.30 | 0.98 | 0.999 |
Fig. 6Confusion matrix and ROC curve for the stacked CNN model on the COVID19CTs dataset.
Performance comparison of different methods.
| ResNet50 | 80.97 | 90.40 | 80.33 | 82.77 | 0.81 | 0.93 |
| Inception-V3 | 88.98 | 94.08 | 88.72 | 90.49 | 0.89 | 0.98 |
| DenseNet-121 | 88.52 | 93.97 | 88.18 | 90.64 | 0.89 | 0.97 |
| MobileNet | 88.67 | 94.43 | 88.36 | 91.75 | 0.90 | 0.98 |
| VGG19 | 94.83 | 97.10 | 94.80 | 95.02 | 0.95 | 0.99 |
| Xception | 96.92 | 98.12 | 96.87 | 96.71 | 0.97 | 0.99 |
Performance evaluation of the sub-models (in terms of G-mean (%)).
| Sub-model1 | 90.30 | 93.80 | 94.22 | 91.83 | 94.87 | |
| Sub-model2 | 95.84 | 96.41 | 96.82 | 93.87 | 97.44 | |
| Sub-model3 | 97.28 | 97.70 | 95.16 | 93.40 | 95.58 | |
| Sub-model4 | 97.31 | 97.74 | 96.36 | 93.65 | 96.31 | |
| Sub-model5 | 98.70 | 97.76 | 97.05 | 94.12 | 96.70 | |
Performance comparison of different classifiers (in terms of G-mean (%)).
| Fold1 | 98.33 | 98.93 | 99.3 | 98.66 | |
| Fold2 | 97.97 | 96.81 | 96.89 | 97.52 | 98.12 |
| Fold3 | 96.97 | 97.1 | 95.53 | 97.22 | |
| Fold4 | 93.99 | 92.76 | 94.15 | 95.21 | |
| Fold5 | 96.68 | 95.29 | 94.34 | 96.69 | 97.42 |
| 96.79 | 96.18 | 95.87 | 96.85 | 97.59 | |
The best result among classifiers for each fold is shown in bold.
Performance comparison with existing methods
| Jain et al. | Image pre-processing, Data augmentation, ResNet50, ResNet101 | 250 COVID-19, 350 viral pneumonia | Binary: COVID-19, viral pneumonia | 97.77% (Acc) 97.14% (Rec) 97.14% (Prec) |
| Kassania et al. | Deep features, Various classifiers | 137 COVID-19, 137 healthy | Binary: COVID-19, Healthy | 99% (Acc) |
| Narin et al. | Pre-Train CNNs | 50 COVID-19, 50 Normal | Binary: COVID-19, Normal | 97% (Acc) |
| Sethy et al. | Deep feature, SVM | 25 COVID-19+, 25 COVID-19- | Binary: COVID-19+, COVID-19- | 95.38% (Acc) |
| Minaee et al. | Pre-trained CNN | 184 COVID-19, 5000 Non-COVID | Binary: COVID-19, Non-COVID | 98% (Sens) 90% (Sp) |
| Castiglioni et al. | Ensemble model Pre-trained CNNs | 250 COVID-19, 250 non-COVID-19 | Binary: COVID-19, Non-COVID-19 | 80% (Sens) 81% (Sp) |
| Abraham et al. | Multi-CNN Features, CFS, Bayesnet | 453 COVID-19, 497 non-COVID | Binary: COVID-19, non-COVID | 91.16% (Acc) 0.963 (AUC) |
| Panwar et al. | nCOVnet, VGG16 | 142 COVID-19, 142 Normal | Binary: COVID-19, Normal | 88.10% (Acc) 0.881 (AUC) |
| Ashour et al. | Ensemble-based BoF, Grid method, SURF | 200 COVID-19, 200 Normal | Binary: COVID-19, Normal | 98.6% (Acc) |
| Oh et al. | ResNet18 | 191 Normal, 54 Bacterial, 57 Tuberculosis, 20 Viral, 180 COVID-19 | Multiclass: Normal, Bacterial, Tuberculosis, Viral, COVID-19 | 88.9% (Acc) |
| Pereira et al. | Deep features, Texture features, Fusion techniques | 200 Normal, 22 SARS, 20 MERS, 180 COVID-19, 20 Varicella, 22 Pneumocystis, 24 Streptococcus | Multiclass: Normal, SARS, COVID-19, MERS, Varicella, Pneumocystis, Streptococcus | 0.89 (F1-score) |
| Apostolopoulos et al. | Pre-trained CNN | 224 COVID-19, 504 Normal, 714 Pneumonia | Binary: COVID-19, Pneumonia | 96.78% (Acc) |
| Multiclass: COVID-19, Normal, Pneumonia | 94.72% (Acc) | |||
| Joshi et al. | DarkNet-53 | 194 COVID-19, 583 Normal, 2265 Pneumonia | Binary: COVID, Non-COVID | 99.81% (Acc) |
| Multiclass: COVID, normal, pneumonia | 97.11% (Acc) 0.951 (F1-score) | |||
| Ozturk et al. | DarkCovidNet | 127 COVID-19, 500 no-findings, 500 Pneumonia | Binary: COVID-19, No-findings | 98.08% (Acc) |
| Multiclass: COVID-19, No-findings, Pneumonia | 87.02% (Acc) | |||
| Benmalak et al. | InceptionV3, ResNet-18, MobileNetV3 | 1530 Normal, 1778 COVID-19, 1718 Viral pneumonia | Multiclass: Normal, COVID-19, Viral pneumonia | 93.4% (Prec), 92.3% (Sens), 92.8% (F1-Score) |
| Wang et al. | COVID-Net | 183 COVID-19, 8066 Normal, 5538 non-COVID19 | Multiclass: COVID-19, Normal, Non-COVID19 | 92.6% (Acc) |
| Ucar et al. | SqueezeNet CNN | 1583 Normal, 4290 Pneumonia, 76 COVID-19 | Multiclass: Normal, Pneumonia, COVID-19 | 95.7% (Acc), 90% (Sens) |
| Nigam et al. | Pre-trained CNNs | 6000 Normal, 5634 COVID-19, 5000 others | Multiclass: Normal, COVID, other | 93.48% (Acc) |
| Proposed Method | Stacked CNN: VGG19, Xception, Softmax classifier | Multiclass: COVID-19, Normal, Pneumonia | 97.27% (Acc), 97.62% (Sens), 0.975 (F1-Score) | |
| Binary: COVID-19, no-Findings | 98.30% (Acc), 98.31% (Sens), | |||
| 0.98 (F1-Score) |
“Acc”: Accuracy, “Sens”: Sensitivity, “Sp”: Specificity,“Rec”: Recall, “Prec”: Precision,“AUC”: Area under the ROC curve.
| 1: Divide the dataset into a training set, validation set, and test set. |
| 2: Apply data augmentation on the training set. |
| 3: Train VGG19 and Xception, and generate sub-models: |
| 4: |
| 5: Train(VGG19, train_img, img_label, class_weight) |
| 6: |
| 7: sub-model#1 = save(VGG19) |
| 8: |
| 9: |
| 10: sub-model#2 = save(VGG19) |
| 11: |
| 12: Train(Xception, train_img, img_label, class_weight) |
| 13: |
| 14: sub-model#3 = save(Xception) |
| 15: |
| 16: |
| 17: sub-model#4 = save(Xception) |
| 18: |
| 19: |
| 20: |
| 21: sub-model#5 = save(Xception) |
| 22: |
| 1: Sub-models stacking: |
| 2: |
| 3: |
| 4: |
| 5: |
| 6: P = concatenation( |
| 7: |
| 8: Training of softmax classifier on feature vector |
| 9: stacked_model = Train( |
| 10: Classification of the images |
| 11: pred_label = classify(stacked_model, test_img) |
| 12: |