πŸ§ͺ SmellDB

A benchmark for training AI models for olfaction - evaluations coming soon

Dataset (Training) Dataset (Evaluation) Paper

Overview

Smell is perhaps our most complicated and misunderstood sense β€” and one of the last great frontiers in machine perception. SmellDB is a public dataset for olfactory AI, enabling researchers to train, compare and advance models for smell. With nearly 100 hours of sampling across 32 individual sensor units, it is currently the largest public dataset of its kind.

At the moment, entries are API-first, but we provide a "Get Started Script" on the top right pane to run you through from registration to result submission in 5 steps.

Download the dataset, build your model, and submit predictions via our REST API (or python script). Scores are returned instantly and optionally saved for logging. We may open a public leaderboard in the future.

NOTE: Submissions would be made on the Evaluation Dataset which is not yet available. You can only register and explore the training dataset at the moment.

Highlights

πŸ—‚ Samples 3,000 labelled samples
⏱ Duration 115 seconds per sample
πŸ“‘ Channels 32 sensor channels
πŸ• Total recording 96 hours
🏷 Classes 12 semantic smell labels

The Task

Given multichannel time-series sensor data from a 32-channel electronic nose (e-Nose), predict the 1-of-12 smell label for each sample.

# Label
1 🍊 Sweet Orange
2 πŸͺ΅ Leather & Tobacco
3 πŸ‚ Cinnamon Leaf
4 🍌 Banana
5 β˜• Cafe Latte
6 🌹 Rose
7 πŸ’œ Lavender Oil
8 πŸ₯₯ Coconut
9 πŸ₯­ Mango
10 🌸 English Orchid
11 🧴 Monkey Farts
12 πŸ’§ Water

Getting Started

Python user? Use our short "Get Started" script for a simpler workflow.

1. Get your API key

Register by making two API calls to https://smelldb.anemolabs.com.

( a ) - Register. A 6-digit verification code will be sent to your email.

curl -X POST https://smelldb.anemolabs.com/v1/user/register \
  -H "Content-Type: application/json" \
  -d '{"email": "you@example.com", "name": "Your Name", "organisation": "Optional"}'

( b ) - Activate. Your API key will be emailed to you on success.

curl -X POST https://smelldb.anemolabs.com/v1/user \
  -H "Content-Type: application/json" \
  -d '{"action": "activate_user", "email": "you@example.com", "verification_code": "123456"}'

( c ) - Rotate API key (optional). If you need to invalidate your current key, a new one will be emailed to you.

curl -X POST https://smelldb.anemolabs.com/v1/user \
-H "Content-Type: application/json" \`
-d '{"action": "request_new_api_key", "email": "you@example.com"}'

2. Download the dataset

https://smelldb.anemolabs.com/dataset/download
YOUR_DIRECTORY/
β”œβ”€β”€ dataset.csv     # flattened sensor readings and labels

The dataset is a CSV file with N samples (rows). Each row is a flattened sample: the first column s0-0 is sensor 0 at timestep 0, and the final sensor column s31-229 is sensor 31 at timestep 229. A final LABEL column holds the smell class for that sample.


3. Build your model

import pandas as pd

df = pd.read_csv("YOUR_DIRECTORY/dataset.csv")
y = df['LABEL']
X = df.drop('LABEL', axis=1)

# Transform Data

# Train model
model.fit(X,y)

# Generate smell label predictions here
predictions = model.predict(X)   # list of label strings


4. Submit

import requests

response = requests.post(
    "https://smelldb.anemolabs.com/v1/evals",
    headers={
        "X-API-Key": "YOUR_API_KEY",
        "Content-Type": "application/json",
    },
    json={
        "dataset_name": "smelldb-base-v1",
        "predictions": predictions.tolist(),
    },
)

print(response.json())


5. View your submissions

response = requests.get(
    "https://smelldb.anemolabs.com/v1/evals",
    headers={
        "X-API-Key": "YOUR_API_KEY",
    },
)
print(response.json())
Copied to clipboard