본문 바로가기

전체 글85

[부스트캠프] object detection overview 이때까지는 매주 모르는 내용을 정리해서 조금씩 작성했는데 detection 이후로는 처음 보는 개념이 많아져 거의 매일 관련 내용으로 블로깅 할 것 같다. 이번에는 object detection task를 진행하기 위해 필요한 기초 지식에 대해 몇개 설명해 보겠다. Precision & Recall detection task의 평가지표를 알기 위해서는 몇 가지 기초지식이 필요하고 가장 기본이 되는 게 precision&recall이다. precision과 recall을 구하기 위해서는 confusion matrix를 계산할 수 있어야 한다. 평가지표로 precision, recall, f1을 사용할 때마다 매번 여러 사이트에 들어가서 외웠던 기억이 있는데 개인적으로 한번 제대로 정리해 두면 딥러닝 분야에.. 2023. 5. 3.
[Poetry] Poetry를 사용해 프로젝트 버전 관리하기 기존에는 pip나 conda를 이용해서 버전을 관리했었는데 부캠을 하며 많은 사람들이 poetry를 이용해서 project를 관리했고 꽤 편리하다는 얘기를 들어 직접 사용해보고 정리해보려한다. Poetry 환경 생성보통 두가지 command 중 하나로 Poetry환경을 생성한다.#현재 디렉토리에 새 프로젝트 폴더 생성poetry new poetry_project#기존 프로젝트를 poetry환경으로 초기화mkdir poetry_initcd poetry_initpoetry init 이후 이런 형태의 pyproject.toml을 생성된다.  poetry 프로젝트 생성이 아닌 환경 생성으로 적은 이유는 poetry init이나 new를 실행할 시 완전히 다른 새로운 환경을 생성해주기 때문이다.poetry env.. 2023. 5. 1.
[부스트캠프] Transformer 정리 멘토링에서 두번째로 Transformer를 리뷰했는데 논문을 리뷰하며 많은 의견을 나눴는데 개인적으로 어떤식으로 생각했는지 정리해보려 한다. Scaled Dot Product Attention 논문 리뷰글 에도 적어 놓았지만 Transfomer가 이전 RNN 계열 모델과 가장 큰 차이점 중 하나는 Self-Attention 구조이다. 기존에도 Attention mechanism은 자연어 처리 계열에서 디코더에 시간 정보를 넣어주기 위해 종종 사용되었다. 이전에는 디코더에서 인코더의 모든 타임스텝에 대한 attention score를 구하였지만 Transformer는 이를 matrix간의 연산으로 단 한번에 문장간의 유사성을 파악하게 하였다는 점에서 큰 차이점이 있다. 디코더가 시간 정보를 얻기 위하여 n.. 2023. 4. 25.
[Paper implementation] ResNet구현 부캠 초반부는 강의를 들으며 주어진 과제를 채워내는 식의 코딩이 전부이다. 멘토링 시간에 ResNet에 관해 리뷰하기도 했고 과제를 하며 ResNet을 부분적으로 구현해보기도 했기에 파이토치 공부 겸 ResNet을 Scratch부터 구현해 보았다. ResNet code class ResNet(nn.Module): def __init__(self, name="resnet", xdim=[3, 224, 224], ksize=3, cdims=[64, 128, 256, 512], layeriter=[3,4,6,3], hdim=1000, USE_BATCH_NORM=True): super().__init__() self.name = name self.xdim = xdim #means C, W, H self.cdims.. 2023. 4. 12.
[Pytorch] ImageFolder label기준으로 split하기 ResNet을 구현한 다음 학습을 시켜보았는데 한 에포크를 도는데 5분쯤 걸렸다. 단순 테스트용으로 돌리는건데 너무 시간이 길다고 생각해서 라벨을 쪼개려고 했는데 처음에는 Stratified한 방식으로 쪼개려 했는데 생각해보니 데이터셋으로 사용한 imagenet-mini는 이미 class별 이미지가 너무 적다 생각하여 label을 index로 지정해서 100개 정도만 뽑아서 데이터셋으로 만드려했다. 로컬폴더를 900개 제거하면 ImageFolder가 알아서 해주겠지만 뭔가 데이터셋을 제거한다는 방식이 세련되 보이지도 않았고 이후에도 train과 test를 쪼갤일이 많을 텐데 미리 연습 좀 해보자는 느낌으로 방법들을 서칭했다. 별거 아닌 고집이었는데 구현하는데 시간이 예상보다 오래 걸렸다. 이번에는 내가 .. 2023. 4. 10.
[부스트캠프] Semantic Segmentation 정리 2주동안 CV 기본지식으로 Image Classification부터 ViT까지 배웠는데 강의가 극한으로 압축되어 있어 나도 그렇고 다른 사람들 역시 많은 부분을 이해하지 못하고 넘겼다. 모든 부분은 디테일하게 짚고 넘어가는게 최선이지만 강의, 과제, 팀 활동이 계속해서 늘어나므로 디테일한 부분이나 구현을 제외하고 개념만 정리하고 느낌만 알아보는 식으로 가겠다. 이 후 여러 task 역시 이런식으로 정리할텐데 프로젝트를 진행하기 전 먼저 시야를 넓게 가져보기에는 좋은 방법인것 같다. Semantic Segmentation 아마 이글을 읽는 사람 중 이 용어가 의미하는 바는 없을거라 생각된다. 간단히 말하자면 "이미지의 픽셀별 분류"라고 생각하면 될것 같다.(엄밀히 말하자면 upsamplig을 거치므로 픽셀.. 2023. 4. 9.
[부스트캠프] ResNet 정리 이전에도 ResNet을 리뷰하고 포스팅한적이 있었는데 처음 읽은 논문이라 너무 rough하게 읽기도 했고 이번에 팀원들과 다시 한번 리뷰하며 좋은 인사이트를 많이 얻어서 기록차 생각나는대로 적어보려한다. 구현시 간과했던점 ResNet을 구현도 해봤는데 간과했던 점도 몇가지 체크해보겠다. ReLU는 두번째 weight layer에서 적용하지 않고 잔차 이후에 적용하는게 official이다. 전체 구조에서 점선표시된 부분이 projection layer로 1x1 conv에 추가적으로 stride=2를 적용하여야한다. Why resnet works? 논문리뷰 글을 적을때마다 어째서 이 모델이 좋은지 간략히 설명해왔었는데 ResNet은 당시 도저히 말을 이해 못해서 이 부분을 스킵했던 기억이 있다. 그리고 이번.. 2023. 4. 6.
[프로그래머스] 당구연습 (Python) 사이트 링크: https://school.programmers.co.kr/learn/courses/30/lessons/169198 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 프로그래머스의 마스코트인 머쓱이는 최근 취미로 당구를 치기 시작했습니다. 머쓱이는 손 대신 날개를 사용해야 해서 당구를 잘 못 칩니다. 하지만 끈기가 강한 머쓱이는 열심히 노력해서 당구를 잘 치려고 당구 학원에 다니고 있습니다. 오늘도 당구 학원에 나온 머쓱이에게 당구 선생님이"원쿠션"(당구에서 공을 쳐서 벽에 맞히는 걸 쿠션이라고 부르고, 벽에 한 번 맞힌 후 공에 맞히면 .. 2023. 4. 4.