반응형

전체 글 519

[Object Detection ] What does mlvl mean?

mmdetection 모듈 쓰다가 mlvl 의 의미가 궁금해서 알아보았다. class mmdet.core.anchor.MlvlPointGenerator(strides, offset=0.5) multi-level (Mlvl) 이였다.... 주로 2D Points 기반 검출기의 Multi-level(Mlvl) Feature Map 을 위한 point 를 생성할 때 사용하며, Object Detection 분야에서 Anchor Free 스타일의 헤더(Header) 에서 주로 사용된다. def get_points(self, featmap_sizes, dtype, device, flatten=False): """Get points according to feature map sizes. Args: featmap_..

[ONNX] ONNX Simplifier 사용하여 모델 간소화 하기

ONNX Simplifier 는 복잡한 ONNX node 들 즉 ONNX 모델을 단순하게 만들어주는 툴이다. 전체 계산 그래프(the whole computation graph)를 추론한 다음 중복 연산자(the redundant operators)를 상수 출력(their constant outputs)으로 대체한다. 아래 그림의 왼쪽 그림은 어떤 모델의 ONNX 원본 모델이고, 오른쪽 그림은 onnx simplifier를 거친 ONNX 모델이다. (잘 보이진 않지만... 자세히 들여다보면 간소화 된 모습을 볼 수 있었다... 모델 크기도 줄어든다.) 아래 그림을 보면 더 명확히 와닿는다. 이런 느낌이다. 불필요한 Gather 및 Unsqueeze 연산자 등의 조합을 Reshape 으로 대체한다. 원래 ..

AI Development/ONNX 2021.07.26 (6)

mmdetection 으로부터 학습한 모델을 ONNX 및 TensorRT 로 변환 시 나타나는 문제

mmdetection 으로부터 학습한 딥러닝 모델을 ONNX 모델로 변환하고, TensorRT 로 변환하는 과정에서 아래와 같이 importTopK 레이어(노드)를 TensorRT 에서 인식을 못하여 변환이 안되는 문제가 발생하였다. In node -1 (importTopK): UNSUPPORTED_NODE: Assertion failed: inputs.at(1).is_weights() ERROR: builtin_op_importers.cpp:3455 In function importTopK: [8] Assertion failed: inputs.at(1).is_weights() mmdetection 에서는 아래와 같이 여러 TensorRT Plugin 을 제공하고 있다. 아마 이 플러그인들을 처리하는 과..

삽질 기록 2021.07.26

[Book Review] 업무에 바로 쓰는 SQL 튜닝

이 책은 이제 막 DB를 배우고자 하는 사람들에게 적격인 책이다. 본 책의 구성은 5개의 파트로 나눠져있으며, MySQL과 MariaDB 개요부터 시작해서 초보자가 데이터베이스의 기본을 잘 이해할 수 있게끔 적절한 설명과, 적절한 예시들로 설명되어있다. 특히 효율적인 MySQL 계열에서 쿼리를 잘 짜고싶은 개발자들에게 추천한다. 책 두께도 그렇게 두껍지 않아 SQL 튜닝 입문자들이 갖고다니면서 개념설명과 간단한 예제들을 술술 읽어볼 수 있을 것 같다. 특히나 4장에서 악성 SQL 튜닝으로 초보자 탈출하기 챕터에서 쿼리를 재작성하여 튜닝을 수행하는 실습을 진행하는 부분이 알찼던 것 같다. 한빛미디어 활동을 위해서 책을 제공받아 작성된 서평입니다.

Book Review 2021.07.25

fatal error: libpq-fe.h: No such file or directory

아래와 같은 에러 발생 시 libpq-dev 패키지를 설치해주면 해결된다. fatal error: libpq-fe.h: No such file or directory $ sudo apt-get install libpq-dev 위와 같이 설치를 진행했는데 아래와 같이 dependency 문제가 나온다면, 해당 패키지를 dependency 에 맞게 재설치 해준다. The following packages have unmet dependencies: libpq-dev : Depends: libpq5 (= 10.3-1) but 13.3-1.pgdg18.04+1 is to be installed Reading package lists... Done Building dependency tree Reading sta..

삽질 기록 2021.07.15

[Linux] Code Blocks 설치하기

1. Code Blocks 리눅스 버전 설치하기 (~/Downloads) https://www.codeblocks.org/downloads/binaries/#imagesoslinux48pnglogo-linux-32-and-64-bit Binary releases www.codeblocks.org 2. 압축 풀기 cd ~/Downloads tar -xf codeblocks_20.03_amd64_oldstable.tar.xz 3. 설치 sudo dpkg -i *20.03*.deb sudo apt-get install -f 4. 실행 codeblocks 참고자료 : https://askubuntu.com/questions/1030720/how-to-install-latest-codeblocks-from-tar..

Programming/Linux 2021.07.01

[ONNX] Pytorch 모델을 ONNX 모델로 변환 할 때 dynamic_axes 지정하는 방법

LSTM 같은 모델을 ONNX 모델로 변환할 경우, 이 모델은 입력 값을 동적으로 설정할 수 도 있기 때문에 ONNX 모델로 export 시 dynamic_axes 를 설정하여 동적인 입력 값을 갖는 ONNX 모델로 변환할 수 있다. torch 공식 문서에 나와있는 내용은 다음과 같다. dynamic_axes (dict or dict, default empty dict) – a dictionary to specify dynamic axes of input/output, such that: - KEY: input and/or output names - VALUE: index of dynamic axes for given key and potentially the name to be used for expo..

AI Development/ONNX 2021.06.29

Linux 환경에서 OpenCV의 VideoCapture 사용 시 Webcam이 죽어도 읽히지 않을 때

아래와 같은 식으로 Linux 환경에서 OpenCV(C++)의 VideoCapture 클래스를 사용하여 Webcam을 사용하고자 할 때 웹캠이 read 되지 않는 문제가 있다. VideoCapture cap; // open the default camera using default API cap.open(0); 그럴 땐 먼저 웹캠 USB가 제대로 꽂혀있는지 확인한 뒤, 디바이스가 제대로 연결 되었는지 아래와 같이 확인해보고, ffplay를 사용하여 웹캠이 정상 동작하는지 확인해본다. 그 전에 연결되어있는 카메라의 device 명을 아래와 같이 확인해야한다. $ v4l2-ctl --list-devices ffplay를 사용하여 연결되어있는 Webcam 을 테스트 하는 명령어는 아래와 같다. $ ffplay..

삽질 기록 2021.06.25

Input type (torch.cuda.DoubleTensor) and weight type (torch.cuda.FloatTensor) should be the same

아래와 같은 에러시 RuntimeError: Input type (torch.cuda.DoubleTensor) and weight type (torch.cuda.FloatTensor) should be the same x = x.to(device).float() .float() 사용하여 해결한다. 참고자료 : https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=chrhdhkd&logNo=221469768189 pytorch : RuntimeError 발생시 해결방법(Input type and weight type should be the same) 발생한 에러 : RuntimeError: Input type (torch.cuda.Dou..

삽질 기록 2021.06.24

[Paper Review] Bottom-Up Human Pose Estimation Via Disentangled Keypoint Regression

Paper : https://arxiv.org/pdf/2104.02300.pdf Github : https://github.com/HRNet/DEKR HRNet/DEKR This is an official implementation of our CVPR 2021 paper "Bottom-Up Human Pose Estimation Via Disentangled Keypoint Regression" (https://arxiv.org/abs/2104.02300) - HRNet/DEKR github.com 오랜만에 읽고싶은 논문이 생겨서 이렇게 리뷰를 작성해본다. 논문은 그동안 가끔 읽었었는데 정리를 하는건 엄청 오랜만이라, pose estimation 카테고리에 쓸지, paper review 카테고리에서 쓸..

Paper Review 2021.06.23

[Pose Estimation] NVIDIA TLT의 BodyPoseNet

NVIDIA Transfer Learning Toolkit(이하 TLT)에서 "BodyPoseNet" 과 함께 COCO 데이터를 사용하여 2D Pose Estimation 모델을 학습하고 INT8 등으로 최적화하는 방법에 대해 다루었다. 이는 기존 오픈 소스인 OpenPose 보다 AP가 8% 정도 떨어지지만 속도면에서는 아주 월등히 우수함을 보여준다. NVIDIA TLT에서 제공하는 BodyPoseNet은 VGG와 같은 백본 네트워크를 이용하여 confidence map 및 PAF를 이용하여 픽셀 단위 예측을 수행한 후 multi stage refinement (0 ~ N stages)로 구성된 구조를 사용하는 fully connected convolution 모델이며, 18개의 키포인트들을 예측한다...

[Book Review] 데이터가 뛰어노는 AI 놀이터, 캐글

요즘 AI 관련 업계에서 취업을 하는데 있어서 필요한건 토익이나 컴퓨터 자격증 이런게 아니라 실무 경험이나 상위 컨퍼런스 논문 제출 경험, 외부 챌린지 참가 경험인 것 같다. 특히 이 외부 챌린지들 중에서 진입 장벽이 그나마 가장 쉬운 것은 캐글 아닐까 싶다. 캐글은 기업 및 단체에서 Prize를 걸고 데이터와 해결 과제를 등록하면, 데이터 사이언티스트들이 이를 해결하기 위해 모델을 개발하고 경쟁하게 되는 시스템이다. 캐글에서 과제들을 해결하고, 상위 랭킹을 진입을 한다면 해당 과제를 다루는 기업들에서 눈여겨 볼 만한 인재라고 생각하지 않을까 싶다. 이렇듯 캐글 상위 랭킹 진입을 위한 방법들을 소개한 "데이터가 뛰어 노는 AI 놀이터, 캐글" 이라는 고마운 책이 있다. 아마 이 책도 한 2년 지나면 쓸모..

Book Review 2021.06.20 (2)

[C++] vector 최댓값, 최솟값, 인덱스 구하기

vector 컨테이너에서 최대값, 최소값을 구할 경우 for문을 작성할 수도 있지만, 복잡하기 때문에 algorithm 라이브러리의 있는 max_element를 사용하여 한줄로도 간단하게 최대값을 구할 수 있다. 또한, max_element를 사용하면 최대값의 인덱스 값을 구할 수 있으며, 최소값을 구하기 위해서는 min_element를 사용한다. max_element의 결과로 최대값을 가리키는 반복자를 반환하기 때문에 이를 * 연산자를 사용하면 최대값을 구할 수 있다. 또한, vector는 일련의 반복자로 구성되어 있으므로 최대값을 가리키는 반복자를 맨 처음을 가리키는 v.begin()만큼 빼준다면 인덱스 값을 구할 수 있다. vector와 유사한 구조인 deque에서도 동일하게 이용할 수 있다. #i..

Programming/C | C++ 2021.06.18

Ubuntu 18.04 환경에서 VNC Server 설정했을 때 회색 화면 나타나는 문제

아래와 같이 vnc server 를 연결했을 때 회색 화면으로 뜨는 문제가 발생한다. 실행될 Application 이 아무것도 없어서 뜨는 문제이다. ~/.vnc/xstartup 파일을 수정해주면 된다. 0. process kill 해당 번호를 지워주면 된다. vncserver -kill :2 1. 패키지 설치 sudo apt install gnome-session-flashback 2. ~/.vnc/xstartup 내용 변경 vi ~/.vnc/xstartup #!/bin/sh # Uncomment the following two lines for normal desktop: # unset SESSION_MANAGER # exec /etc/X11/xinit/xinitrc [ -x /etc/vnc/xsta..

삽질 기록 2021.06.11
728x90
반응형