File size: 4,205 Bytes
8184aec |
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 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 |
---
license: cc-by-nc-4.0
tags:
- image-classification
- pytorch
- defect-detection
- manufacturing
- quality-control
language:
- ko
datasets:
- custom
metrics:
- accuracy
library_name: pytorch
pipeline_tag: image-classification
---
# μμ₯곡μ λΆλν λΆλ₯ λͺ¨λΈ (Assembly Process Defect Classification)
μ΄ λͺ¨λΈμ μμ₯곡μ μμ λ°μνλ λ€μν λΆλ μ νμ λΆλ₯νκΈ° μν΄ ResNet50 μν€ν
μ²λ₯Ό κΈ°λ°μΌλ‘ νμΈνλλ λͺ¨λΈμ
λλ€.
## λͺ¨λΈ μ 보
- **μν€ν
μ²**: ResNet50
- **ν΄λμ€ μ**: 24κ°
- **μ
λ ₯ ν¬κΈ°**: 224x224 RGB μ΄λ―Έμ§
- **λΆλ₯ μΉ΄ν
κ³ λ¦¬**: 12κ°μ§ λΆλ μ ν Γ 2κ°μ§ νμ§ μν (λΆλν/μν)
## λΆλ₯ ν΄λμ€
### λΆλ μ νλ³ λΆλ₯
- **κ³ μ λΆλ**: λΆλν(0), μν(1)
- **κ³ μ ν λΆλ**: λΆλν(2), μν(3)
- **λ¨μ°¨**: λΆλν(4), μν(5)
- **μ€ν¬λμΉ**: λΆλν(6), μν(7)
- **μ€λ§ λΆλ**: λΆλν(8), μν(9)
- **μ°κ³ λΆλ**: λΆλν(10), μν(11)
- **μΈκ΄ μμ**: λΆλν(12), μν(13)
- **μ 격 λΆλ**: λΆλν(14), μν(15)
- **μ₯μ°© λΆλ**: λΆλν(16), μν(17)
- **체결 λΆλ**: λΆλν(18), μν(19)
- **ν€λ° λΆλ**: λΆλν(20), μν(21)
- **ν λ³ν**: λΆλν(22), μν(23)
## μ¬μ©λ²
### λͺ¨λΈ λ‘λ λ° μΆλ‘
```python
import torch
from torchvision import models, transforms
from PIL import Image
# λͺ¨λΈ λ‘λ
model = models.resnet50(num_classes=24)
model.fc = torch.nn.Linear(model.fc.in_features, 24)
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(mean=[0.485, 0.456, 0.406],
std=[0.229, 0.224, 0.225])
])
# μΆλ‘
img = Image.open('your_image.jpg').convert('RGB')
input_tensor = transform(img).unsqueeze(0)
with torch.no_grad():
outputs = model(input_tensor)
predicted_class = torch.argmax(outputs, dim=1).item()
# ν΄λμ€λͺ
λ§€ν
class_names = {
0: 'κ³ μ λΆλ_λΆλν', 1: 'κ³ μ λΆλ_μν',
2: 'κ³ μ ν λΆλ_λΆλν', 3: 'κ³ μ ν λΆλ_μν',
4: 'λ¨μ°¨_λΆλν', 5: 'λ¨μ°¨_μν',
6: 'μ€ν¬λμΉ_λΆλν', 7: 'μ€ν¬λμΉ_μν',
8: 'μ€λ§ λΆλ_λΆλν', 9: 'μ€λ§ λΆλ_μν',
10: 'μ°κ³ λΆλ_λΆλν', 11: 'μ°κ³ λΆλ_μν',
12: 'μΈκ΄ μμ_λΆλν', 13: 'μΈκ΄ μμ_μν',
14: 'μ 격 λΆλ_λΆλν', 15: 'μ 격 λΆλ_μν',
16: 'μ₯μ°© λΆλ_λΆλν', 17: 'μ₯μ°© λΆλ_μν',
18: '체결 λΆλ_λΆλν', 19: '체결 λΆλ_μν',
20: 'ν€λ° λΆλ_λΆλν', 21: 'ν€λ° λΆλ_μν',
22: 'ν λ³ν_λΆλν', 23: 'ν λ³ν_μν'
}
print(f"μμΈ‘ κ²°κ³Ό: {class_names[predicted_class]}")
```
### νκΉ
νμ΄μ€ Transformers λΌμ΄λΈλ¬λ¦¬ μ¬μ©
```python
from transformers import AutoConfig
import torch
from torchvision import models
# μ€μ λ‘λ
config = AutoConfig.from_pretrained('your-username/defect-classification-resnet50')
# λͺ¨λΈ λ‘λ
model = models.resnet50(num_classes=config.num_classes)
model.fc = torch.nn.Linear(model.fc.in_features, config.num_classes)
model.load_state_dict(torch.hub.load_state_dict_from_url(
'https://huggingface.co/your-username/defect-classification-resnet50/resolve/main/pytorch_model.bin',
map_location='cpu'
))
```
## λͺ¨λΈ μ±λ₯
- **μ νλ**: 0.7509
- **κ²μ¦ λ°μ΄ν°μ
**: [λ°μ΄ν°μ
μ 보 μ
λ ₯]
## μ νμ¬ν
- μ΄ λͺ¨λΈμ νΉμ μ μ‘° νκ²½μμ μμ§λ λ°μ΄ν°λ‘ νμ΅λμμΌλ―λ‘, λ€λ₯Έ νκ²½μμλ μ±λ₯μ΄ λ¬λΌμ§ μ μμ΅λλ€.
- μ€μ μ΄μ νκ²½μμ μ¬μ©νκΈ° μ μ μΆ©λΆν ν
μ€νΈλ₯Ό κΆμ₯ν©λλ€.
## λΌμ΄μ μ€
CC BY-NC
## μΈμ©
μ΄ λͺ¨λΈμ μ¬μ©νμ λ€λ©΄ λ€μκ³Ό κ°μ΄ μΈμ©ν΄μ£ΌμΈμ:
```
@misc{vehicle-assembly-process-defect-detection-model,
title={Assembly Process Defect Classification with ResNet50},
author={doyoon kwon},
year={2025},
url={https://huggingface.co/23smartfactory/vehicle-assembly-process-defect-detection-model}
}
``` |