/ Модель

Характеристики

Лицензия
Apache 2.0
Архитектура
grainpest-npu-cnn · dense
Библиотека
litert
Опубликована
10 окт 2026

grainpest-classifier-litert

Классификация аудиоАудио → label

Компактная свёрточная модель классифицирует мел-спектрограммы звука, чтобы различать двух вредителей хранящегося зерна.

0скачиваний за 30 дней0лайковвеса обновлены10 окт 2026

Бенчмарки

Как модель справилась с задачами пользователей ailist и что о ней публикуют открытые лидерборды

Публичные оценки

Из открытых лидербордов. Сравнивайте результаты одного теста при одинаковых условиях — отсутствие оценки не значит, что модель хуже.

В подключённых источниках результатов для этой модели пока нет.

Что умеет модель

Описание составлено по карточке модели и метаданным Hugging Face

GrainPestCNN — компактная свёрточная модель для классификации акустических сигналов насекомых, поражающих хранящееся зерно. Модель разработана для обнаружения и различения малого зернового точильщика (Rhyzopertha dominica) и рисового долгоносика (Sitophilus oryzae). В ней около 241 тыс. параметров; архитектура включает четыре этапа свёрточных блоков с уменьшением размерности и глобальный пулинг.

Модель принимает не сырой звук, а логарифмическую мел-спектрограмму из 64 полос и 1000 кадров, рассчитанную для 10-секундного моноаудио с частотой 16 кГц. На выходе — класс насекомого. Репозиторий содержит варианты TFLite/LiteRT, ONNX и TorchScript; модель оптимизирована для выполнения на устройстве, в том числе на Qualcomm Hexagon NPU, и также подходит для кроссплатформенного вывода через ONNX Runtime. Метаданные указывают лицензию Apache-2.0.

Модель предназначена для акустического мониторинга зернохранилищ и распознавания двух указанных видов вредителей. Для работы требуется заранее выполнить описанную аудиопредобработку; README не сообщает метрики качества и не описывает поддержку других видов насекомых.

Сценарии применения

  • обнаружение малого зернового точильщика по акустическому сигналу
  • обнаружение рисового долгоносика в зернохранилище
  • классификация 10-секундных записей звуков насекомых
  • встраивание распознавания вредителей в мобильное устройство с NPU
  • акустический мониторинг хранящегося зерна

Ограничения

Модель различает только малого зернового точильщика и рисового долгоносика; качество на других видах и условиях записи не описано. На вход требуется лог-мел-спектрограмма фиксированной формы 1×1×64×1000, рассчитанная по 10-секундному моноаудио с частотой 16 кГц.

Карточка модели

README от автора на Hugging Face, как он его опубликовал

Открыть на Hugging Face

GrainPestCNN — On-Device Acoustic Pest Classifier for Google AI Edge

An ultra-compact (~240K parameters), NPU-optimized acoustic classification model designed for real-time, on-device detection of stored-grain insects (Rhyzopertha dominica / Lesser Grain Borer vs. Sitophilus oryzae / Rice Weevil).

This model is engineered specifically for Google AI Edge / LiteRT, MediaPipe, and Qualcomm Hexagon NPU deployment. It uses only NPU-friendly operations (Conv2d, BatchNorm, ReLU, AdaptiveAvgPool) with a fixed (1, 1, 64, 1000) tensor input.


Model Architecture & Specs

PropertyValue
ArchitectureGrainPestCNN (4-stage strided conv blocks + global pooling)
Parameters240,866 (~950 KB FP32, ~240 KB INT8)
Primary FrameworkGoogle AI Edge (LiteRT / TFLite), ONNX, PyTorch
Input Shape(1, 1, 64, 1000) (Batch, Channels, Mel Bins, Frames)
Audio Input10 seconds mono WAV, 16 kHz sample rate
Target Classeslesser_grain_borer, rice_weevil
Test Accuracy95.0%
Test Macro F10.950
Target HardwareGoogle AI Edge, Android (LiteRT / MediaPipe), Qualcomm Hexagon NPU

Files in this Repository

  • grainpest_cnn.tflite / grainpest_cnn_int8.tflite: Google AI Edge / LiteRT models for mobile on-device inference.
  • grainpest_cnn.onnx: ONNX export (opset 13) for cross-platform desktop/server inference.
  • grainpest_cnn.ts.pt: TorchScript traced module.
  • cnn.pt: PyTorch model checkpoint (state_dict, class names, architecture width).
  • config.json: Hardware target, audio frontend parameters, and tensor dimensions.
  • labels.json: Class ID to name dictionary.
  • labels.txt: Line-delimited labels for TFLite / MediaPipe tasks.

Audio Preprocessing Pipeline

The model expects log-mel spectrogram features computed from a 10-second audio clip:

  1. Audio Resampling: Resample input to 16,000 Hz mono.
  2. Windowing: Fixed 10.0 seconds (160,000 samples). Pad with zeros if shorter, center-crop if longer.
  3. Mel Spectrogram:
    • n_fft: 400 (25 ms)
    • hop_length: 160 (10 ms)
    • n_mels: 64 bins
    • f_min: 50 Hz, f_max: 8,000 Hz
  4. Log Compression: Amplitude to dB (top_db = 80).
  5. Frame Alignment: Exactly 1,000 frames (shape 1 x 64 x 1000).

Quickstart: Python Inference

Using LiteRT / TFLite Runtime

import numpy as np

# Load LiteRT / TFLite interpreter
try:
    import ai_edge_litert.interpreter as litert
    interpreter = litert.Interpreter(model_path="grainpest_cnn.tflite")
except ImportError:
    import tensorflow.lite as tflite
    interpreter = tflite.Interpreter(model_path="grainpest_cnn.tflite")

interpreter.allocate_tensors()
input_details = interpreter.get_input_details()
output_details = interpreter.get_output_details()

# mel_spectrogram shape: (1, 1, 64, 1000)
sample_mel = np.zeros((1, 1, 64, 1000), dtype=np.float32)

interpreter.set_tensor(input_details[0]["index"], sample_mel)
interpreter.invoke()
logits = interpreter.get_tensor(output_details[0]["index"])

labels = ["lesser_grain_borer", "rice_weevil"]
predicted_class = labels[np.argmax(logits)]
print(f"Prediction: {predicted_class}")

Using ONNX Runtime

import onnxruntime as ort
import numpy as np

session = ort.InferenceSession("grainpest_cnn.onnx")
sample_mel = np.zeros((1, 1, 64, 1000), dtype=np.float32)
outputs = session.run(["logits"], {"mel": sample_mel})
labels = ["lesser_grain_borer", "rice_weevil"]
print("Prediction:", labels[np.argmax(outputs[0])])

On-Device Deployment: Google AI Edge / Android

1. Google AI Edge Gallery Integration

To allow the Google AI Edge Gallery application to download and execute this model on Android or iOS, add the following entry to model_allowlist.json:

{
  "name": "Grain Pest Acoustic Classifier",
  "modelId": "YOUR_HF_USERNAME/grainpest-classifier-litert",
  "modelFile": "grainpest_cnn_int8.tflite",
  "taskType": "AUDIO_CLASSIFICATION",
  "sizeInBytes": 245000,
  "description": "NPU-accelerated bioacoustic detection of grain-damaging weevils and borers"
}

2. Standalone Android LiteRT (Kotlin)

import com.google.ai.edge.litert.Interpreter
import java.nio.ByteBuffer

// Initialize LiteRT with Qualcomm Hexagon / NPU accelerator delegate
val options = Interpreter.Options().apply {
    setNumThreads(4)
    // Add NPU or NNAPI acceleration if available:
    // addDelegate(NpuDelegate())
}

val interpreter = Interpreter(loadModelFile("grainpest_cnn_int8.tflite"), options)

// Input tensor: 1 x 1 x 64 x 1000 (Float32 or quantized)
val inputBuffer: ByteBuffer = prepareMelSpectrogram(audioRecording)
val outputBuffer: ByteBuffer = ByteBuffer.allocateDirect(2 * 4) // 2 float logits

interpreter.run(inputBuffer, outputBuffer)

Citation & License

  • License: Apache 2.0
  • Dataset: Bioacoustic Stored-Grain Pest Dataset (IRRI Sensor Archive)

Как запустить

На своей GPU в ailist. Цена — по текущим предложениям провайдеров

GPU в ailist

Универсальный рантайм · litert

Нельзя запустить

Архитектура grainpest-npu-cnn неизвестна transformers в образе рантайма.

Ревизия весов
c3d2ee8

0 моделей