KFC는 오버워치 불법 프로그램 사용자를 잡아주는 프로그램입니다.
오픈소스인 yolo를 기반으로 오버워치 영웅들을 인식하고, linear regression을 이용하여 불법 프로그램 사용 여부를 판단해줍니다.
약 25000장을 labelling하여 데이터를 생성하였고 약 5만번 정도의 training이 된 weight파일을 사용합니다.
- 동영상 파일이 삽입되면, 우선 동영상을 프레임단위로 자른다.
- 프레임마다 weights파일을 이용해 YOLO를 매칭시켜, 영웅이 존재하는지, death-sign이 존재하는지 detect한다
- 만약 death-sign이 발견되면 그 전의 10프레임을 확인해, 각 프레임마다 영웅과 aim 사이의 거리를 추출한다.
- 이전프레임과의 거리의 차 10개를 선형 머신에 넣고 돌려, 보통범위 내의 값인지, 아니면 이상이 있는 값인지를 확인한다.
- 이상이 있을 경우 hack임을 , 이상이 없을 경우 normal user임을 output으로 알려준다.
main-> getframe -> get feature -> distance -> machine learning
test를 위한 input용 영상과 weights 파일은 원드라이브에 업로드 해 두었습니다. (6,7번에 링크 첨부)
- 구글 colaboratory 사이트에 접속합니다.
- 팝업창의 우측 하단에 있는 새 노트를 클릭합니다.
- 상단메뉴의 런타임 - 런타임 유형 변경에서 하드웨어 가속기를 GPU로 변경합니다.
- graduation 폴더 github로부터 가져옵니다.(git clone 코드를 colab에 입력)
!git clone https://github.com/SIGMAOON/graduation.git
- 이때 colab의 경로 이동 문제가 발생하므로 graduation 폴더 밖으로 파일들 이동합니다. (mv 코드를 입력)
!mv graduation/* ./
- video 파일을 다운로드 후 압축을 풀어 data/video/ 경로에 넣습니다.
- weights 파일 다운로드 후 압축 풀어서 weights/ 경로에 넣습니다.
- 프로그램을 실행합니다.(pythoh 실행코드를 입력)
!python KFC.py
- 영상 이름을 뒤에 확장자까지 입력합니다. (exam_normal.mp4은 정상 유저의 영상, exam_hack.mp4은 불법 프로그램 사용자의 영상)
ex) exam_normal.mp4
- weights 파일 이름도 뒤에 확장자까지 입력합니다.
(obj_test_64000.weights은 프로젝트의 알고리즘 실행이 잘 되는 지 확인하기 위해서 test용 input 영상만을 학습한 파일, yolov3_51000.weights은 다양한 영상을 모든 캐릭터에 대하여 학습한 파일)
ex) obj_test_64000.weights