|
--- |
|
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: |
|
|
|
```pyhton |
|
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. |
|
|
|
|
|
```python |
|
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. |
|
|
|
```python |
|
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. |
|
|
|
```python |
|
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 |
|
|
|
```python |
|
# 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.") |
|
``` |
|
|
|
|