별로 높은수준의 지식도 아니고, 구현의 영역이라기 보단 게임개발영역에서 보면 그냥 유니티로 캐릭터 이동수준의
그러니까 아주 기초적인 부분에 대해서 다뤄보려고함.
그 기초적인 부분만으로도 일자맵에 대한 자동사냥은 손사냥과 비슷한 효율을 만들어낼 수 있을 거라고 생각함
떳떳한일은 아니지만 해당 게시글을 보고 매크로구현에 도움이 됐다면, 서로 정보를 공유하고 조금 더 나은 개발이 될 수 있도록 서로 도왔으면 좋겠음
1. 학습데이터 확보
가장 먼저해야할 일은 학습데이터를 확보하는데 있음 이 부분은 자동 캡쳐뜨게해서 학습데이터 여러벌 만들 수도 있는데
메이플랜드는 2D특성상 정말 단순하게 이미지가 그려지기 때문에 귀찮더라도 프린트 스크린키로 스크린샷 10~20장 정도면 충분함
내가 만약 좀비루팡과 루팡을 사냥하는 매크로를 제작하고 싶으면 아래와 같이 스크린샷을 찍으면됨
+ 샘플데이터를 가져오느라 아무사진 줏어온건데 모든 캡쳐본엔 내 캐릭터가 포함되어있는게 좋음
2. 학습데이터 학습(https://app.roboflow.com/)
roboflow라는 학습데이터 학습 사이트인데, 사이트를 이용하지 않고 스스로 학습 시킬 수 있는 사람이라면 이글을 읽지도 않을테니
AI매크로를 접하는게 처음이라면 그냥 사이트를 이용하는게 좋음
사이트에 로그인까지 완료했다면 create New Project를 통해서 프로젝트를 생성해주면 됨
그 뒤 Project Name은 그냥 꼴리는대로 적고 Annotioan Group도 대충지어도 된다.
프로젝트가 생성되면 자동으로 upload화면으로 넘어갈텐데 대충 학습시킬 스크린샷 폴더째로 넣거나 파일 선택하면 됨
아래와 같이 업로드가 완료되면 Save and Continue로 넘어가주고
완료 된 후에는 자동으로 아래 화면으로 넘어갈텐데 Manual Labeling으로 하는게 좋음
이유는 당연히 내가 원하는 객체를 확실하게 인식하려면 셀프로 라벨링하는게 가장 정확한 방법이고, 메이플은 단순하기 때문에
이미지 셋이 적으니 조금 귀찮더라도 셀프 라벨링을 해주는게 좋음
라벨링을 다 마치면 아마 아래과 같이 될텐데 하는 방법은 굉장히 간단함
드래그를 통해 박스를 만들고 박스명을 지정해주면 됨 나는 일반 루팡같은 경우 rupin 좀비 루팡같은 경운 zombie rupin으로 라벨링 했음
!! 내가 깜빡한게 있는 데 꼭 자기캐릭터도 학습데이터에 포함시켜야 함, 나는 실제 학습은 스킵할 예정이라 그냥 예시용 이미지만 올려놓은것 !!
위와 같이 라벨링까지 완료했다면 왼쪽상단에 뒤로가기 아이콘을 클릭해서 다시 Annotate화면으로 돌아간뒤
Add Image라고 써져있는 버튼을 클릭하면 된다. 그리고 Add Images버튼으로 데이터셋을 추가한 후
create NewVersion 버튼 클릭 후
그냥 프로세스대로 진행하면
아래와 같은 화면이 출력되는데 꼭 Custiom Train and Upload버튼을 통해 학습을 진행하자
나는 YOLOv8버젼으로 Export시켰는데 그냥 취향껏 고른 뒤 Get Snippet을 클릭한다.
그럼 아래와 같은 코드가 생성되는데
복사 후 하단에 Copy Snippet and Open YOLOv8 NoterBook을 클릭하자.
그럼 아래와 같은 화면이 생성될텐데, 그냥 순서대로 실행시키면 됨
다만 아래의 코드를 실행시킬때는 복사해온 코드를 복붙해야한다. !pip install 부분부터 복붙후 실행시켜주면
내가 만든 데이터셋을 학습시킬 수 있음
과정도 추가시키고 싶었는데 너무 길어져서 패스 그냥 순서대로만 잘 실행시키면 아마 문제없이 실행될거라고 생각됨
다만 위의 코드를 실행시키고
%cd {HOME}
!yolo task=detect mode=train model=yolov8s.pt data={dataset.location}/data.yaml epochs=25 imgsz=800 plots=True
를 실행시킬때 오류가 발생하면 epochs값을 줄여주는게 좋음
학습이 끝나고나면 /runs/detect/train/weights/경로에 best.pt라는 파일이 생성되는데 이게 우리가 학습시킨 데이터임
가상환경에서 실행했기때문에 오른쪽 폴더모양을 클릭해서 해당경로값에 도달하면됨
그럼 이제 끝.
남은건 파이썬을 통해서 학습시킨 데이터를 응용하면 됨
소스코드는 아래에 첨부했고 주석달아놨으니 참고하면됨
*당연히 나는 샘플에서 me라벨링안해서 제대로 동작안함!! 다음에 또 글쓸기회 있으면 안헷갈리게 잘써봄
+ 동작하는게 보고싶다면 학습과정에서 내 캐릭터의 라벨을 me로 하고 좀비루팡과 같이 라벨링해서 데이터셋에 추가하면됨
OR 다른 몬스터 학습 후 라벨링한 이름대로 소스코드만 수정해주면 됨
EX) 드레이크 학습시 drake로 라벨링했다면
decision = {
"me": False,
"drake": False,
}
위와 같이 사용하는 라벨명 선언 후
if name == "drake": # 여기가 실제 라벨값이랑 비교하는 로직
decision["drake"] = True
decision["drake_location"] = (center_x, center_y)
와 같이 수정하면됨 혹은 더 나은 코드로 변경하거나
필요한 패키지들도 requireements.txt에 써놨으니
pip install -r requirements.txt로 설치해주자
제목 | 작성자 | 작성일 | 조회 | |
---|---|---|---|---|
공지 | 게시판 이용 안내+128 | 10-20 | 17072 | |
58379 | 00:30 | 241 | ||
58378 | 11-26 | 219 | ||
58377 | 11-26 | 255 | ||
58376 | 11-26 | 207 | ||
58375 | 11-26 | 231 | ||
58374 | 11-26 | 240 | ||
58373 | 11-26 | 311 | ||
58372 | 11-26 | 270 | ||
58371 | 11-26 | 351 | ||
58370 | 11-26 | 541 | ||
58369 | 11-25 | 651 | ||
58368 | 11-25 | 1229 | ||
58367 | 11-25 | 823 | ||
58366 | 11-25 | 747 | ||
58365 | 11-24 | 943 | ||
58364 | 11-24 | 1089 | ||
58363 | 11-24 | 1377 | ||
58362 | 11-23 | 1478 | ||
58361 | 11-23 | 1218 |
댓글4
추천 꽝 찍고갑니다!
개추를 딱
정성추
개추
me는 캐릭터보단 다른걸로 받아오는게