five

Horama/animal-200-temp

收藏
Hugging Face2026-04-21 更新2026-04-26 收录
下载链接:
https://hf-mirror.com/datasets/Horama/animal-200-temp
下载链接
链接失效反馈
官方服务:
资源简介:
--- license: agpl-3.0 task_categories: - image-classification language: - fr - en tags: - wildlife - animals - species - scraping - iNaturalist pretty_name: Animal-200 — Wildlife Image Classification (179 species) size_categories: - 10K<n<100K dataset_info: features: - name: image dtype: image configs: - config_name: default data_files: - split: all path: data/*.parquet --- # Animal-200 — Wildlife Image Classification Jeu de données d'images d'animaux sauvages scrapées sur quatre sources publiques (iNaturalist, Wikimedia, Wikipédia, DuckDuckGo Images), couvrant **179 espèces** (mammifères, oiseaux, reptiles). **81 541 images** pré-classifiées par CLIP (vivant / cadrage / watermark) et pré-splittées pour la classification d'espèce. ## Sources | Source | Scraper | Images | |-------------------------|--------------------------------------|-------:| | **iNaturalist** | `inat_downloader/` (MIT) | 58 073 | | **DuckDuckGo Images** | `scraping/scrapers/duckduckgo.py` | 19 441 | | **Wikimedia Commons** | `scraping/scrapers/wikimedia.py` | 3 988 | | **Wikipédia** | `scraping/scrapers/wikipedia.py` | 39 | Les images iNaturalist sont téléchargées via l'API publique avec respect du rate-limit (≤ 10 000 requêtes/jour, ≤ 24 Go média/jour). Le fichier [inat_metadata.csv](inat_metadata.csv) conserve les métadonnées d'observation (observer, licence, date, lat/lon) pour la portion iNaturalist uniquement. ## Structure ``` . ├── data/ │ └── 00000-of-00055.parquet … 00054-of-00055.parquet ├── animal-200-classification.csv ├── inat_metadata.csv └── README.md ``` - **`data/*.parquet`** — 55 shards d'environ 475 MB, colonne unique `image` (HF `Image` feature : bytes JPEG/PNG/WEBP + path). Les images sont stockées en **binaire encodé** dans le champ `bytes` du struct `image` ; elles sont décodées à la volée en `PIL.Image` RGB par `datasets.load_dataset`. - **`animal-200-classification.csv`** — table d'annotations. **Jointure par ordre de ligne** avec le parquet concaténé : `image_id` = index global dans la table CSV = index de ligne dans les shards concaténés (tri alphabétique par espèce). - **`inat_metadata.csv`** — métadonnées d'observation iNaturalist (sous-ensemble de 76 220 lignes, jointure par `img_name` ↔ `filename`). ## CSV — `animal-200-classification.csv` | colonne | description | |-------------------|-------------------------------------------------------------------| | `label` | espèce (179 classes, cf. distribution ci-dessous) | | `filename` | nom de fichier original (conserve le préfixe du scientifique) | | `image_id` | identifiant stable `a200_img_00000` … `a200_img_81540` (suffixe numérique = index de ligne dans les parquets) | | `alive_score` | score continu CLIP « animal vivant » | | `alive` | booléen dérivé (`alive_score ≥ 0.5`) | | `watermark_score` | score continu CLIP « watermark » | | `watermark` | booléen watermark (seuil 0.48) | | `distance` | cadrage : `close` / `medium` / `far` | | `source` | scraper d'origine : `inaturalist` / `duckduckgo` / `wikimedia` / `wikipedia` | | `split` | `train` / `valid` / `test` (60 / 20 / 20 par espèce, seed 42) | ### Règles de split - Toutes les images avec `watermark=True` sont **forcées dans `train`** (jamais dans `valid` ni `test`) pour garantir un benchmark propre. - Split stratifié par `label`, seed 42, reproductible depuis la colonne `split`. - Les images avec `alive=False` auraient été placées dans un split `remove` — aucune ligne ne remplit cette condition ici (les CSVs source sont déjà filtrés `alive_score ≥ 0.5`). ## Distribution ### Splits | split | n | part | |--------|-------:|------:| | train | 49 553 | 60.8 % | | valid | 16 171 | 19.8 % | | test | 15 817 | 19.4 % | Légèrement biaisé vers `train` car tous les watermarks y sont concentrés (22 532 images ≈ 27.6 % du total, 45.5 % de `train`). ### Attributs CLIP | attribut | valeur | n | |-----------------------|-------------|-------:| | `alive` | True | 81 541 | | `watermark` | True | 22 532 | | `watermark` | False | 59 009 | | `distance` | `medium` | 50 025 | | `distance` | `far` | 27 529 | | `distance` | `close` | 3 987 | ### Sources × split | source | train | valid | test | |-------------|-------:|-------:|-------:| | inaturalist | 33 123 | 12 608 | 12 342 | | duckduckgo | 14 335 | 2 566 | 2 540 | | wikimedia | 2 077 | 988 | 923 | | wikipedia | 18 | 9 | 12 | ## Espèces (179 classes) Distribution déséquilibrée : min = 242 (`moufette`), médiane = 462, max = 1 002 (`dhole`) — ratio ~4×. Prévoir échantillonnage pondéré ou loss pondérée côté entraînement. <details> <summary>Distribution complète (cliquer pour déplier)</summary> | espèce | n | |---|---:| | dhole | 1 002 | | loriquet_arc_en_ciel | 960 | | capybara | 917 | | grue_couronnee_grise | 855 | | maki_catta | 681 | | pelican_frise | 584 | | hapalemur_dore | 576 | | lycaon | 567 | | ouistiti_pygmee | 558 | | gorille_plaines | 555 | | gibbon_mains_blanches | 527 | | casoar | 522 | | petit_hapalemur | 521 | | lemur_ventre_rouge | 516 | | lemur_fauve | 514 | | serval | 513 | | renard_polaire | 506 | | maki_vari_noir | 505 | | tamarin_pinche | 505 | | wallaby_bennet | 504 | | lemur_noir | 502 | | patas | 500 | | macaque_rhesus | 500 | | colobe_guereza | 500 | | macaque_japonais | 498 | | nyala | 497 | | lemur_couronne | 496 | | guib_harnache | 495 | | panda_roux | 495 | | saki_face_blanche | 495 | | cariama_huppe | 494 | | gnou_queue_blanche | 493 | | agouti_azara | 493 | | zebre_chapman | 492 | | messager_sagittaire | 492 | | rhinoceros_blanc | 491 | | buffle_eau | 490 | | rhino_inde | 490 | | cobe_defassa | 490 | | cerf_sika | 490 | | tamarin_roux | 489 | | cheval_przewalski | 489 | | rhino_noir | 489 | | amazone_aourou | 488 | | antilope_cervicapre | 487 | | amazone_farineuse | 487 | | grand_eclectus | 487 | | cobe_lechwe | 487 | | suricate | 486 | | petit_koudou | 486 | | grand_hocco | 486 | | maki_vari_roux | 486 | | addax | 484 | | impala | 484 | | alpaga | 483 | | tamarin_lion | 483 | | sitatunga | 483 | | gaur | 482 | | mara | 482 | | zebre_grevy | 480 | | colombien_turvert | 479 | | kangourou_roux | 479 | | lion_afrique | 479 | | cobe_croissant | 479 | | pigeon_madagascar | 479 | | hippotrague_rouan | 478 | | hippotrague_noir | 477 | | chevreuil | 477 | | vigogne | 477 | | buffle_afrique | 476 | | panthere_afrique | 476 | | chevre_naine | 475 | | amazone_front_bleu | 475 | | chien_buisson | 474 | | calao_leadbeater | 473 | | oryx_gazelle | 473 | | oryx_arabie | 471 | | zebre_montagne | 471 | | mangabey_collier | 470 | | boeuf_ecosse | 469 | | bongo | 469 | | macaque_tonkean | 469 | | springbok | 467 | | vanneau_eperonne | 466 | | titi_roux | 466 | | ours_lunettes | 465 | | gazelle_perse | 465 | | ane_commun | 463 | | elephant_afrique | 463 | | nandou | 462 | | grue_couronnee_noire | 461 | | calao_abyssinie | 461 | | cerf_elaphe | 461 | | loutre_asie | 460 | | ane_afrique | 460 | | guanaco | 460 | | dromadaire | 459 | | grizzly | 459 | | emeu | 459 | | hippopotame | 458 | | vautour_africain | 456 | | ane_somalie | 456 | | vautour_fauve | 453 | | guepard | 452 | | vautour_ruppel | 452 | | oryx_beisa | 450 | | cacatoes_rosalbin | 448 | | eland_cap | 447 | | urubu_tete_rouge | 447 | | tamarin_goeldi | 447 | | gazelle_thomson | 446 | | muntjac_chine | 445 | | gazelle_grant | 444 | | fourmillier | 443 | | bison_europe | 441 | | loup_arctique | 439 | | vanneau_soldat | 437 | | grand_koudou | 436 | | saki_vanzolini | 435 | | agouti | 435 | | milan_noir | 434 | | autruche | 431 | | chacal_chabraque | 429 | | grue_demoiselle | 429 | | damalisque | 429 | | chacal_flancs | 427 | | paca | 418 | | chevre | 417 | | magabey_dore | 417 | | calopsitte | 416 | | tamarin_noir | 415 | | phacochere | 413 | | hyene_tachetee | 411 | | pelican_blanc | 411 | | coati_nez_blanc | 410 | | eland_derby | 409 | | mouton_valachie | 408 | | daim_europe | 407 | | bubale_roux | 405 | | oie | 405 | | bongo_montagne | 401 | | cochon_d_inde | 400 | | perruche_patagonie | 399 | | anoa | 399 | | coyote | 398 | | renard_roux | 398 | | cheval_comtois | 397 | | panthere_chine | 391 | | bison_amerique | 390 | | oryx_algazelle | 388 | | mouton | 375 | | watussi | 373 | | chevre_anglo_nubienne | 370 | | lapin_geant_papillon | 368 | | lynx_carpates | 366 | | onagre | 359 | | panthere_neige | 352 | | gibbon_bonnet | 348 | | saimiris_perou | 346 | | chien | 345 | | cochon_laineux | 345 | | tapire_terrestre | 342 | | hapalemur_lac | 341 | | chat | 340 | | mouton_somalie | 339 | | girafe_kordofan | 337 | | tigre_siberie | 328 | | ours_baribal | 328 | | chacal_dore | 327 | | raton_laveur | 314 | | loup_gris | 309 | | hocco_daubenton | 306 | | loup_mackenzie | 305 | | bassaris | 303 | | loup_criniere | 302 | | chouette_effraie | 293 | | gnou_bleu | 291 | | sanglier | 287 | | moufette | 242 | | **total** | **81 541** | </details> ## Aperçu Échantillons 3×3 : ### `alive` ![alive](examples/viz_alive.png) ### `distance = close` ![close](examples/viz_close.png) ## Chargement ```python from datasets import load_dataset import pandas as pd ds = load_dataset("Horama/animal-200", split="all") # bytes → PIL RGB à la volée meta = pd.read_csv("animal-200-classification.csv") # Exemple 1 — récupérer label et split par index idx = 42 image = ds[idx]["image"] row = meta.iloc[idx] print(row["label"], row["split"], row["distance"]) # Exemple 2 — filtrer le train set propre (sans watermark) # image_id = "a200_img_00042" → index = 42 to_index = lambda s: int(s.removeprefix("a200_img_")) train_mask = (meta["split"] == "train") & (~meta["watermark"]) train_ds = ds.select(meta.loc[train_mask, "image_id"].map(to_index).tolist()) # Exemple 3 — subset iNaturalist uniquement inat_ds = ds.select(meta.loc[meta["source"] == "inaturalist", "image_id"].map(to_index).tolist()) ``` ## Limitations - **Données scrapées brutes** — attendez-vous à du bruit : quelques erreurs d'espèce résiduelles, sous-espèces mélangées, photos de zoo/enclos, arrière-plans variables. - **Pré-filtres CLIP imparfaits** — `alive`, `watermark` et `distance` sont des classifieurs zero-shot (`openai/clip-vit-large-patch14`), pas des labels manuels. Seuils utilisés : `alive ≥ 0.5`, `watermark ≥ 0.48`. - **Classes déséquilibrées** — ratio 4× entre la classe majoritaire et la minoritaire. - **Wikipedia sous-représentée** (39 images) — à traiter comme résidu, ne pas stratifier par source. ## License Dataset publié sous **AGPL-3.0**. Utilisable, modifiable et redistribuable librement tant que les dérivés restent open-source sous la même licence. Pour un usage **closed-source ou commercial**, contacter Horama. Crédits iNaturalist : les métadonnées `observation_license` dans `inat_metadata.csv` listent la licence Creative Commons par image (cc0, cc-by, cc-by-nc, cc-by-nc-nd, cc-by-nc-sa). ## Citation ```bibtex @misc{horama_animal200_2026, title = {Animal-200: Wildlife Image Classification (179 species)}, author = {Horama}, year = {2026}, url = {https://huggingface.co/datasets/Horama/animal-200}, note = {Images scrapées depuis iNaturalist, Wikimedia, Wikipédia et DuckDuckGo, avec pré-classification CLIP et splits 60/20/20 par espèce.} } ```
提供机构:
Horama
5,000+
优质数据集
54 个
任务类型
进入经典数据集
二维码
社区交流群

面向社区/商业的数据集话题

二维码
科研交流群

面向高校/科研机构的开源数据集话题

数据驱动未来

携手共赢发展

商业合作