목록파이썬 (7)
Broccoli's House
6회차 - (2) 이미지 크기 조절 및 자르기 이미지 크기 조절 - 현재 모아놓은 훈련 데이터 이미지는 (960X540), 1채널의 흑백 이미지이다. 픽셀 수는 약 51만개로, 이 정도 데이터의 크기로 딥러닝 학습을 할 경우 시간이 매우 오래 걸린다고 판단하였다. 또한 현재 프로젝트의 모태가 되는 NVIDIA DAVE 2에서는 실제 도로 이미지를 사용하는 데에도 (200X66), 3채널의 컬러 이미지를 사용하였다. 컬러 이미지라 하더라도 픽셀 수가 4만개가 되지 않는다. 즉, 프로젝트 수준에 비해 너무 과한 시스템을 다루고 있는 것이다. - 따라서 현재의 이미지 크기를 줄이고, 도로를 제외한 차량이나 배경 화면 등은 자르기로 결정하였다. 크기는 NVIDIA DAVE 2와 유사한 수준의 이미지 크기로 줄이..
6회차 - (1) 훈련 데이터 수집 완료 텍스트 파일 불러오기 - 훈련 데이터를 수집할 때 로지텍 G27로부터 파이썬 라이브러리 Pygame을 이용하여 조향 데이터와 브레이크 데이터, 스로틀 데이터를 받아와 텍스트 파일로 저장하였다. 이 데이터들은 각 이미지에 대한 레이블(label)이 된다. 학습을 위해 텍스트 파일로부터 각 데이터들을 리스트의 형태로 받아온다. path = '~/Training Data/' # 훈련 데이터가 저장된 경로 선언 Text_steering = open("%sSteering_Data.txt" % path, 'r') # 조향 데이터 텍스트 파일 오픈 Text_throttle = open("%sThrottle_Data.txt" % path, 'r') # 스로틀 데이터 텍스트 파일..
5회차 - (3) 로지텍 G27에서 조향 데이터 추출 로지텍 G27 자체 API를 통한 데이터 추출 - 로지텍 G27은 차량 시뮬레이터나 레이싱 게임에서 사용할 수 있는 드라이빙 시뮬레이션 기어이다. 로지텍 G27과 관련된 정보는 로지텍 웹사이트(http://support.logitech.com/ko_kr/product/g27-racing-wheel)에서 찾을 수 있다. 로지텍 G27을 컴퓨터에 연결하여 사용하려면 로지텍 게임 소프트웨어를 설치해야 한다.(http://support.logitech.com/ko_kr/product/g27-racing-wheel/downloads)에서 다운로드 받을 수 있다. 로지텍 G27을 컴퓨터에 연결해 놓은 상태에서 설치를 시작하면 인스톨러가 알아서 하드웨어를 인식하여..
5회차 - (2) 파이썬을 이용한 이미지 크기 조절 및 흑백 처리 이미지 크기 조절 - 파이썬의 라이브러리 PIL의 ImageGrab.grab() 함수를 사용해서 스크린 이미지를 추출하면, 모니터의 해상도를 그대로 따르는 이미지가 추출된다. 현재 모니터의 해상도가 (1920X1080) 이므로, 이미지를 가공하기 위해 픽셀마다 어떠한 연산을 가하려면 너무 많은 계산량과 그에 따른 많은 시간이 소요된다. 따라서 이미지의 크기를 줄일 필요가 있다. - 이미지 크기 조절에는 이미지 관련 라이브러리인 OpenCV의 resize 함수를 사용한다. resize 함수를 사용하기 위해서는 스크린 이미지를 추출한 다음 배열로 변경해주어야 한다. 또한 줄이고자 하는 이미지의 크기와 크기를 변경할 때의 보간 방식(interp..
5회차 - (1) 파이썬을 이용한 시뮬레이터(BeamNG Drive) 영상 이미지 추출 직접적 방법 - 앞서 설치 및 환경을 구성한 Microsoft AirSim이나 TORCS에서는 프로그램 소스 코드를 이용하여 게임 이미지를 직접적으로 받아올 수 있다. AirSim의 경우 C언어 기반으로 작성된 시뮬레이터이지만, 서버-클라이언트 방식으로 파이썬에서 시뮬레이터의 이미지를 추출하는 API를 자체적으로 제공한다. 따라서 별 다른 어려움 없이, 예제 코드를 따라하면 그대로 영상을 추출할 수 있다. (https://github.com/Microsoft/AirSim/blob/master/docs/image_apis.md)를 참고하면 된다. - AirSim과는 다르게, TORCS에서 파이썬으로 이미지를 추출하는 것..
※ 이 글의 내용은 O'REILLY의 책을 기반으로 한다. 3층 신경망 구현 신호 전달 구현 - 입력층(Input Layer, 0층)은 2개, 첫 번째 은닉층(First Hidden Layer, 1층)은 3개, 두 번째 은닉층(Second Hidden Layer, 2층)은 2개, 출력층(Output Layer, 3층)은 2개의 노드로 구성된 3층 신경망이다. (1) 입력층에서 1층으로의 신호 전달 - 가중치 계산X = np.array([1.0, 0.5]) # 입력값 W1 = np.array([[0.1, 0.3, 0.5], [0.2, 0.4, 0.6]]) # 가중치(weight) B1 = np.array([0.1, 0.2, 0.3]) # 편향(bias) A1 = np.dot(X, W1) + B1 # X와 ..
※ 이 글의 내용은 O'REILLY의 책을 기반으로 한다. 예제 : 붓꽃의 품종 분류 데이터 불러오기 및 확인from sklearn.datasets import load_iris iris_dataset=load_iris() # scikit-learn 라이브러리에서 붓꽃의 품종 데이터를 불러와 변수에 저장한다. print("iris_dataset의 키 : {}".format(iris_dataset.keys())) # 붓꽃의 데이터 세트의 키워드를 출력한다. >> iris_dataset의 키 : dict_keys(['data', 'target', 'target_names', 'DESCR', 'feature_names'])# 'DESCR'은 데이터 세트에 대한 간략한 설명, 'target_names'는 분류해..