728x90
728x90

Computer Science/DL, ML 9

강화학습 Deep Q-Network(DQN)에 대한 정리

현재 학교 졸업 프로젝트로 강화 학습 관련 프로젝트를 진행하고 있다. 그러면서 DQN에 대한 차이를 설명하면서 여러 자료를 보게 됐고, 이를 좀 정리하기 위해 남겨 놓는다. Deep Q-Network Q-Learning에 Value Function Approximation(VFA)을 사용하는 것은, Weight Update 과정에서 샘플들 간의 상관관계와, Non-stationary Target으로 인해 수렴하지 않고 발산 가능성이 있다. 이러한 문제를 해결할 필요가 있는데 Deep Q-Learning(DQN)이 이 문제를 Experience Repaly와 Fixed Q-targets으로 해결을 시도하였다. State, Action을 Q-Table로 정의하기에 Table이 너무 방대해지는 경우(ex, 간..

TensorFlow, Keras GPU 메모리 문제(Out of Memory) 발생 시 시도해볼 방법

빅데이터 처리나 딥러닝을 하다보면 자연스럽게 마주하는 문제가 바로 메모리 문제다. 빅데이터 처리 같은 경우 그냥 파이썬에서 Numpy나 Dataframe을 사용하는 과정에서 발생하는 일이 흔하고, 그때마다 gc를 호출하거나, 처리하는 데이터의 양을 분할하는 방법, 변수 타입 변경 등 다양한 방법이 있어서 해결하기 쉬운데, 딥러닝은 그게 쉽지가 않다. 그래도 시도해볼 방법은 있다. 주로 메모리 에러를 마주할 때 보게 되는 메세지는 아래 부류들이다. OOM(Out of Memory)Resource exhausted: OOM when allocating tensor with shape Failed to get convolution algorithm. This is probably because cuDNN fa..

우분투(18.04 기준)에서 AlexeyAB/darknet, YOLOv3 설치해서 활용하기

YOLOv3를 구현해놓은 darknet은 크게 두 개의 프로젝트로 나뉜다. https://pjreddie.com/darknet/ Darknet: Open Source Neural Networks in C Nightmare Use Darknet's black magic to conjure ghosts, ghouls, and wild badgermoles. But be warned, ye who enter here: no one is safe in the land of nightmares. pjreddie.com https://github.com/AlexeyAB/darknet AlexeyAB/darknet Windows and Linux version of Darknet Yolo v3 & v2 Neural ..

PyQt5 GUI로 딥러닝(Deep Learning) 모델을 동작시키는 간단한 예제

딥 러닝 모델을 개발하는 것은 매우 어려운 작업이다. 그냥 그걸 만드는 것에만 그치는 건 아쉽고, UI를 통해 모델을 출력 결과를 App으로 보여주게 구현해보는 것도 괜찮다. 모델은 Keras로 구현하였고 선형 회귀(Linear Regression) 모델로 구성했다. 그냥 거창한 거 넣을 것 없이 X1, X2, X3를 통해 Y를 예측하는 모델이며, target value는 다음 식으로 계산했다. Y = X1 + X2 - X3 학습 데이터는 난수를 통해서 생성했고 5000개의 샘플로 생성해서 학습시켰다. 데이터 생성 import numpy as np import pandas as pd X1 = np.random.randint(1, 1000, size = 5000) X2 = np.random.randint(..

케라스(Keras)에서 모델 학습 중 loss가 nan으로 나오는 문제, 예측 값이 nan으로 나오는 문제

어떤 국내 논문 하나를 구현해보면서 Keras를 활용해서 선형 회귀(Linear Regression) 모델을 만들었다. 분명 다른 모델들을 만들 때도 이와 동일하게 만들어서 작성을 했는데도 loss가 nan이 나오고 예측 값도 nan이 나오는 문제가 있었다. 혹시나 싶어 np.mean을 사용해서 평균 값도 찍어봤는데, 이 역시도 nan이 나왔다. 데이터 타입이 혹시 다른 게 들어가서 그런 것인지, 중간에 무언가가 비었는지 체크해봤지만 아무 문제가 없었지만, 우우여곡절 끝에 해결 방법을 찾았다. astype을 사용해서 데이터 타입을 변경했다. X라는 데이터가 있으면 그냥 X=X.astype(float)로 변경해주면 해결됐다. 어디까지나 추정이지만, 오버플로우 같은 게 발생해서 나타난 문제 같다. 데이터 사..

욜로(YOLO) Cannot load image, Couldn't open file, Segmentation fault 에러 해결 방법

YOLO로 객체 탐지(Object Detection)을 할 일이 생겨서 이런저런 설정을 해주면서 작업을 진행했다. Bounding Box를 치고 Labelling을 하는 작업도 순조롭게 마치고, 이제 리눅스 환경으로 옮겨서 라벨링한 데이터들을 darknet 내부 디렉토리에 적절하게 위치시키고서 학습을 시키려니까 문제가 발생했다. Cannot load image ~~ Couldn't open file ~~ dimension과 wieght 불러오는 등 설정 파일까지 다 읽어온 상태에서 학습용 이미지 파일과 bounding box 좌표값을 담은 같은 이름의 파일을 불러오지 못하는 에러가 잔뜩 발생했다. 이럴 때는 대부분 아래의 방식을 따르면 해결이 된다. 아래 내용은 실제 darknet repository인 ..

CNN(VGG-16)을 활용한 불량품 검출(Defects Detection) 분류 모델

CNN을 활용해서 어떤 제품의 이미지를 보고 불량인지 정상품인지 분류하는 모델을 만들어봤다. 활용 데이터셋 원래의 데이터셋(NEU Surface Defect DB)은 크랙, 기름때, 스크래치 같은 다양한 종류의 열연강판에 대한 불량품들만 모아놓은 데이터셋이다. 여기서 멀쩡한 부분들만 잘라서 분류해놓은 데이터셋을 활용했다. 총 1344장의 이미지가 있고, 정상은 952장 불량은 392장으로 이루어져 있다. 클래스 비율에 맞춰 8:1:1 비율로 train, validation, test를 나눴다. https://github.com/kazenokizi/defect_classification/blob/master/data.rar 모델 구현 케라스를 활용했는데, 직접 레이어를 쌓지 않고 VGG16의 Weight를..

머신러닝(Machine Learning) 관련한 프로젝트 아이디어와 관련 툴

머신 러닝(Machine Learning) 학습을 하고 나면 기존의 유명 데이터셋들(유방암, 붓꽃, 와인 등)만 사용하는 것이 아닌, 다른 데이터셋을 활용해서 그럴싸한 프로젝트를 시도해보고 싶어진다. 유명 데이터셋들에서 파생된 간단한 모델들이 존재하긴 하지만, 그보다 더 다양한 데이터셋과 머신러닝 모델을 만들어보고 싶다면, 참고할만한 github repository를 하나 공유하려고 한다. https://github.com/NirantK/awesome-project-ideas NirantK/awesome-project-ideas Curated list of Machine Learning, NLP, Vision, Recommender Systems Project Ideas - NirantK/awesome-..

728x90