You need to agree to share your Hugging Face information to access this model

This repository is publicly accessible, but you have to accept the conditions to access its files and content.

Log in or Sign Up to review the conditions and access this model content.

μš©μ ‘ λΉ„λ“œ μ–Έλ”μ»·Β·μ˜€λ²„λž© OK/NG νŒμ • (YOLO26m / YOLO11m)

곡개 이미지 λ°μ΄ν„°μ…‹μœΌλ‘œ ν•™μŠ΅ν•œ 객체 κ²€μΆœ λͺ¨λΈλ‘œ, μš©μ ‘ λΉ„λ“œ μ‚¬μ§„μ—μ„œ 언더컷(undercut)κ³Ό μ˜€λ²„λž©(overlap)을 μ°Ύκ³  이미지 λ‹¨μœ„λ‘œ OK/NGλ₯Ό νŒμ •ν•©λ‹ˆλ‹€. ν˜„μž₯ 사진 검증은 아직 ν•˜μ§€ μ•Šμ•˜μŠ΅λ‹ˆλ‹€.

폴더 ꡬ성

경둜 λ‚΄μš©
weld_yolo/prepare_dataset.py 원본 데이터셋 병합, 두 클래슀만 남기기, μœ μ‚¬ 이미지 κ·Έλ£Ή λΆ„ν• 
weld_yolo/check_dataset.py λΆ„ν•  κ°„ 쀑볡 점검, 라벨 ν™•μΈμš© 이미지 λͺ¨μŒ
weld_yolo/train.py ν•™μŠ΅ (κΈ°λ³Έ 960px, 150 epoch, patience 40)
weld_yolo/evaluate.py ν…ŒμŠ€νŠΈ 평가, 검증 μ„ΈνŠΈ κΈ°μ€€ OK/NG μž„κ³„κ°’ κ²°μ •
weld_yolo/analyze_results.py μΆœμ²˜λ³„Β·μž„κ³„κ°’λ³„ κ²°κ³Ό, 였판 이미지 λͺ¨μŒ
weld_yolo/judge.py μ΄λ―Έμ§€λ‚˜ 폴더λ₯Ό OK/NG둜 νŒμ • (--llm으둜 VLM μ†Œκ²¬ μΆ”κ°€)
weld_yolo/field_test.py μ‹œνŽΈ/NG, μ‹œνŽΈ/OK ν΄λ”λ‘œ μ •λ¦¬ν•œ ν˜„μž₯ 사진 채점
weld_yolo/llm_opinion.py Roboflow Workflow(Qwen VL)둜 짧은 ν•œκ΅­μ–΄ μ†Œκ²¬ 생성
weld_yolo/runs/ ν•™μŠ΅ 기둝, 평가 μ§€ν‘œ, μž„κ³„κ°’ (weights/best.ptλŠ” 별도 μ—…λ‘œλ“œ)

μ„€μΉ˜ (Windows, Python 3.13, NVIDIA GPU)

py -3.13 -m venv .venv
.venv\Scripts\python -m pip install torch torchvision --index-url https://download.pytorch.org/whl/cu130
.venv\Scripts\python -m pip install -r weld_yolo\requirements.txt

ν•™μŠ΅λœ λͺ¨λΈλ‘œ νŒμ •λ§Œ ν•˜κΈ°

  1. λͺ¨λΈ 파일 weld_yolo\runs\yolo26m\weights\best.pt(μ•½ 44MB)κ°€ μžˆλŠ”μ§€ ν™•μΈν•©λ‹ˆλ‹€. μ—†κ±°λ‚˜ 1KB도 μ•ˆ 되면(Git LFS 없이 받은 경우) μ•„λž˜ λͺ…λ ΉμœΌλ‘œ λ°›μŠ΅λ‹ˆλ‹€.
    .venv\Scripts\hf download Supernova0417/weld-undercut-overlap-yolo weld_yolo/runs/yolo26m/weights/best.pt weld_yolo/runs/yolo26m/weights/thresholds.json --local-dir .
    
  2. run_judge.bat을 λ”λΈ”ν΄λ¦­ν•˜κ³  사진 폴더 경둜λ₯Ό μž…λ ₯ν•©λ‹ˆλ‹€. 폴더λ₯Ό 이 파일 μœ„μ— λŒμ–΄λ‹€ 놓아도 λ©λ‹ˆλ‹€. ν•˜μœ„ ν΄λ”κΉŒμ§€ λͺ¨λ‘ νŒμ •ν•©λ‹ˆλ‹€.
  3. κ²°κ³ΌλŠ” judged\<폴더 이름>\에 μ €μž₯λ©λ‹ˆλ‹€. μƒμžλ₯Ό κ·Έλ¦° 사진은 μ›λž˜ ν•˜μœ„ 폴더 κ΅¬μ‘°λŒ€λ‘œ μ €μž₯되고, report.csv에 사진별 νŒμ •μ΄ μ •λ¦¬λ©λ‹ˆλ‹€.

λͺ…λ Ήμ€„μ—μ„œλŠ” judge.py ν•˜λ‚˜λ§Œ μ‹€ν–‰ν•˜λ©΄ λ©λ‹ˆλ‹€. llm_opinion.pyλŠ” --llm을 뢙일 λ•Œ judge.pyκ°€ 뢈러 μ“°λŠ” λͺ¨λ“ˆμ΄λΌ λ”°λ‘œ μ‹€ν–‰ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. field_test.pyλŠ” 사진을 OK/NG ν΄λ”λ‘œ 미리 λ‚˜λˆ  λ‘μ—ˆμ„ λ•Œ 정확도λ₯Ό μ±„μ ν•˜λŠ” 별도 λ„κ΅¬μž…λ‹ˆλ‹€.

.venv\Scripts\python weld_yolo\judge.py 사진_λ˜λŠ”_폴더

LLM μ†Œκ²¬μ„ μ“°λ €λ©΄ ν”„λ‘œμ νŠΈ 폴더에 roboflow_api_key.txtλ₯Ό λ§Œλ“€κ³  API ν‚€ ν•œ μ€„λ§Œ λ„£μŠ΅λ‹ˆλ‹€. 이 νŒŒμΌμ€ Git에 μ˜¬λΌκ°€μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. 사진이 Roboflow μ„œλ²„λ‘œ μ „μ†‘λ˜λ―€λ‘œ νšŒμ‚¬ μ‚¬μ§„μ—λŠ” 사내 κ·œμ •μ„ ν™•μΈν•œ λ’€μ—λ§Œ μ”λ‹ˆλ‹€.

μ‹œμ—°μš©: νšŒμ‚¬ 사진 3λΆ„λ₯˜ (정상 / μ˜€λ²„λž© / 기곡)

νšŒμ‚¬μ—μ„œ 찍은 κ·Όμ ‘ 사진 70μž₯(정상 30, μ˜€λ²„λž© 20, 기곡 20, 폴더 이름이 μ •λ‹΅)으둜 ν•™μŠ΅ν•œ 이미지 λΆ„λ₯˜ λͺ¨λΈμž…λ‹ˆλ‹€. μƒμž 없이 사진 ν•œ μž₯을 μ„Έ κ°€μ§€ 쀑 ν•˜λ‚˜λ‘œ νŒμ •ν•˜κ³ , 정상이면 OK, λ‚˜λ¨Έμ§€λŠ” NG둜 ν‘œμ‹œν•©λ‹ˆλ‹€.

  1. λͺ¨λΈ weld_yolo\runs_cls\demo\weights\best.pt(μ•½ 21MB)λ₯Ό ν™•μΈν•©λ‹ˆλ‹€. μ—†μœΌλ©΄ λ°›μŠ΅λ‹ˆλ‹€.
    .venv\Scripts\hf download Supernova0417/weld-undercut-overlap-yolo weld_yolo/runs_cls/demo/weights/best.pt --local-dir .
    
  2. run_demo.bat에 사진 폴더λ₯Ό λŒμ–΄λ‹€ λ†“μŠ΅λ‹ˆλ‹€. κ²°κ³ΌλŠ” judged\<폴더 이름>_cls\에 μ €μž₯λ©λ‹ˆλ‹€.
  • 사진을 κΈ΄ λ°©ν–₯으둜 μ„Έ 쑰각 λ‚΄μ–΄ 각각 νŒμ •ν•œ λ’€ 평균을 λƒ…λ‹ˆλ‹€.
  • NG μ‚¬μ§„μ—λŠ” λͺ¨λΈμ΄ νŒμ • 근거둜 삼은 뢀뢄을 히트맡으둜 겹치고, κ°€μž₯ κ°•ν•œ λΆ€λΆ„(μ΅œλŒ“κ°’μ˜ 50% 이상)을 μœ€κ³½μ„ μœΌλ‘œ κ·Έλ¦½λ‹ˆλ‹€(Class Activation Map). ν•™μŠ΅ 이미지에 κ·Έλ¦° 것이 μ•„λ‹ˆλΌ νŒμ •ν•  λ•Œ κ³„μ‚°ν•œ κ²°κ³Όμž…λ‹ˆλ‹€. 기곡은 ꡬ멍 μœ„μ—, μ˜€λ²„λž©μ€ λΉ„λ“œμ™€ λͺ¨μž¬ 경계에 주둜 λ‚˜νƒ€λ‚©λ‹ˆλ‹€. 결함 경계λ₯Ό μΈ‘μ •ν•œ 값은 μ•„λ‹ˆκ³  λŒ€λž΅μ μΈ μœ„μΉ˜μž…λ‹ˆλ‹€. --level 0.6처럼 μœ€κ³½μ„  기쀀을 λ°”κΏ€ 수 있고, --cam-okλ₯Ό 뢙이면 OK 사진에도 νžˆνŠΈλ§΅μ„ κ·Έλ¦½λ‹ˆλ‹€.
  • λ¨Όμ € train 55μž₯으둜 ν•™μŠ΅ν•˜κ³  test 15μž₯으둜 ν™•μΈν–ˆμ„ λ•Œ 14μž₯을 λ§žν˜”μŠ΅λ‹ˆλ‹€. ν‹€λ¦° 1μž₯은 사진 끝에 기곡 ν•˜λ‚˜λ§Œ 걸친 μ‚¬μ§„μž…λ‹ˆλ‹€. test 사진도 같은 λ‚  같은 μ‹œνŽΈμ„ 찍은 것이라, λ‹€λ₯Έ μ‹œνŽΈμ—μ„œλ„ 이만큼 λ§žλŠ”λ‹€λŠ” κ·Όκ±°λŠ” μ•„λ‹™λ‹ˆλ‹€.
  • λΉ„λ“œκ°€ ν™”λ©΄ λŒ€λΆ€λΆ„μ„ μ°¨μ§€ν•˜λŠ” κ·Όμ ‘ μ‚¬μ§„μ—μ„œλ§Œ μ”λ‹ˆλ‹€. λ©€λ¦¬μ„œ 찍은 사진에도 μ…‹ 쀑 ν•˜λ‚˜λ₯Ό 골라 λ‹΅ν•˜λ―€λ‘œ κ²°κ³Όλ₯Ό 믿을 수 μ—†μŠ΅λ‹ˆλ‹€. 언더컷은 νšŒμ‚¬ 사진이 μ—†μ–΄ νŒμ •ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

μ‹€ν–‰ (ν•™μŠ΅λΆ€ν„°)

곡개 데이터셋 ZIP(YOLO ν˜•μ‹)을 data\raw\<이름>\에 ν’€μ–΄ λ‘” λ’€ μ‹€ν–‰ν•©λ‹ˆλ‹€.

.venv\Scripts\python weld_yolo\prepare_dataset.py --data-root data
.venv\Scripts\python weld_yolo\train.py --data-root data --model yolo26m.pt
.venv\Scripts\python weld_yolo\evaluate.py --data-root data --weights weld_yolo\runs\yolo26m\weights\best.pt
.venv\Scripts\python weld_yolo\judge.py 사진_λ˜λŠ”_폴더
.venv\Scripts\python weld_yolo\field_test.py data\field

judge.py와 field_test.py에 --llm을 뢙이면 μ‚¬μ§„λ§ˆλ‹€ Qwen 3.8 VL 27B의 짧은 μ†Œκ²¬μ΄ llm_opinion μ—΄λ‘œ μΆ”κ°€λ©λ‹ˆλ‹€. roboflow_api_key.txt λ˜λŠ” ν™˜κ²½ λ³€μˆ˜ ROBOFLOW_API_KEYκ°€ ν•„μš”ν•˜κ³ , 사진이 Roboflow μ„œλ²„λ‘œ μ „μ†‘λ˜λ―€λ‘œ νšŒμ‚¬ 사진에 μ“°κΈ° 전에 사내 κ·œμ •μ„ 확인해야 ν•©λ‹ˆλ‹€. μ†Œκ²¬μ€ 참고용이며 OK/NG νŒμ •μ„ λ°”κΎΈμ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

νŒμ • κΈ°μ€€

  • μ–Έλ”μ»·μ΄λ‚˜ μ˜€λ²„λž©μ΄ μž„κ³„κ°’ μ΄μƒμœΌλ‘œ ν•˜λ‚˜λΌλ„ κ²€μΆœλ˜λ©΄ NG, μ•„λ‹ˆλ©΄ OKμž…λ‹ˆλ‹€. OKλŠ” 정상 μš©μ ‘μ΄λΌλŠ” 뜻이 μ•„λ‹ˆλΌ 두 결함이 κ²€μΆœλ˜μ§€ μ•Šμ•˜λ‹€λŠ” λœ»μž…λ‹ˆλ‹€.
  • μž„κ³„κ°’μ€ 검증 μ„ΈνŠΈμ—μ„œ μ •ν•˜κ³  weights/thresholds.json에 μ €μž₯ν•©λ‹ˆλ‹€. ν˜„μž¬ μ €μž₯값은 NG μž¬ν˜„μœ¨ 95% 기쀀인 0.0185이며, --threshold둜 λ°”κΏ€ 수 μžˆμŠ΅λ‹ˆλ‹€.

κ²°κ³Ό (곡개 데이터 ν…ŒμŠ€νŠΈ 186μž₯: NG 116, λ°°κ²½ 70)

ν•­λͺ© YOLO26m YOLO11m
검증 mAP50 / mAP50-95 0.810 / 0.540 0.809 / 0.505
ν…ŒμŠ€νŠΈ mAP50 / mAP50-95 0.767 / 0.526 0.735 / 0.478
ν…ŒμŠ€νŠΈ 언더컷 / μ˜€λ²„λž© AP50 0.713 / 0.821 0.666 / 0.803
ν•™μŠ΅ μ‹œκ°„ (RTX 5090 Laptop) 5.1μ‹œκ°„, 144 epoch 4.6μ‹œκ°„, 150 epoch

YOLO26m의 이미지 λ‹¨μœ„ κ²°κ³Όμž…λ‹ˆλ‹€. μž„κ³„κ°’μ€ λͺ¨λ‘ 검증 μ„ΈνŠΈμ—μ„œ μ •ν–ˆμŠ΅λ‹ˆλ‹€.

검증 κΈ°μ€€ μž„κ³„κ°’ ν…ŒμŠ€νŠΈ NG μž¬ν˜„μœ¨ ν…ŒμŠ€νŠΈ λ°°κ²½ OK λΉ„μœ¨
μž¬ν˜„μœ¨ 95% 0.0185 97.4% (113/116) 38.6% (27/70)
μž¬ν˜„μœ¨ 90% 0.1377 81.9% (95/116) 87.1% (61/70)
μž¬ν˜„μœ¨ 80% 0.3946 76.7% (89/116) 95.7% (67/70)

λ°°κ²½ 이미지 70μž₯ 쀑 57μž₯은 λ‹€λ₯Έ 결함(ν¬λž™, 기곡, μŠ€νŒ¨ν„° λ“±)이 μžˆλŠ” μ‚¬μ§„μž…λ‹ˆλ‹€. κ·Έλž˜μ„œ λ°°κ²½ OK λΉ„μœ¨μ€ μ–‘ν’ˆ ν†΅κ³Όμœ¨μ΄ μ•„λ‹™λ‹ˆλ‹€. ν…ŒμŠ€νŠΈ μ„ΈνŠΈκ°€ μž‘κ³  데이터 μΆœμ²˜κ°€ 두 곳뿐이라, ν˜„μž₯ 사진 μ„±λŠ₯은 λ”°λ‘œ 확인해야 ν•©λ‹ˆλ‹€.

좜처

μ‚¬μ „ν•™μŠ΅ λͺ¨λΈ

λͺ¨λΈ 좜처 λΌμ΄μ„ μŠ€
YOLO26m (yolo26m.pt) Ultralytics, COCO μ‚¬μ „ν•™μŠ΅ κ°€μ€‘μΉ˜ AGPL-3.0 (μƒμš©μ€ Ultralytics Enterprise License)
YOLO11m (yolo11m.pt) Ultralytics, COCO μ‚¬μ „ν•™μŠ΅ κ°€μ€‘μΉ˜ AGPL-3.0 (μƒμš©μ€ Ultralytics Enterprise License)
Qwen 3.8 VL 27B (μ†Œκ²¬ 생성) Alibaba Qwen, Roboflow Workflow qwen_vlm@v4 λΈ”λ‘μœΌλ‘œ 호좜 λͺ¨λΈ λΌμ΄μ„ μŠ€λŠ” Qwen 배포 쑰건을 따름

ν•™μŠ΅ ν”„λ ˆμž„μ›Œν¬λŠ” Ultralytics 8.4.208, PyTorch 2.14.1 (CUDA 13.0)μž…λ‹ˆλ‹€.

ν•™μŠ΅μ— μ‚¬μš©ν•œ 데이터셋

데이터셋 버전 μ‚¬μš©ν•œ 클래슀 λΌμ΄μ„ μŠ€
WeldDefects (ugur-jeif9) v16 undercut, overlap CC BY 4.0
Weld Classifier (defspace) v1 Undercut, Overlap (λ‚˜λ¨Έμ§€λŠ” 배경으둜 μ‚¬μš©) MIT

λ‚΄λ €λ°›μ•˜μ§€λ§Œ 아직 ν•™μŠ΅μ— λ„£μ§€ μ•Šμ€ 데이터셋

데이터셋 이미지 λΌμ΄μ„ μŠ€ μƒνƒœ
welding crack (wonmu-huh) v2 169 CC BY 4.0 후보
2r_weld_dataset (mehak-laif) 2,926 CC BY 4.0 후보
CAT-Welding (asir-lni0w) 453 CC BY 4.0 후보 (빈 라벨 150μž₯ 확인 ν•„μš”)
smawfilletweld (ai-weld-masters) 117 CC BY 4.0 후보 (ν•„λ¦Ώ μš©μ ‘)
Welding Defects (dave-prospect-sandbox) 1,284 CC BY 4.0 μ œμ™Έ (μ–Έλ”μ»·Β·μ˜€λ²„λž© 라벨 μ—†μŒ)
SMAW μš©μ ‘ 결함 (Mendeley Data f7j76vz53p) 원본 71μž₯ νŽ˜μ΄μ§€ ν‘œκΈ° 확인 ν•„μš” μ™ΈλΆ€ 언더컷 κ²€μ¦μš© 후보 (μ˜€λ²„λž© μ—†μŒ, COCO ν˜•μ‹)

CC BY 4.0 λ°μ΄ν„°λŠ” 배포 μ‹œ 좜처 ν‘œκΈ°κ°€ ν•„μš”ν•©λ‹ˆλ‹€.

λ‹€μŒ 단계 κ²€ν† 

  • λͺ¨λΈ: 같은 데이터와 μ„€μ •μ—μ„œ YOLO26m이 ν…ŒμŠ€νŠΈ mAP50-95 0.526으둜 YOLO11m(0.478)보닀 λ†’κ³ , 특히 μ–Έλ”μ»·μ—μ„œ 차이가 ν½λ‹ˆλ‹€. λ‹€μŒ ν•™μŠ΅μ€ YOLO26m을 κΈ°μ€€μœΌλ‘œ ν•©λ‹ˆλ‹€.
  • μΆ”κ°€ 결함 클래슀: μ•„λž˜λŠ” μˆ˜μ§‘ν•œ 6개 λ°μ΄ν„°μ…‹μ—μ„œ ν΄λž˜μŠ€λ³„λ‘œ 결함이 μžˆλŠ” 원본 사진 수λ₯Ό μ„Ό κ°’μž…λ‹ˆλ‹€. Roboflow 증강 볡사본은 ν•˜λ‚˜λ‘œ μ…Œμ§€λ§Œ, νƒ€μΌμ΄λ‚˜ μœ μ‚¬ 사진은 아직 λ¬Άμ§€ μ•Šμ•„ μ‹€μ œλ³΄λ‹€ λ§Žμ„ 수 μžˆμŠ΅λ‹ˆλ‹€.
클래슀 원본 사진 수 라벨이 μžˆλŠ” 좜처 수 νŒλ‹¨
언더컷 μ•½ 1,170 6 ν˜„μž¬ λŒ€μƒ
μ˜€λ²„λž© μ•½ 1,390 6 ν˜„μž¬ λŒ€μƒ
기곡 (porosity) μ•½ 1,100 5 μΆ”κ°€ 1μˆœμœ„
μŠ€νŒ¨ν„° (spatter) μ•½ 980 4 μΆ”κ°€ 1μˆœμœ„
ν¬λž™ (crack) μ•½ 510 3 μΆ”κ°€ 2μˆœμœ„
용락 (burn-through) μ•½ 170 3 보λ₯˜ (λŒ€λΆ€λΆ„ ν•œ 좜처)
μœ΅ν•© λΆˆλŸ‰ (lack of fusion) μ•½ 210 2 보λ₯˜ (μ™Έκ΄€ κΈ°μ€€ λͺ¨ν˜Έ)
산화·변색 0 0 λΆˆκ°€ (데이터 μ—†μŒ)

μΆœμ²˜λ§ˆλ‹€ 라벨을 단 결함 μ’…λ₯˜κ°€ 달라, μ–΄λ–€ λ°μ΄ν„°μ…‹μ—μ„œλŠ” 기곡이 μžˆμ–΄λ„ 라벨이 없을 수 μžˆμŠ΅λ‹ˆλ‹€. 클래슀λ₯Ό 늘리기 전에 μΆœμ²˜λ³„λ‘œ λΉ μ§„ 라벨을 μ²˜λ¦¬ν•˜λŠ” 방법을 μ •ν•΄μ•Ό ν•©λ‹ˆλ‹€.

Downloads last month
18
Inference Providers NEW
This model isn't deployed by any Inference Provider. πŸ™‹ Ask for provider support