
건설폐기물을 YOLOv8을 통해 탐지하고
🚛 재활용 여부 및 탄소 배출량을 예측하는 프로젝트입니다.
pip install ultralytics
설치 후 아래와 같이 successfully만 보이면 성공!

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. 기타
path: GG_dataset
train: images/train
val: images/val
nc: 18
names: [
"폐콘크리트", "폐아스팔트콘크리트", "폐벽돌", "폐블록", "폐기와", "폐목재", "폐합성수지",
"폐섬유", "폐벽지", "건설오니", "폐금속류", "폐유리", "폐타일 및 폐도자기",
"폐보드류", "폐판넬", "건설폐토석", "혼합건설폐기물", "기타"
]
data.yaml 작성 
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도 학습하여 혼합 데이터셋으로 확장 시도 중
이후에는 다양한 환경, 배경 조건에서의 인식률 향상을 위해
📈 추가 데이터 수집 → 재학습 → 통합 모델 제작을 반복할 계획입니다.
정말 유용하네요~^^