Large scale LoL match data collection without production API Key Pick and Ban phase는 사람이 진행해야 공평하다. 체스 랭크 게임을 AI가 플레이 하는 것은 핵이나 다름없지 않겠는가? »
Automated data collection pipeline (Swagger, ffmpeg, HTTPrequests) LCU Client API LCU Driver, ffmpeg, replay API 등을 활용하여 제작한 auto data collector. 리플레이를 순차적으로 처음부터 끝까지 8배속으로 녹화하고, 미니맵 부분만 crop filter 적용, 저장공간을 절약한다. API documentation이 없어 꽤 애를 먹었지만, swagger로 콜 보내보면서 열심히 작업한 결과물이다. »
2021-07-08: Line Push statistics enhancements and First Gank predictions Line Push Statistics 1) 라인 위치 좌표 지도에 바텀 라인 추가 (블루팀 기준) 노란색: 미는 라인 진녹색: 중간에 걸친 라인 초록색: 당기는 라인 »
2021-07-07 Line Push statistics Line Push Statistics 결과 탑 미드를 위주로 해당 챔피언이 라인을 중간에서 유지하는지(1), 당기는지(2) 혹은 미는지(3)에 대한 통계값 추출 시스템 완성 1) 탑 미드 라인의 챔피언이 라인을 밀고 있는지 여부를 확인하기 위한 좌표 지도 (블루팀 기준) 노란색: 미는 라인 진녹색: 중간에 걸친 라인 초록색: 당기는 라인 »
2021-07-06 JG Statistics enhancements JG Statistics 결과 결과물 File_Name: 입력 비디오 파일 이름 First_Pos: 정글러가 최초로 간 위치 (1: Top, 2:Mid, 3:Bot, 4:Counter JG) Frame_Index: First_Pos에 도달했을 때의 frame index (추후 경기 시간으로 변경 예정) Opposite_JG_ID: 상대 정글러의 챔피언 ID 값이 -1인 경우는 오류가 발생한 경우 (위치 탐색 실패) »
2021-07-02 Minion tracking enhancements. Minion Tracking 이것저것 많이 건드려보았는데 미니언 트랙킹 자체가 변수가 많고 고려해야하는 경우의 수가 많아서 앞으로도 계속 보완해야 할 것 같음. 1) Centroid 거리 비교 고도화 기존의 방법은 scikit-image를 활용하여 얻은 미니언 웨이브마다의 centroid를 얻은 다음 단순히 centroid 사이의 거리를 바탕으로 교착상태인지 결정 미니언 웨이브의 크기와 미니언으로 간주된 챔피언 아이콘이 길게 늘어질 경우 centroid와 웨이브의 가장자리 지점까지의 거리가 멀어 centroid 비교로는 정확도가 떨어짐 Centroid의 거리에 각 웨이브의 major axis length의 절반(타원의 반지름으로 이해)만큼을 빼주어서 두 웨이브 사이의 최단 거리를 고려하는 방법으로 보완 »
Minion tracking noise interpolation. Minion Tracking noise(중간중간 엉뚱한 위치에 예측) 제거와 중간 몇몇 프레임에서 누락되는 경우를 보완(interpolate) 기존 방식은 프레임마다 미니언의 위치를 예측하고 morphology dilation을 통해 미니언을 웨이브로 묶은 다음 블루팀 웨이브와 레드팀 웨이브가 가까이 있을 경우 교착 상태(lock)으로 좌표값 반환 noise 제거와 일부 프레임 누락 문제 해결을 위하여 각 교착 상태의 좌표를 각각의 상황(위치 기준)으로 구분 각 lock 좌표에 대해 기존 lock 좌표로 구성된 graph(하나의 상황을 묶은 것)와 비교하여 새로운 graph에 해당할 경우 새롭게 graph를 생성하고 그렇지 않으면 기존의 graph에 하나로 합치는 방법 이때 기존 그래프의 좌표와 비슷한 위치에 존재하지만 프레임 차이(frame_dist)가 큰 경우에는 같은 웨이브라고 보기 어려우므로 따로 구 »
2021-06-30 Code refactoring Code Refactoring 기존 코드가 jupyter notebook에 너무 난잡하게 짜여져 있어 code refactoring 진행 정리한 코드 구조 main.py : main code utils └ io.py : input/output └ champ_tracking.py : functions for champion icon tracking └ jg_tracking.py : functions for jungle monster tracking └ minion_tracking.py : functions for minion tracking └ time_log.py : functions for kill and object log tracking 정리된 main.py 코드 »
Jg mobs/minions tracking enhancement from minimap 정글몹 tracking 이전에 정글몹 아이콘을 이용한 tracking 방법 대체. 정글몹은 미니맵 상에서 고정된 위치에 존재하므로 해당 위치에 정글몹 아이콘이 존재하는지 여부를 바탕으로 tracking 각 정글몹별 미니맵 상의 좌표 (수작업으로 구한 값이라 오차가 있을 수 있음.) »
Timeline video analysis of LoL replay(cont'd) and Objective tracking from minimap 타임라인 오브젝트 로그 1.1 오브젝트 아이콘 이미지 확보 (링크) »
Automated data collection pipeline via frame-by-frame SSIM analysis - 5 (JgPos v1.4) JgPos v1.4 개발 아래의 예시와 같이 JgPos v1.3에서 귀환 모션을 잡아내지 못하는 문제점 발견 »
Automated data collection pipeline via frame-by-frame SSIM analysis - 4 JgPos v1.3 개발 매칭의 대상이 되는 query icon 테두리에 각 진영(red, blue)에 해당하는 원을 추가하여 매칭 정확도 향상 »
Automated data collection pipeline via frame-by-frame SSIM analysis - 3 플레이어의 위치 예상 AI 모델 학습용 csv 데이터셋 확보를 위한 코드 제작 csv에 기록되는 값: Time step, here (챔피언 ID; 해당 링크의 챔피언 ID 엑셀 파일 사용), x_coord, y_coord, position (탑:0, 정글:1, 미드:2, 원딜:3, 서폿:4) JgPos v1.2이 예측하지 못한 프레임의 경우, 별도의 방법(e.g., 전후의 프레임 정보 활용)을 이용하여 해당 프레임에 누락된 챔피언의 위치를 기입할 예정 JgPos v1.2 기반 샘플 csv 데이터셋 (링크) »
Automated data collection pipeline via frame-by-frame SSIM analysis - 2 각 챔피언의 프레임 당 위치 예측 모델 성능 개선 (JgPos v1.2) 챔피언 아이콘이 겹치는 경우에도 최대한 예측이 가능하도록 수정 Center-cropping: query icon의 크기를 조금씩 줄여가며 matching Portion matching: occlusion된 경우를 고려하여 전체 icon 중 일부만 crop하여 matching HSV difference: 단순히 SSIM만 고려하였을 때, 협곡의 지형과 챔피언 아이콘의 모양이 유사하여 매칭되는 경우가 있어 매칭된 영역과 챔피언 아이콘 사이의 HSV값을 추가적으로 비교 »