글

라벨이 TensorFlow인 게시물 표시

[TensorFlow] 대항해시대 온라인 시세 공유 도우미 (2)

이 글에서는 학습된 데이터를 어떻게 저장하고 어떻게 읽어와서 사용할 지에 중점을 두고 설명하겠습니다. 지난 번 글에서 언급한 도시이름, 시세, 화살표의 Learing Model 코드는 이곳 에서 확인하실 수 있습니다. 이 코드는 교역품의 러닝 모델과 거의 비슷하기에 뒤에 학습된 모델을 읽어오기 위해 필요한 부분만 설명하겠습니다. 텐서플로우 공식 사이트에는 Save and Restore 항목이 있고, 여기에 보면 tf.saved_model.simple_save 를 이용하면 제일 쉽다고 되어 있습니다. 그래서 저는 이 함수를 사용하기로 결정하였습니다. 처음에는 단순히 아래와 같이 simple_save 코드를 이용하였습니다. ---------- simple_save(session, export_dir) ---------- 그리고 저장된 모델은 아래와 같이 로드하였습니다. ---------- def estimate(model_dir, raw_bytes):     tf.reset_default_graph()     graph = tf.Graph()     with graph.as_default():         with tf.Session(graph=graph) as sess:             tf.saved_model.loader.load(sess, [tag_constants.SERVING], model_dir, )             x_data = [[float(x) for x in raw_bytes]]           ...

[TensorFlow] 대항해시대 온라인 시세 공유 도우미 (1)

이미지
국내에서 서비스하는 대항해시대 온라인의 최악의 시스템은 랜덤 그레이드 옵션이 아닐까 생각합니다. 그런데 어쩌다 보니 글로벌판에서 경험치,스킬숙련도,명성 최대 4배 이벤트를 하는 것을 보고, 글로벌판으로 갈아탔지요. 그리고 foxytrixy 를 이용해 오픈 채팅방에서 시세 공유하는 것을 보고 스크린샷에서 바로 정보를 가져올 수 있으면 좋겠다는 생각에 시작했습니다. 때마침 머신러닝 교육을 갔다와서 어디 적용할 만한 것이 없을까 고민하고 있었고요. 처음에는 게임의 해상도마다 이미지 크기가 조금씩 다를테니 이걸 같은 크기로 리사이즈 하고 이런 데이터들을 모아서 학습을 시키면 모든 해상도에서 정보를 인식할 수 있을꺼라 생각했습니다. 그런데 이 옛날 게임은 해상도가 달라도 "Market Rates" 보는 창의 크기는 동일한 사이즈였습니다. 머신러닝을 적용하는 것이 큰 의미가 없어지긴 했지만, 그래도 반투명한 부분 때문에 충분히 도움이 되지 않을까 생각하면서 진행해 봤습니다. 여기서는 Python + Tensorflow 를 이용해서 제가 데이터를 모으고, 신경망을 구성한 것을 보여드리고자 합니다. 일단 대항해시대 온라인의 Market Rates 화면입니다. 창의 왼쪽에는 교역품 시세, 오른쪽에는 인근 도시의 시세입니다. 일단 왼쪽 교역품 항목에 집중해 봅시다. 화면에서 교역품 정보를 알기 위해서는 그림을 보거나 이름을 보거나 둘 중 하나가 될 텐데요, 저는 이미지를 택했습니다. 웬지 이름 보다는 더 식별을 잘 할 것 같아서 말이죠. 스크린샷에서 교역품 이미지를 확인해 보니, 이 이미지는 배경화면의 영향을 받지 않습니다. 그래도 머신러닝 시작한 김에 계속 진행합니다. 대항해시대 온라인의 교역품 종류는 https://ssjoy.org/ 사이트 기준으로 대략 600 가지가 넘는 것으로 보입니다. 처음에는 이 모든 교역품의 이미지를 스크린샷으로 부터 가져와서 데이터를 만들기는 어려워 사람들이 시세를 많이 확인하는 품목 몇 종류만...