목록모든 글 (293)
개발자로 후회없는 삶 살기
서론albumentation를 사용해야하는 이유와 다양한 활용 방법을 알아봅니다. 본론- albumentation 장점albumentation 토치 비전보다 빠르고 종류도 많고 탐지나 세그먼트 데이터에도 증강을 적용할 수 있습니다. def _transforms(self): return A.Compose([ A.RandomResizedCrop(height=150, width=300, scale=(0.3, 1.0)), A.Resize(100, 100), ToTensorV2() ])또한 사용 방법도 토치 비전과 동일해서 기존 코드에 바로 적용할 수 있습니다. A.Compose로 토치 비전과 동일하게 증강을 적용하기 위한 객체를 생성합니다. image = Imag..
서론 CV 마스크 분류 프로젝트를 시작하였습니다. 그 과정에서 겪었던 마음 가짐과 배움을 정리해 봅니다. 본론 - 내 지식을 모두와 공유하는 긍정적인 마인드 해당 프로젝트의 운영진 및 개발자 분들은 커뮤니티 활동을 통해 적극적인 소통을 강조합니다. 대신 이슈나 오류가 발생했을 경우 도움을 요청하는 것 외에 본인이 적용한 방법론, 논리적 추론 등 문제를 해결한 방법에 대해 공유하는 것을 재차 강조합니다. 저는 지금까지 개인 공부를 위해 블로깅을 해 왔고, 다시 한 번 정리하면서 복습하는 효과를 얻고 새롭게 알게 되는 것들도 있었습니다. 하지만 제가 아는 지식들이 사실인지는 증명할 수 없었습니다. 부스트코스는 이러한 쟁점을 극복하기 위해 지식을 공유하여 사실로 만들라는 취지로 성공 케이스를 공유하라고 하는 ..
서론Multi Node Single GPU 환경에서 GPU를 효율적으로 사용하기 위해서 GPU 풀을 구현해봅니다. Spring 쓰레드 풀과 같은 개념으로 GPU를 미리 할당 받아서 모아 두어 효율적으로 사용하기 위한 목적으로 볼 수 있습니다. 본론- 구현 목적다수의 GPU로 모델 학습을 돌리다보면 GPU를 100% 효율적으로 사용하기 어려울 수 있고, 프로젝트 종료 후에 실제 학습을 돌린 시간을 보면 절반도 안되는 경우가 있습니다. 그 이유는 누군가는 모델을 안 돌리고 있을 수 있고, 누군가는 모델을 돌리고 싶지만 현재 자신의 GPU를 돌리고 있어서 다른 실험을 할 수 없을 수 있습니다. 이렇게 되면 GPU utilization이 떨어집니다. 따라서 6개의 GPU의 사용성을 올리기 위해서 개개인의 GPU..
서론 이번주는 새로운 이벤트가 많은 주였습니다. 기록하는 마음으로 회고합니다. 본론 - 확률 분포를 모델링하라 5주 차에 들어서기까지 다양한 강의와 과제를 하고 확률 분포를 모델링한다는 문장을 셀 수도 없이 많이 들었지만 정확히 그게 어떠한 의미, 메커니즘인지 이해를 못 했었습니다. 마치 경사하강법을 처음 배울 때 최소값을 가지는 최적의 W를 찾아서 기울기를 따라 이동한다고 하긴 하는데 Cost 함수의 X, y축이 무엇인지 모르고 도대체 어떻게 최솟값을 찾아가는지 추상적으로만 알고 있던 상황과 비슷했습니다. 하지만 이번에 배운 Hourglass 모델을 통해 확률 분포를 모델링하고 정규분포가 되도록 모델링하고 두 분포의 KL 발산을 최소화한다는 것에 다시 한 번 생각해 보게 되었습니다. 저는 항상 공부를 ..
서론 모델 학습에서 가장 중요하다고 할 수 있는 데이터, 그러한 데이터를 불러오고 배치 사이즈만큼 feeding 할 수 있는 데이터셋과 데이터 로더를 깊게 다뤄봅니다. 본론 - 데이터 셋과 데이터 로더를 극한으로 공부해보자 1) 데이터 초기화하여(대입) x, y 정의하기 2) 데이터를 읽기 데이터 셋의 역할은 다음과 같습니다. 1. __init__ 데이터의 타입(자연어, 이미지)에 따라 다르지만 보통 이미지의 경우 학습할 데이터의 경로를 적습니다. 또한 증강 정의, 컬럼 삭제 등 초기화 작업을 수행합니다. 이처럼 정형 데이터라면 데이터를 읽어서 x 변수 y 변수를 초기화할 수 있고 이미지 데이터라면 데이터를 읽어서 증강을 선언하는 것이 일반적입니다. 2) __len__ 이것은 단순하게 총 길이를 나타내면..
🚨 서론 (문제 상황)네이버 부스트캠프에서 제공하는 프로젝트는 위와 같이 하나의 파일로 존재합니다. 이를 6명의 팀원이 관리해야 하면 어떤 문제점이 발생할까요? 1) 파일 충돌2) 디렉토리 충돌위와 같은 간단한 충돌은 당연히 일어나고 가장 큰 문제는 train.py가 하나의 파일로 존재하기 때문에 발생합니다. if args.dataset in ['MultiLabelSplitByProfileDataset','MaskMultiLabelDataset']: multilabel_train(data_dir, model_dir, args)else: train(data_dir, model_dir, args)train.py에서 하나의 베이스 프로세스를 실행하기 때문에, 모든 학습 모듈 (데이터 로더, 데이터..
서론 이번 과제로 논문 구현이 취미셨던 김태훈 님의 마음을 느껴봅니다. 본론 - 전체 코드 https://github.com/SangBeom-Hahn/Practical_Pytorch/blob/main/model/model.py 1. 논문 읽기 -> 1회독 Abstract > Introduction > figures > conclusion 빠른 구현 가능성 파악과 프로토타입 제작을 위해서, 전체 논문을 읽는 것이 아니라 논문을 기재한 기관이 어디인지, 코드를 제공하는지 확인하고 위 4단계를 빠르게 속독합니다. -> 2 회독 Task > Approach > Experiments 1 회독을 완료하고 코드도 실행해 보았다면, 더 높은 성능과 이슈 사항을 파악하기 위해 2 회독을 진행합니다. 저자가 발견한 문제들..
서론 본격적으로 도입한 CV 고급 이론 학습을 회고합니다. 본론 - 얕은 지식 부수기 Version.2 ✅ 컴퓨터 비전의 근현대사를 이해하는 과정에서 이미지 분야 딥러닝의 근본적인 고민과 해결 방안을 고찰하고 깨닮음을 얻는 것이 여러 번 있었습니다. 1) 이미지 분류는 어떤 영상에 어떤 클래스가 들어있는 지 찾는 것이다. 2) 만약 모든 종류의 데이터를 가지고 있다면 분류 문제가 KNN 검색 문제가 된다. 3) NN은 방대한 데이터를 제한된 하드웨어에 압축해 넣은 것이다. 4) 학습 데이터는 인간이 보기 좋게 찍은 편향 데이터인데 실제 상황에서는 그 외 다양한 입력이 들어온다. 누군가에는 당연히 그런 것 아닌가라고 느껴질 수 있는 주제이지만 제게는 원래 알고 있던 지식을 다른 시각으로 볼 수 있는 좋은 ..