다잘하고싶어

Smoke & Fire 모델 학습 시키기 본문

프로젝트회고/팩세이프(FacSafe)

Smoke & Fire 모델 학습 시키기

챙영잉 2023. 12. 10. 22:30

이번 공장안전자동화시스템 개발 프로젝트 FacSafe (Factory + Safety) 를 진행하면서

화재, 낙상 감지를 인식하는 딥러닝 모델 학습 및 적용 부분을 담당하게 되었다.

아래 내용은 실제 화재 및 연기 감지 모델을 학습시키면서 

발생했던 에러와 추가적으로 공부했던 내용을 정리한 내용이다.

 


발생한 에러

TypeError : ERROR segment dataset incorrectly formatted or not a segmnet dataset.

모델학습을 시키는 과정에서 다음과 같은 에러가 발생했다.

에러로그를 찬찬히 보면 문제를 파악할 수 있는데 아래 내용을 보면 더 빠르게 에러발생 원인을 알 수 있다.

YOLOv8 학습 시 알아야할 것

YOLO 에는 4가지 분야가 존재한다는 것!

Detection / Segmentation / Classification / Pose 

 

즉 아래와 같이 내가 현재 가져왔던 데이터셋은 Object Detect 인데

작성한 코드는 segmentation 을 하라는 코드를 썼기 때문이다.

 

작성 코드 

from ultralytics import YOLO

def run():
    model = YOLO('yolov8n-seg.pt')  # load a pretrained YOLOv8n segmentation model
    print(type(model.names), len(model.names))
    print(model.names)

    model.train(data='C:/Users/Desktop/firesmoke/data.yaml', epochs=30, batch=8) 

    results = model.predict(source = "0", show=True)

    print(results)

if __name__ == '__main__':
    run()

 

따라서 가져온 데이터셋의 종류에 맞추어 코드를 바꿔주면 된다.

 

 

아래는 수정한 코드

from ultralytics import YOLO

def run():
    model = YOLO('yolov8n.pt')  # load a pretrained YOLOv8n segmentation model
    print(type(model.names), len(model.names))
    print(model.names)

    model.train(data='C:/Users/Desktop/firesmoke/data.yaml', epochs=30, batch=8) 

    results = model.predict(source = "0", show=True)

    print(results)

if __name__ == '__main__':
    run()

코드를 수정하고 나니 정상적으로 잘 실행됐다.

 

 

학습완료 후 테스트 했다.

 

결과

 

아직 정확도는 낮지만 나름대로 잘 인식이 되고 있는 것 같다.