์˜์žฅ๊ณต์ • ๋ถˆ๋Ÿ‰ํ’ˆ ๋ถ„๋ฅ˜ ๋ชจ๋ธ (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)

์‚ฌ์šฉ๋ฒ•

๋ชจ๋ธ ๋กœ๋“œ ๋ฐ ์ถ”๋ก 

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 ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์‚ฌ์šฉ

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}
}
Downloads last month
52
Inference Providers NEW
This model isn't deployed by any Inference Provider. ๐Ÿ™‹ Ask for provider support