결과 6
훈련 정확도는 빠르게 100%에 도달하고 있지만, 검증 정확도는 낮고 매우 불안정한 모습
에포크가 진행됨에 따라 검증 정확도가 크게 하락하는 구간이 나타나며, 이는 모델이 특정 데이터 포인트에 과적합되고 있다는 것을 알 수 있다.
결과 7
Dense 레이어의 유닛수를 줄이고, 레이어 개수를 줄임
model = Sequential([
base_model,
GlobalAveragePooling2D(),
Dense(256, activation='relu', kernel_regularizer=l2(0.01)), # 512 -> 256
Dropout(0.5),
Dense(128, activation='relu', kernel_regularizer=l2(0.01)), # 256 -> 128
Dropout(0.3),
Dense(1, activation='sigmoid')
])
# 색소 변화
image = cv2.cvtColor(image, cv2.COLOR_BGR2HSV)
hue_shift = np.random.uniform(-10, 10)
image[:, :, 0] = np.clip(image[:, :, 0] + hue_shift, 0, 255)
image = cv2.cvtColor(image, cv2.COLOR_HSV2BGR)
여전한 과적합 문제가 존재, 검증 정확도가 불안정
결과 8
Dense 레이어의 유닛 수를 더 줄이고, 레이어 개수를 줄여 복잡도를 낮추기
model = Sequential([
base_model,
GlobalAveragePooling2D(),
Dense(128, activation='relu', kernel_regularizer=l2(0.01)), # 256 -> 128
Dropout(0.5),
Dense(64, activation='relu', kernel_regularizer=l2(0.01)), # 128 -> 64
Dropout(0.3),
Dense(1, activation='sigmoid')
])
훈련, 검증 정확도가 모두 0.9 근처에 수렴하고 있으며, 두 정확도 간 차이가 거의 없음
현재 그래프의 패턴은 모델이 잘 학습되었고, 과적합 문제도 해결된 상태로 보임
최종결과 😶
dogs\dog (48).jpeg
dogs\dog (73).jpeg
dogs\dog (12).jpeg
dogs\dog (348).jpeg
생각정리✨
원래 의도는 사용자가 이미지를 보내도 행동을 분석할 수 있도록 하고 싶었는데, 현실적으로 데이터가 너무 불안정해서 제대로 된 결과를 얻기가 어려웠다. 그래서 방향을 바꿔서 강아지와 다른 동물들을 비교하는 모델을 만들어 보았다. 이 모델은 어느 정도 안정적인 결과를 얻을 수 있었고, 그래도 성과가 있어서 다행이다.
하지만 이제 이 모델을 어떻게 활용할지 고민이다. 내가 원했던 시나리오는 사용자가 영상을 보냈을 때, 이를 분석해서 결과를 OpenAI에 전달하고, 사용자에게 그 내용을 전달하는 것이었다.
일단 지금 만들어 놓은 이 모델을 첫 번째 필터처럼 사용하는 게 좋을 것 같다. 사용자가 만약 강아지가 아닌 다른 동물을 보냈을 때, 한 번 걸러주는 역할을 하는 거지. 이런 과정이 필요할 것 같고, 실제로도 유용하게 쓰일 것 같다.
'팀프로젝트 - TailsRoute' 카테고리의 다른 글
TEAM Project (11.04) - dog 행동 데이터셋 다운, 확인, Google Colab 활용 (9) | 2024.11.06 |
---|---|
TEAM Project (11.02) - 디자인 작업 (0) | 2024.11.02 |
TEAM Project (10.25) - OpenCV 흑백 변환, 가우시안 블러(5차, 6차 테스트) (1) | 2024.10.25 |
TEAM Project (10.24) - Epoch, Batch Size, OpenCV( 4차 테스트 ) (0) | 2024.10.24 |
TEAM Project (10.22) - Epoch(50), OpenCV ( 3차 테스트 ) (1) | 2024.10.23 |