Skip to page content
SAVRN
Search Plan a project

Open-weight model · Image classification

species-classifier-arachnids

by Michael G mlgraham/species-classifier-arachnids

species-classifier-arachnids is an open-weight model for image classification from Michael G, released under Apache License 2.0. Its published files total 18.3 MB.

A 153-species arachnid classifier (spiders, scorpions, ticks, harvestmen) small enough for microcontrollers and the Coral Edge TPU. MobileNetV2 at full width and 160 px, full-integer int8, trained on the iNaturalist 2021 competition data.

Parameters—
Context—
Weights18.2 MB
Licenseapache-2.0
AccessOpen weights
Monthly Downloads—

Model Card

By Michael G, published under apache-2.0, revision 09b1934a68a7.

A 153-species arachnid classifier (spiders, scorpions, ticks, harvestmen) small enough for microcontrollers and the Coral Edge TPU. MobileNetV2 at full width and 160 px, full-integer int8, trained on the iNaturalist 2021 competition data. It fills the gap people hit first with Google's AIY insect model, which has no spiders. Part of species-classifiers. Measured on the int8 file over the 1,530 iNaturalist 2021 validation images for these species (10 per species), with an 87.5% centre crop: The PyTorch checkpoint scores 64.4% top-1. For comparison, Google's stock AIY insect model scores 59.1% top-1 on the iNat2021 species it shares, choosing among 1,022 classes. - Input [1, 160, 160, 3]…

Read Michael G's full model card

A 153-species arachnid classifier (spiders, scorpions, ticks, harvestmen) small enough for microcontrollers and the Coral Edge TPU. MobileNetV2 at full width and 160 px, full-integer int8, trained on the iNaturalist 2021 competition data. It fills the gap people hit first with Google's AIY insect model, which has no spiders. Part of species-classifiers.

File What it is
arachnids_int8.tflite 2.9 MB, full-integer, uint8 in and out. Runs as is on TensorFlow Lite Micro (ESP32-S3, Coral Dev Board Micro CPU, Raspberry Pi) and phones through LiteRT
arachnids_int8_edgetpu.tflite the same model compiled with Edge TPU compiler 16.0, every op mapped, 2.89 MiB cached on-chip
arachnids_float32.tflite float in and out, for desktop use or your own quantization
arachnids_int8_vela.tflite the int8 model compiled with Arm's Vela for the Ethos-U55 in the Seeed Grove Vision AI V2, using Seeed's Himax configuration; upload it with SenseCraft AI's Model Assistant
labels.txt one class per line, Latin name (Common name), line number = class index
classes.json the full taxonomy per class (kingdom to species), for order and family roll-ups

Accuracy

Measured on the int8 file over the 1,530 iNaturalist 2021 validation images for these species (10 per species), with an 87.5% centre crop:

Input Top-1 Top-5
Colour 62.3% 86.4%

The PyTorch checkpoint scores 64.4% top-1. For comparison, Google's stock AIY insect model scores 59.1% top-1 on the iNat2021 species it shares, choosing among 1,022 classes.

Input contract

  • Input [1, 160, 160, 3] uint8 RGB, 0 to 255, no normalization; the model rescales internally.
  • Output [1, 153] uint8 probabilities, scale 1/256 and zero point 0, so prob = value / 256. No background class.
  • Centre-crop to a square. The model was validated with an 87.5% centre crop (resize the short side to 183, crop 160), which is worth about a point over the whole frame.
  • Ops are plain Conv2D, DepthwiseConv2D, Add, AveragePool, FullyConnected and Softmax, so the file converts for the Raspberry Pi AI Camera (IMX500) and Arm Ethos-U boards as well as the Edge TPU.
import numpy as np, tensorflow as tf
from PIL import Image

interp = tf.lite.Interpreter(model_path="arachnids_int8.tflite"); interp.allocate_tensors()
inp, out = interp.get_input_details()[0], interp.get_output_details()[0]
labels = open("labels.txt").read().splitlines()

img = Image.open("photo.jpg").convert("RGB")
w, h = img.size; s = min(w, h)
img = img.crop(((w - s) // 2, (h - s) // 2, (w - s) // 2 + s, (h - s) // 2 + s)).resize((160, 160))
interp.set_tensor(inp["index"], np.asarray(img, dtype=np.uint8)[None])
interp.invoke()
probs = interp.get_tensor(out["index"])[0] / 256.0
for i in np.argsort(-probs)[:3]:
    print(f"{probs[i]:.2f}  {labels[i]}")

How it was trained

MobileNetV2 1.0 at 160 px initialised from timm's mobilenetv2_100.ra_in1k ImageNet weights, hard labels, 12 epochs over the full iNat2021 training split (40,687 arachnid images), random resized crops, flips and colour jitter, AdamW with cosine decay. Trained in PyTorch on a laptop GPU through MPS, transplanted into Keras with a positional weight copy that verifies to a millionth, then exported with TensorFlow's full-integer converter calibrated on 300 training images. Every script is in the GitHub repository.

Provenance and license

Weights Apache-2.0, trained in the species-classifiers repository. Initialised from timm's ImageNet weights (Apache-2.0). Training images from the iNaturalist 2021 competition dataset; species names and taxonomy in labels.txt and classes.json come from it. The same files, with checksums, are in GitHub release v0.1.0.

Also a public Edge Impulse project that deploys straight to supported boards: https://studio.edgeimpulse.com/public/1132643/latest. And on Kaggle Models beside Google's originals: https://www.kaggle.com/models/mgraham0/species-classifiers

Not affiliated with iNaturalist or Google.

Identity and Version

Repository
mlgraham/species-classifier-arachnids
Publisher
Michael G
Task
Image classification
Modality
Image
Library
tflite
Parameters
Not stated by the source
Languages
Not stated by the source
Revision
09b1934a68a779aa8110c34a370c3c50e19804e1
First published
2026-10-08
Last updated
2026-10-08

Files and Weights

8 files, 18.3 MB in total. The weights are 4 files totalling 18.2 MB in tflite.

Weights4 files · 18.2 MB
Configuration1 file · 61.6 KB
Documentation1 file · 4.6 KB
Other1 file · 6.4 KB
Repository1 file · 1.5 KB
Every file
FileTypeSizeSHA-256
arachnids_float32.tfliteWeights9.6 MB d727c40b9059
arachnids_int8.tfliteWeights2.9 MB 57320e533014
arachnids_int8_edgetpu.tfliteWeights3.2 MB a31d160c9798
arachnids_int8_vela.tfliteWeights2.5 MB 89043423cc78
classes.jsonConfiguration61.6 KB —
README.mdDocumentation4.6 KB —
labels.txtOther6.4 KB —
.gitattributesRepository1.5 KB —

License and Download

License
apache-2.0
Access
Open weights, no gate
Download size
18.2 MB
Download from Michael G

Released by Michael G through its official repository on Hugging Face. Read the license.

Built From

  • Derived from timm/mobilenetv2_100.ra_in1k
  • Trained on (disclosed) inaturalist-2021

Memory Requirements

PrecisionWeights in memory
As published18.2 MB

Weights only, from the published parameter count; the key-value cache and runtime add to this.

Questions About species-classifier-arachnids

Can I use species-classifier-arachnids commercially?

Yes. species-classifier-arachnids is released under Apache License 2.0. The Apache License 2.0 is a permissive open-source license. It permits commercial use, modification and redistribution. It requires keeping the license and copyright notices and any NOTICE file, stating significant changes, and it includes an express patent grant from contributors.

Similar Models

Model · Image classification

swinv2-tiny-patch4-window16-256

Microsoft

Swin Transformer v2 model pre-trained on ImageNet-1k at resolution 256x256. It was introduced in the paper Swin Transformer V2: Scaling Up Capacity and Resolution by Liu et al. and first released in this repository. Disclaimer: The team releasing Swin Transformer v2 did not write a model card for this model so this model card has been written by the Hugging Face team. The Swin Transformer is a type of Vision Transformer. It builds hierarchical feature maps by merging image patches (shown in gray) in deeper layers and has linear computation complexity to input image size due to computation of self-attention only within each local window (shown in red). It can thus serve as a general-purpose…

Open weights apache-2.0 transformers

Model · Image classification

AI-image-detector

Matthew Maybe

NOTE: Unless you are trying to detect imagery generated using older models such as VQGAN+CLIP, please use the updated version of this detector instead. This model is a proof-of-concept demonstration of using a ViT model to predict whether an artistic image was generated using AI. It was created in October 2022, and as such, the training data did not include any samples generated by Midjourney 5, SDXL, or DALLE-3. It still may be able to correctly identify samples from these more recent models due to being trained on outputs of their predecessors. Furthermore the intended scope of this tool is artistic images; that is to say, it is not a deepfake photo detector, and general computer imagery…

Open weights cc-by-4.0 transformers

Measured on device (edge-compat): Raspberry Pi 5 · LiteRT 2.2.0.dev20260804 · CPU/XNNPACK, 4 threads · 34.1 ms p50 (2026-08-31); browser · Chromium 151 (2026-08-11). Record: https://github.com/john-rocky/edge-compat/blob/main/cards/plantnet-300k-resnet18/CARD.md On-device fine-grained plant species identification — 1081 species — running fully on the LiteRT CompiledModel GPU delegate (no CPU fallback). A PlantNet-300K (NeurIPS 2021) ResNet18. ~16 ms/frame on a Pixel 8a. (mean [0.485,0.456,0.406], std [0.229,0.224,0.225]; center-crop then resize 224). Labels: class index i maps to the i-th species when the PlantNet-300K species-id strings are sorted (torchvision ImageFolder order); names…

Open weights apache-2.0 litert

Model · Image classification

traffic-sign-adverse-weather

Yy

Official model checkpoints for the solution in the Traffic Sign Recognition under Adverse Weather Competition. See classes.txt for the 25 traffic sign classes. For inference scripts, training code, and in-depth engineering retrospective, visit the GitHub Repository.

Open weights mit timm

Model · Image classification

tinyvit-5m-int8-imagenet

Core Epoch

TinyViT-5M (timm/tinyvit5m224.distin22kftin1k, Apache-2.0) quantized to INT8 with Kenosis — 128-image calibration, no retraining. 80.53% top-1 from a 9.2 MB single file, on ONNX Runtime or OpenVINO, CPU or GPU, no accelerator required. ImageNet-1K validation, 49,872 images (disjoint from the 128 calibration images). Measured on a CPU with AVX-VNNI; on CPUs without VNNI this model's INT8 top-1 sits ~0.9 below FP32 rather than 0.34. Input 1x3x224x224, RGB, /255, ImageNet mean/std. Output logits [1,1000], sorted-synset order. runclassify.py / evalimagenet.py reproduce the demo and table. tinyvit5m224int8kenosis.onnx (9,228,567 B) — SHA-256…

Open weights apache-2.0 onnx