← Archive
lm-003030 · 2026-08

Anima Dataset Ingestion Spec v0.1

下載 MD 檔 ⬇
📎 附件 · Companion files — 隨文交付的程式 / 證明 / 資料,可獨立下載重驗

Anima Dataset Ingestion Spec v0.1

將 Anima / Danbooru Artist Tag Gallery 轉換為 Model-Conditioned Style Observation Database

版本: v0.1
日期: 2026-08-14
用途: Global Artist Map / Style Kernel Searcher / GAR / AADS / Closed-Loop Runtime


0. 核心定位

本規格的最重要原則是:

Artist StyleAnima Response to Artist Tag\boxed{ \text{Artist Style} \neq \text{Anima Response to Artist Tag} }

因此外部 Anima artist gallery 的資料不直接寫成:

artist = style

而是寫成:

Oa,m,p=Observation(artist_tag=a,model=m,prompt=p)O_{a,m,p} = Observation( artist\_tag=a, model=m, prompt=p )

其中:

  • aa:artist tag
  • mm:model / model version
  • pp:fixed control prompt / benchmark condition
  • OO:在該條件下得到的 model-conditioned visual observation

這能避免把「模型如何理解某 artist tag」誤寫成「藝術家的真實風格本體」。


1. 為什麼這個資料源有價值

Anima Style Explorer 類資料有三個非常適合研究的特性:

  1. 大規模 artist tag 節點;
  2. 固定 control prompt 下的 preview;
  3. Works / dataset-strength 與 Uniqueness 類欄位。

這意味著我們可以把它當成:

External Model-Conditioned Style Observation Dataset

而不是單純畫師名錄。


2. 三層資料模型

Artist Identity Layer
        ↓
Model-Conditioned Observation Layer
        ↓
Derived Style Kernel Layer

2.1 Artist Identity Layer

只記錄「身份/tag/來源」:

artist_tag_id: artisttag://anima/example
source_system: anima
artist_tag_raw: "@example"
artist_tag_normalized: "example"
canonical_name: null
aliases: []
taxonomy: danbooru_based

這一層不做風格判定。


2.2 Model-Conditioned Observation Layer

記錄特定模型與 benchmark 條件下的觀測:

observation_id: observation://anima2b/example/base-preview-01
artist_tag_id: artisttag://anima/example
model_family: Anima
model_version: 2B
benchmark_prompt_id: benchmark://anima/fixed-control/default
works_count: null
uniqueness_score: null
preview_url: null
preview_hash: null

2.3 Derived Style Kernel Layer

這一層才是我們自己的分析:

style_kernel_id: kernel://anima2b/example/base-preview-01
observation_id: observation://anima2b/example/base-preview-01
line_to_painterly: null
flat_to_volumetric: null
muted_to_saturated: null
minimal_to_dense: null
organic_to_industrial: null
bright_to_dark: null
stylized_to_realist: null
static_to_dynamic: null

八維沿用目前 Global Artist Style Map:

K=(L,V,S,D,I,B,R,M)K=(L,V,S,D,I,B,R,M)

3. Tier 系統

目前資料庫應分三個 Tier:

Tier A — Curated Anchor Nodes

我們已人工拆解與核對的高品質畫師節點。

用途:

  • 語意錨點
  • 校正 Style Kernel
  • 人工 benchmark
  • Router 的可信參考

Tier B — External Observed Artist Nodes

由 Anima / Illustrious / NoobAI 等 Style Explorer 匯入的大規模 artist tags。

它們代表:

模型對 tag 的標準化視覺響應。


Tier C — Auto-Derived Style Nodes

由 AI / vision analyzer 從 preview 自動估計:

line
palette
lighting
composition
anatomy
texture
material
style embedding
8D style kernel

這一層必須帶:

analyzer_version
confidence
source_observation_id

4. Canonical Output Files

v0.1 正式定義四個核心資料檔:

artist_tag.csv
style_observation.jsonl
style_kernel.jsonl
source_provenance.json

另加:

source_adapter_contract.json
field_mapping.csv
ingestion_pipeline.json

5. artist_tag.csv

建議欄位:

artist_tag_id
source_system
artist_tag_raw
artist_tag_normalized
canonical_name
aliases_json
taxonomy
works_count
uniqueness_score
uniqueness_rank
source_record_url
first_seen_at
last_seen_at

注意

works_count 只能解釋為:

該 source / model / dataset context 中的近似資料量或 tag 強度訊號。

不可解釋成藝術家影響力、品質或真實作品總數。


6. style_observation.jsonl

每一行代表一次模型條件觀測

必要欄位:

observation_id
artist_tag_id
source_system
model_family
model_version
benchmark_prompt_id
preview_index
preview_url
preview_mime
preview_hash
works_count_snapshot
uniqueness_snapshot
fetched_at

可選:

seed
sampler
scheduler
steps
cfg
resolution
quality_tags
other_generation_metadata

如果來源沒有提供,就必須是 null,不可推測。


7. style_kernel.jsonl

由我們自己的 vision analyzer 產生。

核心欄位:

style_kernel_id
observation_id
analyzer_id
analyzer_version
confidence

八維:

line_to_painterly
flat_to_volumetric
muted_to_saturated
minimal_to_dense
organic_to_industrial
bright_to_dark
stylized_to_realist
static_to_dynamic

擴展欄位:

line_density
edge_sharpness
palette_entropy
color_temperature
value_contrast
texture_density
face_geometry_signature
composition_signature
material_signature
style_embedding_uri

8. source_provenance.json

每一個 ingestion run 必須保存:

source_name
source_url
source_type
source_license
source_terms_status
source_repository
source_revision
crawler_version
fetched_at
record_count
image_binary_policy
notes

這使未來可以知道:

這一批資料到底是從哪一版 source 進來的。


9. Preview Image Policy

v0.1 預設:

Metadata First, Image Mirroring Off by Default\boxed{ \text{Metadata First, Image Mirroring Off by Default} }

也就是第一階段只存:

preview URL
preview index
content hash(若實際研究快取有取得)
source attribution

不預設把外部 preview 圖大量重新發布到我們的公共資料庫。

研究環境若需要 vision analysis,可以建立:

local_research_cache

但 cache 與公開資料庫分離。


10. Image Cache 狀態

not_requested
queued
cached_private
hash_verified
analysis_complete
evicted
blocked

11. Source Adapter

不同外部 gallery 欄位不同,因此 ingestion core 不直接依賴特定網站 DOM。

每個來源實作一個 Adapter:

Source Adapter
    ↓
Raw Record
    ↓
Normalizer
    ↓
Canonical Artist Tag
    ↓
Canonical Observation

最小 contract:

probe_source()
list_records()
parse_artist_tag()
parse_works_count()
parse_uniqueness()
parse_preview_urls()
parse_source_metadata()
normalize_record()

12. v0.1 Source Adapters

預留三個:

adapter://mooshie/anima-style-gallery
adapter://thetacursed/anima-style-explorer
adapter://nregret/anima-tools-datajs

其中第三個特別適合作為機器化 ingestion source,因為公開專案明確描述 data.js 為 40,000+ 詳盡畫師資料,並包含 CDN 映射與 uniqueness 資料。


13. Source Priority

建議:

Tier 1: structured source file / repo data
Tier 2: official gallery metadata endpoint
Tier 3: rendered DOM scrape
Tier 4: manual fallback

也就是:

有 data.js / JSON / index file 就不要靠瀏覽器畫面 OCR 或 DOM 猜。


14. Artist Tag Normalization

Anima artist syntax 通常使用:

@artist_tag

我們拆成:

artist_tag_raw       = "@foo"
artist_tag_normalized = "foo"

永遠保留 raw,不只保存 normalized。


15. Alias 與 Identity

Danbooru artist tag 不一定等於真實姓名。

因此:

artist_tag_normalized

與:

canonical_name

必須分離。

只有外部可信 identity resolution 成功後,才填 canonical name。


16. Works Count

保存兩層:

works_count_current
works_count_observation_snapshot

原因:外部 source 可能更新。


17. Uniqueness

保存:

uniqueness_score
uniqueness_rank
uniqueness_source

若 source 只提供 rank,不能自行反推出 score。


18. 固定 Benchmark Prompt

如果來源宣稱所有 preview 使用固定 control prompt,資料庫應保存:

benchmark_prompt_id

即使 prompt 文字本身暫時未知,也先記:

benchmark://anima/fixed-control/unknown-v1

直到 source 能被驗證。

不可自創 control prompt 後假裝是 source 原始 prompt。


19. Multiple Preview Support

目前 gallery 類工具可能出現多 preview。

所以 observation 必須使用:

preview_index

而不能假設:

one artist = one image

20. Model-Conditioned Matrix

未來對同一 artist tag,可以有:

Anima
Illustrious
NoobAI
Flux / other models

因此:

Ka,m1Ka,m2K_{a,m_1} \neq K_{a,m_2}

本資料模型天然支援:

artist_tag_id
    ├── observation: Anima
    ├── observation: Illustrious
    └── observation: NoobAI

21. Cross-Model Style Drift

可以定義:

ΔK(a;m1,m2)=Ka,m1Ka,m2\Delta K(a;m_1,m_2) = K_{a,m_1}-K_{a,m_2}

研究:

不同模型到底如何解讀同一個 artist tag?

這會成為非常重要的資料產品。


22. Anchor Calibration

Tier A 人工 Anchor 可以用來校正 Tier C 自動 Style Kernel。

例如:

Anima observation
→ AI analyzer
→ predicted kernel
→ compare curated anchor
→ calibrate analyzer

23. Ingestion Pipeline

DISCOVER SOURCE
    ↓
FETCH STRUCTURED RECORDS
    ↓
NORMALIZE TAG IDENTITY
    ↓
STORE ARTIST TAG
    ↓
STORE MODEL-CONDITIONED OBSERVATION
    ↓
OPTIONAL PRIVATE PREVIEW CACHE
    ↓
VISION ANALYSIS
    ↓
DERIVE STYLE KERNEL
    ↓
NEAREST-NEIGHBOR / CLUSTER BUILD
    ↓
GAR / SEARCHER INDEX

24. Idempotency

每次 ingestion 必須可重跑。

主 key:

(source_system, artist_tag_normalized, model_version, preview_index)

避免同一批 source 重跑後產生無限重複資料。


25. Update Detection

如果:

works count changed
uniqueness changed
preview URL changed
preview hash changed

不要直接覆蓋歷史 observation。

建立新的:

observation_revision

26. Tombstone

若 source 移除某 artist tag:

deleted_at
source_status = removed

不要刪掉歷史研究資料。


27. Confidence

每個 derived kernel 必須保存:

confidence_global
confidence_line
confidence_palette
confidence_composition
...

因為固定 benchmark preview 可能不足以觀察藝術家的所有視覺維度。


28. Bias Warning

固定 benchmark prompt 有一個巨大優點:控制變量。

但也有明顯限制:

它觀察的是「某 artist tag 對同一題目的模型反應」,不是藝術家所有題材、年代、媒材的完整分布。

因此:

Oa,m,pStyleDistribution(a)O_{a,m,p} \neq StyleDistribution(a)

29. DataStrength

可以從 Works 建立:

DataStrength(a,m)DataStrength(a,m)

但其解釋只能是:

source/model context 下的資料支撐量 proxy。

不可當成:

藝術價值
知名度
技術力

30. ModelUniqueness

同理:

ModelUniqueness(a,m)ModelUniqueness(a,m)

只是:

模型對該 tag 響應的獨特性訊號。

不是藝術史上的 absolute uniqueness。


31. Database Integration

匯入完成後:

Anima Dataset
↓
Style Observation DB
↓
Style Kernel DB
↓
Global Artist Graph
↓
Style Kernel Searcher
↓
Style Combiner
↓
Prompt Compiler
↓
GAR

32. v0.1 不做的事

本版不:

  1. 批量公開鏡像所有 preview 圖;
  2. 宣稱 artist tag 等於真實作者完整風格;
  3. 自動把 Works 解釋成藝術家作品總數;
  4. 自動把 uniqueness 解釋成藝術價值;
  5. 未驗證就填 canonical identity;
  6. 假設每個 artist 只有一張 preview;
  7. 假設 Anima 與其他模型對 tag 的理解相同。

33. v0.1 最小成功條件

  1. 可以 ingest 至少一種 structured source。
  2. 產生 artist_tag.csv
  3. 產生 style_observation.jsonl
  4. 保留完整 provenance。
  5. 允許 preview metadata without image mirroring。
  6. 可以讓 analyzer 寫回 style_kernel.jsonl
  7. 可以 merge 進現有 8D Style Map。
  8. ingestion 可重跑且不重複。

34. 建議實作順序

Phase A — Metadata Census

先拿下:

artist tag
works
uniqueness
preview URLs
source revision

Phase B — Private Analysis Cache

只對需要分析的 preview 做 local cache。

Phase C — Style Analyzer

產八維 kernel + extended descriptors。

Phase D — Cross-Model Join

加入 Illustrious / NoobAI observations。

Phase E — Search / GAR Integration

把數萬節點正式接進 Style Kernel Searcher。


35. 最終定位

這個資料庫不應叫:

畫師真實風格資料庫

而應叫:

Model-Conditioned Artist Style Observation Database\boxed{ \textbf{Model-Conditioned Artist Style Observation Database} }

它研究的其實是:

artist tag × dataset × model × benchmark prompt → visual response

這比單純保存畫師名字更有研究價值,也能直接成為 AADS / GAR / Closed-Loop Runtime 的大規模風格導航層。