Image Spam Detection with VGG19

This is a model for detecting spam in images using transfer learning, with a VGG19 base model fine-tuned on the Image Spam Hunter Dataset.


Model Description

This model is built for binary classification, detecting whether an image is spam or not. The VGG19 architecture was used as the base model for transfer learning, leveraging pre-trained weights from ImageNet. The final layers were customised to include a GlobalAveragePooling layer, followed by fully connected layers, and a softmax activation for classification.

  • Base Model: VGG19
  • Task: Binary classification (Spam / Not Spam)
  • Framework: Keras (TensorFlow backend)

Training and Evaluation Data

Dataset

The model was trained and evaluated on the Image Spam Hunter Dataset, a publicly available dataset that contains spam and non-spam images:

  • Training set: 1731 images
  • Validation set: 1385 images

You can find more about the dataset here.


Training Procedure

Preprocessing

  • Images were resized to 256x256.
  • Normalisation was applied to scale pixel values between 0 and 1.

Optimizer

  • Optimizer: Adam
  • Learning Rate: 0.001

Training Parameters

  • Batch Size: 128
  • Epochs: 26 (early stopping)

Loss Function

  • Binary Cross-Entropy Loss

Augmentations

  • Random augmentation using Keras CV RandAugment layer.

Training Metrics

Below is a summary of the model's performance over the training process:

FN FP TN TP accuracy loss val_FN val_FP val_TN val_TP val_accuracy val_loss
0 187 140 499 559 0.763899 1.93435 19 2 169 156 0.939306 0.378412
1 16 35 604 730 0.963177 0.242954 6 3 168 169 0.973988 0.186523
2 29 19 620 717 0.965343 0.174301 3 12 159 172 0.956647 0.149353
3 17 26 613 729 0.968953 0.116907 3 7 164 172 0.971098 0.0973678
4 14 17 622 732 0.977617 0.0807728 2 12 159 173 0.959538 0.0991694
5 13 18 621 733 0.977617 0.0713564 3 6 165 172 0.973988 0.0604228
6 10 17 622 736 0.980505 0.0604733 3 5 166 172 0.976879 0.0584633
7 9 13 626 737 0.984116 0.0478682 4 4 167 171 0.976879 0.0745383
8 5 13 626 741 0.987004 0.0376507 3 7 164 172 0.971098 0.0773135
9 7 6 633 739 0.990614 0.0248621 3 2 169 172 0.985549 0.0628484
10 7 10 629 739 0.987726 0.0298408 2 2 169 173 0.988439 0.0531744
11 4 10 629 742 0.989892 0.0242986 3 2 169 172 0.985549 0.0675473
12 6 7 632 740 0.990614 0.0326418 2 3 168 173 0.985549 0.0671533
13 6 9 630 740 0.98917 0.0279278 2 5 166 173 0.979769 0.06897
14 7 7 632 739 0.989892 0.0244297 2 3 168 173 0.985549 0.0550619
15 5 4 635 741 0.993502 0.0228877 3 2 169 172 0.985549 0.0558347
16 4 10 629 742 0.989892 0.0277857 4 0 171 171 0.988439 0.0401906
17 2 7 632 744 0.993502 0.0193213 9 1 170 166 0.971098 0.0959367
18 7 3 636 739 0.99278 0.0151094 4 6 165 171 0.971098 0.0873069
19 7 3 636 739 0.99278 0.017344 1 6 165 174 0.979769 0.0964724
20 5 4 635 741 0.993502 0.024251 1 4 167 174 0.985549 0.0580115
21 3 9 630 743 0.991336 0.0207464 1 3 168 174 0.988439 0.0510422
22 2 6 633 744 0.994224 0.0122992 1 1 170 174 0.99422 0.0439666
23 3 2 637 743 0.99639 0.0105987 4 2 169 171 0.982659 0.0502425
24 3 6 633 743 0.993502 0.0164827 6 1 170 169 0.979769 0.0865423
25 5 7 632 741 0.991336 0.0245302 6 3 168 169 0.973988 0.0918282
26 9 8 631 737 0.987726 0.0296158 5 1 170 170 0.982659 0.0991676

Model Plot

The model architecture can be visualised in the image below:

Model Image


Validation Accuracy

The final validation accuracy achieved by the model was 98%.


How to Use the Model

Loading the Model

To load this model in your application, use the following:

from tensorflow.keras.models import load_model
model = load_model("path/to/saved_model")
Downloads last month
7
Inference Examples
This model does not have enough activity to be deployed to Inference API (serverless) yet. Increase its social visibility and check back later, or deploy to Inference Endpoints (dedicated) instead.

Model tree for fbadine/image-spam-detection

Base model

keras-io/VGG19
Finetuned
(1)
this model