no image
[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 카테고리에서 쓸..
2021.06.23
no image
[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개의 키포인트들을 예측한다...
2021.06.21
no image
[Book Review] 데이터가 뛰어노는 AI 놀이터, 캐글
요즘 AI 관련 업계에서 취업을 하는데 있어서 필요한건 토익이나 컴퓨터 자격증 이런게 아니라 실무 경험이나 상위 컨퍼런스 논문 제출 경험, 외부 챌린지 참가 경험인 것 같다. 특히 이 외부 챌린지들 중에서 진입 장벽이 그나마 가장 쉬운 것은 캐글 아닐까 싶다. 캐글은 기업 및 단체에서 Prize를 걸고 데이터와 해결 과제를 등록하면, 데이터 사이언티스트들이 이를 해결하기 위해 모델을 개발하고 경쟁하게 되는 시스템이다. 캐글에서 과제들을 해결하고, 상위 랭킹을 진입을 한다면 해당 과제를 다루는 기업들에서 눈여겨 볼 만한 인재라고 생각하지 않을까 싶다. 이렇듯 캐글 상위 랭킹 진입을 위한 방법들을 소개한 "데이터가 뛰어 노는 AI 놀이터, 캐글" 이라는 고마운 책이 있다. 아마 이 책도 한 2년 지나면 쓸모..
2021.06.20
[C++] vector 최댓값, 최솟값, 인덱스 구하기
vector 컨테이너에서 최대값, 최소값을 구할 경우 for문을 작성할 수도 있지만, 복잡하기 때문에 algorithm 라이브러리의 있는 max_element를 사용하여 한줄로도 간단하게 최대값을 구할 수 있다. 또한, max_element를 사용하면 최대값의 인덱스 값을 구할 수 있으며, 최소값을 구하기 위해서는 min_element를 사용한다. max_element의 결과로 최대값을 가리키는 반복자를 반환하기 때문에 이를 * 연산자를 사용하면 최대값을 구할 수 있다. 또한, vector는 일련의 반복자로 구성되어 있으므로 최대값을 가리키는 반복자를 맨 처음을 가리키는 v.begin()만큼 빼준다면 인덱스 값을 구할 수 있다. vector와 유사한 구조인 deque에서도 동일하게 이용할 수 있다. #i..
2021.06.18
no image
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
[ffmpeg] Linux에서 ffmpeg 으로 m3u8 URL 동영상 저장하기
ffmpeg -i "URL" -bsf:a aac_adtstoasc -vcodec copy -c copy -crf 50 file.mp4 참고자료 : https://www.vividian.net/2020/09/42 m3u8를 mp4로 변환 (ffmpeg 이용) – vividian repository www.vividian.net
2021.06.04
no image
[Linux] 심볼릭 링크(symbolic link) 설정하기
필자는 CUDA 버전을 2개를 사용중이기 때문에 (CUDA 10.2 / CUDA 11.1) 심볼릭 링크를 설정하여 버전을 관리하고 있다. 심볼릭 링크란? 컴퓨팅에서 심볼릭 링크(symbolic link) 또는 기호화된 링크는 절대 경로 또는 상대 경로의 형태로 된 다른 파일이나 디렉터리에 대한 참조를 포함하고 있는 특별한 종류의 파일이다. 심볼릭 링크는 이미 1978년까지 DEC와 데이터 제너럴의 RDOS의 미니 컴퓨터 운영 체제에 존재했다. 오늘날 이들은 FreeBSD, GNU/리눅스, OS X과 같은 대부분의 유닉스 계열 운영 체제인 POSIX 운영 체제 표준과 윈도우 비스타, 윈도우 7, 또 바로 가기 파일의 형태로서 윈도우 2000, 윈도우 XP에 이르는 윈도 운영 체제를 통해 지원되고 있다. 심..
2021.05.25
no image
[Book Review] High Performance Python - 고성능 파이썬
파이썬은 누구나 쉽게 데이터 전처리나 데이터 분석에 사용할 수 있다. 하지만 파이썬이 너무 고수준 언어이기 때문에 이를 실행해주는 운영체제나 컴퓨터 시스템 전반을 충분히 이해하지 못할 때가 많다고 한다. 데이터 과학 즉 머신러닝 분야에서 다루는 데이터의 양이 일반 개발자가 다루는 데이터의 양보다 훨씬 많으므로 대용량 자료구조를 처리하는 과정에서 병렬 처리의 어려움이나 메모리 장법, 성능 저하등을 더 자주 겪게 된다. 따라서 저수준의 최적화 기법이나 시스템을 이해하는 것이 필요한데, 그 부분을 메꿔줄 수 있는 방법이 바로 고성능 파이썬책이다. 그러므로 이 책의 대상 독자는 파이썬을 충분히 사용해보았으며, 특정 부분이 왜 느린지 생각해 본적이 있는 독자들을 대상으로 한다. 또한 CPU 성능 관련 문제를 겪는..
2021.05.23
no image
[Python] google images download 이용하여 구글 검색 이미지 저장하기
자신의 크롬 버전에 맞는 chromedriver 를 다운로드 해주고, 아래와 같이 git clone 하여 google images download 프로젝트 다운로드 한 뒤 사용하면 된다. $ git clone https://github.com/ultralytics/google-images-download $ cd google-images-download $ python3 bing_scraper.py --search 'cat' --limit 10 --download --chromedriver ./chromedriver 참고로 chromedriver 다운로드는 아래에서 하면 된다. https://chromedriver.chromium.org/downloads ChromeDriver - WebDriver fo..
2021.05.20
no image
[Pytorch] 이미지 데이터세트에 대한 평균(mean)과 표준편차(std) 구하기
이미지 데이터는 촬영된 환경에 따라 명도나 채도 등이 서로 모두 다르기 때문에 영상 기반 딥러닝 모델을 학습시키기 전에 모든 이미지들을 동일한 환경으로 맞춰주는 작업이 필요하다. 즉, 전체 이미지에 대한 화소 값의 평균(mean)과, 표준편차(standard deviation)를 구하여 이 값들을 영상에 일괄적으로 적용하는 과정이 필요하다. 보통 Imagenet 데이터 세트에서 계산된 평균과 표준을 사용하게 된다. 이는 수백만 개의 이미지를 기반으로 계산된다. 자신의 데이터 세트에서 처음부터 학습하려는 경우 평균과 표준을 계산할 수 있지만, 그렇지 않은 경우(대부분) 자체 평균 및 표준이있는 Imagenet 으로 학습된 pre-trained model 을 사용하는 것이 좋다. 파이토치 데이터 세트에서 평..
2021.05.11
no image
Pytorch 에서의 TopK error (k not in range for dimension)
pytorch 에서의 input tensor 에서 주어진 k 값에 따라 가장 큰 값 k 개를 찾는 함수이다. image classification 에서 train/validation 시 accuracy 측정할 때 자주 사용된다. 아래와 같은 에러는 TopK 범위를 잘못 지정하였을 때 나는 에러이다. RuntimeError: invalid argument 5: k not in range for dimension at /pytorch/aten/src/THC/generic/THCTensorTopK.cu:26 RuntimeError: invalid argument 5: k not in range for dimension at /pytorch/aten/src/THC/generic/THCTensorTopK.cu:2..
2021.05.10
no image
[Linux] tar / tar.gz / zip 압축 및 압축 해제
보통 리눅스에서 파일을 압축 파일을 다룰 때, "tar로 압축(compress)한다"는 표현을 쓰는 경우가 많은데, 정확히 말하자면 tar 자체는 "데이터의 크기를 줄이기 위한 파일 압축"을 수행하지 않는다. 단지 여러 파일을 하나의 파일로 묶는 용도로 사용될 뿐이다. 대신, tar를 통해 하나로 합쳐진 파일을 gzip 또는 bzip2 방식을 사용하여 압축할 수 있다. (명령어로 수행 가능) tar가 널리 쓰이게 된 이유 중 한 가지는, 단순 아카이버 기능에 더해, tar로 묶여지기 전 파일들의 속성과 심볼릭 링크, 디렉토리 구조 등을 그대로 가져갈 수 있는 특징 때문이다. 그래서 최근에는 리눅스 용 프로그램, 데이터, 소스 및 라이브러리 등을 배포하는 용도로 많이 사용된다. 0. tar 명령어 옵션 (..
2021.05.10