본문 바로가기

공부

Particle Filter 공부했다 (2) 지금 까지는 좌표 위의 임의의 점을 로봇이라 칭하면서 이동시키는 상상의(?) 로봇 프로그래밍을 하였었다. 위 사진을 보면 알 수 있겠지만, 이번에는 보다 로봇스러운 시스템을 구축해보려고 한다. 이 로봇 모델은 자전거와 비슷한 구조를 가지고 있다. 앞바퀴만 각도를 바꿀 수 있고, 뒷바퀴는 그저 따라오는 형식이다. 뒷바퀴 사이의 중점 좌표(X, Y) 앞바퀴에서 뒷바퀴 사이의 거리(L) 로봇 전체가 보고 있는 각도(Θ)Θ를 기준으로 기울어진 앞바퀴의 각도() 이렇게 시스템을 구축한다. 다음으로 좀 복잡한 수식이 나오므로 미리 마음의 준비를 하시고, 짜잔... 앞바퀴가 기울어진 상태로 앞으로만 움직인다면, 로봇은 원의 궤도를 그리게 될 것이다. 그래서 그 원의 중심을 구할 수 있고, 움직인 뒤의 로봇의 위치를 ..
Particle Filter 공부했다. 계속해서 배우고 있는 필터 시리즈(?)의 대망의 마지막 Particle Filter이다. 위는 지금까지 배운 각 필터들에 대해서 정리를 함과 동시에 지금부터 배울 Particle Filter에 대한 간략한 설명을 하고 있다. 각각의 필터가 이산적인지(Discrete - 모눈종이처럼 나뉘어져 있는지), 연속적인지(Continuous - 일반적인 좌표 처럼인지) 체크가 되어 있고, 가장 확률이 높은 지점 하나만 알려주는지, 아니면 여러 후보군들을 알려주는지도 체크가 되어 있다. 제일 오른쪽에서 보이듯이, 이 필터들은 모두 Motion과 Measurement의 불확실성을 보완해주기 위해서 생긴 것이다. 애초에 완벽하게 움직이고 완벽한 센서가 있었으면 사실 그게 제일 좋은 것이다. 이렇게 불확실성에 기반하기 때..
Kalman Filter 공부했다. - 2 차원 이동 실습 지난 시간에 1차원에 대한 칼만 필터를 설계해 보았었다. 그 코드를 잠시 보자면 123456789101112131415161718192021222324252627measurements = [1., 2., 3.] x = matrix([[0.], [0.]]) # initial state (location and velocity)P = matrix([[1000., 0.], [0., 1000.]]) # initial uncertaintyu = matrix([[0.], [0.]]) # external motionF = matrix([[1., 1.], [0, 1.]]) # next state functionH = matrix([[1., 0.]]) # measurement functionR = matrix([[1.]..
Convolutional Neural Network 공부했다.(2) CNN이 양이 상당해서 파트 2로 나누어서 포스팅을 한다. Object Detection!! 이름과 사진에서 바로 직감이 왔을 것이다. 그 동안에는 하나의 물체에 대한 판별을 하였다면 이번에는 다양한 물체가 있는 사진에서 각각의 물체가 무엇인지 인식하는 것을 해 보려 한다. 어떻게 할 수 있을까?? 생각을 조금 해 보았다. 사진에서 물체 같아 보이는 것을 자르고 이것만 CNN을 돌려서 무엇인지 알아낸 다음 다시 그 위치에 Bounding Box를 쳐준다~ 으, 손봐야 할 것이 많다. 옛날에는 이렇게 했다고 한다. Object Detection에 대해서도 배포되는 모델들이 있다. 이들을 사용해서 Transfer Learning을 할 수도 있는 Pretrained 모델이다. 나는 개인적으로 YOLO에 대해서..
Convolutional Neural Network 공부했다. AI-PM의 마지막 강의인 Convolutional Neural Network(CNN)이다. 딥 러닝이라고 했을 때 가장 먼저 생각나는 대표적인 알고리즘이다. 그리고 딥 러닝 붐을 일으킨 장본인이기도 하다. 이전 Neural Network에서 실습했던 구조는 다음과 같다. 모든 뉴런들이 서로 거미줄 같이 촘촘하게 연결되어 있었다. 그래서 학습시켜야 할 매개변수들도 무지하게 많았었다. 이러한 구조를 Fully Connected Layer 구조라고 한다. 나도 그렇고 이 Fully Connected Layer가 가진 고질적인 문제들이 있다. 위에서 밝히고 있는 바와 같이 매개변수가 너무 많아서 연산이 복잡함은 물론이고, 서로 관계가 없는 픽셀들 사이에도 패턴을 찾으려고 한다. 이것이 무슨 뜻인지 글로만 보아..
Neural Network 공부했다. - Multi Layer Neural Network && Autoencoder 지난번에는 Single Layer Neural Network에 대해서 공부하였었다. 93%정도의 놀라운 정확도를 보였지만, 이해할 수 없는 실수들을 하기도 하였다. 오늘은 그 개선을 위해서 Multi Layer Neural Network에 대해서 배우고, Autoencoder를 배우면서 실습도 해본다. 아주 Deep하게 만들지는 않고 중간게 Hidden Layer하나를 추가해 보도록 하자. 이 Hidden Layer에서 Neuron의 개수는 500개로 하기로 한다.(그냥 적당하게 해준 것이라고 한다.) 당연이 구해야 하는 매개변수의 값들도 엄청나게 많아진다. 지난 Single Layer Neural Network에서는 7850개를 구하였는데, 이번에는 무려 397,510개의 매개변수를 찾는다. 아마 연산..
Kalman Filter 공부했다. Monte Carlo Localization에 이어서 이번에는 System을 Estimate하는 또다른 방법에 대해서 배워본다. 바로 Kalman Filter이다. 제어나 SLAM에서 EKF라는 말을 자주 듣곤 하는데, 이는 Extended Kalman Filter의 약자로, 로봇 분야에서는 거의 대부분을 맡고 있는 중요한 개념이다. Tracking에 주로 쓰이는 방법들은 위와 같다고 하는데, 이 세가지 방법들의 차이를 알기 쉽게 그려 놓은 것이 있어서 첨부를 해 본다. 지난번에 배운 Monte Carlo Localization은 discrete한 환경을 가정하고, Multi-Modal이라는 것은 마치 낙타의 혹이 여러개 있는 것처럼 로봇이 존재할 수 있는 후보군들이 여러 곳으로 나올 수 있다는 것이다...
Neural Network 공부했다.- Single Layer Neural Network 추천 시스템과 방법론들을 배우면서 잠시 잊고 있었는지는 모르겠지만, 이 강의의 최종 목표는 귀여운 고양이 사진이 있을 때 이를 '삐빅, 고양이다~' 라고 말해주는 인공지능을 설계하는 것이다. 그래서 지금까지는 그의 일환으로 Linear Regression과 Logistic Regression을 배웠던 것이고, 이번에는 Neural Network를 배우고자 하는 것이다. 강의에서는 들어가기 전에 복습부터 시켜준다. Linear Regression이 무엇이었지?? Data들의 어떠한 경향을 알아내는 것이었다. 그러기 위해서 가설을 세웠고 이것을 Hypothesis라고 불렀다. Linear라는 이름에 걸맞게 이 방법에서는 선형적인 가설을 세웠고, 각 항에 알맞는 매개변수 θ들을 찾는 것이 목표가 되었었다. 그..