게임큐브 컨트롤러를 PC에 연결해 Dolphin 에뮬레이터에서 사용해보기

흔치않은일상 2024. 4. 7. 11:17


 얼마전 Aliexpress에서 게임큐브 컨트롤러와 PC에 연결하여 사용할 수 있게 해주는 어댑터를 구매했습니다. 본래 일본에 방문했을 때 게임샵에서 구매하려 했습니다만, 발매된지 20년이 지난 게임큐브임에도 중고 컨트롤러 가격이 3천엔이며, 심지어 닌텐도 스위치에 연결하여 사용할 수 있는 컨트롤러 어댑터도 정품은 우리나라 돈으로 10만원이 넘는 가격이어서 감히 살 엄두가 나지 않았는데, Ailexpress에서 개당 5천원에 판매하고 있어 망설임 없이 구매하였습니다.

 이번에 구매한 GameCube Controllers Adapter는 품명 FY-L-1208 인 제품으로, Aliexpress에서 개당 7천원에 구매하였습니다. 정품 가격을 생각하면 이 가격에 구매한 것이 살짝 믿어지지 않아 혹시나 싼게 비지떡인 상황이 발생하지 않을까 걱정이 되기도 했습니다.

 

 

둘다 닌텐도 정품은 아니지만 품질은 생각보다 정품과 비슷했습니다. 흡사 외관상 정품로고만 없는 정품같아 보이기도 합니다. 싼 맛에 Aliexpress에서 구매한다지만 이정도면 가성비가 상당히 좋아보입니다.

 지금 당장은 닌텐도 스위치를 구매하지 않은 상황이어서 PC에 돌핀 에뮬레이터를 설치하고 한 번 플레이 해보고자 컨트롤러 어댑터를 PC모드로 한 다음 PC에 연결하였습니다.

 

 

컴퓨터 설정 메뉴에서 장치를 확인하였을 때 기타 디바이스로 'WUP-028'로 나타나 정상적으로 설치가 된 것으로 보였습니다.

 

 게임을 플레이하기에 앞서 구매한 게임큐브 컨트롤러가 정상적으로 동작을 확인하기 위해 관련 설정에서 '장치 및 프린터'를 클릭합니다.

 

 

장치 및 프린터에서 'WUP-0228' 장치를 확인 후 우클릭 하여 '게임 컨트롤러 설정'을 클릭해주시면

 

 

아래와 같이 게임 컨트롤러 설정창이 나타납니다. 

 

 

 4개의 컨트롤러는 각각 1P에서 부터 4P까지 나타내는 것으로, 자신이 연결한 컨트롤러를 클릭해주시면 컨트롤러가 정상적으로 동작하는지 확인하실 수 있습니다.

 

 

 위의 방법을 통해 Aliexpress에서 구매한 게임큐브 컨트롤러 및 어댑터가 정상적으로 동작하는 것을 확인하였습니다. 그런데 이상하게도 돌핀 에뮬레이터에서는 게임큐브 컨트롤러를 인식하지 못하고 있는 것이었습니다.

 

 

 확인해보니 Dolphin 에뮬레이터에서 게임큐브 컨트롤러 어댑터를 통해 조작이 가능함을 확인할 수 있었는데, Windows 환경에서는 USB 설정을 변경해서 사용할 수 있다고 합니다. 이번에 제가 구매하였던 어댑터같은 경우, 어댑터 모드를 PC모드와 Wii U(닌텐도 스위치)모드를 스위치로 설정할 수 있도록 구성되어 있는데, Dolphin 에뮬레이터에서 사용하기 위해서는 PC모드가 아닌 Wii U(닌텐도 스위치) 모드로 설정해서 연결한 다음, USB 드라이버를 변경해주면 된다고 합니다.

 

 앞에서 진행하였을 때 설치하였던 'WUP-028' 장치를 우클릭하여 '장치 제거'를 해주신 후 어댑터의 스위치를 Wii U(닌텐도 스위치) 모드로 변경후 다시 연결해주시면

 

 

 위의 그림처럼 지정되지 않은 드라이버로 나타나는 것을 확인하실 수 있습니다. 드라이버의 설정을 변경하기 위해 아래의 Zadig을 다운로드하여 실행해줍니다.

https://zadig.akeo.ie/

 

Zadig - USB driver installation made easy

 Zadig USB driver installation made easy Zadig is a Windows application that installs generic USB drivers, such as WinUSB, libusb-win32/libusb0.sys or libusbK, to help you access USB devices. It can be especially useful for cases where: you want to access

zadig.akeo.ie

 

 Zadig를 다운로드 후 실행하면 아래와 같은 화면이 나오는 것을 확인하실 수 있습니다.

 

 

 Option → List All Device를 선택하여 PC에 연결된 USB 기기들의 리스트를 모두 확인합니다.

 

 

 List에서 게임큐브 컨트롤러 어댑터 기기명인 'WUP-028'을 선택하신 다음, USB ID가 057E 0037인지 확인해줍니다. 만약 목록에 'WUP-028'이 나타나지 않을 경우, USB를 다른 포트에 연결해봅니다.

 

 

 확인하셨다면, WinUSB를 선택한 다음 Replace Driver를 선택합니다.

 

 

 아래와 같이 Warning - System Driver 경고문이 나타나면 '예(Y)'를 클릭해줍니다.

 

 

 아래와 같은 화면이 나오고 약 5분 정도 기다려주시면

 

 

 아래와 같이 설치가 완료된 것을 확인하실 수 있습니다.

 

 

 다시 Dolphin 에뮬레이터를 켠 다음 컨트롤러 설정에서 포트를 'Wii U용 게임큐브 어댑터'로 설정 후 '설정' 버튼을 클릭하시면 '어댑터가 감지되었습니다'가 표시됨을 확인하실 수 있습니다.

 

 

 

 

 

참고자료: https://ko.dolphin-emu.org/docs/guides/how-use-official-gc-controller-adapter-wii-u

 

돌핀 에뮬레이터 - How to use the Official GameCube Controller Adapter for Wii U in Dolphin

Official GameCube Controller Adapter for Wii U As of 4.0-4599, Dolphin has built in support for Nintendo's GameCube controller adapters for the Wii U and Switch, the only official USB GameCube adapters available. With Dolphin's implementation, the GameCube

ko.dolphin-emu.org

 

300x250

[mmcv] AssertionError: only one of size and size_divisor should be valid

공대생의 팁 2024. 3. 31. 00:22

 

 MMSegmentation으로 딥러닝 모델을 실행하는 과정에서 종종 아래와 같은 에러를 접하곤 합니다.

 

    assert (size is not None) ^ (size_divisor is not None),
AssertionError: only one of size and size_divisor should be valid

 

MMSegmentation github 사이트에서 관련 이슈로 등록된 글을 통해 확인해본 결과, data_preprocessor에서 size 혹은 size_divisor가 설정되어 있지 않아 발생하는 오류라고 합니다. 아래와 같이 data_preprocessor에 size를 추가 설정해주니 소스코드가 정상적으로 동작하는 것을 확인하였습니다.

 

crop_size = (512, 512)
data_preprocessor = dict(
    # ....
    size=crop_size)

 

 

참고자료: https://github.com/open-mmlab/mmsegmentation/issues/3425

 

AssertionError: only one of size and size_divisor should be valid · Issue #3425 · open-mmlab/mmsegmentation

I am trying to use mmsegmentation for segmentation of pathology images on my own new dataset. I have 512x512 patches of images and annotations. I am representing four classes of my new dataset as g...

github.com

 

300x250

LabelMe로 Coco 데이터셋 변환후 MMDetection에서 학습이 안될 때 해결 방법

공대생의 팁 2024. 3. 26. 20:54

 

 요새 Dataset Lebeling 작업을 수행하는 과정에서 다양한 방식의 Label 구조 형식들을 접해보고 있습니다. Bounding Box 방식과 같이 단지 마우스 2번의 클릭으로 끝나는 경우가 있는가 하면, Polygon 방식과 같이 사진 내에 있는 모든 Object의 테두리에 점을 하나하나 공들여서 표시해보기도 합니다. Labeling 작업에 왕도는 없지만, 좀 더 데이터를 다루는 것에 초점을 맞추어 데이터의 속성을 이해하여 좀 더 적합한 모델을 찾는데 도움이 되기도 합니다.

 

 2024년 현재도 좋은 AI 모델이 소개되고는 있지만 정제되지 않은 데이터로는 좋은 성능의 AI 모델을 구현할 수 없습니다. 비록 데이터셋 제작에 많은 시간이 소모되더라도 결국은 데이터셋의 품질이 AI모델의 성능을 좌우하는 데엔 그 누구도 이견이 없을 것입니다.

 

 평소와 다름없이 LabelMe로 Labeling한 JSON 파일들을 Coco Dataset으로 변환한 다음, MMDetection으로 모델을 학습시키려 하는 과정에서 다음과 같은 에러를 접하게 되었습니다.

 

ValueError: need at least one array to concatenate

 

해당 오류의 원인을 찾아보니 MMDetection에서 원본 coco 데이터셋의 category를 기준으로 설정되어 있어서 우리들이 직접 만든 custom coco dataset의 class명이 원본 coco 데이터셋의 class명과 다를 경우 위와 같은 오류가 나타나는 것이었습니다. 이 문제는 LabelMe로 만든 coco 데이터셋의 class명을 원본 coco 데이터셋과 일치시키면 바로 해결됩니다.

 

 비록 학습시에는 원본 coco 데이터셋의 class명이 출력되시만, 모델 Deploy 수행시 class명을 변경해서 사용할 수 있기 때문에, 학습이 진행되는 동안 출력되는 class명이 다르게 되는 불편함을 감수하실 수 있다면 아래의 소스코드를 다운로드 받은 다음 LabelMe로 작업한 JSON 파일을 변환하여 사용해보시기 바랍니다. 

   If you get an error like the one above when training mmdetecton on a coco dataset that you converted to LabelMe, download labelme2coco.py below and convert it to that file, and you should be able to train mmdetection cleanly and without errors.

 

labelme2coco.py
0.01MB

 

 

위 소스코드를 다운로드 받으신 다음 LabelMe에서 사용하던 대로 명령어를 입력합니다.

 

python labelme2coco.py [변환할 이미지 및 JSON 폴더] [coco 데이터셋 변환 폴더명] --labels labels.txt

 

 

  아래는 LabelMe에서 제공하는 예제입니다.

 

python labelme2coco.py data_annotated data_dataset_coco --labels labels.txt
300x250