File size: 2,305 Bytes
2f5e6a3
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
55a9764
2f5e6a3
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
---
license: mit
---

## Meshy ํ…์Šค์ฒ˜๋ง ๋ถ„๋ฅ˜ ๋ชจ๋ธ

### ๐Ÿ“Œ ๋ชจ๋ธ ์„ค๋ช…
์ด ๋ชจ๋ธ์€ **3D ๋ชจ๋ธ ์ธ๋„ค์ผ ์ด๋ฏธ์ง€**๋ฅผ ์ž…๋ ฅ์œผ๋กœ ๋ฐ›์•„, ์ด๋ฏธ์ง€๊ฐ€ **ํ…์Šค์ฒ˜๋ง ๋˜์–ด ์žˆ๋Š”์ง€ ์•„๋‹Œ์ง€**๋ฅผ ๋ถ„๋ฅ˜ํ•ฉ๋‹ˆ๋‹ค.

- **ํƒœ์Šคํฌ**: ์ด์ง„ ์ด๋ฏธ์ง€ ๋ถ„๋ฅ˜ (Textured vs. Not Textured)
- **ํด๋ž˜์Šค**:
  - `0`: ํ…์Šค์ฒ˜๋ง ์•ˆ๋จ
  - `1`: ํ…์Šค์ฒ˜๋ง ๋จ
- **๋ชจ๋ธ ๊ตฌ์กฐ**: ResNet18 (ImageNet ์‚ฌ์ „ํ•™์Šต ์‚ฌ์šฉ)
- **์ž…๋ ฅ ์ด๋ฏธ์ง€ ํฌ๊ธฐ**: 224 ร— 224 RGB ์ด๋ฏธ์ง€
- **์ถœ๋ ฅ**: 2๊ฐœ์˜ ํด๋ž˜์Šค์— ๋Œ€ํ•œ ๋กœ์ง“๊ฐ’ (์†Œํ”„ํŠธ๋งฅ์Šค ์ „)

---

### ๐Ÿ“‚ ํ•™์Šต ๋ฐ์ดํ„ฐ
- **CSV ํŒŒ์ผ**: `meshy_textured_gold.csv`
- **์ด๋ฏธ์ง€ ์ถœ์ฒ˜**: Meshy AI์—์„œ ์ƒ์„ฑ๋œ 3D ์ธ๋„ค์ผ ์ด๋ฏธ์ง€
- **๋ผ๋ฒจ๋ง ๋ฐฉ๋ฒ•**: ์‚ฌ๋žŒ์ด ์ง์ ‘ ํ…์Šค์ฒ˜๋ง ์—ฌ๋ถ€๋ฅผ ๋ณด๊ณ  ์ˆ˜์ž‘์—…์œผ๋กœ ๋ผ๋ฒจ ๋ถ€์—ฌ
- **์ƒ˜ํ”Œ ์ˆ˜**: ์•ฝ 500์žฅ (ํ…์Šค์ฒ˜๋ง / ๋น„ํ…์Šค์ฒ˜๋ง ํด๋ž˜์Šค ๊ท ํ˜• ์žˆ์Œ)

---

### ๐Ÿ” ํ‰๊ฐ€ ์ •๋ณด
- **ํ‰๊ฐ€์ง€ํ‘œ**: ์ •ํ™•๋„(Accuracy) ๊ธฐ์ค€ ์•ฝ 90% ์ด์ƒ
- **์†์‹ค ํ•จ์ˆ˜**: CrossEntropyLoss
- **์ตœ์ ํ™” ์•Œ๊ณ ๋ฆฌ์ฆ˜**: Adam (lr=1e-4)

> ๊ฒ€์ฆ ๋ฐ์ดํ„ฐ์…‹์—์„œ๋„ ์•ˆ์ •์ ์ธ ์„ฑ๋Šฅ์„ ๋ณด์˜€์œผ๋ฉฐ, ๋ผ๋ฒจ๊ณผ ์˜ˆ์ธก ๊ฒฐ๊ณผ๋ฅผ ์ด๋ฏธ์ง€๋กœ ์‹œ๊ฐํ™”ํ•˜์—ฌ ์„ฑ๋Šฅ์„ ์ถ”๊ฐ€ ํ™•์ธํ–ˆ์Šต๋‹ˆ๋‹ค.

---

### ๐Ÿงช ์‚ฌ์šฉ๋ฒ•

```python
from torchvision import transforms, models
from PIL import Image
import torch

# ๋ชจ๋ธ ๋กœ๋“œ
model = models.resnet18()
model.fc = torch.nn.Linear(model.fc.in_features, 2)
model.load_state_dict(torch.load("pytorch_model.bin", map_location="cpu"))
model.eval()

# ์ „์ฒ˜๋ฆฌ ์ •์˜
transform = transforms.Compose([
    transforms.Resize((224, 224)),
    transforms.ToTensor(),
    transforms.Normalize([0.485, 0.456, 0.406],
                         [0.229, 0.224, 0.225])
])

# ์˜ˆ์ธก
img = Image.open("example.jpg").convert("RGB")
x = transform(img).unsqueeze(0)
with torch.no_grad():
    logits = model(x)
    pred = logits.argmax(dim=1).item()
    print("ํ…์Šค์ฒ˜๋ง ๋จ" if pred == 1 else "ํ…์Šค์ฒ˜๋ง ์•ˆ๋จ")
```

---

### ๐ŸŽฏ ์‚ฌ์šฉ ๋ชฉ์ 
- ์ธ๋„ค์ผ ์ด๋ฏธ์ง€๊ฐ€ ํ…์Šค์ฒ˜๋ง๋œ ๊ฒƒ์ธ์ง€ ์ž๋™์œผ๋กœ ๊ตฌ๋ถ„
- ๋Œ€๊ทœ๋ชจ ๋ฐ์ดํ„ฐ์…‹ ์„ ๋ณ„, ํ’ˆ์งˆ ๊ด€๋ฆฌ, ๋ผ๋ฒจ๋ง ์‹œ๊ฐ„ ๋‹จ์ถ• ๋“ฑ์— ํ™œ์šฉ ๊ฐ€๋Šฅ

---

### ๐Ÿท๏ธ ํƒœ๊ทธ
`์ด๋ฏธ์ง€ ๋ถ„๋ฅ˜`, `์ด์ง„ ๋ถ„๋ฅ˜`, `3D ์ธ๋„ค์ผ`, `ํ…์Šค์ฒ˜๋ง ํŒ๋ณ„`, `ResNet`, `Meshy`