자율주행 40

DQN Upgrade

Frame Skipping and Stacking 기존의 프레임 한개로는 속도를 측정하기 힘들기 때문에 여러개 스택킹 해서 분석하게한다. 굳이 RGB로 볼필요가 없는 경우는 grayscale로 바꾸어서 본다. 하지만 프레임을 연속적으로 붙이면 유의미한 차이를 확인하기힘들다. 그래서 몇 프레임을 건너 뛰면서 frame stacking을 수행하면 유의미한 차이를 볼 수 있는데 이것을 = Frame Skipping 이렇게 하지 않으면 매번 4번 프레임동한 같은 action을 취하게 되는데 이런 방식으로 진행하면 안되는 게임들도 존재하기에 위와 같은 방법을 써서 매 step 마다 다른 action 을 선택할 수 있게 해준다. Experience Replay Target Network #!/usr/bin/env ..

Reinforcement Learning

각 state에서 어떤 액션을 취하는게 좋은것인지를 각각의 Q 값을 통해 알수있다. 학습이 잘되어있는 경우에는 하지만 Q table은 처음부터 정답을 알려주지 않는다. 학습을 계속 반복적으로 수행해가면서 쓸만하게 된다. 하지만 문제가 있다 예시로 아래와 같다. 학습초반임으로 optimal 한 보상을 원하지않고 0.1 보상만으로 만족하면서 Qtable을 계속 update하게 되는 문제가 생긴다. 일정확률(Epsilon)을 선택하여서 agent가 action 을 랜덤하게 고를수 있도록한다. 게임 후반에 갈수록 Epslion 확률 값을 낮추어주는 방향으로 간다. 유명한 taxi simulation 코드이다. #!/usr/bin/env python import numpy as np import random im..

ANN ,CNN -> ㅡMNIST 분석

CNN 을 먼저 해주고 그것을 일렬로 벡터로 늘려서 ANN을 해주고 비교한다. MNIST dataset을 간단한 cnn + ann 으로 훈련시키고 평가해보자 #!/usr/bin/env python import torch import torch.nn as nn import torch.nn.functional as F import torch.optim as optim from torchvision import datasets, transforms import numpy as np device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu") batch_size = 128 num_epochs = 10 learning_rate = 0.00025 ..

AR tag

QR 코드기능 외에도 이렇게 roll ,yaw ,pitch의 정보를 담을 수 있다. 이걸 기반으로 자동차로 하여금 주차를 하게 할 수있다. 비교적 자신의 위치를 알기 쉽기 때문이다. Camera Calibration 우리가 실제 눈으로 보는 세상은 3차원이지만 카메라로 찍으면 2차원의 이미지로 변하게 됨 이때 3차원의 점들이 이미지 상에서 어디에 맺히는지는 영상을 찍을 당시의 카메라의 위치 및 방향에 의해 결정된다. 또한 실제 이미지는 사용된 렌즈, 렌즈와 이미지 센서와의 거리. 렌즈와 이미지 센서가 이루는 각도 등 카메라 내부의 기구적인 부분에 의해서 영향을 받아 왜곡됨 따라서 3차원 점들이 영상에 투영된 위치를 구하거나 역으로 영상 좌표로부터 3차원 공간좌표를 복원할 때에는 이러한 내부 요인을 제거해..

QR코드 이해와 활용

QR 코드안에 3개의 위치 검출 패턴 들어 있음. A,B,C 어느 방향에서라도 백색과 흑색 셀의 비율이 반드시 1:1 3:1 1:1 이 된다. 따라서 이게 그림이 기울어져 있든 말든 360도 모든 방향에서 고속 인식과 판독이 가능하다. 오류 복원 기능이 잇음, 최대 30% 복원이 가능하다. 연속 기능을 제공한다. 하나의 데이터를 분할 해서 여러개의 QR코드로 표시가능 ,최대 16개로 분할이 가능. 좁고 긴띠 모양으로 표시가능하다. 디자인을 접합할 수 있다. QR코드를 구성하는 최소 단위를 셀이라고 한다(흑백의 정사각형). QR코드는 셀의 조합으로 표시됨. QR코드가 2가지 패턴이있는데 얼라인먼트 패턴이 존재하는 것이 좀 더 업그레이드된 버젼이다. 얼라인먼트 패턴은 시야각에 따른 오곡을 보정하기위해사용한다..

외국 기업 사례 (모듈화 보다는 딥러닝 기반)

1. NVIDIA end to end approach 케마라 input과 steering output 사이에 CNN network가 존재해서 72시간 의 전문가의 주행을 통한 학습을 하였다. CNN 에서 어디가 active 한지 확인해 볼 수 있었다. 기존에 내가 배운것은 opencv로 처리해서 edge를 얻는 것인데 CNN이 자동으로 어디를 주목해야하는지 알아낸다. 2. ChauffeurNet (Waymo) end to end 와 달리 mid to mid 방식이다. 네트워크의 아웃풋이 비교적 해설이 수월해진다. perception에서 프로세싱을 거친 것을 input으로 넣어준다. 같은 백본 Feature Net을 통해서 자신의 주행 예측 뿐만 아니라 주변의 다른 차량들의 예측도 같이 했습니다. 1. C..

A generic driving strategy for urban environment

기존에는 rule based logic 들이 많았는데 이 논문은 driving strategy 를 먼저 구한후에 trajectory planning 을 통해서 실제로 자동차들이 따라가야하는 구체적인 path를 알아낸다. driving strategy 를 정할떄 이미 path 가 정해져있고 어떤 속도 , 가속도 로 움직여야하는지 를 정하는 것을 주행 전략을 새운다고 한다. 오른쪽 그림을 보면 obstacle 앞에 정지 해야함으로 점점 가속도를 줄이는 action 을 택하는 것을 확인 할 수 있다. 위의 cost for collision 을 정할떄 쓰이는 E는 static , dynamic 2개로 나뉘어진다. static 은 일정위치에서 일정시간동안 점유하는 것 , dynamic 은 변하는 위치 s(t) 에..