ImageAiCon PP
진행중
- Unreal의 ImageAI공부하기
- 알고리즘 관련 강의 학습
사전지식
https://inradestrt.tistory.com/695
$ \epsilon - Greedy $
Q-Learning 및 강화학습을 적용할 때 보통 $ \epsilon - Greedy $ 라는 기법을 함께 적용한다. 에이전트가 항상 최대 Q값으로 행동하게 되면 데이터 수집과정에서 다양성이 감소하고 이로인해 최대 학습
inradestrt.tistory.com
https://inradestrt.tistory.com/696
Exploration & Exploitation Trade-Off
강화 학습 알고리즘은 학습을 위한 데이터가 에이전트가 어떤 행동을 하느냐에 따라 달라진다. 따라서 강화학습 알고리즘은 데이터를 잘 수집하는 문제와 알고리즘을 잘 업데이트 하는 문제를
inradestrt.tistory.com
https://inradestrt.tistory.com/697
DQN(Deep - Q - Networks)
DQN Q-Table을 업데이트하지 않고, 현재 상태값을 입력값으로 받고 현재 상태에서 취할 수 있는 행동들에 대한 Q값을 예측하는 인공신경망을 만들어서 사용하는 Q-NetWorks기법이다. Q-Networks를 학습
inradestrt.tistory.com
https://inradestrt.tistory.com/698
TensorFlow DQN Agent 구현
import tensorflow as tfimport numpy as npimport randomimport mathimport os"""# 설정값 지정"""# 학습에 필요한 설정값들을 선언합니다.epsilon = 1 # epsilon-Greedy 기법에 사용할 최초의 epsilon값epsilonMinimumValue = 0.001 # epsil
inradestrt.tistory.com
결과물
https://colab.research.google.com/drive/1m3OxeUCt3XthHJDg3iZ2Rma6PpGXfIAx#scrollTo=69RjXx50pJoY
inflearn_CatchGame_DQN_example.ipynb의 사본
Colab notebook
colab.research.google.com
무작위로 떨어지는 빨간 네모를 파란 받침으로 받으면 Win 놓치면 Lose하는 방식
데이터의 가중치는 왼쪽 -1 가만히있기 0 오른쪽 1 로 3개의 결과노드가 존재.
중간의 128 -> 128의 히든노드로 데이터가 이동하여 결과물이 도출된다.
가장 최근의 50개 결과를 저장하여 현재 노드의 이동결과에 반영한다.
코렙에서는 np라이브러리의 버전이 맞지 않아서 오류가 발생한다. np라이브러리의 버전관리가 필요하다.
로컬로 돌리는게 더 쉬움.
진행 예정 작업
- Unreal ImageRetargeting 코드제작
- 언리얼 함수 상으로 지정된 카메라의 타겟뷰를 이미지값으로 저장 반환하는 방식이 존재함.
- TCP방식으로 데이터 통신처리를 진행
- TensorFlow를 사용하여 전달받은 이미지로 학습 알고리즘 연산.
- 연산결과를 다시 언리얼로 전달하여 학습된 데이터를 갱신.
- 4번과 3번을 반복
- 학습결과확인 후 재학습
- 5와 6을 원하는 AI행동패턴이 나타날때까지 반복
목표
- TensorFlow를 사용하여 알고리즘이 동작하는지 직접적인 확인을 진행.
- TensorFlow 를 사용하지 않고, 스스로의 C++코드로 알고리즘 함수 구현부를 직접 제작하여 사용하는것
(파이썬만으로 k means clustering를 구현하였을 때, 구현객체가 C++의 연산처리속도를 따라잡지 못하는 상황이 있었음) - UI관련 제작방식은 C#으로, 함수부는 DLL파일로 포팅하여 언리얼 엔진에 집어넣기.
완료된 작업
Unreal의 ImageAI공부하기
- CNN알고리즘 다시 복기하기
- 알고리즘 선별(DQN)
'작업사항 정리 > UnrealC++' 카테고리의 다른 글
UnrealC++ PP 20240703_12 (0) | 2024.07.03 |
---|---|
UnrealC++ PP 20240701_11 (1) | 2024.07.01 |
UnrealC++ PP 20240626_9 (0) | 2024.06.26 |
UnrealC++ PP 20240624_8 (0) | 2024.06.24 |
UnrealC++ PP 20240621_7 (0) | 2024.06.21 |