Latest Post
-
Gaussian Splatting 맵 만들기 : How to make GS map and visualize it
처음에 Gaussian Splatting 맵을 학습시킬 때는 어떻게 해야 할지 몰라서 막막할 수 있다. 물론 지피티가 잘 알려 주지만 이런 분야는 약간의 요령과 노하우를 요구하기 때문에 지피티로 충분하지 않은 상황들이 반드시 있기 마련이다. 요새 연구 때문에 GS 맵을 대거 연성하고 있는데, 랩 내 꿀팁동아리에 공유했던 자료를 바탕으로 GS 맵 만드는 법을 정리해 보려고 한다. 아직 초보라서 이게 최선인데, 앞으로 더 좋은 방법들을 배울 수 있게 되기를 희망한다. 목차일단 만들어보자데이터 따기COLMAP 돌리기학습시키기시각화해보자SIBR ViewerViserSuperSplatGS-SLAM viewerGS Monitor GS Map 만들기https://youtu.be/sYYTTpjFKUY 1. 데이터 취득..
-
ICRA 2026 방문 후기
비엔나에서 열리는 ICRA 2026에 다녀왔다. 후기를 한 대화로 요약하자면 명교수님👨💼 : 지원이는 비엔나에서 너무 행복해보이더라... 잘 돌아다녀서 보기 좋았어... 다시 떠올려도 살면서 내가 이렇게 행복해도 되나, 싶을 정도로 즐거웠던 시간이었다. 학회 열심히 보고, 연구자들하고 커피챗도 적극적으로 하고 실컷 놀고 잊을 수 없는 시간을 많이 맞닥뜨린 출장이었다. 베뉴가 비엔나여서 더 특별했던 것 같다. 출국 전에는 호다닥 포스터를 만들고 출력하고 출국 준비를 했다. 핀에어를 타고 헬싱키에서 경유하면서 갔는데, 화이트 와인을 보틀로 줘서 좋았다. RAS에서는 Member support program으로 Traverl grant를 지원해주는데, 감사하게도 선정되어서 숙소를 지원 받았다. 위치는 A..
-
GS 데이터셋 만들기 (1) LVI handhold 제작 및 LiDAR-Camera 하드웨어 싱크
GS 논문을 작성하다 보니 검증을 위해서 LiDAR과 align된 Gaussian Slatting scene 데이터셋을 만들 필요성이 생겼다. 목표는 LiDAR가 제공하는 metric geometry와 GS가 제공하는 photorealistic scene representation을 같은 좌표계에서 정렬해, 학습/평가에 쓸 수 있는 pair dataset으로 만드는 것이다. LiDAR에서 취득한 스캔 데이터로 GS를 init하고, LIO 오도메트리를 camera pose로 사용하여 metric한 GS scene을 학습하고 평가 GT 데이터를 만들고자 한다. 선배가 말씀하시기로 이때 중요한 것은 이기종 센서 간 시간 동기화로, 이미지와 LiDAR 스캔의 time sync가 안 맞으면 차라리 COLMAP을 ..
-
연구 주제를 정한다는 것
대학원 생활이란 어떻게 보면 너무 바쁘고 어떻게 보면 딱히 할 게 없다. 클로드 코드가 있는 뉴-에라에서는 과제 일도 대충 모면하고자 하면 로드가 다소 줄었다. 베이스라인이 탄탄하게 있는 3,4년차 과제에서는 나도 요령이 생겨서 굳이 로드를 줄이고자 하면 시간 투자를 적게 할 수 있는 환경이 되었다. 누구나 목적이 있다면 구현을 빠르게 할 수 있는 시대에 이제 정말 중요한 것은 내가 어디로 항해하고자 하는가? 하는 큰 로드맵을 세우는 것이다. 방법을 제시하는 것보다, 방향을 제시하는 것이 중요해졌다. 큰 로드맵과 강력한 개인의 주관이 없다면 클로드 코드의 accept all changes만 딸깍이다가 대학원 생활이 - 혹은 그 이후 커리어까지 - 끝날 수도 있을 것 같아서 요새 뭘 해야 할지에 대한 고..
-
RSL-RL Navigation Stack for SRU
SRU(https://michaelfyang.github.io/sru-project-website/) 논문이 주장하는 것은 다음과 같다. 기존 LSTM/GRU같은 Recurrent memory는 시간 순서 기억은 잘 하지만, 공간적으로 누적된 기억을 보존하는 데에는 약하다. 그래서 ego-motion과 시점 변화가 있는 Navigation에서는 "과거에 봤던 장면을 공간적으로 정렬해 기억하는 능력"이 부족하며, 이를 개선하기 위해 SRU(Spatially-Enhanced Recurrent Units)를 제안한다. 이를 구현하기 위한 RSL-RL Navigation stack은 다음과 같은 세 컴포넌트로 구성되어 있다. sru-pytorch-spatial-learningSRU 자체를 검증하는 독립 PyTo..
-
NeuPAN: Direct Point Robot Navigation with End-to-End Model-based Learning
NeuPAN: Direct Point Robot Navigation withEnd-to-End Model-based LearningRuihua Han and Shuai Wang and Shuaijun Wang and Zeqing Zhang and Jianjun Chen and Shijie Lin and Chengyang Li and Chengzhong Xu and Yonina C. Eldar and Qi Hao and Jia Panhttps://hanruihua.github.io/neupan_project/내용LiDAR가 뿌리는 포인트 자체를 바로 제어 입력으로 바꾸는 Global-Local navigation 프레임워크.기존 로봇 내비게이션은 보통 점 --> 맵/격자/Polygon 등 중간 표현을 만들..
-
3DGS Viewers : SIBR Viewer, GS-SLAM viewer
SIBR ViewerSIBR (System for Image-Based Rendering)는 INRIA 산하 그래픽스 연구 그룹인 GraphDeco가 만드는 소프트웨어 프레임워크로 Image-based rendering 연구를 위한 인프라이다. 주로 Novel View Synthesis, 3D Reconstruction, 실시간 렌더링 논문들을 구현하고 실험하는 데 사용된다. SIBR Viewer는 3DGS 공식 코드에 포함된 표준 시각화 도구이다. 논문을 정확히 구현해 렌더링 정확도는 최고 수준이며 대규모 가우시안도 안정적으로 처리할 수 있지만, C++로 빌드해야 하고 확장성이 낮다는 단점이 있다. ViserViser는 Python/Web 기반 인터랙티브 뷰어이다. Python에서 웹(WebGL)으로 ..
-
3DGS 소스 코드 분석 : Tile-Grid based Rasterization
Tile-Grid based Rasterization3DGS는 최적의 병렬 처리를 위해 타일 그리드 기반 rasterization을 채택했다. #define NUM_CHANNELS 3 // Default 3, RGB#define BLOCK_X 16#define BLOCK_Y 16이는 이미지를 16x16 픽셀 타일로 분할하고 각 타일은 1 CUDA block이고, 각 픽셀은 1 thread이다. 같은 타일은 같은 Gaussian들을 사용한다.전체 파이프라인은 다음과 같다.Preprocessing (per-Gaussian)Prefix Sum (offset 계산)Key-Value 쌍 생성Radix Sort (타일별 + 깊이별 정렬)Tile Range 식별타일별 렌더링 타일 기반 방식은 다음과 같은 장점들이 있..
-
3DGS 소스 코드 분석 : def forward()와 CUDA 프로그래밍
최근 3DGS 연구를 시작하면서 지도해주시는 선배님이 한 줄 한 줄 설명해주셔서 3DGS 원본 소스코드를 자세히 살펴 볼 기회가 있었다. 방법론만 새로운 것이 아니라 아름다운 수준의 코드로 말도 안 되게 구현되어 있는 것 같아 놀라웠다. 하드웨어 수준의 섬세한 병렬화와 최적화가 간결하게 구현되어 있었다. 이때까지 주먹구구식으로 "이거 입력하면 보이네?" 하고 넘어갔어서 마음이 불편했는데, 좋은 이론을 잘 배울 수 있어서 오랜만에 배우는 기쁨을 느낄 수 있었다. 특히 CUDA 프로그래밍은 예전에 책만 사놓고 잘 안 봤었는데 이참에 입문할 수 있어서 좋았다. 혼자였으면 코드를 제대로 볼 생각도 못 했을 것 같은데 감사한 일... GS가 주목받는 이유는 속도가 빠르다는 점 때문인데, 이 비결이 GPU 병렬처리..
-
nvblox : ESDF, TSDF와 이를 이용한 플래닝
nvblox는 NVIDIA가 공개한 GPU 가속 3D 맵핑 라이브러리로, 로봇이 센서(LiDAR, depth camera 등)로부터 받은 데이터를 실시간으로 TSDF / ESDF 형태의 voxel 기반 지도로 통합하는 데 초점을 두고 있다. 고해상도 3D 환경에서는 CPU 기반 voxel 맵이 메모리와 연산의 병목을 유발하고, 실시간 플래닝을 위해서는 ESDF query가 많이 발생하게 된다. 따라서 Nvblox에서는 이를 모두 GPU에서 처리함으로써 대규모 3D 환경에서도 실시간으로 TSDF/ESDF를 업데이트하고 플래너가 바로 쓸 수 있는 distance field를 제공하는 것을 목표로 하고 있다. ESDFESDF(Euclidean Signed Distance Field)는 공간의 모든 지점에서 "..
-
CMU 3DGS Tutorial의 Tutorial
Robot navigation에서 Gaussian Splatting의 활용 관련 공부를 요새 많이 하고 있는데, 지도해주시는 선배님이 이 레포를 따라해보면 GS 학습을 간략하게 맛볼 수 있다고 추천해주셨다. 논문에 나오는 핵심적인 수식들을 직접 코드로 구현해 볼 수 있게 빈칸을 뚫어 놓았기 떄문에 연습하기 좋다. https://github.com/learning3d/assignment4 GitHub - learning3d/assignment4: 3D Gaussian Splatting and Diffusion Guided Optimization3D Gaussian Splatting and Diffusion Guided Optimization - learning3d/assignment4github.com 환..
-
ICRA 2026 제출 후기
입학 전에는 길게만 느껴졌던 석사과정이 벌써 반이나 지나갔다. 난 항상 이걸 왜 하고 있고 전체적인 흐름에서 지금이 어디에 위치하고 있는지를 끊임없이 어림하는 게 습관 (내 머릿속의 SLAM) 이라, 요새는 남은 석사 기간을 세면서 어느 정도까지 왔고, 앞으로 어디로 가야 하는지 고민하고 있다. 이번 논문을 경험적으로 요약하자면 ... 역량과 상황이 받쳐주진 않는데 어떻게든 첫 해에 논문을 제출하고자 하는 의지만으로 프로젝트를 끌고 가다가 무리를 해서 몸과 마음이 다소 상했다. 속상한 일도 아쉬움도 많이 남지만 많은 교훈을 얻었고 이번 경험이 있으니 다음에는 더 잘 할 수 있을 거라고 생각한다.논문 작성 타임라인은 다음과 같았다.6월 : 머릿속에 있는 아이디어를 구체화하기 위해 메모보드를 만들었다. 새로..
-
대형 프로젝트에서 Github 잘 활용하는 법
스윈님 레포에 보면 이런 식으로 브랜치가 많다. 브랜치들 네이밍 규칙이 뭐냐고 여쭤보니 {카테고리 : feature, refactor ...} / {제작자} / {애자일 할 때 그 스프린트} / {기능 세부}이런 식이라고 하셨다. 별 생각 없이 지은 거라고 하시긴 했지만 공동 작업을 많이 안 해봐서 merge request도 제대로 보내본 적 없는 나에게는 다소 신문물이었다. 그래서 url_navigation_pkg를 만들 때는 이를 적극 채택하여 나도 똑같이 따라 해 보기로 했다. Main에 깔끔하게 Merge Request / Pull Requeset 올리는 방법작업용 브랜치 생성작업 단위 잘게 나눠서 커밋 한 커밋 = 하나의 논리적 변경이 되도록 의식적으로 나누기버그 수정, 리팩토링, 신규 기능..
-
A. Terrain Map Loader
우선 시작해야 할 부분은 Terrain map (2.5D heightmap, 주로 포맷은 PCD) loader이다. 우리 랩에서는 주로 터레인 매핑 모듈의 결과물로 나온 2.5D static map에서 global path planning을 진행한다. 이 PCD 파일의 필드에는 height 뿐 아니라, 각종 collision risk, inclination risk,,... 등등과 각 과제에서 필요로 하는 요구사항에 맞는 값들이 들어가 있고 이 필드값은 계속 바뀔 수 있다. 그래서 터레인 맵 loader의 소프트웨어 요구사항은 다음과 같다. 메모리 효율성 : 필요한 필드만 선택적으로 로드동적 필드 지원 : PCD 파일의 모든 필드 자동 인식확장성 : 새로운 필드 타입 쉽게 추가 가능┌───────────..
-
url_navigation_pkg (3) : Naming Convention
Naming Convention파일명 : snake_casepose.pyglobal_planner.py클래스명 : PascalCaseclass GlobalPlanner함수/메소드명 : snake_casedef plan_path()변수명 : snake_casecurrent_pose상수명 : UPPER_SNAKE_CASEMAX_VELOCITY * 코드 포맷팅 라이브러리 활용할 것
-
url_navigation_pkg (2) : Code structure
Design Philosophy의존성 규칙 준수 : 도메인이 ROS에 의존하지 않음알고리즘 순수성 : 각 알고리즘은 상태를 갖지 않고 순수 함수처럼 동작state machine 분리: 상태 관리는 application layer에서 담당조립 : 런타임에 Config로 컴포넌트 조합Software Engineering도메인 (Domain)└─ Navigation (로봇 이동 문제 영역) ├─ Entity (핵심 개념들) │ ├─ Pose (위치) │ ├─ Path (경로) │ ├─ Velocity (속도) │ └─ Obstacle (장애물) │ └─ 비즈니스 로직 (Business Logic) ├─ 목표 도달 판단 ├─ 충돌 검사 ├─ 경로 유효성..
-
url_navigation_pkg (1) : 클린 코드, 소프트웨어 요구사항
URL에 들어오고 나서 좋았던 점 중 하나는 Aswin님의 DreamWaQ Universe 소스코드를 보고 공부할 기회가 있었다는 것이다. 그 코드는 내가 이제껏 봤던 어떤 코드보다 예뻤다. 6~7월은 내내 그 코드를 뜯어보고 사용하면서 보냈다. 그전에는 딱히 클린 코드에 대한 경이로움이나 필요성을 못 느끼면서 살았고, 그 때문에 내가 만든 코드도 정말 되는대로 작성한 것이 대부분이었다. 하지만 DreamWaQ 코드를 보고 난 후에, 잘 조직된 패키지는 참 많은 사람들의 삶의 질을 향상시킨다는 것을 체감했다. 그래서 내가 향후에 만들 패키지도 이와 같이 손쉽게 유지보수되는 영리한 구조를 지녔으면 좋겠다는 생각을 처음으로 했다.클린 코드는 기술 부채를 최소화하고 가독성과 유지보수성 그리고 타인의 이해도를 ..
-
Text-to-Image Generation with Deep Image Prior
로보틱스, 특히 필드 로보틱스를 위한 AI에서 중요한 키워드를 꼽으라면 단연 "리소스 효율적"이라고 생각한다. LLM 시대가 도래하면서 로봇을 위한 AI 연구는 크게 양극단으로 분리된 것 같다. 하나는 "뭐든지 라지모델에게 물어봐~"이고 하나는 "더 가볍고 더 효율적으로!"이다. "뭐든지 라지모델에게 물어봐~" 쪽이 좀 더 요새 메인 기조이긴 하지만, 나는 에 관심이 있는 나는 후자를 열심히 보고 있다. 그래서 이번 학기에 고른 것은 라는 전산과 수업이었다. 라고 하면 GPU 메모리 뿐 아니라, AI 학습에 필요한 모든 단계에서의 리소스를 의미하며 이 수업에서는 학습 데이터 취득이나 학습 과정 자체 등 다양한 관점에서의 리소스 효율적 기법을 다룬다. 그 중에 하나가 Deep Image Prior (htt..
-
Splat-Nav: Safe Real-Time Robot Navigation in Gaussian Splatting Maps
Splat-Nav: Safe Real-Time Robot Navigation in Gaussian Splatting MapsTimothy Chen and Ola Shorinwa and Joseph Bruno and Aiden Swann and Javier Yu and Weijia Zeng and Keiko Nagami and Philip Dames and Mac Schwagerhttps://chengine.github.io/splatnav/2025 T-ROAbstract우리는 Gaussian Splatting 장면에서 실시간 로봇 내비게이션을 수행하는 파이프라인인 Splat-Nav를 제안한다. Splat-Nav는 두 가지 구성 요소로 이루어진다:Splat-Plan — 안전성을 보장하는 경로 계획 모듈 S..
-
SplatNav 코드 돌려보기 (2) 내 데이터로 돌려보기
https://zzziito.tistory.com/174 SplatNav 코드 돌려보기 (1) 제공해준 데이터로 돌려보기1. 환경 설정A. NerfStudio 설치SplatNav는 NerfStudio를 기반으로 작성되었다. https://github.com/nerfstudio-project/nerfstudio/tree/main GitHub - nerfstudio-project/nerfstudio: A collaboration friendly studio for NeRFsA collaboration friendlyzzziito.tistory.com여기서 제공해 준 데이터로 돌려봤으니까 이제 내가 딴 데이터로 돌려볼 차례이다. 친절하게도 이렇게 설명해주고 있다. 대략 이런 내용. 다음과 같은 순서로 수행한다..
Deep Learning
-
Text-to-Image Generation with Deep Image Prior
로보틱스, 특히 필드 로보틱스를 위한 AI에서 중요한 키워드를 꼽으라면 단연 "리소스 효율적"이라고 생각한다. LLM 시대가 도래하면서 로봇을 위한 AI 연구는 크게 양극단으로 분리된 것 같다. 하나는 "뭐든지 라지모델에게 물어봐~"이고 하나는 "더 가볍고 더 효율적으로!"이다. "뭐든지 라지모델에게 물어봐~" 쪽이 좀 더 요새 메인 기조이긴 하지만, 나는 에 관심이 있는 나는 후자를 열심히 보고 있다. 그래서 이번 학기에 고른 것은 라는 전산과 수업이었다. 라고 하면 GPU 메모리 뿐 아니라, AI 학습에 필요한 모든 단계에서의 리소스를 의미하며 이 수업에서는 학습 데이터 취득이나 학습 과정 자체 등 다양한 관점에서의 리소스 효율적 기법을 다룬다. 그 중에 하나가 Deep Image Prior (htt..
-
Flow Matching : Diffusion과의 차이점을 중심으로
Flow matching (https://zzziito.tistory.com/153)은 디퓨젼과 함께 최근 확률적 러닝 모델 기반 생성 분야에서 주목받고 있는 방법이다. Flow matching은 확률 흐름 상미분 방정식 (Ordinary Differential Equation, ODE)을 기반으로 하며, 이 방법은 복잡한 데이터 분포를 단순한 분포(Ex. 가우시안)로 연속적으로 변형하는 벡터 필드를 학습한다. 데이터 분포와 단순한 분포 사이의 확률 흐름을 모델링하여 이 흐름을 따라 이동하는 궤적을 학습하고, 연속 정규화 흐름(Continuous Normalizing Flow, CNF)의 개념을 확장하여 적용했다. 디퓨젼 모델이 노이즈가 없는 이미지에 점진적으로 가우시안 노이즈를 추가하여 데이터를 손상시..
-
내가 만든 데이터셋 잘 사용하기 : Diffusion Policy의 데이터 전처리 방법들
Imitation Learning(모방 학습)을 사용할 때는 내가 만든 데이터셋을 사용해야 하는 경우가 많이 있다. 특히 로봇 imitation 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..