Yolov8 Image Segmentation 사용 3

Cloud_ Ghost·2023년 7월 25일
0

AI

목록 보기
10/37

다음 이야기를 이어서 작성하겠습니다.

(잡담이지만 날씨가 참 왔다갔다 하네요. 항상 나가실 때 우산 혹시 모르니까 챙기시는게 좋으실거 같습니다!)

출처 : https://www.youtube.com/watch?v=75LI9MI9eEo

Image Segmentation 진행

https://github.com/ultralytics/ultralytics 에서 Segmentation을 확인해보시고 만들고자 하는 모델에 가장 적절한 Seg를 선택하셔서 사용하시면 좋을 것 같습니다.

yolo task=segment mode=predict model=yolov8n-seg.pt conf=0.5

를 통해서 먼저 segmentation을 위한 pytorch file을 download 합니다.

진행하시고 나면 이렇게 runs\segment\predict의 위치에 .pt가 다운로드 되어있음을 확인하실 수 있습니다.


들어가시면 이렇게 예시 파일들이 있는 것을 확인하실 수 있습니다.

Segmentation / 이미지

yolo task=segment mode=predict model=yolov8n-seg.pt conf=0.3 source=people.jpg

실행결과


실행결과에서 보시면 아실 수 있듯이 이제 bounding box뿐만 아니라 segmentation까지 제대로 나타내는 것을 확인하실 수 있습니다.

save_txt

>yolo task=segment mode=predict model=yolov8n-seg.pt conf=0.3 source=people.jpg save_txt=True

를 진행하면 다시 새롭게 predict4에 새롭게 파일이 생겼음을 확인할 수 있습니다.

들어가서 확인해보면 굉장히 좌표가 많이 찍혀있음을 확인할 수 있습니다.

Segmentation / 동영상

yolo task=segment mode=predict model=yolov8n-seg.pt conf=0.3 source=container_ship_loading.mp4

위 코드를 작성하여 mp4 file을 segmentation을 진행하겠습니다.


실제로 실행 해보면 segmentation이 제대로 생성되는것을 확인하실 수 있는데, 그 중에서 suitcase를 보시면 앞에 가려져 있는것을 알고 그 부분을 제외한 segmentation이 진행되어 정확히 검출해내는것을 알 수 있습니다.

(앞선 내용에서 검출을 제대로 못했던게 역시나 conf값을 0.8이라는 높은 수치로 했기 때문임을 확인할 수 있었습니다.)

Classification

segmentation을 했으니 이제는 classification을 진행해보겠습니다.
마찬가지로 https://github.com/ultralytics/ultralytics 에 가서 Classification 문서를 확인하고 사용할 모델을 선택합니다.

yolo task=classify mode=predict model=yolov8n-cls.pt source=people.jpg imgsz=224

모델 선택 후 위와 같이 코드를 치면

이렇게 runs\classify\predict에 새롭게 폴더가 생긴 것을 알 수 있습니다.

폴더에 확인해보시면

이렇게 값이 나온것을 확인할 수 있습니다.
(글이 흰색이라서 제대로 보이지 않네요ㅠㅠ)

아쉬운대로 영상에서 나온 결과로 확인해보겠습니다!

이런 식으로 결과가 나오는 것을 확인하실 수 있습니다.

Export

다음으로 export에 대해서 알아보겠습니다.

Export - onnx

yolo mode=export task=detect model=yolov8n.pt format=onnx

를 해주면


이렇게 export하여 저장되는것을 확인할 수 있습니다.

ONNX란? : ONNX(Open Neural Network Exchange)는 AI 모델의 오픈 소스 형식입니다. ONNX에서는 프레임워크 간의 상호 운용성을 지원합니다. 즉, PyTorch와 같이 널리 사용되는 여러 기계 학습 프레임워크 중 하나에서 모델을 학습시키고, ONNX 형식으로 변환하며, ML.NET과 같은 다른 프레임워크에서 ONNX 모델을 사용할 수 있습니다.
출처 : https://learn.microsoft.com/ko-kr/dotnet/machine-learning/tutorials/object-detection-onnx

yolo mode=export task=detect model=yolov8n-seg.pt format=onnx


를 하면 마찬가지로 onnx 형식으로 export 되는 것을 확인할 수 있습니다.

Export - tflite

이번에는 onnx형식이 아닌 tflite로 export를 하겠습니다.

yolo mode=export task=detect model=yolov8n.pt format=tflite

를 했지만 결과가 제대로 나오지 않았습니다.

그래서 anaconda prompt에 나온대로

pip install --no-cache "tensorflow-cpu"

를 통해 설치를 진행했습니다.

이후 다시 yolo mode=export task=detect model=yolov8n.pt format=tflite를 하니까 제대로 동작했습니다!

이렇게 제대로 동작되는 것을 확인할 수 있었습니다.

Predict.py로 실행

이번에는 anaconda prompt가 아닌 python file에서 실행이 가능하도록 만들어보겠습니다.
다시 yolov8 폴더에서 새 문서를 만듭니다.

만들고 난 후 이름을 predict.py로 바꿔줍니다.

이후 연결프로그램을 사용하시는 editor를 통해서 들어갑니다.
(전 VScode를 통해서 연결했습니다.)

from ultralytics import YOLO

model = YOLO("yolov8m.pt")

model.predict(source = "people.jpg", save=True, conf=0.5, save_txt=True)

을 입력합니다.

만약 .txt가 .py로 변경이 안 되는 경우

만약 저처럼 .py를 했는데 그대로 .txt인 경우에 VScode를 사용하시는 경우 predict.py.txt를 우클릭하시면 Rename이 나오는데 이를 클릭 후 predict.py로 변경해주시면 python file로 변경이 됩니다.

변경 전 / txt file 그대로인것을 확인할 수 있습니다.

변경 후 / python file로 변경된 것을 확인할 수 있습니다.

predict.py를 저장 후 다시 anaconda prompt에서

python predict.py

를 입력합니다.

이렇게 새롭게 저장되는것을 확인하실 수 있습니다.

확인해보시면 이렇게 label과

이미지가 prompt에서 실행한것과 동일한 결과로 나오는 것을 확인할 수 있습니다.

.py / format=onnx

이번에는 아까와 같이 python file에서 onnx로 export 하는 방법에 대해 알아보겠습니다.
마찬가지로 predict.py에서 model.predict(source = "people.jpg", save=True, conf=0.5, save_txt=True) 이 부분은 주석처리를 해주고 아래와 같이 코드를 작성합니다.

from ultralytics import YOLO

model = YOLO("yolov8m.pt")

model.export(format="onnx")

저장 후 anaconda prompt에서 다시

python predict.py

를 칩니다.


이렇게 되면 yolov8 폴더에 yolov8m.onnx file이 생긴 것을 확인할 수 있습니다.

profile
도망쳐서 도착한 곳에 낙원이란 있을 수 없는 거야.

0개의 댓글