728x90

분류 전체보기 114

[python] 프로그래머스 - 올바른 괄호

https://programmers.co.kr/learn/courses/30/lessons/12909 스택을 이용해서 풀이 가능한 전형적인 문제이다. 나는 직접 스택을 구현해서 풀이했지만, 프로그래머스 스터디 리더님께서는 스택을 직접 구현하지 않고 변수를 활용해서 풀이하셨다. 어쨌든 스택의 원리를 이용한다는 점에선 풀이 접근에 변함이 없다. 직접 구현하면서도 이렇게 푸는 것보다 더 나은 방법이 있겠다 싶었지만...나는 직접 구현하는 게 좀 더 직관적이라 매번 그렇게 푸는 것 같다. pop, push 연산을 수행하는 것보단 변수만으로 구현하는 게 효율성 면에서 낫다. 특히, 공간 복잡도 면에서 더욱 그럴 것이다. def solution(s): answer = True c = 0 for char in s: ..

[Python] for ~ else

프로그래머스에서 알고리즘 스터디를 진행 중인데 오늘 처음으로!!! for ~ else 문을 알게 되었다. 간단하게 말하자면, for loop이 break 없이 끝날 경우에 else문을 실행하는 것. break든 아니면 break 없이 모든 loop을 다 돌았든 for loop을 탈출했을 때 무조건 그 아래에 statement가 있으면 수행을 해야 한다. 하지만, 어떤 경우에는 loop을 정상적으로 탈출한 경우에만 statement를 수행하고 싶을 경우가 있을 것이다. 이럴 경우 flag를 달아주든지 해야하는데 for ~ else문을 사용하게 되면 이런 flag의 사용을 막을 수 있다. 프로그래머스 스킬 트리 문제(https://programmers.co.kr/learn/courses/30/lessons/..

[Object Detection] RetinaFace(2019) 리뷰

Object Detection의 subtask인 Face Detection 연구 중 하나로, 2019년 발표된 논문이다. extra supervision (label을 손수 추가)과 self supervision을 joint하게 학습시킴(multi-task learning)으로써 WIDER FACE hard 데이터셋 기준 기존 SOTA보다 1.1% 정도의 face box AP를 끌어올렸다. RetinaFace WIDER FACE hard test set → 91.4%로 기존 SOTA보다 1.1% 앞섬. IJB-C test set, RetinaFace을 사용하면 face verification의 sota인 ArcFace도 성능 향상이 이루어짐 Backbone을 가볍게 한다면 싱글 코어 CPU 환경에서도 실..

[Linux] scp, sftp - 로컬과 서버 간 파일 전송, 서버 간 파일 전송

프로젝트를 하나 하고 있는데 이미지 전송을 서버끼리 할 필요가 있어서 적용해본 김에 정리합니다. vscode에서 drag and drop으로 옮기거나, filezilla 등의 gui 툴을 이용할 수 있지만 cli가 적응하면 훨씬 편하고 vscode 같은 경우엔 전송 속도가 너무 느려서 불편합니다. command를 알아보고 테스트하면서 깨달은 바를 나름대로 정리했습니다. 잘못된 정보가 있을 경우에는 댓글로 알려주세요! [참고] 제가 테스트한 환경은 local은 windows os이고, key파일을 통해 linux 서버에 접속하도록 되어 있습니다. 이 글에서는 파일 전송 명령어를 정리해놓은 것으로 자세한 개념정리 블로그는 아래에 링크 달아두겠습니다. https://nhj12311.tistory.com/76 ..

[Pytorch] 실험 재현(reproducibility)을 위한 실험 환경 randomness 제어하기

실험을 여러번 했을 때 똑같은 결과를 보장하는 것을 '재현성(reproducibility)' 라고 한다. 파이토치에서 실험 재현성을 보장하기 위해서 해주어야 하는 사전 절차는 다음과 같다. reproducibility 실험 재현성을 위해서 제어해야할 randomness는 다음과 같다. 1. torch의 randomness 2. torch.cuda의 randomness - multi-gpu를 사용할 경우에는 manual_seed_all로 제어해줘야 함 - pytorch document에 의하면 torch.manual_seed로 모든 device에서의 randomness를 제어 가능한 것으로 나오지만 다른 코드를 더 찾아보니 이 부분도 제어해주기에 추가 3. torch.backends.cudnn (bench..

11번가 코딩 테스트 후기

90분에 3문제였고 시간이 모자라진 않았던 것 같다. 문제는 알고리즘과 거의 손절한 나로서도 풀 정도였던 거 같고 히든 케이스를 어느 정도 잘 맞히느냐가 관건이지 않을까 1번은 정확성, 2번은 효율성을 체크하는 문제였는데 2번의 경우엔 O(N^2)으로 푼 느낌인데...잘 모르겠다.. 다만 2번 문제 설명에서 내가 영어를 이해를 못한 건지 아님 오타인 건지 문제 설명이 좀 이상했던 거 같다.. (답이 3인데 4라고 얘기했던 거 같음..) 마지막 문제는 조건 해석을 제대로 했는지가 관건인 거 같은데 중간에 좀 사고가 꼬여서 시간을 좀 많이 잡아먹었던 거 같다... 좋은 결과가 있으면 좋겠지만 아니어도 어쩔 수 없을 듯.. 항상 코테 볼 때마다 느끼는 건데 알고리즘 공부 좀 해야한다는 거... 근데 막상 다른..

Daily 2021.11.13

[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..

728x90