라인 트레이서를 ChainerRL로 구현
4036 단어 강화 학습OpenAIChainerDeepLearning
학습 결과를 시각화한 것이 다음과 같습니다.
이런 식으로 에이전트 (녹색 구슬)가 검은 선을 따라가는 것을 알 수 있다고 생각합니다.
바삭 바삭하고 움직이는 파란색 선은 상담원이 진행하는 방법 (속도)을 나타냅니다.
코드는 여기에서 업하고 있습니다.
htps : // 기주 b. 코 m / s ぉ w 신 g ぇ / ぃね T 라세
그리기는 모두 cv2 모듈을 사용합니다. 화상 처리가 아니고 화상 묘화를 위해서 cv2를 메인으로 사용하는 것은 오랜만이라고 할까, 별로 보지 않는 것 같은 생각이 듭니다.
사실은 PyQt라든지 wxPython을 사용하는 것이 정공법일지도 모릅니다. (뭐, 이번에는 cv2만으로 부족한 정도의 태스크였을 뿐입니다)
에이전트 설계
lineTrace.py def update(self, act_num):
# act num に応じて方向転換する
act_list = (np.pi / 3.0, np.pi/ 4.0, np.pi/ 6.0, 0.0, -np.pi / 6.0, -np.pi/ 4.0, -np.pi / 3.0)
# :
# <略>
행동은 왼쪽 방향으로 진행하는 것이 3단계, 오른쪽 방향으로 진행하는 것이 3단계, 직진과 합계 7개 준비했습니다.
따라서 DQN에서 신경망의 출력 유닛은 7개가 됩니다.
환경 로드
lineTrace.py # フィールド画像の読み込み
# フィールド画像には白の中に黒線があるものを想定する
self.field = cv2.imread("field/field.png")
# :
# <略>
환경은 PNG 이미지로 준비하고 그것을 읽었습니다.
github에도 필드 이미지를 올리고 있습니다. 이 방법으로 이미지를 만들면 다양한 영역에서 에이전트를 실행할 수 있습니다.
상태 얻기
lineTrace.py의 Agent 클래스의 get_state() 메소드에 구현되어 있습니다.
에이전트가 얻을 수 있는 상태는 에이전트의 전방에 있는 센서 어레이로부터 취득되는, 각 센서의 값(0 or 1)의 리스트가 됩니다.
라인 트레이서에 대해서는 이하의 사이트 등을 참고해 주세요.
h tp // w w. ct. 아 c. jp/메 ch/유메 2/유메 2. htm
위의 사이트에서는 센서가 2개 있고 어떤 센서가 검은 선에 있는지를 감지하여 다음 행동을 결정하고 있습니다.
제 프로그램에는 센서가 9개 준비되어 있습니다.
센서의 수는 lineTrace.py 의 LineTrace 클래스의 init() 메소드의 obs_space 변수로 설정할 수 있습니다.
학습 및 테스트 방법
학습은 dqn.py에서 구현됩니다.
내용은, 이하의 사이트에 써 있는 코드를 카피&페이스트 해, 조금 재작성한 것 뿐입니다.
htps : // 기주 b. 이 m / pf 네 t / 챠네 rl / b ぉ b / 뭐 r / 에 mp ぇ s / 쿠이 cks rt / 쿠이 cks rt. 이 pyn b
테스트는 dqn-test.py에서 할 수 있습니다.
github에는 학습된 모델도 올리고 있으므로 곧 실행할 수 있다고 생각합니다.
Reference
이 문제에 관하여(라인 트레이서를 ChainerRL로 구현), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/slowsingle/items/bce20ab8765d63d56ebf
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
def update(self, act_num):
# act num に応じて方向転換する
act_list = (np.pi / 3.0, np.pi/ 4.0, np.pi/ 6.0, 0.0, -np.pi / 6.0, -np.pi/ 4.0, -np.pi / 3.0)
# :
# <略>
lineTrace.py
# フィールド画像の読み込み
# フィールド画像には白の中に黒線があるものを想定する
self.field = cv2.imread("field/field.png")
# :
# <略>
환경은 PNG 이미지로 준비하고 그것을 읽었습니다.
github에도 필드 이미지를 올리고 있습니다. 이 방법으로 이미지를 만들면 다양한 영역에서 에이전트를 실행할 수 있습니다.
상태 얻기
lineTrace.py의 Agent 클래스의 get_state() 메소드에 구현되어 있습니다.
에이전트가 얻을 수 있는 상태는 에이전트의 전방에 있는 센서 어레이로부터 취득되는, 각 센서의 값(0 or 1)의 리스트가 됩니다.
라인 트레이서에 대해서는 이하의 사이트 등을 참고해 주세요.
h tp // w w. ct. 아 c. jp/메 ch/유메 2/유메 2. htm
위의 사이트에서는 센서가 2개 있고 어떤 센서가 검은 선에 있는지를 감지하여 다음 행동을 결정하고 있습니다.
제 프로그램에는 센서가 9개 준비되어 있습니다.
센서의 수는 lineTrace.py 의 LineTrace 클래스의 init() 메소드의 obs_space 변수로 설정할 수 있습니다.
학습 및 테스트 방법
학습은 dqn.py에서 구현됩니다.
내용은, 이하의 사이트에 써 있는 코드를 카피&페이스트 해, 조금 재작성한 것 뿐입니다.
htps : // 기주 b. 이 m / pf 네 t / 챠네 rl / b ぉ b / 뭐 r / 에 mp ぇ s / 쿠이 cks rt / 쿠이 cks rt. 이 pyn b
테스트는 dqn-test.py에서 할 수 있습니다.
github에는 학습된 모델도 올리고 있으므로 곧 실행할 수 있다고 생각합니다.
Reference
이 문제에 관하여(라인 트레이서를 ChainerRL로 구현), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/slowsingle/items/bce20ab8765d63d56ebf
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
학습은 dqn.py에서 구현됩니다.
내용은, 이하의 사이트에 써 있는 코드를 카피&페이스트 해, 조금 재작성한 것 뿐입니다.
htps : // 기주 b. 이 m / pf 네 t / 챠네 rl / b ぉ b / 뭐 r / 에 mp ぇ s / 쿠이 cks rt / 쿠이 cks rt. 이 pyn b
테스트는 dqn-test.py에서 할 수 있습니다.
github에는 학습된 모델도 올리고 있으므로 곧 실행할 수 있다고 생각합니다.
Reference
이 문제에 관하여(라인 트레이서를 ChainerRL로 구현), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/slowsingle/items/bce20ab8765d63d56ebf텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)