CalvinYu727's picture
Update README.md
9b98bc6 verified
---
license: mit
language:
- en
metrics:
- accuracy
base_model:
- timm/mobilenetv3_large_100.ra_in1k
pipeline_tag: image-classification
---
# Model Card for Model ID
<!-- Provide a quick summary of what the model is/does. -->
A fine-tuned model for classifying invoices, credit card and bank cheque, trained using MobileNetV3_Large using Google Colab.
### Model Description
<!-- Provide a longer summary of what this model is. -->
- **Developed by:** Calvin
- **Model type:** Image Classification
- **License:** MIT
- **Finetuned from model:** timm/mobilenetv3_large_100.ra_in1k
'''
from tensorflow.keras.models import load_model
import cv2
from tensorflow.keras.preprocessing.image import img_to_array
import tensorflow as tf
import numpy as np
from google.colab import files, drive
import matplotlib.pyplot as plt
# Define image size
IMG_SIZE = 224
# Set confidence threshold
CONFIDENCE_THRESHOLD = 0.5
drive.mount('/content/drive')
# Load the finetuned model
finetuned_model = load_model('/content/drive/MyDrive/models/finetuned_mobilenetv3large_model_v4.keras')
# Upload image using google.colab.files
uploaded = files.upload()
# Process the uploaded image
for fn in uploaded.keys():
# Read the image
img_path = fn
img = cv2.imread(img_path)
# Resize the image (using tf.image.resize)
img = tf.image.resize(img, [IMG_SIZE, IMG_SIZE])
# Convert image to array
img_array = img_to_array(img)
# Normalize pixel values
img_array = img_array / 255.0
# Add a dimension (batch size)
img_array = tf.expand_dims(img_array, 0)
# Perform inference using the finetuned model
prediction = finetuned_model.predict(img_array)
# Get probabilities for all classes
class_probabilities = prediction[0]
# Display results
print(f'{fn}:')
max_prob = np.max(class_probabilities)
if max_prob > CONFIDENCE_THRESHOLD:
for i, prob in enumerate(class_probabilities):
if i == 0:
class_name = 'Bank Cheque'
elif i == 1:
class_name = 'Credit Card'
elif i == 2:
class_name = 'Invoice'
else:
class_name = 'Others'
print(f' {class_name}: ({prob:.4f})')
else:
print('Others')
# Display the image
plt.imshow(img.numpy().astype(np.uint8))
plt.title(fn)
plt.show()