반응형

AI Research Topic 126

[Pose Estimation] waterfall module 기반으로 설계된 자세 추정 방법들 (UniPose, UniPose+, OmniPose, BAPose)

waterfall module 즉 WASP(Waterfall Atrous Spatial Pyramid)는 위 그림과 같은 구성으로 되어있으며 원래 semantic segmentation을 위해 multiscale fields-of-view(FOV)를 유지하면서 cascade architecture에서 progressive filtering을 활용하는 “Waterfall” Atrous Spatial Pooling 기반 방식으로 이루어진 모듈이다. 이와 같은 module로 설계된 자세 추정 방법들은 아래와 같다. 1. UniPose, Unified Human Pose Estimation in Single Images and Videos (CVPR 2020) WASP module (w/ a cascade of..

[Object Detection] Anchor-free 기반 Object Detection의 Center Sampling 방법 (FCOS, FoveaBox)

초창기 Object Detection 분야에서는 하나의 grid cell에 객체를 하나만 검출할 수 있었으며, 더 나아가 여러개의 grid에서 객체를 검출하기 위해 Anchor box라는 개념을 사용하여 객체를 탐지하였습니다. 여기서 Anchor box는 딥러닝 신경망이 검출해야할 object shape에 대한 가정입니다. 하지만 Anchor box는 크기, 종횡비, 개수에 굉장히 민감하다는 단점이 있습니다. 이 Anchor box를 어떻게 설계하느냐에 따라 모델 성능에 영향을 미치게 됩니다. 또한 pre-defined anchor는 모델 일반화 성능을 해치게 되고, anchor box 크기와 다른 ground-truth를 검출하기 어렵다는 단점이 있습니다. 따라서 anchor box를 사용하지 않는 a..

[Deep Learning] Faster Non-Maximum Suppression

기존 NMS 대비 빠른 Faster NMS의 속도 향상의 요인은 for 문을 사용하여 각 상자에 접근하는 대신 np.maximum 및 np.minimum 함수를 사용하여 코드를 벡터화 시키는데 있다. Faster NMS 구현 # import the necessary packages import numpy as np # Malisiewicz et al. def non_max_suppression_fast(boxes, overlapThresh): # if there are no boxes, return an empty list if len(boxes) == 0: return [] # if the bounding boxes integers, convert them to floats -- # this is im..

[Deep Learning] Pre-trained model로 gray image를 학습하는 방법

보통 pre-trained model(ResNet 50, ...)의 경우 RGB 3채널을 가지는 color image 를 기반으로 학습을 진행하기 때문에 모델의 입력 정보는 (height, weight, channel=3) 으로 이루어지게 된다. 따라서 이러한 모델에 임의로 1채널을 가지는 gray image를 입력할 경우 shape error 가 발생하게 된다. 이는 단순히 모델의 첫 레이어의 채널을 변경한다고해서 해결되지 않는다. 정확히 말하면 에러는 해결되지만 학습 진행이 안된다. 따라서 pre-trained model로 gray image를 학습시키는 법은 다음과 같다. 1. 첫번째 conv layer 의 채널을 1로 변경하기 2. pretrained weight load 시 1채널로 변경된 첫번..

[Pose Estimation] Google Research의 MoveNet API

Google Research에서 TensorFlow.js 로 경량화된 자세 추정 모델인 MoveNet의 API를 공개하였습니다. 랩탑 환경에서도 30FPS 이상 달성한다고 합니다. 참고로 이를 기반으로 홈트레이닝 분야에 적용을 한 국내 논문 "딥러닝 기반 영상처리 기법 및 표준 운동 프로그램을 활용한 비대면 온라인 홈트레이닝 어플리케이션 연구"도 있네요. MoveNet은 17개의 keypoint를 감지하는 모델이며, 정확도에 초점을 맞춘 Thunder 버전과 속도에 초점을 맞춘 Lightning 버전을 제공하고 있습니다. 또한 JS 모델과 TF모델 및 TFLite모델(+ float16, int8)들을 제공하고 있습니다. 서버 호출 없이도 TensorFlow.js를 사용하는 브라우저에서 모델을 실행할 수 ..

[Object Detection] Object Detection 분야에서 신경망의 입력 해상도 값을 제한하는 이유 (e.g. ~ [1333,800] or ~ [1000, 600])

바보같은 질문일 수도 있지만... Object Detector를 개발하다가 문득 궁금한 점이 생겼다. Object Detection 구현들을 살펴보면 scale 값과 max size 값을 제한해두는 경우가 있다. 아래 예시는 FPN pytorch 구현의 res50-lg.yml 파일이며, scale 값은 800으로, max size 값은 1333으로 정해져있다. SCALES: [800] MAX_SIZE: 1333 EXP_DIR: res50-lg TRAIN: HAS_RPN: True IMS_PER_BATCH: 1 BBOX_NORMALIZE_TARGETS_PRECOMPUTED: True RPN_POSITIVE_OVERLAP: 0.7 RPN_BATCHSIZE: 256 PROPOSAL_METHOD: gt BG_T..

[Dataset] MS COCO 데이터를 쉽게 이용할 수 있는 FiftyOne 사용하기

MS COCO Dataset 홈페이지에 오랜만에 들어가봤는데, 새로운 것을 발견해서 포스팅하기로 했다. FiftyOne 공식 문서 : https://voxel51.com/docs/fiftyone/# FiftyOne — FiftyOne 0.11.2 documentation Contents voxel51.com FiftyOne Github : https://github.com/voxel51/fiftyone GitHub - voxel51/fiftyone: The open-source tool for building high-quality datasets and computer vision models The open-source tool for building high-quality datasets and c..

[Deep Learning] Gradient clipping 사용하여 loss nan 문제 방지하기

Gradient clipping 을 하는 이유는 한마디로 학습 중 Gradient Vanishing 또는 Exploding 이 발생하는 것을 방지하여 학습을 안정화 시키기 위함이다. 학습하고자 하는 모델이 RNN 이나 DNN 같은 강한 비선형 목적함수를 가지고 있을 경우에에 미분값은 매우 크거나 작아지는 경향이 있다. 이러한 결과는 여러개의 큰 가중치값을 곱할때 생기게 되는데, 이러한 가파른 지역에 다다르게되면, Backpropagation 과정에서의 Gradient Update Step 에서 파라미터들이 굉장히 크게 움직일 수 있다. 파라미터들이 크게 움직이게 되면 여태 진행했던 학습 Epoch 들이 무효화 될 수 있다. 즉 모델 학습 시 loss nan 문제를 겪을 수 있다. Gradient는 현재 ..

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

[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개의 키포인트들을 예측한다...

[Deep Learning] 딥러닝에서 Synthetic Dataset 을 이용하여 학습하는 연구들

학습 데이터가 부족할 때 가상 세계에서 얻어진 데이터를 이용해 볼 수 있다. 즉 언리얼 엔진을 이용하여 만들어진 GTA 게임에서 Synthetic DataSet 을 생성하여 데이터를 보완 해 볼 수 있다. (GTA 게임 안해봄...) 찾아보니 관련 연구가 여러가지 있었는데 보통 Teacher-Student 형태의 학습 방식을 사용한다. 즉 대규모 데이터인 Synthetic Dataset을 이용하여 Teacher Net 을 구성하여 Pre-training 하고, Real Dataset 을 이용하여 Student Net 을 구성함으로써 fine-tuning 하는 방식이다. Synthetic Dataset 에는 보통 자율 주행 환경 (Car, Person Segmentation, ..) 데이터가 많았으며, 안..

[Object Detection] 객체 탐지 정확도 평가 지표 mAP(mean Average Precision)

이번 포스팅에서는 객체 검출(Object Detection)의 성능을 어떻게 평가하는지에 대해서 다루고자 한다. 먼저 "정확도"라는 개념은 주로 정답(Ground Truth, 이하 GT)과 모델이 예측한 결과(Prediction) 간의 비교를 통해 이루어진다. 객체 탐지 정확도 평가 지표인 mAP(mean Average Precision) 를 다루기 전에 이미지 분류(Image Classification)에서는 어떻게 정확도 평가를 수행하는지 알아볼 필요가 있다. 이미지 분류는 GT가 이미지의 클래스이기 때문에 이미지가 딱 주어졌을 때 이 이미지가 GT의 클래스와 일치하는지 불일치하는지를 비교하게 된다. 반면 객체 검출에서는 이미지를 분류하는 문제와 달리 여러 객체들이 존재하는 이미지 내에서 객체가 어디..

[Action Recognition] ActionAI

ActionAI는 YogAI(Smart Personal Trainer)를 위한 딥러닝 학습 기반 Python Library 이다. 요가 동작을 히트맵으로 거울에 표시하였다. 맨 아래 참고자료에 링크를 넣어두었는데, 요가 동작 인식하는 방법을 굉장히 자세하게 써놓았다. 나중에 시간될 때 따라서 만들어보면 좋을 것 같다. 아래와 같이 유투브 크롤링을 이용하여 비디오 데이터를 수집하고, 이미지를 추출하였다고 한다. (정제는 수동으로 한듯) #!/usr/bin/env python import os import sys import requests from bs4 import BeautifulSoup as bs from urllib.parse import urlencode from pytube import YouT..

[Action Recognition] 싸움 탐지(Fight Detection = 2D Pose Estimation + RNN Action Recognition)

위 Github에 나와있는 프로젝트는 2차원 인간 자세 추정(OpenPose)과 RNN 기반 행동 인식 기술을 이용하여 싸움을 감지한 프로젝트이다. 이 때 SORT 알고리즘을 이용하여 Tracking ID를 생성하여 개인별로 시계열 데이터(time series data)를 얻어와서 Queue Container에 의해 32 frame 씩 처리한다. RNN에 넣을 때 Feature 로는 Angle, ΔAngle, ΔPoint 를 사용한다. 그리고 주요 키포인트들만 입력으로 사용한다. (눈코입 제외) 그리고 동작 방식은 클라우드 컴퓨팅에서 Darknet 을 사용하기 위해 Darknet Server 를 구축하고, 비디오 또는 웹캠 스트림을 서버로 보내고 서버에서 실시간으로 결과를 얻어오는 형태로 동작한다. 서버..

[Dataset] COCO(Common Objects in Context) Dataset

COCO Dataset : cocodataset.org/#home COCO - Common Objects in Context cocodataset.org COCO API : github.com/cocodataset/cocoapi cocodataset/cocoapi COCO API - Dataset @ http://cocodataset.org/ . Contribute to cocodataset/cocoapi development by creating an account on GitHub. github.com COCO API 사용 예제 : github.com/cocodataset/cocoapi/blob/master/PythonAPI/pycocoDemo.ipynb cocodataset/cocoapi COCO ..

AI Research Topic/Dataset 2021.03.16 (4)
728x90
반응형