Latest Post
-
PointNet의 input point cloud processing에 대해서
https://github.com/charlesq34/pointnet.git GitHub - charlesq34/pointnet: PointNet: Deep Learning on Point Sets for 3D Classification and SegmentationPointNet: Deep Learning on Point Sets for 3D Classification and Segmentation - charlesq34/pointnetgithub.comPoint cloud를 input으로 받는 딥러닝 모델을 설계할 때는 항상 고민에 빠지게 되는 지점은 '길이가 모두 다른 point cloud를 어떻게 정규화를 해 줄 것인가?'인 것 같습니다. 길이를 고정해놓고 패딩을 줄 수도 있고, 정규화 네트워크를..
-
A Lifelong Learning Approach to Mobile Robot Navigation
A Lifelong Learning Approach to Mobile Robot NavigationBo Liu, Xuesu Xiao, Peter Stonehttps://arxiv.org/abs/2007.14486 A Lifelong Learning Approach to Mobile Robot NavigationThis paper presents a self-improving lifelong learning framework for a mobile robot navigating in different environments. Classical static navigation methods require environment-specific in-situ system adjustment, e.g. from ..
-
Dynamic Programming
Prediction은 Evaluation과 같다고 생각하시면 됩니다. 강화학습에서 Prediction은 Policy가 주어져 있을 때 각각의 state가 몇 점인지 평가를 해 주는 것입니다. Control은 결국에는 가장 좋은 것을 찾는 것입니다. 그리고 강화학습에서 가장 좋은 것은 즉, 최적의 Policy입니다. 그리고 최적의 Policy를 찾는 데에는 두 가지 방법이 있는데, 이 두 개는 사실상 같은 것이라고 할 수 있습니다. Value iteration은 Policy iteration의 특수한 경우입니다. 오늘은 1) 평가하는 것, 2) 가장 좋은 것을 찾는 것 이라는 두 가지를 다룰 텐데 이는 모두 MDP라는 특수한 환경에서 이루어집니다. 그리고 MDP를 풀 때는 여러가지 방식이 있지만 '모델을 ..
-
ROS with Qt : 1. 설치하고 간단한 프로젝트 템플릿 만들기
로봇 개발에서의 편의성을 위해 이런 저런 GUI 개발을 시도해 보고 있는데, FoxGlove, Flutter를 이용한 웹앱 등 여러 가지 툴을 써 봤지만 가장 대중적인 Qt는 안 써봐서 이참에 시도해 보는 글1. Installation# 필요한 qt 패키지sudo apt-get updatesudo apt-get install qt5-default qtcreator# UI를 시각적으로 디자인할 수 있는 도구sudo apt-get install qttools5-dev-toolqtcreator 2. Make project# ROS 워크스페이스의 src 폴더에서catkin_create_pkg qt_ros_app roscpp std_msgscd qt_ros_app# filetreeqt_ros_app/ ├── i..
-
Markov Decision Process (MDP) & Bellman Equation
강화학습에서 가장 중요한 것을 다시 짚어보면 다음과 같습니다. Environment: Agent를 제외한 모든 것State: 환경 중에서도 우리에게 필요한 정보들Rewards: Agent가 판단을 내렸을 때 이에 대한 보상값(스칼라)Return: 리워드의 기댓값(최종적으로 받을 수 있는 보상의 기댓값)AgentPolicydeterministic: 어떤 state에서는 어떤 action을 해라stochastic: 이런 state에서는 이런 action을 할 확률이 얼마 Value: 리턴의 기댓값이 상황이 얼마나 좋은지 나쁜지를 나타내는 값Model: action을 했을 때 받을 수 있는 리워드에 대한 정의내가 이 행동을 하면 어디로 갈까? (어떻게 될까?) Markov Property현재의 나의 stat..
-
강화학습 수업 Navigator
셀프 강화학습 재수강 1. Introduction of Reinforcement Learning2. Basic concept of Reinforcement Learning3. Markov decision process4. Dynamic programming5. Monte Carlo6. Temporal difference7. MC Control8. TD Control SARSA9. TD Control Q-learning10. Function Approximation11. Policy gradient - REINFORCE12. Policy gradient - Actor Critic13. DQN14. DDQN15. TRPO16. PPO17. A3C18. TD319. SAC20. Model-based RL
-
TOP-Nav : Legged Navigation Integrating Terrain, Obstacle and Proprioception Estimation
TOP-Nav : Legged Navigation Integrating Terrain, Obstacle and Proprioception EstimationJunli Ren1,*, Yikai Liu1,*, Yingru Dai1, Junfeng Long2, Guijin Wang1,†https://top-nav-legged.github.io/TOP-Nav-Legged-page/ SOCIAL MEDIA TITLE TAGSOCIAL MEDIA DESCRIPTION TAG TAGtop-nav-legged.github.io2024 CoRL세상 사람들이 내가 하고 싶은 거 다 먼저 해부렀네...https://www.youtube.com/watch?v=CzsE8kEf5lo&ab_channel=YikaiLiu Abstr..
-
(3) adb mode 사용하기
Android Debug Bridge 사용하여 모델 성능을 모니터링하고, 이 결과를 토대로 모델을 개선하기이때까지 진행한 과정(RKNN 모델 변환, 경량화, inference)에는 다만 약간의 문제가 있습니다. 변환은 리눅스 컴퓨터에서 진행하고, 파일을 오렌지 파이로 옮겨서 inference 만 수행하고 결과를 살펴본 것입니다. 매번 모델을 변환하고, 옮겨서 inference하기란 정말 귀찮은 일입니다. 또한, 귀찮은 것 보다 문제는 오렌지 파이 자체에는 rknn-toolkit2-lite만 사용할 수 있기 때문에, rknn-toolkit2에서 제공하는 모델 성능 평가 메소드를 사용할 수 없습니다. Performance Evaluation 기능을 사용하기 위해서는 ADB 모드로 오렌지 파이를 사용하는 것이..
-
(2) 모델 변환하기
pt, onnx 모델을 rknn 형태로 변환하기예를 들어 YOLO를 오렌지 파이에서 구동하고 싶고, 가지고 있는 것은 ONNX 파일이라고 하면 우리는 다음과 같은 단계로 ONNX 파일을 rknn 파일로 변환할 수 있습니다.rknn 객체 생성configuration 정의ONNX 모델 loadrknn 모델 buildrknn 모델 exportCode와 함께 따라하기rknn_model_zoo yolov5 example rknn_model_zoo/examples/yolov5/python/convert.py at main · airockchip/rknn_model_zooContribute to airockchip/rknn_model_zoo development by creating an account on GitH..
-
(1) rknn-toolkit2 설치하기
RKNN SDK 설치하기rknn-toolkit2는 x86 계열 리눅스 컴퓨터에 설치하는 것을 권장합니다. (arm 계열 지원하지 않음)$ mkdir rknn_project $ git clone https://github.com/airockchip/rknn-toolkit2.git$ conda create -n rknn python=3.8$ conda activate rknn$ pip3 install -r rknn-toolkit2/packages/requirements_cp38.txt$ pip3 install rknn-toolkit2/packages/rknn_toolkit2-2.0.0b0+9bab5682-cp38-cp38-linux_x86_64.whl설치를 완료하면 $ python3>> from rknnli..
-
싱글보드 컴퓨터 위에서 돌아가는 딥러닝 모델, RKNN : RKNN이란 ?
단돈 15만원짜리 NPU가 탑재된 싱글보드 컴퓨터에서 딥러닝 모델을 inference 할 수 있도록로봇에서 가벼운 딥러닝 모델을 사용하기 위해서 Orange Pi NPU를 최적화하는 작업을 몇 달간 집중적으로 한 적이 있었는데, RKNN 관련 한글 문서는 거의 없어서 삽질을 많이 했습니다. 경험과 나름의 노하우를 나누고 싶어 정리해보았습니다.https://zito.gitbook.io/rknn_usermanual 1. RKNN이란? | RKNN Cookbook단돈 15만원짜리 NPU가 탑재된 싱글보드 컴퓨터에서 딥러닝 모델을 inference 할 수 있도록zito.gitbook.io이 Gitbook의 내용과 동일한데, Gitbook이 좀 더 보기 쉽게 정리되어 있습니다. (작성 중) 목차0. RKNN이란 ..
-
Neural Kinodynamic Planning: Learning for KinoDynamic Tree Expansion
Neural Kinodynamic Planning : Learning for KinoDynamic Tree ExpansionTin Lai; Weiming Zhi; Tucker Hermans; Fabio Ramoshttps://ieeexplore.ieee.org/document/10801948 Neural Kinodynamic Planning: Learning for KinoDynamic Tree ExpansionWe integrate neural networks into kinodynamic motion planning and present the Learning for KinoDynamic Tree Expansion (L4KDE) method. Tree-based planning approaches, ..
-
Path Planning : Roadmap-based 방법과 Tree-based 방법의 차이점
모바일 로봇의 Path planning을 공부하다 보면 가장 먼저 마주하게 되는 것은 Dijkstra, A*이고, 그 다음이 PRM과 RRT입니다. 샘플을 뿌린다는 점에서 유사해 보이는 이 두 알고리즘을 비교해 보고자 합니다. PRM (Probabilistic RoadMap)Roadmap-based planning에서 가장 유명한 방법은 Probabilistic RoadMap(PRM) 입니다. 기본적으로는 Configuration space에서 미리 그래프(roadmap)을 구성하고, 여기서 노드는 valid configuration을, 엣지는 feasible path를 표현합니다. 이후 사용할 때는 시작점과 목표점을 roadmap에 연결하여 경로를 탐색합니다. Example┌───────────────..
-
SR-LIO: LiDAR-Inertial Odometry with Sweep Reconstruction
SR-LIO : LiDAR-Inertial Odometry with Sweep ReconstructionZikang Yuan1, Fengtian Lang2, Tianle Xu2 and Xin Yang2https://arxiv.org/abs/2210.10424 SR-LIO: LiDAR-Inertial Odometry with Sweep ReconstructionThis paper proposes a novel LiDAR-Inertial odometry (LIO), named SR-LIO, based on an iterated extended Kalman filter (iEKF) framework. We adapt the sweep reconstruction method, which segments and ..
-
SLAM & Odometry 평가 방법 : EVO
EVO는 SLAM과 Odometry의 성능을 평가하기 위한 파이썬 패키지이다. 추정된 pose와 GT pose 간의 비교 및 분석을 수행하고, APE(Absolute Pose Error)와 RPE(Relative Pose Error)를 계산할 수 있다. APE는 전체 궤적에 대한 절대 위치 오차를 RMSE, mean 등으로 계산한 결과이고, RPE는 연속된 포즈 간의 상대적 오차를 계산함으로써 드리프트를 분석할 수 있다. https://github.com/MichaelGrupp/evo GitHub - MichaelGrupp/evo: Python package for the evaluation of odometry and SLAMPython package for the evaluation of odomet..
-
슬린이 탈출기 : 1. SLAM dictionary
어쩌다 보니 SLAM 명가에 오게 된 건에 관하여 주요 용어 설명 1. Factor GraphFactor graph의 구조는 variable nodes와 factor nodes로 구성된다. variable node는 추정하고자 하는 상태 변수들을 나타낸다. 예를 들어 로봇의 위치와 방향, 랜드마크의 위치 등이 될 수 있다. Factor node는 이런 변수들 간의 확률적 관계나 제약 조건을 표현하며, 센서 측정치, 모션 모델, loop closing 제약 조건 등이 여기에 해당한다. 수학적으로 factor graph는 전체 시스템의 결합 확률 분포를 그래프 구조로 표현한다. 각 factor는 연결된 변수들에 대한 cost function으로 정의되며, 이런 함수들의 합을 최소화하는 것이 최적화의 목표가 ..
-
DTG : Diffusion-based Trajectory Generation for Mapless Global Navigation
DTG : Diffusion-based Trajectory Generation for Mapless Global NavigationJing Liang1, Amirreza Payandeh 2, Daeun Song1, Xuesu Xiao2 and Dinesh Manocha1 https://arxiv.org/abs/2403.09900 DTG : Diffusion-based Trajectory Generation for Mapless Global NavigationWe present a novel end-to-end diffusion-based trajectory generation method, DTG, for mapless global navigation in challenging outdoor scenar..
-
세미나 후기 : 권인소 교수님, 박주형 교수님
지난 10월부터 대전 카이스트에서 지내고 있는데, 학교에서 좋은 강의들을 많이 진행해서 여러가지 들어 보았습니다. 1. 권인소 교수님 특별 강연 강연 주제 : KAIST RCV Lab 이야기 : 실패와 도전일시 : 2024년 10월 28일권인소 교수님께서는 저의 학부 지도교수님의 지도교수님이셔서 예전부터 존함만 알고 계셨던 분이셨습니다. KAIST RCV 연구실을 이끄셨고 국내 컴퓨터 비전 분야의 선구자로 알려져 있습니다.(K-제프리힌튼) 제가 존경하는 교수님께서 존경하시는 교수님은 어떤 분이실지 예전부터 궁금했었는데 제가 대전에 가자마자 마침 세미나를 하신다기에 '이건 가야해!' 싶어서 말벌 아저씨처럼 후다닥 가보았습니다. 교수님들의 교수님이시라서 그런지 세미나장에도 카이스트 교수님들이 엄청 많이 계셨..
-
3D Mapping을 위한 고성능 프레임워크 GLIM : 1. 설치 및 도커
https://github.com/koide3/glim GitHub - koide3/glim: GLIM: versatile and extensible range-based 3D localization and mapping frameworkGLIM: versatile and extensible range-based 3D localization and mapping framework - koide3/glimgithub.com https://arxiv.org/abs/2202.00242 Globally Consistent and Tightly Coupled 3D LiDAR Inertial MappingThis paper presents a real-time 3D mapping framework based on ..
-
DTG : inference
ResultsAfter 1 epoch After 5 epoch 우선 데이터셋으로 제공해주는 pkl 파일 안에 뭐가 있는지 확인해보자. Train Dataset모델 학습을 위한 raw 센서 데이터pose: 로봇의 현재 위치/자세vel: 속도 데이터 (50개 시퀀스)imu: IMU 센서 데이터 (20개 시퀀스)camera: 카메라 이미지lidar: 3D LiDAR 데이터lidar2d: 2D LiDAR 스캔 데이터targets: 목표 위치들 (100개)trajectories: gt trajectorylocal_map: 로컬 맵 데이터Data type: Dictionary keys:pose: type=, shape=(3, 4)First element type: First element shape: (4,)vel..
Deep Learning
-
Domain Generalization : Data Manipulation Methods
Data Augmentation 도메인이 다르다고 하면 과연 이 세 장의 이미지에서 "무엇이" 다른 걸까요 ? 이미지에는 Semantic (Content) 정보와 Apperance (Style) 정보가 있습니다. 따라서 컨텐츠만 잘 하면 새로운 스타일의 이미지가 왔을 때 잘 분류할 수 있지 않을까요 ? 그리고, 1번과 3번 이미지는 비슷한 스타일이기는 하지만 자세라던지, 귀의 방향 등이 다릅니다. 그러면 1번 컨텐츠에 3번 스타일을 적용한 새로운 이미지를 생성한다면 학습에 도움이 되지 않을까요 ? 이것이 Domain Generalization 에 사용되는 Data Augmentation 의 방법입니다. 그러면 Contents 를 표현하는 것과 Style 을 표현하는 것은 무엇이 다를까요 ? ADaIN A..
-
Domain Generalization
Domain Generalization 이 무엇일까 ? 위에 이 두 개는 같은 도메인일까요 아닐까요 ? 기준을 어떻게 두느냐에 따라서 도메인의 정의는 달라집니다. 수학적 정의 input x 의 marginal distribution 을 domain 이라고 정의 하는 경우가 많습니다. 혹은 input 과 output 의 joint distribution 으로 정의하는 경우도 있습니다. 그래서 우리는 각각의 Domain 에서 나온 Feature 들이 이와 같이 Label Space 에서 Clustering 되기를 바라는 것 입니다. Single-Source vs. Multi-Source Domain Generalization 그러면 학습할 때 도메인은 몇 개를 사용하면 될까요 ? 학습할 때 하나의 도메인만 ..
-
Backdoor Attack on Self-Supervised Learning
Backdoor Attack은 Adversarial Attack 의 한 종류입니다. 위와 같은 Attack 을 Evasion Attack 이라고 합니다. 우리가 실제로 모델을 학습시킬 때 사용하는 게 아니라, 학습된 모델을 테스트할 때 테스트 이미지를 조작해서 잘못된 결과를 내도록 하는 것입니다. Backdoor Attack Backdoor Attack 은 "트로이 목마" 처럼 무언가를 심어 놓는 것입니다. 이미 학습을 할 때부터 심어 놓게 됩니다. 이때 Poison instance 는 우리가 학습을 시키는 데이터셋에 오염된 instance 를 추가시키거나, 기존에 있던 데이터셋을 조금 변형시키는 것입니다. 예를 들어 데이터셋이 10,000 장이면 100 장 정도에 perturbation 이나 의도를 가..
-
MAE : Masked AutoEncoder🤿
K, He, et al. "Masked Autoencoders Are Scalable Vision Learners", ICCV, 2022 Very simple method, but highly effective BERT-like algorithm, but with crucial design changes for vision Intriguing properties - better scalability and more from analysis MAE 같은 형식의 문제가 여기서 처음 나온 건 아닙니다. 우리가 Pretext Task 중에서, Context Prediction 이라는 impainting 태스크가 있었습니다. 또한 Transformer 에서 언급했던 Pixel GPT 도 있습니다. 그런데 2022..
-
Contrastive Learning : BYOL (Bootstrap Your Own Latent)
이때까지 Contrastive Learning 에서는 Negative Sample 이 중요했습니다. 하지만 BYOL 은 이와 조금 다릅니다. Key Ingredients Image Transformations : Comparing embeddings Target Networks : Similar to MoCo Additional Predictor on top of online network Interest of the method Simple training procedure No negative examples Work at the embedding level : no pseudo-labels BYOL 은 Negative Sample 을 사용하지 않고, Positive Sample 들 간에 얼마나 가까..
-
Contrastive Learning : Moco (Momentum Contrast)
Contrastive Learning 을 하는 이유는 Postive Pair 는 가깝게, Negative Pair 는 멀게 하기 위함입니다. 여기서 가장 흔히 사용되는 Loss 는 InfoNCE 라는 loss 입니다. 다만 이후 Clustering 을 할 때 있어서 문제가 발생합니다. InfoNCE 로 인코더를 학습하고 나면 x와 x' 의 위치는 Embedding space 상에서 가까워 지게 됩니다. 그런데 과연 가까워 지는 쪽으로 업데이트를 하는 게 옳을까요 ? 가까워지는 방향에 Negative Pair 들이 있다면 어떻게 될까요 ? Negative Pair 들이 없는 방향으로 옮겨가야 하지 않을까요 ? 즉, Negative 랑은 멀게, Positive 랑은 가깝게 하려면 momentum 을 고려해야..
-
Self - Supervised Learning : Contrastive Learning
Contrastive Learning 이 이전의 Pretext Task 와 다른 점은 다음과 같습니다. Contrastive Learning 은 특정한 일을 시키면서 Representation 을 학습시키는 게 아니라, invariance 와 contrast 를 사용합니다. 비슷하게 생기거나, semantic 하게 유사한 애들을 positive pair 라고 하고, 그렇지 않은 애들을 negative pair 라고 하면, invariance 와 contrast 는 다음과 같이 정의됩니다. Invariance : Representations of related samples should be similarContrast : Representations of unrelated samples should ..
-
Self - Supervised Learning : Pretext Task
Self-supervised learning 의 필요성과 기능 Supervised Learning 이 발전함에 따라서, 필연적으로 Self-Supervised Learning 이 각광을 받게 되었습니다. DNN 은 기적같은 성과를 내었지만 이를 위해서는 상당히 많은 양의 Labeled 데이터가 필요했습니다. Annotation 은 상당히 비용이 많이 들고, 돈이 있다고 해서 모두 할 수 있는 것도 아닙니다. 예를 들어 Medical Data 같은 경우 전문성이 필요합니다. Self-Supervised Learning 을 처음 들었을 때 , "스스로 Annotation 을 해 주는 건가 ?" 라는 생각이 들 수 있습니다. 그렇다기보다는, label 자체를 "누군가가 애써서 만들지 않아도 된다" 라고 생각..
-
다양한 Knowledge Distillation 방법들 : 1. Response - based KD
무엇을 배우는가 ? 의 관점에서 KD 는 크게 3가지로 분류할 수 있습니다. Response-Based : 결과값을 따라가는 것 Feature-Based : 중간에 나오는 값들 (과정) 도 다 따라가는 것 Relation-Based : 단편적인 값들의 비교가 아닌, 중간 중간의 값들이 어떤 프로세스에 의해 나오는지 (Flow) 흐름도 따라가는 것 What to match ? Output Logits Output logit 을 따라가는 것은 직관적이고 이해하기 쉽습니다. 하지만 이는 Supervised Learning 에서밖에 사용할 수 없습니다. 답이 있어야 하니까요. Intermediate Features 중간 feature 값으로부터 학습을 하는 것입니다. 하지만 이런 Feature 를 matchin..
-
Knowledge Distillation 개요
Knowledge Distillation 의 정의 Knowledge Distillation is a process of distilling or transferring the knowledge from a large, cumbersome (다루기 어려운) model(s) to a lighter, easier-to-deploy single model, without significant loss in performance KD 는 퍼포먼스의 손실을 최소화하면서 크고 복잡한 모델로부터 작은 모델로 Knowledge 를 전파하는 것을 의미합니다. 큰 모델에서 나오는 성능을 작은 플랫폼에서 돌아가는 모델에 어떻게 적용할 수 있을까 ? 에 관련한 연구들은 다양한 방면에서 진행되고 있습니다. 예를 들어 다음과 같은..
-
큰 이미지에서 동작하는 ViT : Swin Transformer
ViT 의 한계점 Self-Attention 을 Computer Vision 도메인에 적용한 ViT 는 Classification 분야에서 SOTA 의 성능을 보여주었습니다. 다만 ViT 는 Classification 문제만 다룰 수 있다는 한계점이 있었습니다. 또한, ViT는 NLP 의 transformer 를 거의 그대로 가져다 썼기 때문에, Vision 문제 처리에 특화된 transformer 구조를 제안할 수 있지 않을까 ? 하는 제안도 있었습니다. Computational Cost 가 크다는 문제점도 있고요. Swin Transformer 의 제안 Swin Transformer 는 이런 단점을 극복하기 위해서 만들어졌습니다. 이는 계층적인 (Hierarchical) 트랜스포머입니다. Shifte..
-
어텐션을 비전에 : ViT (Vision Transformer)
Attention in Vision Attention 을 CV 에 적용하기 위해서 다양한 방법들이 시도되어져 왔습니다. 이 그림은 "Stand - Alone Self-Attention in Vision Models" 라는 논문에 나오는 그림인데, 어떤 값을 낼 때 Convolution 을 하는 게 아니라, 가운데 있는 픽셀 값을 Query 로 날리고 Key 는 Fully connected로 학습해서 만들고, Value도 곱해서 만들어서 Self-attention 을 하기는 했습니다. 다만 이 구조도 CNN 의 Locality 를 극복하지는 못 했습니다. 그 다음에는 NLP의 word 대신 pixel 을 넣는 네트워크들이 제안되기는 했는데, 메모리 사용량이 너무 많다는 단점이 있었습니다. 원리상으로는 pi..