YOLO8을 통해 객체 탐지 및 구분하기

Minani·2025년 4월 22일
post-thumbnail

🏗️ 건설폐기물 탐지 YOLOv8 프로젝트

건설폐기물을 YOLOv8을 통해 탐지하고
🚛 재활용 여부 및 탄소 배출량을 예측하는 프로젝트입니다.


🛠️ 사용환경

  • IDE: PyCharm
  • 모델: Ultralytics YOLOv8
  • 목적: 건설 현장 폐기물 자동 분류 및 탄소 계산

📦 설치 및 환경 세팅

pip install ultralytics

설치 후 아래와 같이 successfully만 보이면 성공!


🔍 Ultralytics란?

YOLOv8 모델을 만들고, 학습시키고, 예측까지 한 줄로 할 수 있게 해주는 공식 라이브러리
PyTorch 기반이지만 YOLOv8부터는 ultralytics 사용이 표준


🔧 기본 사용 예시

from ultralytics import YOLO

# 사전 학습된 모델 불러오기
model = YOLO("yolov8n.pt")

# 모델 학습
model.train(data="data.yaml", epochs=50)

# 이미지 탐지
results = model("test.jpg")
results.show()

# 웹캠 실시간 탐지
model.predict(source=0)

🧱 건설폐기물 클래스 정의

법령(건설폐기물 재활용촉진법 제2조 기준)에 따라 총 18종으로 분류

1. 폐콘크리트  
2. 폐아스팔트콘크리트  
3. 폐벽돌  
4. 폐블록  
5. 폐기와  
6. 폐목재  
7. 폐합성수지  
8. 폐섬유  
9. 폐벽지  
10. 건설오니  
11. 폐금속류  
12. 폐유리  
13. 폐타일 및 폐도자기  
14. 폐보드류  
15. 폐판넬  
16. 건설폐토석  
17. 혼합건설폐기물  
18. 기타

🧾 data.yaml 예시

path: GG_dataset
train: images/train
val: images/val

nc: 18
names: [
  "폐콘크리트", "폐아스팔트콘크리트", "폐벽돌", "폐블록", "폐기와", "폐목재", "폐합성수지",
  "폐섬유", "폐벽지", "건설오니", "폐금속류", "폐유리", "폐타일 및 폐도자기",
  "폐보드류", "폐판넬", "건설폐토석", "혼합건설폐기물", "기타"
]

✅ 할 일 체크리스트

  • 클래스 정의
  • 이미지 수집 (10장 이상/클래스)
  • 폴더 구조 정리
  • 라벨링(LabelImg)
  • train/val 분리
  • data.yaml 작성
  • 모델 학습
  • 테스트 이미지 예측

📂 외부 데이터 활용: CODD


YOLO에 맞는 포맷은 이런 형식인듯 하다.


🧠 모델 학습 코드

from ultralytics import YOLO
import os

model_path = 'runs/detect/train_codd5/weights/best.pt'
test_folder = 'test_images'
output_project = 'runs/detect'
output_name = 'predict_test'

model = YOLO(model_path)
results = model.predict(
    source=test_folder,
    save=True,
    save_txt=True,
    project=output_project,
    name=output_name
)

print(f'추론 완료 결과 {os.path.join(output_project, output_name)} 에 저장')

📸 테스트 이미지 예측 결과

↑ Raw 이미지로 예측 시 꽤 높은 인식률

↑ 콘크리트/타일/벽돌 혼합 환경는 조금 애매한 모습을 보임


🧪 추가 학습 중: TACO 데이터셋

  • 일반 쓰레기 탐지용 데이터셋
  • TACO도 학습하여 혼합 데이터셋으로 확장 시도 중


이후에는 다양한 환경, 배경 조건에서의 인식률 향상을 위해
📈 추가 데이터 수집 → 재학습 → 통합 모델 제작을 반복할 계획입니다.

1개의 댓글

comment-user-thumbnail
2025년 5월 3일

정말 유용하네요~^^

답글 달기