ImageClassification / README.md
felixbxl's picture
Update README.md
2bbc4b0 verified
metadata
tags:
  - image-classification
  - image
  - data-classification
  - image-categorisation
  - data-categoriasation
pipeline_tag: image-classification
language:
  - de
  - en

Model Card for Model ID

This model is a Jewelry Classifier. Just upload an image of one of the categories named below and the model will classify it for you.

  • Pendant
  • Bracelet
  • Chain
  • Earring
  • Ring
  • Watch

How to use?

Before following the steps below, please install these dependencies:

numpy==1.26.4 
keras==3.3.3
pillow==10.3.0

Step1: Load the Model (jewelry_classification.h5)

Download the model file from (https://huggingface.co/beyondxlabs/JewelryClassification/resolve/main/jewelry_classification.h5?download=true) and then use the below code snippet to load the model.

model = load_model('jewelry_classification_model.h5')
 
class_labels = ['Anhänger', 'Armbänder', 'Ketten', 'Ohrringe', 'Ringe', 'Uhren']

Step 2: Preprocess your images

Before giving images to the model, that image needs to be preprocessed to get a numpy array. You can just use the below function.

def preprocess_image(img):
    try:
        img = Image.open(img)
        img = img.resize((224, 224))
        img_array = img_to_array(img)
        img_array = np.expand_dims(img_array, axis=0)
        img_array = img_array.astype(np.float32) / 255.0
        return img_array
    except Exception as error:
        st.error(f"An error occurred during image preprocessing: {error}")
        return None

Step 3: Predict the output

In this step the preprocessed image could be given to the model to get the classification. Below is the sample code snippet.

def choose_category(img, is_url=True):
    try:
        processed_img = preprocess_image(img, is_url)
        if processed_img is not None:
            preds = model.predict(processed_img)
            category = class_labels[np.argmax(preds)]
            confidence = np.max(preds)
 
            return category, confidence*100
        return 'Other', 0
    except Exception as e:
        st.error(f"An error occurred during prediction: {e}")
        return 'Other', 0

Step 4(optional): Streamlit UI

Use the below snippet to make an UI Application using the model

# UI interface
import streamlit as st
st.title("Jewelry Classification")
 
uploaded_file = st.file_uploader("Choose an image...", type=["jpg"])
if st.button("Classify"):
    if uploaded_file is not None:
        category, confidence = choose_category(uploaded_file, is_url=False)
        st.write(f"Predicted Category: **{category}** with confidence **{confidence:.2f}%**")
    else:
        st.error("Please upload an image file.")