728x90

DeepLearning 48

[CV] OCR의 data format

OCR 데이터셋 구성 bounding box, BBOX (검출할 영역의 좌표) 직사각형인 경우 $ (x,y,width,height) $, $ (x_1, y_1, x_3, y_3) $ 일반 사각형인 경우 4개의 좌표를 다 표기 다각형인 경우 모든 점의 좌표를 다 표기 text (영역 내의 존재하는 글자들의 시퀀스) don't care (검출해도 되고 안 해도 되는 영역; 학습 시 사용 X) file name (이미지 파일의 이름) image width (이미지 가로 길이) image height (이미지 세로 길이) ICDAR (International Conference on Document Analysis and Recognition) ICDAR 2015 Incidental Scene Text:..

[CV] OCR - 글자 영역 검출

upstage 이활석님의 부스트캠프 AI Tech OCR 강의를 듣고 정리한 글입니다. 1109 OCR 글자 객체 고밀도 위치 잡는 것 only (classification은 필요가 X → objectness만 잡는다고 생각하면 쉬움) 글자 영역 표현법 직사각형 (RECT) : (x1, y1, width, height) or (x1, y1, x2, y2) 직사각형+각도 (RBOX, Rotated Box) : (x1, y1, width, height, $\theta$) or (x1, y1, x2, y2, $\theta$) 사각형 (일반 사각형; QUAD, Quadrilateral) : (x1, y1, ..., x4, y4) →첫 글자의 좌상단이 (x1, y1) 그 후 시계방향으로 다각형 (polygon) ..

[Object Detection] Focal Loss

Focal Loss class imbalance in a one-stage detector inefficient training 대부분의 location이 easy negatives이고 이들은 학습에 어떠한 유용한 정보도 주지 않음. Loss overwhelmed Easy Negatives가 loss의 대부분을 차지하기 때문에 loss가 실질적으로 hard example을 제대로 반영할 수 없게 됨. 이전까지의 연구에서 이를 어떻게 해결해왔는가? Hard Negative mining! Ex) Boosting Classifier에서 hard example을 보다 잘 학습하기 위해 sampling을 더 많이 시키는 형태(sampling weight 부과)로 학습을 시킴. (명시적으로 hard example을..

[DL/CV] NN interpolation의 backward propagation

Nearest Neighbor Upsampling FPN(Feature Pyramids Network)에서는 top-down path를 통과할 때 high level feature와 low level feature를 섞기 위해서 upsampling 연산을 하는데, upsampling 방법으로는 Nearest Neighbor Upsampling을 사용한다. Nearest Neighbor Upsampling은 다음과 같은 연산이다. (나중에 Upsampling을 한 번에 정리할 필요가 있다고 느낌) 간단하게 생각하면 upsampling 시, 채워야 하는 부분을 가까운 값의 copy로 채우는 연산이다. NN(Nearest Neighbor) Upsampling의 Backward path NN Upsampling..

[Pytorch] hook (forward_hook, backward_hook)

Hook 패키지 중간에 자기가 원하는 코드 끼워넣을 수 있는 부분 정도로 이해하면 될 듯하다! (register hook) hook: 일반적으로 hook은 프로그램, 혹은 특정 함수 실행 후에 걸어놓는 경우를 일컬음. pre-hook: 프로그램 실행 전에 걸어놓는 hook forward hook register_forward_hook: forward 호출 후에 forward output 계산 후 걸어두는 hook # register_forward_hook should have the following signature hook(module, input, output) -> None or modified output input은 positional arguments만 담을 수 있으며 (index 같은?) ..

[NLP] 언어 모델에 대한 평가 체계 (GLUE, KLUE)

언어 모델의 평가 모델을 설계할 때 가장 중요한 것 중 하나는 '모델을 어떻게 평가할 것인가'이다. 이에 맞게 테스트셋을 구축하고 테스트셋에 대한 평가 지표를 체계적으로 설계함으로써 원하는 태스크에 대한 모델의 성능을 적절하게 평가할 수 있다. 평가 방법이 비교적 명확하고 표준화 되어 있는 CV와는 달리 NLP의 경우에는 언어와 태스크에 따른 모델 평가 방법이 제대로 표준화되어 있지 않았다. 2019년 BERT 페이퍼가 발표되면서 GLUE benchmark가 등장하였고, 이는 현재 영어 관련 NLP 태스크 평가 방법의 표준이 되었다. GLUE 벤치마크 (General Language Understanding Evaluation) Quora Question Pairs (QQP, 문장 유사도 평가) Ques..

DeepLearning/NLP 2021.09.24

[DL] ResNet의 Inspiration

Why Residual Learning? 지금껏 ResNet을 읽으면서 가장 이해가 되지 않았던 점은 왜 ResNet은 deeper network를 만드는데에 residual learning의 개념을 적용한 것일까? 에 대한 것이었다. Not about the Vanishing Gradient 물론 skip connection을 통해 gradient vanishing 등의 문제를 해결한다 이런 측면도 있겠지만, 논문에서 밝히길 여러 normalized initialization과 intermediate normalization layer로 인해서 해결 가능하다. 즉, 단순히 gradient vanishing 문제 등을 해결하기 위해 skip connection을 통한 residual learning이라는..

DeepLearning/Basic 2021.09.24

[Pytorch] nn.Module & super().__init__()

우리는 pytorch에서 각자 레이어 혹은 모델을 구성할 때, nn.Module을 상속받는다. 왜 상속을 받을까? 또 상속받을 때, super().__init__()은 왜 해주는 것일까? 해당 코드를 작성함으로써 어떤 속성을 갖게되는 걸까? 이번 글에서는 이 두 가지를 중점적으로 정리해볼 것이다. 아래의 코드는 간단히 convolution block을 구현한 것이다. import torch import torch.nn as nn class ConvBlock(nn.Module): """ conv2d - batchnorm - relu - max_pooling2d 로 구성된 conv block을 만들어봄 """ def __init__(self, kernel_size, stride, padding, pool, ..

[ML/DL] 최적화(Optimization), 경사하강법 (Gradient Descent Methods) (2)

수식이 포함되어 있는 글입니다. 원활한 이해를 위해 데스크탑 모드로 전환하실 것을 권합니다. Gradient Descent First-order iterative optimization algorithm for finding a local minimum of a differentiable function cf.) first-order optimization first-order optimization 같은 경우에는 최소 한 번 미분한 값을 활용하여 optimization을 하는 경우를 의미하고, second-order optimization과 같은 경우에는 두 번 미분한 값 (or gradient)를 활용하여 최적화를 하는 경우를 의미함. 일반적으로, nth optimization 같은 경우에는 rank..

DeepLearning/Basic 2021.08.21
728x90