반응형

https://cheongpark.tistory.com/33

 

마인크래프트 인공지능(Minecraft AI) 플레이 시켜보기 Pt. 3 설치

https://cheongpark.tistory.com/32 마인크래프트 인공지능(Minecraft AI) 플레이 시켜보기 Pt. 2 설치 https://cheongpark.tistory.com/31 마인크래프트 인공지능(Minecraft AI) 플레이 시켜보기 Pt. 1 분석 이 글을 쓰기 전에

cheongpark.tistory.com

이전 글과 연결됩니다.

 

이제 제일 중요한 실행을 해볼 것인데..

모델을 학습시키는건 아직 해보지 않았기 때문에 학습 해본다면 그때 글을 쓸 것 같고.. 일단 실행만 해볼 것이다!

 

일단 실행하기 전에 MineRL에 아쉬운 점이 몇가지 있다..

NEURO SAMA의 영상을 보면 실제 개발자하고 주변에서 같이 있거나 여러가지 채팅창으로 무언가를 말한다..

근데 문제는 MineRL 1.0은 사용자와 상호작용이 불가능하다. 즉 인공지능과 함께 자신의 마인크래프트로 플레이가 불가능 하다는 것.. 근데 MineRL 0.4 버전은 가능하다는데.. 문제는 VPT가 MineRL 0.4 버전을 지원을 하지 않는다.. 그래서 첫번째 글에서는 VPT로 추정되지만 다른 버전인 것 같다고도 생각이 드는데.. MineRL 폴더를 뜯어보는 중 상호작용에 관한 파일도 있긴 했다..

그래서 어느정도 잘 건들여보면 1.0.0으로도 상호작용은 가능할 수도 있을 것 같다라는 생각이 든다..

 

또 다른 아쉬운점은 첫번째 글에서도 말했던 거지만.. 해상도와 버전에 제한이 있다..

위 업데이트 된 것을 보면 1.0은 무조건 16.5 버전에서만 작동이 되고 해상도는 640 * 360에서만 고정된다는 것이다.. 더 줄이거나 늘리는건 어떻게 하는진 모르겠지만.. 일단 힘들다 라는건 알 수 있을 것 같다..

 

그리고 아직 제대로 해보지 않아 잘은 모르지만.. 내가 원하는 월드(평지, 건축물)은 커스텀으로 가져올 수가 없다는 것이다..

또한 모드도 지원 안한다는 것..

MineRL 개발자 말로는 커스텀 월드나 모드 같은건 해킹을 하거나 여러가지 방법을 써야 가능할수도 있다고는 한다..

근데 한가지 가능한건 시드는 직접 변경은 가능하다..

(근데 난 파쿠르를 가르켜 보고 싶었는데..)

 

모델 부터 다운해보자!

https://github.com/openai/Video-Pre-Training

 

GitHub - openai/Video-Pre-Training: Video PreTraining (VPT): Learning to Act by Watching Unlabeled Online Videos

Video PreTraining (VPT): Learning to Act by Watching Unlabeled Online Videos - GitHub - openai/Video-Pre-Training: Video PreTraining (VPT): Learning to Act by Watching Unlabeled Online Videos

github.com

일단 이 곳으로 가면 직접 학습 시킬 수 있는 파일이나 이미 학습된 모델 파일들이 있다. 설명 아래에

거기에서 다운을 하면 된다! 속도는 느리지만..

 

일단 가보면 Agent Model Zoo 이런 항목 아래에 여러가지 파일들을 다운받으라고 안내하는데..

자신이 쓰면 될 것 같은 파일만 다운로드 하면 된다.. 일단 model 파일과 weights 파일 2가지를 다운받아야 하는데..

2x 나 3x 그런걸 통일해서 다운 받으면 될 것 같다.

그래서 영어 번역하면서 자신한테 필요할 것 같은 것으로 다운받고 나는 최종적으로

2x.model 파일과 rl-from-house-2x.weights 파일을 다운받았다..

 

다운로드 했으면 바로 여기에 있는 글 처럼 파일을 배치하면 된다.. 뭐 안해도 상관은 없지만..

이런식으로.. 나는 좀더 쉽게 관리하기 위해서 이렇게 하는 거지만 직접 원하는대로 배치하면 되긴 한다.. 그렇지만 그렇게 되면 아래 명령어 경로는 약간 변경해야한다는 점!

 

2번째 글에서 가상환경을 활성화 했지만.. 다시 적어보면..

만들었던 폴더의 이름 부분을 클릭하고 거기에서 cmd를 적고 엔터!

그러면 그 폴더를 접속한 터미널 창이 나오는데 거기에서 이전 글에서 만들었던 가상환경을 활성화 해준다.

conda env list

만약 이름을 까먹었다면 위 명령어로 어떤 가상환경이 있는지 검색하고 그 가상환경 이름으로 아래 명령어로 활성화 하면 될 것 같다!

conda activate MineRL_VPT

여기에서 가상환경 이름은 자신이 만들었던 가상환경 이름으로 해야한다는 점!

 

그러면 이제 여기에서 run_agent.py를 실행하면서 파라미터에 모델을 넣으면 되는데

규칙은 이렇다

python "./Video-Pre-Training/run_agent.py" --model "model 파일 경로.model" --weights "weights 파일 경로.weights"

대충 설명하자면 .은 자기 경로에서 시작한다는? 그런거고 / 이건 뭐 알테고.. 어쨌든 그렇게 해서 자신의 폴더 위치에서 이전에 설치했던 Video-Pre-Training 폴더로 찾아가서 run_agent.py를 실행하는데 파라미터로 model과 weights를 경로로 넣어준다는 것! " " <-- 이건 혹시라도 띄어쓰기가 있으면 안될 수도 있으니..

 

그래서 위 규칙에 맞게 내 기준으로 명령어를 만든다면

python "./Video-Pre-Training/run_agent.py" --model "2x.model" --weights "rl-from-house-2x.weights"

이렇게 적으면 된다..!

 

만약 가상환경을 제대로 활성화 시킨 터미널 창에서 정확히 run_agent.py를 실행하면서 파라미터로 model 파일과 weights 파일을 제대로 넣어줬다면 아래처럼 정상적으로 실행이 가능할 것이다!

---Loading model---
---Launching MineRL enviroment (be patient)---
C:\Users\user\anaconda3\envs\MineRL_VPT\lib\runpy.py:127: RuntimeWarning: 'minerl.utils.process_watcher' found in sys.modules after import of package 'minerl.utils', but prior to execution of 'minerl.utils.process_watcher'; this may result in unpredictable behaviour
  warn(RuntimeWarning(msg))
C:\Users\user\anaconda3\envs\MineRL_VPT\lib\runpy.py:127: RuntimeWarning: 'daemoniker._daemonize_windows' found in sys.modules after import of package 'daemoniker', but prior to execution of 'daemoniker._daemonize_windows'; this may result in unpredictable behaviour
  warn(RuntimeWarning(msg))

모델 파일을 불러오고 환경을 실행하고 하면서 되는데 아마 윈도우 같은 경우 RuntimeWarning이 뜰 것이다..

이건 그냥 무시해도 상관없다..

확실하진 않지만 윈도우여서 뜨는 것 같다..

 

https://youtu.be/efnCUsNvxyQ

그렇게 되면 MineRL Render이라는 창으로 자기 혼자서 마인크래프트를 한다.. (신기방기 신기방기)

이 인공지능은 영상으로만 학습을 하기 때문에 실제 플레이어가 하는 짓들을 유사하게 따라한다. 대충 메뉴 창에서 멍때리기 같은거..

 

그리고 만약 정상적으로 켜졌는데 제대로 작동 안하고 일도 제대로 안하는 것 같다면 weights 파일을 다른걸로 다운 받아보는 것을 추천! 일단 난 잘된다..!

 

이전에 할때 가끔 플레이하다가 오류가 뜨긴 했었는데.. 8GB 뭐 말하면서.. 이런건 아마 GPU 메모리나 램이 거의 꽉 차서 안되는 것일꺼다.. 왜 컴퓨터를 혹사시키고 있는데도.. 이 오류가 뜨지 않는 이유는 모르겠지만.. 플레이하다 오류가 난다면 메모리나 GPU 메모리를 확장시켜보는 것이 좋을 것 같다는 것..!

 

암튼 머 그러면 이제 끝!

반응형
반응형

https://cheongpark.tistory.com/32

 

마인크래프트 인공지능(Minecraft AI) 플레이 시켜보기 Pt. 2 설치

https://cheongpark.tistory.com/31 마인크래프트 인공지능(Minecraft AI) 플레이 시켜보기 Pt. 1 분석 이 글을 쓰기 전에 미리 해본 영상입니다! https://youtu.be/efnCUsNvxyQ 궁금증 내가 마인크래프트 인공지능이 있

cheongpark.tistory.com

이전 글과 바로 이어집니다!

 

추가적으로 필요한 라이브러리 설치

일단 추가적으로 필요한 라이브러리들이 있기 때문에 설치할 것을 보자!

우리는 여기에서 "run_agent.py"를 실행할 것이기 때문에 필요한 라이브러리들을 보기 위해 실행해봐야함!

 

일단 이전 글과 바로 연결해서 본다면 run_agent.py는 다른 폴더에 있기 때문에 그곳으로 이동해야 한다! 이 글과 같은 방법으로 폴더를 만들었다면 아래 명령어를 실행하고 좀 다르면 그것대로 하시길! 어쨌든 아까 다운로드 했던 "Video-Pre-Training"  이 폴더로 접속해야 한다는 것!

 

가상환경이 활성화 되어있는 상태에서 아래 명령어를 실행!

cd "..\Video-Pre-Training"

(..은 뒤로 가는 것)

 

그 후 일단 테스트로 실행해보자! 일단 여기에서 인공지능 모델은 이 다음 글에서 실행할 것이기 때문에 먼저 "run_agent.py"부터 테스트로 실행해보는 것! 원래는 이 뒤에 여러가지 파라미터를 넣어야 함..

python run_agent.py

일단 실행해보니 처음에 뜨는 오류는 이거였다..

AttributeError: module 'numpy' has no attribute 'bool'.
`np.bool` was a deprecated alias for the builtin `bool`. To avoid this error in existing code, use `bool` by itself. Doing this will not modify any behavior and is safe. If you specifically wanted the numpy scalar type, use `np.bool_` here.
The aliases was originally deprecated in NumPy 1.20; for more details and guidance see the original release note at:
    https://numpy.org/devdocs/release/1.20.0-notes.html#deprecations

대충 더 이상 numpy에서 bool 속성이 안쓰인다는 것 같은데..

분명 저번에는 이런 오류가 안떴었는데.. 뜨는거 보니 허허

지인짜 이 글을 쓰는 최근에 Numpy에서 여러가지 intfloat 등등 어떤 문제점으로 삭제했다고 하는데.. 이게 그대로 깔리면서 문제가 일어났던거 였다..

 

해결 방법은 간단하다! Numpy를 다운그레이드 해서 설치하면 된다!

pip install "numpy<1.24"

이렇게 하면 일단 첫번째 오류는 끝이다!

 

또 다시 run_agent.py를 실행해보자!

ModuleNotFoundError: No module named 'torch'

이번엔 이런 오류가 떴다..

torch.. PyTorch인건데.. 여기에서 조금 어려워진다..

일단 내 컴퓨터가 고사양 인데도 GPU를 연결했어도 실행할 때 약간씩 렉이 있다.. 그래서 무조건 CPU로만 하는건 어렵다고 생각되긴 하는데.. 일단 PyTorch를 설치할 때 CPUGPU 2가지 버전으로 설치할 수 있다.

CPU 버전으로 하면 그냥 CPU만 사용하고 GPU 하면 GPU하고 CPU 같이 사용할 것 같은데.. 뭐 암튼

 

일단 모르겠고 설치해보자! 난 GPU 버전을 설치할 것이기 때문에.. 만약 CPU 버전을 설치한다면.. 추천은 안한다는 점..

이제 설치할 버전이 중요한데.. 이전 글에서 준비하는 것에 CUDA가 있었다. CUDA를 설치했다면 계속 글을 읽으면 되지만 설치 안했다면 설치하고.. 다시 보세요..

 

일단 CUDA의 버전을 확인하기 위해 아래의 명령어를 친다!

nvcc --version

이 명령어를 치면 현재 내 컴퓨터에 깔린 CUDA 버전이 나오는데..

nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2021 NVIDIA Corporation
Built on Mon_May__3_19:41:42_Pacific_Daylight_Time_2021
Cuda compilation tools, release 11.3, V11.3.109
Build cuda_11.3.r11.3/compiler.29920130_0

뭐.. 대충 11.3이라고 한다..

이제 CUDA11.3이라는 것을 확인했으니 PyTorch를 설치하러!

https://pytorch.org/get-started/previous-versions/

이 링크로 들어가면 PyTorch 설치 버전들이 엄청 나온다.. 여기에서 검색으로 11.3을 검색!

그렇게 되면 Conda 버전과 Wheel 버전이 있는데 이건 설치 방법? 같은 것이다.. 아나콘다로 설치할지 pip으로 설치할지.. 하지만 PyTorch는 내가 깔아봤을 때 아나콘다가 더 잘 깔리고 적용도 잘되기 때문에 아나콘다 버전으로 설치할 것임!

 

그래서 1.12.1 버전에 있는 것중 CUDA 11.3 으로 되어있는 것을 찾았다.

conda install pytorch==1.12.1 torchvision==0.13.1 torchaudio==0.12.1 cudatoolkit=11.3 -c pytorch -y

*위 명령어를 따라 쓰면 안되고 무조건 자신의 컴퓨터에 맞춰서 설치해야 합니다!!

-y는 중간에 확인 과정 없이 바로 넘기기 위해 직접 추가한 것입니다!

 

이제 가상환경이 활성화 되어있는 아나콘다 터미널 창에서 실행한다. 그러면 정상적으로 깔리는데.. 만약 오류가 있으면 문제점을 찾아보기를..

 

어쨌든 다시 run_agent.py를 실행해본다!

ModuleNotFoundError: No module named 'gym3'

이번엔 gym3가 없다한다..얘는 설치하기 쉽다.

그냥

pip install gym3

이거 입력하면 바로 설치된다.

 

그러면 다시 run_agent.py를 실행!

ModuleNotFoundError: No module named 'attr'

이번엔 attr이 없다 한다..! 근데 한가지 여기서 속지말아야 할 것이 있다!

신기하게 저걸 설치해보면 일단 attr이 없다면서 안된다..

이유는 attrattrs 이 2가지 존재하는데.. attrs를 설치해야한다.. 하하하하

한가지만 있어주지..

 

아래 명령어로 해결 가능!

pip install attrs

 

!! 이제 이 글로 여기까지 따라왔으면 아래 같은 메세지가 뜬다!

usage: Run pretrained models on MineRL environment [-h] --weights WEIGHTS --model MODEL
Run pretrained models on MineRL environment: error: the following arguments are required: --weights, --model

이건 이제 모든 것이 다 깔렸다는 뜻이다!

 

이제부턴 인공지능 모델 파일들을 같이 제공해달라는건데 이건 다음 Pt에서 말하겠음요!

반응형
반응형

https://cheongpark.tistory.com/31

 

마인크래프트 인공지능(Minecraft AI) 플레이 시켜보기 Pt. 1 분석

이 글을 쓰기 전에 미리 해본 영상입니다! https://youtu.be/efnCUsNvxyQ 궁금증 내가 마인크래프트 인공지능이 있다는 것은.. https://youtu.be/L4nfzJx7uDI 이 영상으로 부터 알게 되었었다.. 굉장히 신기한 영

cheongpark.tistory.com

이전글은 여기!

 

일단 이전 글에서 말했던 대로 여기부턴 설치 단계!

일단 여기에선 윈도우 10을 사용할 것이기 때문에.. 다른 윈도우 버전은 될 수 있으니 다른 운영체재는 이 글로 바로 될지는 모릅니다!

 

미리 준비할 것

아나콘다(Anaconda)

쿠다(CUDA) 

위 2개는 이곳을 참고하여 설치해주세요. (https://cheongpark.tistory.com/6)

깃(Git) (필수 O)

WSL (필수 O) --제일 중요하지만 설치가 어렵기 때문에 설치 방법은 여기서 알려주지 않습니다.

Visual Studio Code(필수 X)

 

필요한 파일들 다운로드

일단 먼저 폴더를 생성하겠습니다! 여기에서 모든 파일들을 관리할꺼니 이름은 각자 알아서!

새 폴더 만들기로 생성해도 되고.. 전 그냥 명령어로! (간지)

mkdir MineRL_VPT_Blog

그리고 필요한 파일들을 설치하겠습니다!

그냥 깃허브 가서 짚 파일 다운받아서 압축 풀어서 넣어도 되지만 귀찮으니 명령어로 합니다!

 

위에 폴더 주소? 그걸 클린 한 후 cmd 적고 엔터!

그렇게 되면 해당 폴더를 접속한 상태에서 cmd를 실행하게 되는데 여기에서 필요한 명령어는!

git clone https://github.com/openai/Video-Pre-Training
git clone https://github.com/minerllabs/minerl

(첫번째 명령어의 해당 깃허브 주소로 들어가보면 어떻게 모델을 실행하는지 방법이 나와있는데.. 여기에서 보면 이 깃허브 파일을 다운하라고는 안나오지만.. run_agent.py를 실행하려면 저 파일들이 필요하기 때문에.. 다운을 해야하는 것..)

가상환경 만들기

이제 Anaconda Prompt를 실행합니다! (단 실행할 땐 관리자 권한으로 실행해주세요! 나중에 MineRL를 설치하는 과정에서 오류가 뜹니다..)

이제 가상환경을 만들 것인데.. 문제는 나도 아직 정확하게 여기에 사용되는 권장 파이썬 버전은 모른다는 것..

하지만 일단 제가 됬었던 파이썬 버전은 3.9 아마 다른 버전들도 될 것입니다..

일단 여기에선 3.9 버전으로 가상환경을 만듭니다!

conda create -n MineRL_VPT python=3.9 -y

여기에서 -n 뒤에 이름은 가상환경의 이름, python=3.9에서 3.9는 사용할 파이썬 버전, -y는 설치할 때 설치할지 묻는 단계가 나오는데 바로 설치하게 해주는 명령어!

 

설치하는데 오류가 없었다면 이것이 출력되는데 여기에서 가상환경을 이용하여 라이브러리를 설치할 것이기 때문에 아래 명령어를 실행합니다!

conda activate MineRL_VPT

activate 뒤에 나오는 이름은 자신이 만들었던 가상 환경 이름으로 하셔야 되요!

 

활성화가 되면 커맨드 창 맨 앞이 원래는 (base)인데 (가상환경이름)으로 변했을 겁니다!

MineRL 1.0.0 설치

그리고 여기에서 https://github.com/openai/Video-Pre-Training 이곳에 있는 Running agent models에 나와있는 명령어를 실행해주면 되는데.. 문제는 첫번째 명령어가 정상적으로 동작하지 않는 다는 거다.. (잘 되면 패스해도 됩니다.)

pip install git+https://github.com/minerllabs/minerl@v1.0.0
pip install -r requirements.txt

이유는 "pip install git+https://github.com/minerllabs/minerl@v1.0.0" 이 명령어를 실행하면 MineRL V1.0에 있는 깃허브의 setup.py를 실행해서 설치하게 되는데.. 그 파일을 실행하면서 아래 오류가 발생하기 때문..

일단 오류를 살펴보면 첫번째는 WSL를 사용해야 한다는 것 같고.. 두번째는 bash 뭐가 되야한다고 하는 것 같다.

https://minerl.readthedocs.io/en/latest/tutorials/index.html

설치 가이드에서도 2번에서 WSL이 권장된다 하고 있다.. 그러므로 나도 WSL를 사용할 것이다! WSL 말고 다른 방법은 계속 되는 오류로 해결하기 어려웠지만.. (만약 1.0.0 말고 0.4.0이나 0.3.0 버전의 MineRL를 사용한다면 WSL 없이 바로 설치가 가능하다.. 하지만 VPT1.0.0이 필수적으로 필요하기 때문에 WSL를 사용한다.)

 

일단 준비단계에서 WSL은 필요하다 말했기 때문에 WSL를 실행합니다!

Ubuntu(WSL) 실행! 이 글에선 "Ubuntu 20.04.5 LTS" 이 버전을 사용합니다!

 

우분투를 실행하고 다시 아까 "pip install git+https://github.com/minerllabs/minerl@v1.0.0" 이 명령어를 실행해주면 이번엔 아마 다른 오류가 뜰겁니다!

대충 java, javac 커맨드를 찾을 수 없다는 것인데.. 이 이유는 JDK 8이 설치가 안되어 있기 때문입니다!

MineRL 깃허브를 보면 무조건 JDK 8이 필요하다고 설명 되어있어요!

 

그렇기 때문에 마지막 줄에 있는 명령어를 입력해봅시다!

sudo apt update; sudo apt install openjdk-8-jdk

우분투에서 이걸 입력하면 먼저 우분투를 업데이트 하고 JDK 8를 설치하게 됩니다. 설치가 완료 된 후 

 

다시 "pip install git+https://github.com/minerllabs/minerl@v1.0.0" 이 명령어를 실행하면 정상적으로 MineRL 1.0.0이 설치되게 됩니다!

(만약 중간에 오류가 뜨거나 한다면 다시 한번 이 글을 보거나 해보시길!)

 

문제는 설치 시간입니다.. 굉장히 설치 시간이 오래 걸린다는 점..

10분 이상 걸릴 수도 있으니 너무 안된다고 취소하거나 하지는 말아주세요.. 그럼 또 기다려야 하니..

Successfully installed minerl-1.0.0

다 설치하면 위 문구가 나올 것입니다!

 

만약 설치하다 아래 같은 오류가 나온다면..

PermissionError: [WinError 32] 다른 프로세스가 파일을 사용 중이기 때문에 프로세스가 액세스 할 수 없습니다: '주소들~~\\scripts'

이건 단순 관리자 권한 오류 같다.. Permission Error 그래서 위에 Anaconda를 실행할 때 관리자 권한으로 실행해야 한다는 이유! 다시 관리자 권한에서 설치하면 된다!

 

이제 어려운 것은 끝났고.. 이제 깃허브에 설치 방법 중에 있던 아래 2번째 명령어를 입력해서 설치하시면 됩니다!

하지만 설치하기 전에 requirements.txt 파일은 minerl 폴더에 있기 때문에 터미널 창에선 해당 폴더로 접속해야합니다! (아마 첫번째 명령어 실행하고 바로 두번째 명령어 실행하면 설치는 되긴 할겁니다..! 이건 수동으로 파일 다운받아서 설치하는 것이예요!)

그렇기 때문에 아~~까 만들었던 폴더 주소를 복사하고 cd 뒤에 복사한 주소 입력하고 \minerl 입력해서 접속하시면 됩니다.

cd "복사한 주소\minerl"

pip install -r requirements.txt

" " <-- 이건 주소에 띄어쓰기가 있을 수도 있으니 하는 것! 만약 띄어쓰기가 있는데 안하면 다른 명령어로 인식해서 접속이 안될겁니다..

그리고 -r 하면 라이브러리 목록 파일로 라이브러리를 설치할 수 있는 뭐 그런거예여! 

 

암튼 길이 너무 길어지므로 그 다음 설치 방법은 Pt 3에서 설명하겠습니다!

반응형
반응형

이 글을 쓰기 전에 미리 해본 영상입니다!

https://youtu.be/efnCUsNvxyQ

궁금증

내가 마인크래프트 인공지능이 있다는 것은.. 

https://youtu.be/L4nfzJx7uDI

이 영상으로 부터 알게 되었었다..

 

굉장히 신기한 영상.. 처음에는 에이 설마 진짜겠어 하고.. 영상을 좀 봤다..

솔직히 그냥 사람이 인공지능 처럼 플레이하는 줄만 알았다..

근데 NEURO SAMA라는 인공지능 관련 글들을 찾아보고 진짜 인공지능마인크래프트를 플레이 한다는 것을 알았다..

그리고 마인크래프트 인공지능에 대해 좀 더 찾아본 결과 무엇인지 알게되었다.

 

어떤 것을 사용했을까?? 분석 & 추정

 

어쨌든 짧게 말하면 예상이지만

해당 마인크래프트 인공지능 플레이 영상은 진짜로 인공지능이 플레이하는 것이며 MineRL 1.0을 사용해서 VPT라는 인공지능 모델이 마인크래프트를 플레이 하는 것으로 추정된다..!

 

MineRL은 마인크래프트와 파이썬이 상호작용해서 파이썬으로 마인크래프트를 플레이 시킨다거나 할 수 있는 파이썬 3 라이브러리!

 

어쨌든 내가 이것으로 추정 할 수 있던 이유는 MineRL은 기본적으로 실행 Minecraft 해상도가 정해져있는데(어떻게 바꾸는진 모름..) 이 해상도가 V0.3, V0.4 버전에는 64 * 64px 인데 V1.0 버전에서 640 * 360px 이다. 그런데 영상을 잘보면 글씨 폰트들이 많이 무더져 보인다..

뭐 그래도 글씨가 잘 보이는 이유는 마인크래프트가 픽셀 게임 같은거라 그런게 아닐까.. 

 

그리고 VPT 인공지능 모델을 사용한다. 생각했던 이유는 마우스 포인터이다.

NEURO SAMA 마인크래프트 마우스 포인터

위 사진은 NEURO SAMA의 마인크래프트 방송에 나오는 마우스 포인터인데 좀 두껍다..

 

그런데 이 마우스 포인터는 

VPT 인공지능 모델을 플레이 시키면 나타나는 마우스 포인터이다.

VPT Github에 가보면 cursorsmouse_cursor_white_16x16.png 파일이 보이는데

https://github.com/openai/Video-Pre-Training/blob/main/cursors/mouse_cursor_white_16x16.png

위 사진으로 가면 볼 수 있다.

거기에서 따온 마우스 포인터인데.. 굉장히 똑같다..

 

어떻게 플레이 할 수 있을까?

간단하다. 그냥 깃허브에서 다운로드 해서 바로 플레이 시키면 된다.

단 컴퓨터는 고사양이여야 그나마 플레이하기 적당하다..

나 같은 경우 컴퓨터는 아래 사양이지만 중간중간 어느정도 렉이 유발되기도 했다.

  • CPU : AMD 5900X
  • GPU : RTX 3080TI
  • RAM : 32GB

플레이 방법은 이 게시글 이후로 파트 2~ 부터 설치와 플레이 방법을 올릴 것인데 대충 먼저 말하면

https://github.com/minerllabs/minerl

이곳에서 인공지능과 상호작용할 수 있는 라이브러리를 설치하고 

https://github.com/openai/Video-Pre-Training

이곳에서는 인공지능을 실행할 수 있는 파일과 인공지능 모델을 다운받아서 패키지 설치할꺼 모두 설치하고 실행하면 된다.

 

대충 찾아본거지만 VPT 기술은 영상으로만 인공지능 모델을 학습시키는 것이다.

기본적으로 VPT 깃허브에서 제공하는 인공지능 모델들은 이미 어느정도 학습은 되어있어 바로 플레이도 시킬 수 있다.

만약 학습을 시킨다면 이것은 영상으로 학습을 하기 때문에 영상을 촬영하거나 다운을 받아서 인공지능한테 학습하라고 시키면 되는 것!

 

굉장히 신기하다.. 영상에서 유저가 어떻게 움직이는지도 분석하고 유저가 해야할 목표를 비슷하게라도 따라한다는 것이.. 신기하다..

 

아쉬운 점

MineRL로 매년 MineRL Diamond Competition 이라는 대회를 여는 것 같은데 여기에서 VPT 말고 2022년에 제작되었다는 MineDojo라는 것도 제작되었다는데..

https://github.com/MineDojo/MineDojo

이것을 어떻게든 윈도우 돌려볼려고 했지만... 아쉽게 실패했다..

이유는 리눅스 용이기 때문에..

WSL 사용해서 하면 되겠지만.. 윈도우 10 버전이라.. (GPU나 여러가지 이용할려면 윈도우 11 사용해야함)

그래서 어떻게든 해도 안되서 포기하고 VPT로 해본 것..!

 

뭐 그래도 좋았다!

 

어쨌든 이 다음 글 부턴 설치부터 플레이 방법이 나와있답니다!

반응형
반응형

일단 바로 제작된 결과!

음 얼굴을 찾아서 뭔가 하는 프로젝트를 하는데 문제가 생겼다. 얼굴 이미지를 벡터로 변환하는 과정에서 원본 이미지와 얼굴 이미지를 보여줄려 하는데 여기에서 원본 이미지를 보여줄 때 보여주는 곳이 정사각형이다..

근데 OpenCV에서 이미지를 바로 넣을려니깐 이미지를 리사이즈 해서 바로 넣는 것은 좀 불편하고.. 이미지를 정사각형에 맞춰 그냥 리사이즈 하면 이미지가 뭉개지고..

 

그래서 생각한건 흰 배경 중심에 이미지를 넣는 것인데

이걸 해결하기 위해 1시간 반이 걸렸다..

대충 생각을 해본건 

  • 원본 이미지 보여주는 곳과 같은 크기의 배경을 만들어 중앙에 이미지를 배치
  • 원본 이미지의 가장 긴 변의 길이 대로 정사각형 배경을 만들어 중앙에 이미지를 배치

이런거고 중앙에다 배치할땐

  • 비율에 맞춰 원본 이미지를 축소해서 정사각형 배경의 반에 원본 이미지의 짧은 변의 반을 빼서 위치 구하기
  • 정사각형 배경의 반에 원본 이미지의 짧은 변의 반을 빼서 위치 구하기

등을 생각했는데.. 난 여러가지 방법을 생각해보고 여러가지 방법을 해보다가 헷갈리기도 하고 수정하기도 하며 결국엔

원본 이미지의 가장 긴 변의 길이 대로 정사각형 배경을 만들어 중앙에 이미지를 배치할 때 정사각형 배경의 반에 원본 이미지의 짧은 변의 반을 빼서 위치를 구해서 바로 넣는 방법을 하기로 결정했다..

 

그래서 이걸 대충 이미지로 표시하면!

 

이런식으로 

일단 정사각형이면 그냥 패스

가로가 더 길 경우 가로 길이에 대한 정사각형을 만들고 그게 검은색 사각형!

거기에 빨간색이 원본 이미지꺼..

그래서 파란색 동그라미 부분의 위치를 구하는건데

 

검은색 사각형에서 반을 나누고 거기에서 빨간색 사각형의 반을 빼면 저 위치가 나올 것 같다 라는 생각이 들어서 한 것!

파란색은 반대로 생각하면 되는거!

 

대충 식은

(Square / 2) - (OriginalImg / 2)

뭐 어쨌든 이런 방법으로 코드를 구현한 결과!

 

if (I_celeb_img.nc() == I_celeb_img.nr())
    GUICon::putWebcamView(I_celeb_img, preSetImage);
else {
    int squareLen = (I_celeb_img.nc() < I_celeb_img.nr() ? I_celeb_img.nr() : I_celeb_img.nc());

    cv::Mat originalViewImage(squareLen, squareLen, CV_8UC3);
    originalViewImage = cv::Scalar(0xFF, 0xFF, 0xFF);

    //배경 이미지 중앙에 사진 넣기
    //사진의 세로가 가로보다 짧을 경우 squareLen의 길이에서 반을 나누고 이미지 세로의 반 만큼 빼서 좌표 구하기						
    if (I_celeb_img.nr() < I_celeb_img.nc()) { //가로가 더 클 경우 같을 경우 비교 안하는건 위에서 이미 해서
        int ypos = (squareLen / 2) - (I_celeb_img.nr() / 2); //세로가 짧을 경우 정사각형의 한 변의 길에서 이미지 세로 반을 빼서 위치 구하는 것
        CPputImage(I_celeb_img, originalViewImage, cv::Rect(0, ypos, I_celeb_img.nc(), I_celeb_img.nr()));
    }
    else {
        int xpos = (squareLen / 2) - (I_celeb_img.nc() / 2); //위와 반대
        CPputImage(I_celeb_img, originalViewImage, cv::Rect(xpos, 0, I_celeb_img.nc(), I_celeb_img.nr()));
    }
    cv::cvtColor(originalViewImage, originalViewImage, cv::COLOR_RGB2BGR);
    GUICon::putWebcamView(originalViewImage, preSetImage);
}

코드는 이렇다!

여기에서 CPputImage는 그냥 OpenCV 이미지의 특정 위치에 이미지를 넣는 함수고

GUICon::putWebCamView는 원본 이미지 표시하는 쪽에 이미지 넣는 함수다.. 암튼 그럼!

 

그럼 끝!

반응형
반응형

이 티스토리는 내가 그냥 나중에 보기 위해서 쓰는 글이기도 하면서 누군가한테 내 글을 보고 어느정도 문제를 해결하면 좋을 것 같아 글을 올리긴 하는데..

 

사실 이걸 시작한 계기가 광고를 쉽게 할 수 있다는 점에서 한 것 같았다..

 

그래서 어느정도 글을 쓰다가 한번 구글 애드센스로 심의 신청을 해보니.. 글 20개 이상으로 된건지 통과했다.

뭐 어쨌든 광고는 통과해서 초반에는 광고가 안나오다가.. 최근에야 나오게 되었다!!

 

아직은 0.01달러도 안모인 것 같지만.. 언젠간 모이겠지..

 

그리고 혹시 글을 잘 못볼 수도 있어서 광고는 잘 안보이는 쪽으로 두었다. (뭐 자동광고를 켜놔서 소용이 있을지는 모르지만..)

 

어쨌든.. 감삼다!

반응형
반응형

학교에서 내준 프로젝트를 계속 만들기 위해 방학에도 계속 이어나가고 있다.

그런데 만들다가.. Dlib에서 deserialize라는 함수에 모델 파일을 넣을 때 오류가 난 것이다..

 

왜 그런가.. 하는데 debug 모드에선 this가 nullptr를 가르키고 있다 하고 release 모드에선 예외가 발생했다 하고..

예외 발생(0x00007FF69400D3D3, program.exe): 0xC0000005: 0x0000000000000008 위치를 읽는 동안 액세스 위반이 발생했습니다..

이런식으로..

그래서 뭔 문제인가 보니..

 

이전 프로젝트 같은 경우 정상적으로 됬는데 이번꺼만 안되었다..

왤까 하고 생각해보니 이전껀 포인터를 몰라서 안썼는데 이번껀 포인터를 좀 써봐서 안됬던 것 같은 생각이 떠올랐다..

 

그래서 포인터로 변수 만들때 * 기호를 제거하니.. 되네.. 하하하하하 왜 이걸로 2일을 존버 탄걸까..

 

dlib::shape_predictor* sp;

dlib::deserialize(spPath) >> *sp;

이런식으로 변수를 생성하고 deserialize로 모델을 로드하니 안됬었다..

그래서 그냥 포인터를 제거하니깐 아주 잘된다.. 하하하하하하

 

그래서 난 이런식으로 주석을 했다.

//이거 모델 로드 할때 포인터 쓰면 오류남
dlib::shape_predictor sp; //68점 찍는거

if (modelFileCheck(spPath))
	//dlib::deserialize(spPath) >> sp;

 

요약

Dlib에서 모델 파일 불러올 때 (dlib::deserialize) 이걸로 뭔 이상한 오류 뜨면 포인터를 제거해봐야 한다..

 

(근데 아직도 포인터의 정확한 개념과 사용방법은 몰라서 저게 왜 되는지도 모르겠다.. 흐으억)

반응형
반응형

빠른 해결 방법은 아래로 내려가세요! 해결 방법

 

으윽 Visual Studio에서 QT로 프로젝트를 개발하는 도중에.. 한글이 깨지는 현상이 발견되었다..

그리고 한글을 쓴 상태에서 빌드를 해보니

오류 C2001 : 상수에 줄 바꿈 문자가 있습니다.	
오류 C2146 : 구문 오류: ')'이(가) 'M_FaceCount' 식별자 앞에 없습니다.
오류 C2146 : 구문 오류: ';'이(가) 'M_FaceCount' 식별자 앞에 없습니다.

뭐 이런식으로 오류가 떴다..

이게 문제인 것 같은데.. 난 분명 줄 바꿈 문자를 넣지도 않았는데 저래 뜬다..

그리고 겨우 빌드 해도..

이런식으로 알 수 없는 문자로 뜨는 것이다..

 

그래서 예전에 생각해보니 비슷한 문제가 있어 인코더 문제인가 하고 인코더를 바꿔보니 되는 것이다!

해결방법

문제가 일어나는 파일을 선택 후 "파일 > 다른 이름으로 이름.cpp 저장(A)..."

저장하는 파일 목록이 뜨면 아래에서 저장 바로 오른쪽에 아래로 내리는 삼각형 표시 클릭

그러면 이렇게 인코딩하여 저장(V)... 이 뜨는데 이걸 눌러야 합니다!

글고 파일을 바꿀껀지 묻는데 인코더를 바꿔야 함으로 당연히 바꾸기 클릭!

그럼 이런식으로 뜨는데 여기에서 인코딩이 보통 한국어 - 코드 페이지 949로 뜨는데 이걸 유니코드(서명 없는 UTF-8) - 코드 페이지 65001로 바꿉니다! (보통 Visual Studio에서 저장하면 EUC-KR로 저장되는 것 같습니다.)

그리고 확인을 눌러 저장!

그러고 난 후에 다시 빌드해보면 어떤 문제도 발생하지 않고 정상적으로 글자가 표시됩니다.

그리구! 일본어도 가능!

뭐 어쨌든 이런 것이고.. 분명히 항상 이 설정을 하는 것은 불편하죠..

그러니 바꿔보죠!

(Visual Studio Code는 인코딩 자동 설정으로 바로 되던데..)

Visual Studio 기본 인코더 설정

이 방법은 프로젝트마다 설정해야되니.. 불편하긴 하지만.. 어쨌든 되니 뭐 암튼

일단 프로젝트 파일로 들어갑니다.

프로젝트 파일은 솔루션 폴더 안에 있습니다.

즉! 보통 프로젝트를 만들면 솔루션 이름을 지정하고 프로젝트 이름을 지정하게 되는데

source > repos > 솔루션 이름 > 프로젝트 이름 이런식으로 저장되는데 여기에서 우리가 해야할 작업은 프로젝트 이름 쪽 폴더 입니다.

 

프로젝트 폴더엔 vcxproj 파일이나 cpph 파일을 작성했던 모든 코드들을 볼 수 있는 폴더인거죠

뭐 암튼 여기에서 

이런 파일을 ".editorconfig"생성합니다. 전 그냥 바로 메모장 파일 생성하고 이름하고 확장자 전체 다 바꿨습니다.

그리고 그 안에 이렇게 작성합니다.

root = true

[*]
charset = utf-8

그리고 저장하면 끄읕!

 

그리고 이제 Visual Studio에서 파일을 생성해보면?!!

기존에 있던 파일 인코더
.editorconfig 설정을 한 후 생성한 파일 인코더

이런식으로 바뀌었습니다!

어렵네요..

요약

파일 > 다른 이름으로 이름.cpp 저장(A)... > 저장 오른쪽 삼각형 클릭 > 인코딩하여 저장(V)... > 인코딩(E): 아래 메뉴에서 유니코드(서명 없는 UTF-8) - 코드 페이지 65001 이걸로 변경

 

항상 UTF-8로 자동저장 방법

프로젝트 폴더로 진입 > .editorconfig 파일 생성 > 아래 코드 입력 후 저장

root = true

[*]
charset = utf-8

 

 

.editorconfig 설정 관련 사이트

https://editorconfig.org/

 

EditorConfig

What is EditorConfig? EditorConfig helps maintain consistent coding styles for multiple developers working on the same project across various editors and IDEs. The EditorConfig project consists of a file format for defining coding styles and a collection o

editorconfig.org

근데 왜이리 중간 중간 말투가 바뀌는거지..

반응형

+ Recent posts