네이버 부스트캠프 학습 정리 41

[Semantic Segmentation] After FCN

FCN의 한계 1. 객체의 크기가 크거나 작은 경우 예측을 잘 하지 못한다. 2. Object의 디테일한 모습이 사라지는 문제가 발생한다. Decoder을 개선한 모델 DeconvNet Encoder와 Decoder를 대칭 형태로 만들었으며 backbone으로 VGG16을 사용한다. Encoder의 Conv에서 ReLU, Pooling이 일어나며 Deconvolutional Network는 Unpooling, deconvolution, ReLU로 이루어진다. deconvolution은 FCN에 나왔던 것처럼 tranposed convolution을 통해 진행되며, unpooling은 그림과 같이 pooling의 반대 연산을 수행한다. pooling 연산은 노이즈를 제거하지만 정보가 손실되는 문제가 생긴다..

[Semantic Segmentation] FCN

Overview Semantic Segmentation을 수행하기 위해 image classification을 진행했던 CNN에 대해 이를 변형시킨 네트워크. backbone으로는 (VGG16, GoogLeNet) 등을 사용한다. 기존의 CNN에서 image classification을 진행할 때 FC layer를 통해 정보를 통합해 계산한 class 별 확률을 통한 task 예측을 수행했다. 하지만 semantic segmentation에서는 이 feature map의 위치 정보가 FC layer에서 사라지는 것을 방지하고자 이 부분을 FC layer 대신 CNN을 통해 위치 정보를 유지했고, 이를 통해 segmentation task가 가능하게 했다. 또한 이 방법을 통해 input image의 si..

[ORC] EAST

EAST 모델 bounding box 좌표를 맞추는 것을 Regression 모델로 접근한 모델. FCN을 변형한 구조로 각 픽셀이 단어 영역 내에 있을 확률인 score map, 각 단어 box를 추정 후 픽셀과 box 4개 변 사이의 거리를 의미하는 거리 정보, box가 회전한 각도 정보 등을 출력하고 이를 선형결합한 형태의 loss를 활용해 학습한다. U-Net의 모양과 비슷한 FCN을 사용해 Conv채널을 증가시키며 이미지를 축소시키는 Encode과정을 거치고, 1/32로 축소한 Feature map을 생성한다. 이후 Decode 과정에서 이미지 사이즈를 키우며 복원하는데, 앞에서 생성된 Feature map들에 대해 Concat를 진행하며 글자가 있는 위치를 더 잘 확인하게 한다. 이후 최종적으..

[Object Detection] mAP

이번 대회의 평가 지표는 mAP였다. 점수에 집착할 것이라면 어떤 점수에 집착하는지라도 알고 해야하지 않을까 싶어서 정리한다. Confusion Matrix Confusion Matrix는 머신러닝에서도 쓰이고, 여러 자격증을 준비하면서도 항상 나왔던 단골 손님이다. 하지만 한 번 공부를 할때마다 까먹기도 하고 늘 기억이 잘 안난다. TP : 예측 값이 True이면서 실제 값 역시 True인 경우 (True Positive) FP : 예측 값이 True이면서 실제 값은 False인 경우 (False Positive) TN : 예측 값이 False이면서 실제 값 역시 False인 경우 (True Negative) FN : 예측 값이 False이면서 실제 값은 True인 경우 (False Negative) ..

[Object Detection] Faster R-CNN

지난 포스팅 Object Detection에서 다뤘던 내용이지만, Faster R-CNN은 추가로 과제도 있고 2 - stage detector에서 끝이라고 할 수 있는 모델이기에 보다 더 자세히 다루고 넘어가기로 했다. 그 전 모델인 R-CNN, Fast R-CNN의 한계에 대해 간단히 짚고 넘어가자. 다음과 같이 Faster R-CNN모델은 비로소 End-to end 모델이며, RPN을 따로 neck으로 사용하는 모델임을 알 수 있다. 위 그림은 Faster R-CNN의 전반적인 구조로, 이미지를 CNN에 넣어 이 연산을 한 번만 사용 후, feature map을 추출하는 과정은 Fast R-CNN과 같다. 하지만 Region proposal 단계에서 기존의 selective search 대신 Reg..

[AI 서비스 기초] Docker

가상화란? 개발할 때, 서비스 운영에 사용되는 서버에 직접 들어가 개발하지 않고 Local 환경에서 개발하여 완료 후 배포하는 것. 개발을 진행한 Local 환경과 Production 서버의 환경이 다르고, 같은 OS를 사용하더라도 환경 변수에 따라 작동하지 않을 수 있음. 따라서 이런 상황에서 서버 환경까지도 모두 한번에 소프트웨어화 하기 위한 방법이 가상화이다. 특정 소프트웨어 환경을 만들고 Local, Production 서버에서 그대로 활용한다. - 개발과 운영 서버의 환경 불일치가 해소됌 - 어느 환경에서나 동일한 환경으로 프로그램을 실행할 수 있음 - 개발 외에 Research도 동일한 환경을 사용할 수 있음 Docker Container : Docker의 등장 이전, VM(Virtual Ma..

[AI 서비스 기초] Linux

Linux? 서버에서 자주 사용하는 OS이며 여러 버전이 존재한다. 또한 안전성, 신뢰성이 높으며 쉘 커맨드, 쉘 스크립트를 통한 작업이 가능하다. CLI를 사용한다. CLI Command-Line Interface로 글자를 입력하여 컴퓨터에 명령을 내리는 방식. Shell Command 서버에서 접속해 사용할 때, Linux의 내장 기능을 활용하거나 데이터 전처리, Docker사용 등 여러 상황에서 shell command를 사용한다. 가장 유명한 shell commands ls list files and directories : 어떤 파일이나 폴더가 존재하는지 알 수 있다. ls 사용 : 현재 폴더 기준으로 실행, 폴더를 작성하면 폴더 기준으로 실행 -a : .으로 시작하는 파일, 폴더를 포함한 전체..

[AI 서비스 기초] 파이썬 버전 관리

버전과 버저닝 소프트웨어에 Unique한 버전 이름, 버전 번호를 할당하는 과정. 다양한 버전을 관리하고 식별하기 위해 사용한다. CalVer (Calendar Versioning) 날짜 기반 시스템을 통한 버전 번호 할당 방법. 버전 번호를 연도와 월로 구성한다. 이해하기 쉬우며 날짜 기반으로 출시 시기를 예측하기 쉽다. ex) Ubuntu 20.04 SemVer (Semantic Versioning) 마침표로 구분한 주 번호, 부 번호, 패치 번호로 구성 이전 버전과 호환되지 않는 변경사항이 있으면 주 번호를 증가시킴 이전 버전과 호환되며 새로운 기능이 추가되면 부 번호를 증가시킴 이전 버전의 버그 수정이 진행되면 패치 번호가 증가됌. ex) Python 3.11.0, 메이플스토리 릴리즈 V.1.2...

7주차 회고

Wrap-up report의 개인 회고와 동일. 개인적인 감상 모든게 낯설었다 팀에게 도움이 되지 못하고 있는 것 같아 조급한 순간이 많았다. 다음에는 이것보다 무조건 잘해야지 하는 생각을 많이 했다. 주도적으로 내가 할 일을 찾아나가는 것이 중요하다는 생각을 했다. 체계적으로 내 실험에 대한 관리를 해야겠다고 느꼈다. 나는 내 학습 목표를 달성하기 위해 무엇을 어떻게 했는가? 낯선 환경에서 최대한 팀과 비슷한 환경을 맞추고, 베이스 라인 코드에 대한 이해를 기반으로 천천히 건드려보려고 최대한 노력했다. 내가 맡은 역할인 모델 별 비교를 하기 위해 다양한 모델에 대한 이론을 정리하고, 코드에 사용하는 모델과 loss등에 대한 공부를 진행해 ‘알고 쓰자’ 의 마인드로 접근했다. 팀에게 도움이 되지 못해도 ..

[P-stage 1] methodology

프로젝트를 진행하며 느낀 딥러닝 프로젝트에서의 다양한 방법론을 팀원들이 말하는데 잘 못알아 듣는 내용들이 있었다. 다음 프로젝트때 걸림돌이 되지 않으려면 이런 용어들을 공부해두려고 따로 정리해야겠다. Off-line vs On-line 학습 팀원들이 데이터에 대해 Off-line으로 데이터를 학습하자. 등의 말을 했는데, 그게 뭔지 몰랐었기 때문에 정리. 오프라인 학습 모델을 학습 시킨 뒤, 더 이상의 학습 없이 시스템에 적용하는 것. 새로운 데이터가 생성되면 전체 데이터셋을 통해 모델을 다시 학습해야 한다. 모든 데이터를 1개의 배치로 생각해 배치 학습이라고도 한다. 온라인 학습 미니 배치 단위에서 데이터를 사용해 학습하는 방법. 미니-배치 학습이라고도 한다. 실시간 반영이 중요한 시스템에서 사용된다...