Downloads · 30 days
0
mahan-ym/bioclip-2-quantized
bioclip-2-quantized is a zero-shot image classification model from mahan-ym. Use it for the zero-shot image classification task on the model card, and read the license before you ship it in a product. The card lists the license as mit.
BioCLIP-2 Quantized is a quantized version of BioCLIP-2, a foundation model for biological organismal images read more about the model here. The quantized model is designed to reduce memory usage and improve inference…
Downloads · 30 days
0
Access
Public
Updated Nov 21, 2025
Repo size
307 MB
Likes
2
Public
Click a slice to open those files.
.onnx307 MB · 100%
From the Hugging Face model README
BioCLIP-2 Quantized is a quantized version of BioCLIP-2, a foundation model for biological organismal images read more about the model here. The quantized model is designed to reduce memory usage and improve inference with cost of losing a little accuracy.
BioCLIP-2 Quantized is dynamically quantized from the original BioCLIP-2 model. The Pytorch onnx.export function is used to convert the original model to ONNX format, and then the onnxruntime.quantization.quantize_dynamic function is used to perform dynamic quantization on the ONNX model with weight_type set to QuantType.QInt8.
You can find the quantization script here.
To use the quantized model for inference, you can use the onnxruntime library. Here is an example code snippet:
import onnxruntime as ort
import torch
import torch.nn.functional as F
import numpy as np
from huggingface_hub import hf_hub_download
# Load the quantized model
ort_session = ort.InferenceSession("path/to/bioclip-2-quantized.onnx", providers=['CPUExecutionProvider'])
# only return one label
k = 1
# Preprocess image
img_tensor = preprocess_img(img).unsqueeze(0)
img_np = img_tensor.numpy()
# Run ONNX inference
input_name = session.get_inputs()[0].name
output_name = session.get_outputs()[0].name
img_features_np = session.run([output_name], {input_name: img_np})[0]
# Convert back to torch for compatibility with existing code
img_features = torch.from_numpy(img_features_np)
img_features = F.normalize(img_features, dim=-1)
# optional: for the open ended classification that you need a text embedding:
txt_emb = torch.from_numpy(
np.load(
hf_hub_download(
repo_id="imageomics/TreeOfLife-200M",
filename="embeddings/txt_emb_species.npy",
repo_type="dataset",
)
)
)
# or you can skip this and use zero-shot classification with your own text inputs
# Use the same text embeddings and logit scale from the original model (logit_scale of the main model: 100.00000762939453)
logits = (model.logit_scale.exp() * img_features @ txt_emb).squeeze()
probs = F.softmax(logits, dim=0)
topk = probs.topk(k)
prediction_dict = {
format_name(*txt_names[i]): prob
for i, prob in zip(topk.indices, topk.values)
}
print(prediction_dict)
The Model got tested on Animals and Plants dataset by Nguyen Le Truong Thien for open-ended species classification and the highest probability class is selected as the predicted class and compared with the main BioCLIP-2 model. The results are as follows:

The main model is developed by the Imageomics Institute team. And the current model is just a quantized version of the main model to reduce memory usage and improve inference speed and make the model more accessible.