교수님이 쓰라고 하셔서 쓰는 그런데 은근 재밌는 듯

카테고리 없음

[수치해석] 객체 탐지

shinyunha 2025. 12. 4. 13:05

Bone 이미지 데이터 350장 중 Fracture 이미지 50장, Implant 이미지 50장, Bone 이미지 50장을 선별했다. 

이렇게 균형을 맞춘 데이터를 train에 100장, val에 40장, test용 10장으로 나눴다. 

 

train과 val은 라벨링을 해야한다. 어제 라벨링을 했었지만, Fracture는 좀 넓게 잡고, Implant는 최대한 여러개로 쪼개는 느낌으로 라벨링을 다시했다. 

Bone_Labelling_train.mp4
8.21MB
Bone_Labelling_val.mp4
12.16MB

 

from google.colab import drive
drive.mount('/content/drive')

!pip install numpy
!pip install pandas
!pip install matplotlib
!pip install opencv-python

import os
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import cv2

!pip install ultralytics -q

import ultralytics
ultralytics.checks()
from ultralytics import YOLO, settings

코드는 교수님 코드 그대로 쓴다


20251204_01 train

model  yolov8m.pt   
imgsz 800 원래 640이었는데 어제 코파일럿이 크기 좀 키워보래서 키웠더니 결과가 좀 나아졌었다

크기를 키워야하는 이유는 Fraction 영역이 대체로 작기 때문에 이미지 크기가 커야 탐지하기 좋기 때문이다. 
batch 16 원래 5였는데 똑같이 코파일럿이 올리래서 올렸더니 결과가 좀 나아졌었다

batch는 한 번에 학습하는 데이터 양이다. 
epochs 60 어차피 best 쓰니까 100까지 키워도 될 것 같은데 첫 시도이니 60
optimizer auto  

20251204_01 predict

class 이름을 반대로 해뒀다...

imgsz 800 뭔가 train이랑 같아야할 것 같아서 같이 바꿨다
conf 0.3 원래 0.9였는데 어제 결과가 너무 안 나와서 0.5로 바꿨다가 다시 0.3으로 바꿨다

여전히 Fracture를 심각하게 못 잡는다


20251204_02 train2

model  yolov8s.pt  어제 코파일럿이 데이터 수가 적으니 이 모델이 더 나을 수 있다고 했다 
imgsz 800  
batch 16  
epochs 60  
optimizer auto  

크기에 따라 여러가지 모델이 있는 것 같다

20251204_02 predict2

마지막에 아작난 뼈 뺴고는 다 찾았다. 눈물이 날 것 같다. 어제는 왜 안 됐는데!!!!!!!!

진짜 라벨링 문제였나보다


점심 먹으러 나가기 전에 epochs = 150으로 돌려놓고 나갔는데 런타임 연결이 끊어져서 결과가 없다

그래도 돌아간 기록을 코파일럿에 넣어주니 100 이상은 의미가 없다는 사실을 알려줬다. 

그리고 predict 단계에서 IoU( Intersection over Union )를 낮추란다. 낮춰보자

IoU는 '교집합 영역 넓이 / 합집합 영역 넓이' 이다.

 

150을 해보는 건 너무 생각없는 행동이었나보다

아니 이게 무슨 일이야

계정을 바꿨다

20251204_03 train

model  yolov8s.pt   
imgsz 800  
batch 16  
epochs 100 100까지 의미가 있다고 하니, 100까지 올려보자
optimizer auto  

val_batch_labels
val_batch_pred

20251204_03 predict

아 또 계정 바꾸면서 class 반대로 되어있는 파일로 넣었다 

imgsz 800  
conf 0.3  
iou 0.5 줄여보기

 

아니 아까보다 더 안 좋아졌다.


20251204_04 train2

model  yolov8s.pt   
imgsz 800  
batch 16  
epochs 60 다시 60으로 내려왔다. 60이 최선인 것 같다
optimizer auto  

val_batch_labels
val_batch_pred

20251204_04 predict2

class 반대로 되어있는 파일 수정 안 했다

imgsz 800  
conf 0.3  
iou 0.5 이것만 줄여보기

2번 시도랑 결과가 똑같다

iou는 별로 효과가 없는 듯