Skip to content

Create a classification project

At a glance

Stand up a Classification Project — the schema, AI provider stack, and human annotators that turn uploaded Resources into approved classifications.

  • Time: ~20 minutes
  • Who: research project owners/managers setting up annotation workflows
  • Prerequisites: AI providers registered (optional, only if you want automatic processing)

Before you begin

  • A Research Project you own or manage
  • At least one Collection with Resources
  • AI Providers registered, if you want automatic processing — see Register & sync AI providers

You'll create or pick: a Research Project, a Collection, a Classificator (the schema of attributes annotators fill in), and the Classification Project itself.

Steps

1. Create or pick a Research Project

Research → Research projects, then the + icon. Fill in name, acronym (max 10 characters), and the sampling design fields — see Your first research project for the full field list. Your request goes to an admin for approval; once approved, you're the owner.

2. Add a Collection

A Collection is a grouped set of Resources, typically one ingestion session. Resources join a Collection at upload time (via trapper-tools — the on-disk collection directory name becomes the Collection name — or the Citizen Science Upload wizard); there's no admin-UI action to attach already-uploaded Resources to a different Collection after the fact (the Collection.resources field is intentionally excluded from the admin form — exclude = ("resources", ...) in CollectionAdmin). If you need to create an empty Collection ahead of an upload, Storage → Collections → +, set name/owner/status, save — then point your upload at it.

Once the Collection exists, link it to your Research Project from the Research Project's own edit page: scroll to the Research project collections inline table at the bottom, and pick it from the Collection dropdown in a new row.

3. Build a Classificator

Media classification → Classificators → + — see Your first research project for the full step-by-step.

Fastest path if you already have an AI provider

Select the provider's row on the Media classification → Ai providers changelist and run the Create Classificator from AI Provider species mapping action — the resulting Classificator has the species list pre-populated.

4. Configure AI Providers (optional)

If the project will run automatic detection / species classification:

  1. Make sure the AI Manager has the model registered — run sync_models_from_schemas on the AI Manager and sync_ai_models on the Expert (the admin wizard does this on first deploy).
  2. Verify both providers are present and Is active on the Expert admin's Media classification → Ai providers changelist.
  3. If you want manual edits to categories or thresholds to survive future syncs, untick Keep synced on that provider's edit page.

Full background: Register & sync AI providers.

5. Create the Classification Project

Media classification → Classification projects, then the + icon.

Field What it does Recommended value
Name / Description Identify the project
Research project Parent from step 1
Classificator From step 3
Owner Who administers the project Typically yourself
Object detection AI model Detection-type provider e.g. MegaDetector v6
Species AI model Classification-type provider e.g. DeepFaune v1.3
Required AI classification Block annotators until AI has run on a resource Enable for AI-first workflows
Citizen Science status Not belong / Public project / Private project Depends on who should see it in the CS frontend
Confidence warning thresholds Visual-only flags, don't change workflow Project-dependent
Blur humans / vehicles Auto-blur on approved detections Enable for projects on public sites
Exclude human / blank observations Hide from the Citizen Science classifications queryset Project-dependent
Hide classification attributes for non-animals Simpler form when observation_type ≠ animal Project-dependent

There's no "Collections" field here either — a Classification Project sees a Collection's resources once you create a separate Classification projects collection row linking the two (Media classification → Classification projects collections → +, pick Project + Collection). That same page's action dropdown also has (Re)build sequences for selected collections, needed before the classify view can step through bursts of resources — see Your first research project, step 7.

Save.

6. Assign annotators

On the Classification Project's own edit page, two separate inline tables at the bottom handle this:

  • Project roles (Admin / Expert / Collaborator) — pick a user and a role from those three.
  • Citizen Science members — pick a user who should see this project in the Citizen Science frontend (no separate role here).

For project-wide bulk role assignment instead, use the Set roles for selected users admin action — see Users & roles.

Verify it worked

Open the project page in the Citizen Science frontend (or the Expert classify view). You should see the attached collections with counts, AI Classifications populated on resources once the pipeline finishes (watch Flower at port 5555), and the classification form rendered with your Classificator's fields.

Classification project detail view showing collections and AI status

Troubleshooting

AI Classifications never appear

Check the Object detection / Species AI model fields are set and Is active on both providers, that the Classification projects collection row from step 5 exists and sequences have been built, and the Celery Flower dashboard for stuck/failed jobs.

Annotators see a blank/wrong form

The form is generated from the Classificator's attribute schema — re-check step 3, and that the project's Classificator field actually points at the one you edited (a common mix-up when a project has several similar Classificators).

Field reference

For the full set of fields (pipeline behaviour, privacy, video/frame handling, visibility filters) beyond what's covered in step 5 above:

Video & frame handlingvideo_support_enabled (accept video resources at all). Per-job-type AI Worker parameters (confidence thresholds, frame sampling, etc.) live in prediction_config, a JSON field shaped {job_type: {common: {...}, spec: {...}}} and validated against trapper-schemas — edit it via the Prediction Job Configuration section on the project's edit page, expanding the relevant job type (Detection / Classification / Distance Calibration / Distance Estimation).

target_fps isn't a Classification Project field

A field with this name exists, but on a different model — ProjectHypertablePopulation.target_fps, the frame-rate density used when populating the analytics hypertable (see Frame hypertable export), unrelated to AI inference sampling.

Privacy detailblur_backup keeps an unblurred copy under protected/storage/.../backup/. blur_humans_and_vehicles_immediately applies blur as soon as the AI pipeline finishes, without waiting for human approval — irreversible unless blur_backup is on.

Next steps