Evaluates zero-shot species classification and fine-grained text-image retrieval capabilities in biological domains. Probes the model's ability to align visual features with taxonomic labels and descriptive natural language without task-specific fine-tuning. Use when the user wants to benchmark on NABirds, Meta-Album (Plankton, Insects, Insects 2), IDLE-OO Camera Traps, Rare Species, PlantNet, Fungi, PlantVillage, Med. Leaf, INQUIRE-Rerank, Cornell Bird, PlantID, or asks about evaluating this...
Scanned 9/11/2026
Install to Claude Code
npx -y skills add qhjqhj00/research-skills-pool --skill biocap-eval --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Biocap Eval?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/qhjqhj00-biocap-eval)More formats (shields.io, HTML) on the badges page.
---
name: biocap-eval
description: Evaluates zero-shot species classification and fine-grained text-image retrieval capabilities in biological domains. Probes the model's ability to align visual features with taxonomic labels and descriptive natural language without task-specific fine-tuning. Use when the user wants to benchmark on NABirds, Meta-Album (Plankton, Insects, Insects 2), IDLE-OO Camera Traps, Rare Species, PlantNet, Fungi, PlantVillage, Med. Leaf, INQUIRE-Rerank, Cornell Bird, PlantID, or asks about evaluating this task. Reports top-1 accuracy.
metadata:
skill_kind: dataset_eval
source_arxiv: 2510.20095
bibtex_key: zhang2025biocap
confidence: high
---
# biocap-eval
> BioCAP: Exploiting Synthetic Captions Beyond Labels in Biological Foundation Models — Ziheng Zhang et al. (arXiv:2510.20095, 2025)
## What this evaluates
Evaluates zero-shot species classification and fine-grained text-image retrieval capabilities in biological domains. Probes the model's ability to align visual features with taxonomic labels and descriptive natural language without task-specific fine-tuning.
## Datasets
- **NABirds** — total ?; splits: test (-1)
- **Meta-Album (Plankton, Insects, Insects 2)** — total ?; splits: test (-1)
- **IDLE-OO Camera Traps** — total ?; splits: test (-1)
- **Rare Species** — total ?; splits: test (-1)
- **PlantNet** — total ?; splits: test (-1)
- **Fungi** — total ?; splits: test (-1)
- **PlantVillage** — total ?; splits: test (-1)
- **Med. Leaf** — total ?; splits: test (-1)
- **INQUIRE-Rerank** — total ?; splits: test (-1)
- **Cornell Bird** — total ?; splits: test (-1)
- **PlantID** — total ?; splits: test (-1)
## Metrics
- `top-1 accuracy` **(primary)** — range: [0, 1]
- Fraction of correctly predicted species labels out of the total number of test instances.
- `AP@50` — range: [0, 1]
- Average Precision computed over the top 50 ranked documents for each query.
- `Recall@10` — range: [0, 1]
- Fraction of queries where the ground-truth matching image or text appears in the top 10 retrieved results.
## Input / output format
**Input**: RGB image paired with a species name (for classification) or a natural language query (for retrieval).
**Output**: Predicted class label (classification) or a ranked list of images/texts (retrieval).
## Scoring recipe
```python
def compute_metrics(predictions, golds, k=10, max_docs=50):
# Classification
acc = sum(p == g for p, g in zip(predictions['cls'], golds['cls'])) / len(golds['cls'])
# Retrieval Recall@K
recalls = []
for img, texts, gold_text in zip(predictions['img'], golds['texts'], golds['gold_text']):
scores = model.compute_similarity(img, texts)
ranked = argsort(scores, descending=True)[:k]
recalls.append(any(gold_text == texts[i] for i in ranked))
recall_at_k = sum(recalls) / len(recalls)
# AP@50
aps = []
for query, docs, gold_doc in zip(predictions['query'], golds['docs'], golds['gold_doc']):
scores = model.compute_similarity(query, docs)
ranked = argsort(scores, descending=True)[:max_docs]
relevant = [1 if docs[i] == gold_doc else 0 for i in range(len(ranked))]
precisions = [sum(relevant[:i+1]) / (i+1) for i in range(len(relevant))]
ap = sum(p * r for p, r in zip(precisions, relevant)) / max(sum(relevant), 1)
aps.append(ap)
ap_at_50 = sum(aps) / len(aps)
return acc, recall_at_k, ap_at_50
```
## Common pitfalls
- Zero-shot evaluation prohibits fine-tuning on target benchmarks, making results highly sensitive to pre-training data overlap and domain shift.
- Retrieval performance is asymmetric; I2T and T2I Recall@10 are reported separately and can diverge significantly due to modality mismatch.
- Averaging accuracy across 10 heterogeneous benchmarks (birds, plants, fungi, camera traps) may obscure domain-specific failures or dataset scale imbalances.
## Evidence (verbatim from paper)
> We evaluate the natural language understanding on INQUIRE-Rerank (AP@50), Cornell Bird and PlantID(Recall@10) in [Table 2].
## Citation
```bibtex
@misc{zhang2025biocap,
title={BioCAP: Exploiting Synthetic Captions Beyond Labels in Biological Foundation Models},
author={Ziheng Zhang et al.},
year={2025},
note={arXiv:2510.20095}
}
```
- arXiv: 2510.20095
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!