leapshared's picture
์…‹์งธ ๋ถ€๋ฅ˜ none(๋นˆ ์ค„ยท๊ฐ€๋ฆผ)์„ ๋”ํ•œ 3๋ถ€๋ฅ˜ ํŒ์ •๊ธฐ. judge()๊ฐ€ kind 'none'์„ ๋‚ธ๋‹ค (H200, 2026-10-04)
1563787 verified
|
Raw History Blame Contribute Delete
4.41 kB
---
tags:
- robotics
- image-classification
- openarm-sciedu
---
# leaf_kind_dinov2_logreg
OpenArm SciEdu ๋‚˜๋ญ‡์žŽ ๋ถ„๋ฅ˜ ์‹คํ—˜์—์„œ, ์ค„ ์œ„์— ์„  ์žŽ ์นด๋“œ๊ฐ€ ๋ณต์—ฝ(compound)์ธ์ง€ ๋‹จ์—ฝ(simple)์ธ์ง€ ํŒ์ •ํ•œ๋‹ค. ์นด๋“œ๊ฐ€ ์—†๊ฑฐ๋‚˜ ๊ฐ€๋ ค์กŒ์œผ๋ฉด none์ด๋‹ค(2026-10-04 ๋‘˜์งธ ํŒ, ์…‹์งธ ๋ถ€๋ฅ˜ ์ถ”๊ฐ€).
๋กœ๋ด‡ PC ๋Œ€ํ™”์ธต์˜ ํŒ์ •๊ธฐ ์ž๋ฆฌ์— ์“ด๋‹ค. ํŒ์ • ๊ฒฐ๊ณผ์— ๊ทœ์น™์„ ์ ์šฉํ•ด ์™ผ์ชฝ/์˜ค๋ฅธ์ชฝ์„ ์ •ํ•˜๊ณ , ๊ทธ ์ชฝ ๋ฌธ์žฅ์„ pi0.5(`leapshared/SciEdu_pauses_3exp_210epi_leafdir_pi05`)์— ๋ณด๋‚ธ๋‹ค.
## ๊ตฌ์„ฑ
- **ํŠน์ง•:** `facebook/dinov2-base`์˜ `pooler_output`(์ตœ์ข… layernorm ๋’ค CLS ํ† ํฐ, 768)
- **๋ถ„๋ฅ˜๊ธฐ:** ํ‘œ์ค€ํ™”(mean, std) ๋’ค 3๋ถ€๋ฅ˜ ์†Œํ”„ํŠธ๋งฅ์Šค ํšŒ๊ท€(W 3ร—768, b 3). ๋ถ€๋ฅ˜๋Š” `classes` = [compound, simple, none]์ด๋‹ค. `classifier.json`์— ์ˆซ์ž 3,843๊ฐœ๊ฐ€ ์žˆ๋‹ค.
- **์ „์ฒ˜๋ฆฌ:** `AutoImageProcessor(facebook/dinov2-base)`. ์งง์€ ๋ณ€ 256์œผ๋กœ bicubic ์ค„์ด๊ธฐ, ๊ฐ€์šด๋ฐ 224 ์ž๋ฅด๊ธฐ, /255, ImageNet mean/std, RGB
- **์ž…๋ ฅ:** `follower_d455f` 640ร—480 RGB ํ”„๋ ˆ์ž„์—์„œ ์ƒ์ž (x0, y0, x1, y1) = (150, 100, 490, 440)์„ ์ž๋ฅธ๋‹ค.
- **์ฐ๋Š” ๋•Œ:** ์นด๋“œ๊ฐ€ ์ค„ ์œ„์— ํ˜ผ์ž ์„œ ์žˆ๊ณ  ๋‘ ํŒ”์ด ์‰ฌ๊ณ  ์žˆ์„ ๋•Œ. ํ•™์Šต ์‚ฌ์ง„์€ ์นด๋“œ๋ฅผ ์˜ฎ๊ธด ํŒ”์ด ์ถœ๋ฐœํ•˜๊ธฐ 5ํ”„๋ ˆ์ž„ ์ „์ด๋‹ค.
## ์“ฐ๋Š” ๋ฒ•
```python
from leaf_kind import LeafKind
clf = LeafKind() # CPU. classifier.json๊ณผ dinov2-base๋ฅผ ๋ฐ›๋Š”๋‹ค
r = clf.judge([f1, f2, f3]) # ๊ฐ™์€ ๋•Œ ์ฐ์€ ํ”„๋ ˆ์ž„ ๋ช‡ ์žฅ (H x W x 3 RGB uint8)
# r["kind"]: "compound" | "simple" โ†’ ์˜ฎ๊ธด๋‹ค
# "none" โ†’ ์นด๋“œ๊ฐ€ ์—†๊ฑฐ๋‚˜ ๊ฐ€๋ ค์กŒ๋‹ค(ํ•œ ํ”„๋ ˆ์ž„์ด๋ผ๋„ none์ด๋ฉด). ํŒ์ •ํ•˜์ง€ ์•Š๊ณ  1์ดˆ ๋’ค ๋‹ค์‹œ ๋ณธ๋‹ค
# None โ†’ ์นด๋“œ๋Š” ์žˆ๋Š”๋ฐ ํ”„๋ ˆ์ž„ ๋‹ต์ด ๊ฐˆ๋ ธ๊ฑฐ๋‚˜ ํ‰๊ท  ํ™•์‹ ์ด 0.9๋ณด๋‹ค ๋‚ฎ๋‹ค. ์„ ์ƒ๋‹˜์—๊ฒŒ ๋ฌป๋Š”๋‹ค
# r["probs"]: ํ”„๋ ˆ์ž„ ํ‰๊ท  {compound, simple, none}, r["votes"]: ํ”„๋ ˆ์ž„๋ณ„ ํŒ์ •
```
## ๊ฒ€์ฆ (2026-10-04, H200)
- ์นด๋“œ ์‚ฌ์ง„: `Leaf_rules_60epi_labeled` 0~59๋ฒˆ(ํ•ฉ๋ณธ ๋‚˜๋ญ‡์žŽ 0~59๋ฒˆ)
- ๋กœ๋ด‡ PC probe 142์žฅ + H200์ด ๊ทธ๋ฆฌํผ๋กœ ์ฐพ์€ 314์žฅ
- H200 ๊ฒ€์ถœ์—์„œ ์นด๋“œ๊ฐ€ ๊ฐ€๋ ค์กŒ๊ฑฐ๋‚˜ ๋†“์ด๊ธฐ ์ „์ธ 20์žฅ(๋ˆˆ์œผ๋กœ ํ™•์ธ)์€ ๋บ๋‹ค.
- ์ •๋‹ต์€ ์—ํ”ผ์†Œ๋“œ ๊ทœ์น™(๋ณต์—ฝ ์™ผ์ชฝ / ๋ณต์—ฝ ์˜ค๋ฅธ์ชฝ) ร— ์นด๋“œ๋ฅผ ์˜ฎ๊ธด ํŒ”์ด๋‹ค.
- none ์‚ฌ์ง„ 795์žฅ
- A ์—ํ”ผ์†Œ๋“œ ๋ ๋นˆ ์ค„ 120
- B ๊ทธ๋ฆฌํผ๊ฐ€ ์นด๋“œ๋ฅผ ์ฅ” ์งํ›„(๊ฐ€๋ฆผ) 338
- C ์ฅ” ๋’ค 1.5์ดˆ(์นด๋“œ๋ฅผ ์˜ฎ๊ธฐ๋Š” ์ค‘์ด๊ฑฐ๋‚˜ ๋นˆ ์ค„) 337. ์‚ฌ๋žŒ ์†์ด ์นด๋“œ๋ฅผ ๋†“๋Š” 1์žฅ์€ ๋บ๋‹ค.
- ํ•™์Šต์€ ๋ถ€๋ฅ˜ ๊ท ํ˜• ๊ฐ€์ค‘์น˜๋กœ ํ–ˆ๋‹ค.
๊ฒ€์ฆ ์—ํ”ผ์†Œ๋“œ 6ยท7ยท46ยท47์„ ๋นผ๊ณ  ํ•™์Šตํ•ด ๊ทธ ์—ํ”ผ์†Œ๋“œ๋กœ ์žฐ ๊ฒฐ๊ณผ(ํ–‰: ์ •๋‹ต, ์—ด: ํŒ์ •):
| ์ •๋‹ต \ ํŒ์ • | compound | simple | none |
|---|---|---|---|
| compound | 21 | 0 | 0 |
| simple | 0 | 22 | 0 |
| none | 0 | 0 | 52 |
์—ํ”ผ์†Œ๋“œ ๋‹จ์œ„ 10๊ฒน(1,251์žฅ):
| ์ •๋‹ต \ ํŒ์ • | compound | simple | none |
|---|---|---|---|
| compound | 238 | 0 | 1 |
| simple | 0 | 216 | 1 |
| none | 0 | 0 | 795 |
- none์„ ์นด๋“œ๋กœ ๋ณธ ๊ฒƒ(์—†๋Š” ์นด๋“œ๋ฅผ ์ง‘์œผ๋Ÿฌ ๊ฐ€๋Š” ์‹ค์ˆ˜)์€ 0์ด๋‹ค.
- ์นด๋“œ๋ฅผ none์œผ๋กœ ๋ณธ 2์žฅ์€ 1์ดˆ ๋’ค ๋‹ค์‹œ ๋ณด๋Š” ์ชฝ ์‹คํŒจ๋‹ค.
- ์ฒ˜์Œ ๋ณด๋Š” ์นด๋“œ ๋””์ž์ธ์—์„œ์˜ ๋ณต์—ฝ/๋‹จ์—ฝ ์ •ํ™•๋„๋Š” ์ฒซ ํŒ(2๋ถ€๋ฅ˜)์œผ๋กœ ์žฐ ๋Œ€๋žต๊ฐ’์ด 92~94%๋‹ค.
- ํ•™์Šต ์‚ฌ์ง„์€ AV1๋กœ ๋…นํ™”ํ•œ ์˜์ƒ์„ ํ’€์–ด ์“ด ๊ฒƒ์ด๋‹ค. ์‹ค๊ธฐ ์นด๋ฉ”๋ผ ํ”„๋ ˆ์ž„์—์„œ๋„ ๋ช‡ ์žฅ์œผ๋กœ ํ™•์ธํ•˜๊ธฐ๋ฅผ ๊ถŒํ•œ๋‹ค.
## ํ•œ๊ณ„
- none์€ ๋…นํ™”์— ์žˆ๋˜ ์žฅ๋ฉด(๋นˆ ์ค„, ๊ทธ๋ฆฌํผ ๊ฐ€๋ฆผ, ์นด๋“œ๋ฅผ ์˜ฎ๊ธฐ๋Š” ์ค‘)์œผ๋กœ๋งŒ ๋ฐฐ์› ๋‹ค. ์‚ฌ๋žŒ ์†์ด ์นด๋“œ๋ฅผ ๋†“๋Š” ์ค‘์ธ ์‚ฌ์ง„์€ ๋”ฐ๋กœ ๋ฐฐ์šฐ์ง€ ์•Š์•˜๋‹ค.
- ๊ฐ™์€ ๋•Œ ์ฐ์€ ํ”„๋ ˆ์ž„ ์ค‘ ํ•˜๋‚˜๋ผ๋„ none์ด๋ฉด none์„ ๋‚ธ๋‹ค. ์—†๋Š” ์นด๋“œ๋ฅผ ์ง‘์œผ๋Ÿฌ ๊ฐ€์ง€ ์•Š๋Š” ์ชฝ์œผ๋กœ ์ •ํ–ˆ๋‹ค.
- ์™ผ์ชฝ/์˜ค๋ฅธ์ชฝ์€ ์ด ํŒ์ •๊ธฐ๊ฐ€ ์•„๋‹ˆ๋ผ ๋Œ€ํ™”์ธต์ด ํ•™์ƒ ๊ทœ์น™์œผ๋กœ ์ •ํ•œ๋‹ค.
## CPU ์†๋„ (H200 ์„œ๋ฒ„ CPU, x86_64 24์ฝ”์–ด. ๋กœ๋ด‡ PC์—์„œ๋Š” ๋‹ค๋ฅผ ์ˆ˜ ์žˆ๋‹ค)
| ์Šค๋ ˆ๋“œ | 1์žฅ | 3์žฅ ํ•œ ๋ฒˆ์— |
|---|---|---|
| 1 | 339 ms | 967 ms |
| 4 | 97 ms | 285 ms |
| 8 | 58 ms | 152 ms |
๋‘˜์งธ ํŒ `judge` 3์žฅ์€ CPU 8์Šค๋ ˆ๋“œ๋กœ 181 ms์˜€๋‹ค(์†Œํ”„ํŠธ๋งฅ์Šค๋Š” ๋ฌด์‹œํ•  ๋งŒํผ ๊ฐ€๋ณ๋‹ค).
## ํŒŒ์ผ
- `classifier.json`: ์ˆซ์ž(mean, std, W, b), ๋ถ€๋ฅ˜, ์ž๋ฅด๊ธฐ ์ƒ์ž, ์ „์ฒ˜๋ฆฌ ์„ค๋ช…, ๊ฒ€์ฆ ๊ฒฐ๊ณผ(ํ˜ผ๋™ ํ–‰๋ ฌ)
- `leaf_kind.py`: ํŒ์ •๊ธฐ(`LeafKind`)
- ํ•™์Šตยทํ‰๊ฐ€ ์ฝ”๋“œ์™€ ๊ฒฐ๊ณผ(H200): `scripts/leaf_kind/`, `logs/leaf_kind_local/`