π§ͺ SmellDB
A benchmark for training AI models for olfaction - evaluations coming soon
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())