본문 바로가기

트렌드 한눈에 보기

(204)
실전에서 사용하는 딥러닝 - : IMU 활용 속도 추정 (내 딥러닝이 망한 이유) 딥러닝 딥러닝 말로만 들었지, 실생활에서 사용되는 것을 본 적은 거의 없다. 물론 알게모르게 많이들 쓰이고 있을 테지만, 내가 직접 사용하는 일이 없었다는 뜻이다. 그러다가 chatGPT가 나와 내 인식을 바꿔줬다. "딥러닝 참 유용하구나!" 현재로서는 구글보다도 chatGPT에 물어보는 일이 더 많아졌다. 물론 틀린 답을 얻는 비율도 그만큼 늘어났지만... "뭐가 됐든 딥러닝을 써보긴 해야겠다" 싶어 IMU를 활용한 속도 추정에 딥러닝을 활용해보기로 했다. 위 논문은 하나의 IMU를 활용해서 사람의 보행 속도를 추정하는 방법에 관한 것이다. IMU는 가속도와 각속도를 측정하는 센서이다. 지자기 센서가 (나침반 역할) 추가로 들어있지만, 금속이 안들어가는 곳이 없는 우리 생활에서 지자기 센서는 오차를 낳..
STM 보드 고군분투기 - 3. 산업에서 사용하는 STM STM 보드 고군분투기 - 2. STM Cube IDE 가 복잡한 이유 (tistory.com) STM 보드 고군분투기 - 2. STM Cube IDE 가 복잡한 이유 STM을 나에게 추천한 박사님의 감언이설 중 하나는 "실시간으로 디버깅이 가능하다" 라는 것이었다. 음, 아두이노로도 시리얼 모니터로 띄우면 실시간 리딩이 가능하지 않나 - 하는 생각은 당시 mech-literacy.tistory.com STM을 사용하려는 시도를 한 지 1년이 지났다. 그 동안 마스터했냐 하면, 손도 대지 않고 있었다. 그러다가 현업에서 STM을 사용하게 되었다. 뭔가 감개무량하면서도 걱정이 되었던 것은 벌써 몇 주 전이고, 한참 헤매기를 곧바로 몇 주간 하고 있다. 처음 STM을 활용한 업무에 투입되면서 받은 튜토리얼은..
RoNIN: Robust Neural Inertial Navigation, IMU 사용기 명령어: python ronin_lstm_tcn.py test --type tcn --test_list /home/jewoo/WIRobotics/ronin/lists/list_test_unseen.txt --data_dir /media/jewoo/2E5A2A245A29E973/Database/RoNIN/unseen_subjects_test_set/ --out_dir /home/jewoo/WIRobotics/ronin/output/ --model_path /home/jewoo/WIRobotics/ronin/model/ronin_tcn/checkpoints/ronin_tcn_checkpoint.pt 드럽게 복잡하네 명령어 argument 마다 경로를 넣으라고 되어 있던데, 경로가 파일명인지, 파일이 있는 폴..
두 편으로 이해하는 칼만 필터의 역사와 원리 - [원리] 칼만 필터를 이해하기 위해서는 우선 Recurrent filter에 대해 알아야 한다. 한국어로는 재귀 필터라고 한다. 필터를 공부함에 있어 용어가 헷갈리는 순간이 엄청 많은데, 영어로 보아도 한국어로 보아도 헷갈리는 것이 당연하니, 일단은 익숙해지는 것에 초점을 맞추고 넘어가자. Recurrent Filter를 알아야 한다면, 그에 상대되는 필터의 종류도 알아야 한다. Batch Filter라는 것이다. 단순히 말해서, Batch filter는 주어진 전체 데이터를 활용하는 필터를 의미하고, Recurrent Filter는 최근에 입력된 데이터만을 활용하는 필터를 의미한다. 평균값을 구한다고 했을 때, Recurrent Filter와 Batch Filter는 아래와 같이 달라진다. Recurrent f..
두 편으로 이해하는 칼만 필터의 역사와 원리 - [역사] 1960년에 개발된 칼만 필터는 현재까지도 다양한 센서값 보정에 사용되는 알고리즘이다... 라는 것은 진부하기 짝이 없는 표현이다. 좀 더 극적으로 상상해보자. NASA의 멤버들이 오토 파일럿 기능을 구현하기 위해 머리를 싸매고 있던 1959년, 스탠포드에서 전기공학 박사를 취득하고 새로이 팀 배정을 받은 슈미트 박사가 해당 연구에 합류한다. 그렇다고 마땅히 해결책이 있던 것은 아니었다. 함께 1년간 머리를 싸매고 있을 뿐이었다. 나사의 시선이 "이 자식... 박사 맞아?" 하는 생각으로 바뀔 즈음, 슈미트 박사의 지인이였던 루돌프 칼만 박사가 새로운 필터를 개발했다면서 슈미트 박사를 초청해 세미나를 개최한다. 슈미트 박사는 의심스러운 눈초리를 보이던 팀원들을 데리고 칼만 박사를 방문하고는... 모든 것..
[딥러닝 공부] 2일차: Transformer를 공부하기 전에 훑어보는 LSTM (이론편) RNN (Recurrent Neural Network)이란, 아래 하나의 그림으로 표현이 가능하다. recurrent 라는 말이 의미하듯 (재현하다, 재발하다), 연속적인 데이터가 들어올 때, 동일한 블록을 거쳐서 연속적인 Output을 내놓는 형태의 Neural Network라고 할 수 있겠다. 연속적인 Output의 대표적인 예시가 언어의 문장 구조이기에 번역 등의 업무에 많이 쓰이지만, 이미지 해석 등의 영역에도 충분히 쓰일 수 있다. 하지만 단순한 RNN 블록으로는 한계가 있었는데, 바로 문장이 길어질수록 초반에 들어온 정보를 잘 기억하지 못한다는 것이다. 이런 현상이 나타나는 이유는 Gradient Vanishing 문제와 연관이 있다고 하는데, 상세한 내용은 아래 논문(링크)을 참고하면 좋을 ..
[딥러닝 공부] 2일차: Transformer를 공부하기 전에 훑어보는 LSTM (준비편) CNN의 가장 보편화된 버전인 ResNet을 익혔으니, 내가 알고 있는 언어 모델의 가장 보편화된 버전인 Transformer를 공부하기 전에 LSTM을 읽어봐야겠다 생각했다. 우선 "보편화"에 대한 정의를 생각해보자면, 1) 만족할만한 성능을 내면서 2) 구현하기 쉽도록 각종 튜토리얼이 많이 쌓여있어야 한다는 점이다. 그리고 Transformer를 바로 공부하지 않고 LSTM을 보는 까닭은, 예전에 하던 딥러닝 스터디에서 봤던 강연의 제목 때문이다. 위 제목 때문에, "아, Transformer를 이해하려면 LSTM부터 알아야겠구나!" 하는 생각을 했던 것이다. Transformer와 LSTM의 비교가 이뤄지는 강연이니, LSTM을 알면 Transformer를 더 잘 이해할 수 있을 것이라는 생각을 했..
[딥러닝 공부] 1일차: ResNet (2016)을 공부하는 2022년의 나 (실습편) ResNet 실습을 어떻게 해볼까 고민을 하다가, 그냥 github에 올라온 실습 코드를 그대로 따라가보기로 했다. ResNet: Deep Residual Learning for Image Recognition (꼼꼼한 딥러닝 논문 리뷰와 코드 실습) - YouTube 위 영상에서 소개해주는 ResNet 원리와 코드들이 상당히 쉽고 좋았다. 다만, 예제 코드에서는 ImageNet dataset을 사용하는데, 2021년 3월 이래로 사이트 개편이 되면서 더 이상 imagenet 예제를 사용할 수 없게 되었다. 다양한 예제들을 주피터 노트북을 통해 시도해봤지만, 일주일이 지난 오늘, 뭐가 뭔지 기억조차 잘 나지 않는다. 하지만 첫 술에 배부르랴? 일단 ResNet을 시도해봤으니 다음 논문으로 넘어가나 봐야겠다.
[딥러닝 공부] 1일차: ResNet (2016)을 공부하는 2022년의 나 (이론편) 아니 14만 회 인용된 논문은 난생 처음 본다. 아마 CNN을 처음으로 제안했던 논문은 이보다 더하겠지? CVPR이라는 Computer Vision 관련 학회에 2016년 publish된 논문으로, Kaiming He 등 microsoft 출신 연구진 4명이 작성했다. 이름만 들었을 때는 "어디 오스트리아쪽 사람인가?" 했더니 중국인이었다. 4명 모두 중국계다. 아래 그래프를 통해 보여지듯, ResNet의 장점은 두 가지라고 한다. 1) 성능 향상: 기존에 layer를 쌓아갈 때 발생하던 성능 저하 문제를 "잔여학습 (Residual Network)"를 통해 해결했음 2) 쉬운 알고리즘: 이해하기 쉬운 간단한 방법. 다만, 아래 그래프에는 첫 번째 장점 (성능 향상)만 확인할 수 있다. 초반 intro만..
[딥러닝 공부] 0일차: pytorch 튜토리얼 진행 그동안 깔짝대기만 했던 딥러닝 공부를 다시 한 번 시작해보고자 한다. 생각해보면 퇴사 후 인턴을 준비하면서도 딥러닝 스터디를 했고, 이번에 졸업 준비를 하면서도 딥러닝 공부를 시작하려는 참이니, 딥러닝을 "시간 때우기" 용으로만 써왔던 것이 아닌가 싶다. 조금만 바빠지면 거들떠도 보지 않게 되는 수준으로만 대했던 것 같다. 하지만 이번엔 다르다! 취미생활로라도 꾸준히 딥러닝을 파봐야겠다 생각을 한 것은, 이제 앞으로 할 일이 이것과 연관이 되어 있기도 하거니와, 내가 사용할 줄 아는 산업용 도구들의 (공학적 디자인 및 해석에 치우쳐 있다) 한계를 맛봤기 때문이다. 다시금 블로그에 기록을 하며 공부를 이어가야겠다. 첫 날에는 pytorch 튜토리얼을 진행했다. 몇 번째 진행하는 튜토리얼인지는 잘 모르겠지만..