본문 바로가기

공부방/Upstage AI Lab 4기

[CV 문서 분류 대회] 셋째 날 정리: 임밸런스 데이터 맞춰주기 대회 셋째 날은 10월의 마지막 주 금요일이였고, 다른 일정이 많은 바쁜 날이였다. 이날 했던 건, 임밸런스한 이미지 데이터의 밸런스를 맞춰주는 것. 그리고 그걸로 다시 어그멘테이션을 해서 학습 데이터셋을 만들어 모델을 한번 더 돌려보는 것이였다. 대회에서 주어진 이미지 데이터셋은 총 1570장. 테스트 데이터셋은 3140장. 이미지는 총 17개의 클래스로 분류되는데, 트레인 데이터셋을 클래스별로 분류해보면, 1번, 13번, 14번 클래스의 이미지 데이터셋이 부족한 것을 볼 수 있다. 나머지는 모두 100개씩 있지만, 1번은 46개, 13번은 74개, 15번은 50개의 이미지만 있다. 아래 그림은 같은 팀원인 J님이 만드신 그림!   사실 이전까지는 데이터 임밸런스 감수하고, 그냥 각 이미지 * 10배로.. 더보기
[CV 문서 분류 대회] 두 번째 날 정리 대회가 시작되고, 첫째 날에는 베이스라인을 토대로 모듈화와 mlflow를 덧붙여서 (편리하길 바라는) 실험 환경을 세팅했다. 그리고 간단한 어그멘테이션을 넣어서 기존 이미지의 5배 크기로 늘리고, rasnet34, efficientnet_b0, densenet121 3가지 모델을 한번 돌려봤다. 결과는 그닥 좋지 않았다. 시험삼아 올린건데 0.39, 0.51ㅋㅋㅋㅋ  둘째 날, 베이스라인 코드를 찬찬히 뜯어봤다. 그리고 정확한 모델 검증을 하기 위해 테스트 전에 거칠 validatino set을 만들었다. 그 다음에 mixup 과 어그맨테이션 다시 만들어보았다. Validation set을 잘 만드는 게 중요한데, 테스트 데이터의 분포를 잘 반영해야 얘를 믿고 쓸 수가 있다고 한다.(어떻게..? 이 부분.. 더보기
[CV 문서 분류 대회] 베이스라인 돌려보고 흐름 파악하기 베이스라인 코드를 쭉 살펴봤다. 원본은 공개가 금지라서 공부한 내용 토대로 말로 정리. 1. 시드를 먼저 고정2. 데이터셋 클래스 정의3. 에폭 1회 학습 함수 만들고4. 하이퍼파라미터 정의5. 데이터 전처리 파이프라인(리사이즈, 노멀라이즈, 텐서로 변환 작업을 함)으로 트레인 데이터셋과 테스트 데이터셋을 변환해줌.  베이스라인에서 전처리에 쓴 라이브러리: Albumentations 라이브러리import albumentations as Atrn_transform = A.Compose([ # 1. Augmentation A.RandomRotate90(), A.HorizontalFlip(p=0.5), # 50% 확률로 좌우반전 A.VerticalFlip(p=0.5), #20% 확률 .. 더보기
[CV 문서 분류 대회] 배치 크기(batch size)는 어떻게 결정해야 하나 배치 사이즈는 실험하는 사람이 결정할 수 있는 파라미터 중 하나로, 최적값은 아래 3가지 요소를 보고 결정해야 한다. 1) GPU 메모리 크기: 가장 중요한 제한 요소2) 모델 크기: 더 큰 모델은 더 많은 메모리 필요3) 이미지 크기: 큰 이미지는 더 많은 메모리 사용GPU 메모리 크기를 넘으면 RuntimeError: CUDA out of memory 이런 에러가 뜬다.일반적으로 배치 크기는 16, 32, 64, 128, 256 이런 식으로 많이 쓰는데, 실험적으로 접근해보면 좋다.# 배치 크기별 실험 예시batch_sizes = [16, 32, 64, 128]results = {}for bs in batch_sizes: BATCH_SIZE = bs trn_loader = DataLoade.. 더보기
MLflow | 어제 했던 실험 결과가 오늘 다시 들어가보니 안보일 때 추가)터미널에서 mlruns가 있는 폴더로 이동 후에 mlflow ui --host 0.0.0.0 --port 5000첨엔 local host에서 접근을 제한했습니다? 이런 에러가 떴는데, pkill -f mlflow 다시 해주고 재시작을 반복... 기다리니 뜬다.왜 한번에 안되는거니ㅠ... 미스테리..tracking URI 경로 설정을 확인!!이번 경우에는 MLflow가 두 개의 다른 위치에 저장소를 만들었는데, 어제까지 쓰던 저장소는 exp라는 실험하던 폴더 안에 있었고, 오늘 다시 실험을 돌렸을 때에는 저장소가 home안에 새롭게 만들어져 있는 상태였음. 저장소는 새로 만들어놨지만, 기록은 어제 쓰던 저장소에 하고 있는 상황. mlflow_tracking_uri: str = "/data/eph.. 더보기
[CV 문서 분류 대회] 환경 세팅 디버깅 오랜만에 다시 서버를 만들어 접속하는 걸 하려니 다 까먹었다ㅎ서버 가이드에는 나오지 않은 에러 치료법!!다음 번에 또 까먹지 않게 적어둠VPN config 파일은 기존에 받아둔거 그대로 쓰면 된다. openvpn01-TCP4-1188-config.ovpn VPN 기존에 있던거 삭제하고 다시 컨피규 업로드해서 거기에 account와 비밀번호 새로 넣고 연결!! ssh 새로 다시 만들고(이전꺼랑 이름 안겹치게!)별표! 다운받은 pem 파일의 권한을 바꿔줘야함!!!!!chmod 600 ~/Downloads/your-key.pem참고로 600의 의미는:6(소유자): 읽기(4) + 쓰기(2) 권한0(그룹): 권한 없음0(기타): 권한 없음 그 다음에 서버 생성하고 vs code에 바로가기 만들어주기나머지는 이전 .. 더보기
[CV 대회] 끄적 해보면 좋을 것1. augmentation2. seed 앙상블 Augraphy문서 이미지를 augmentation 할 때 쓸 수 있음. 무한복사-> 클린한 학습데이터를 더럽게 aug를 많이해서 학습을 시키면 어떨까?? (테스트데이터는 이미 더티함)https://github.com/sparkfish/augraphy GitHub - sparkfish/augraphy: Augmentation pipeline for rendering synthetic paper printing, faxing, scanning and copy machine proAugmentation pipeline for rendering synthetic paper printing, faxing, scanning and copy machin.. 더보기
CNN | AlexNet, VGG AlexNet은 8개의 레이어를 가진 CNN 모델로, 컨볼루션 레이어 풀링 레이어 노멀러제이션 레이어 등으로 이루어져 있다.   CNN?이미지를 기계가 한번에 보고 인식할 수 없다. 그래서 처음에는 컨볼루션 필터를 사용해서 피쳐맵의 크기를 줄인다. 이렇게 줄어든 피쳐맵은 이미지의 세세한 부분을 볼 수 있고(엣지나 텍스쳐나 그런 거..) 필터를 여러 번 거치면서 뉴런 하나가 보는 영역은 점점 커지게 된다(점점 큰 부분을 보게 됨) 컨볼루션 필터는 특징을 추출하는 레이어라고 볼 수 있고, 풀링은 피쳐맵의 크기를 조절하거나 주요 특징을 선택하는 역할. 그리고 이런 레이어를 쌓아서 최종 결과물로 나온 피쳐맵은 1d 벡터로 변환한다. 추출된 특징을 바탕으로 fully connected layer(MLP)를 써서 .. 더보기