지난글까지는 계속해서 여러 가설을 세우고 실험해봤다면 이번글에서는 최종적으로 제출한 결과에 대해서 되돌아보는 글을 작성해보려고 한다. 모델 선정일단 offline 데이터 증강으로 8만 장으로 늘리고 efficiencenet에서 다양한 모델을 사용해 봤다.우리는 EfficientNet 중에서 B0 ~ B4, S, M을 학습할 때 주로 사용했다. 나머지는 이미지 크기가 너무 커져서 서버 메모리 부족으로 돌아가지도 않았다....그리고 ViT, ResNet도 사용해 봤는데 EfficientNet만큼 학습속도가 빠른 게 없고 성능도 그렇게 좋게 나오지 않아서 우리는 주로 EfficientNet을 활용해서 사용했다. KFold & Soft voting, Hard voting모델을 학습시키면서 KFold의 유의미한..
전체 글
하다보니 재미있는 AI에 빠져있는 평양냉면7 문의사항: ysoil8811@gmail.com성능 개선을 위해서 계속 노력하다가 어느 순간 한계에 봉착했다..도저히 뭘 해도 성능이 개선이 안됐는데 그때 조장분이 한 가지 인사이트를 얻어왔다.지난 기수에서 진행한 경진대회 블로그 후기들을 보면서 다들 데이터 증강 기법을 통해 성능개선을 한 사례들이 많다는 걸 알아챘다.그래서 기본 베이스라인 코드에서 모델을 efficient b3으로 수정하고 데이터 증강기법을 사용했는데 성능이 0.8957까지 올랐다.근데 이때 증강기법을 offline으로 아예 실제 이미지 파일을 생성하는 방법을 사용했다. offline 증강이게 무슨말이냐면, 실제로 우리가 지금까지 작성한 데이터 증강기법은 online 증강으로, 학습 시에만 변형을 주어 실시간으로 증강 데이터를 생성하는 방식이었다.데이터가 매 epoch마다 새롭게..
지난 글에서 데이터 쪽에 학습을 여러 번 시키는 StratifiedKFold로 성능을 높였다.이제 모델을 추론하는 쪽에서 더 강화해보겠다.TTATTA로 모델 성능 개선을 해보려고 한다.TTA는 Test Time Augmentation로 테스트 이미지에 여러 가지 변환을 적용하여 모델 예측을 강화하는 방법이다. TTA는 주로 추론 과정에서 사용되어 모델의 예측 안정성과 성능을 향상하는 데 도움을 준다.TTA에서는 테스트 이미지에 여러 형태의 augmentations을 적용한 후 각각의 변환 이미지에 대해 예측을 수행한다. 그런 다음 모든 변환된 이미지의 예측 결과를 모아 평균 또는 최빈값을 구해 최종 예측값으로 사용한다. 이를 통해 모델이 단일 이미지에 대해 가지는 불확실성을 줄이고 예측 성능을 높일 수 ..
지난 글에서 모델을 바꿔주면서 최고성능을 갱신했다 (0.77)[CV 경진대회] 데이터 증강 기법, ViT 모델 사용 [CV 경진대회] 데이터 증강 기법, ViT 모델 사용경진대회 소개이번 글에서는 Image Classification 경진대회에 대해서 그간 해온 방법을 정리해보려고 한다.이번 경진대회에서는 아날로그 문서를 디지털화할 때 그 이미지를 보고 어떤 종류의 문서yijoon009.tistory.com 이제 여기서 더 나아가서 0.9까지 만들어보자!!!모델 추론 변경어디를 더 수정해 볼까 하다가 모델 학습 쪽에서 변화를 주었다.지금 상황은 학습 데이터셋이 부족한 관계로 StratifiedKFold와 epoch를 같이 조합해서 진행해보려고 한다.k-fold & epoch 조합k-fold와 epoch..
경진대회 소개이번 글에서는 Image Classification 경진대회에 대해서 그간 해온 방법을 정리해보려고 한다.이번 경진대회에서는 아날로그 문서를 디지털화할 때 그 이미지를 보고 어떤 종류의 문서인지 분류하는 CV 경진대회였다.현재 학습 데이터는 1570장의 정상 이미지 데이터고 테스트 데이터는 3140장의 노이즈가 심한 이미지 데이터다. class는 총 17개로 문서도 있고 자동차 대시보드같은 문서가 아닌 일반 이미지 데이터도 들어있다. 평가지표는 Macro F1를 사용했다. 이제 여러가지 기법을 적용해 보면서 모델의 성능을 높여보자! 데이터 증강 기법 적용우선 일차원적으로 생각했을때 테스트 데이터셋에 노이즈가 많기 때문에 학습할 때도 노이즈가 많은 데이터를 학습하면 좋은 성능을 낼 것 같기도..
문제 발생현재 우리는 경진대회에서 제공해 주는 서버에서 MLflow를 연동해 실험 기록을 남기려 하고 있다. tracking_uri를 다음과 같이 설정해서 서버 내부 파일 경로에 데이터를 기록하려고 했다.mlflow.set_tracking_uri("/data/ephemeral/home/exp/mlruns")mlflow.set_experiment("Image Classification")그리고 mlflow ui 명령어로 MLflow UI를 실행했는데 화면에 실험 기록이 보이지 않았다..이유를 찾아보니 MLflow UI가 해당 경로를 직접 참조하지 않기 때문에 발생한 문제라고 한다. MLflow UI에서 실험 데이터를 확인하려면 tracking_uri가 서버에 올바르게 연결되어야 한다.tracking uri..
서론기존에 머신러닝 프로젝트를 진행하면서 주로 회귀 모델을 사용해 왔는데 최근 프로젝트에서는 KMeans 클러스터링을 활용한 유사 음악 추천 시스템을 구축하게 되었다. 이 시스템의 목표는 다양한 노래 데이터셋을 활용하여 사용자가 입력한 노래와 유사한 곡을 10개 추천하는 것이었다. 클러스터링이 완료된 KMeans 모델을 pkl 파일로 저장하고 서빙하려고 했으나 예상치 못한 에러가 발생했다. KMeans 모델을 이용해 추천하려면 단순히 모델 파일뿐 아니라 클러스터링에 사용한 데이터셋도 필요하다는 사실을 처음 알게 되었다. 이에 따라 회귀 모델과 KMeans 모델의 차이점을 정리해 보았다. 유사곡 추천 시스템을 정리한 내용은 다음 링크에서 확인해볼 수 있다.유사도 기반 음악 추천 시스템 Docker 기반 A..
딥러닝 모델 구현에서 PyTorch딥러닝 모델 구현에 필요한 요소들을 PyTorch를 통해 편리하게 사용할 수 있다.이 그림을 PyTorch 클래스를 이용해서 어떻게 구현을 하는지는 다음과 같다. Dataset, DataLoader를 이용해서 데이터를 만들게 되고, 만들어진 데이터를 모델에 넘겨주게 된다. 이 모델의 연산과정을 통해서 Output을 내게 된다. 이 Output을 이용해서 Loss를 계산하게 된다. 계산된 Loss들을 이용해서 모델의 파라미터를 업데이트하는 Optimization을 진행하게 된다. 1. 데이터Dataset과 DataLoader를 조합하여 데이터를 손쉽게 로드하고 처리할 수 있다.Dataset과 DataLoader를 사용하면, 데이터 집합에서 미니 배치 크기만큼의 데이터를 ..