카메라가 빨리 움직일때 SIFT보다 성능이 우수하다고 하는 XFeat를 사용해봤습니다. 지금은 이미지 테스트만 진행한 상황이며 실시간 테스트는 조만간 해보겠습니다.
2024. 7. 28 최초작성
2024. 7. 28 실시간 테스트를 추가했습니다.
참고
https://github.com/verlab/accelerated_features
https://docs.opencv.org/4.x/dc/dc3/tutorial_py_matcher.html
다음 포스트에 나온대로 conda 환경을 구성후 하는게 좋습니다.
Visual Studio Code와 Miniconda를 사용한 Python 개발 환경 만들기( Windows, Ubuntu, WSL2)
이제 XFeat를 테스트하기 위한 환경을 구성합니다
Xfeat 깃허브 저장소를 다운로드 합니다.
git clone https://github.com/verlab/accelerated_features.git
cd accelerated_features
파이썬 가상환경을 생성하고 활성화합니다.
conda create -n xfeat python=3.8
conda activate xfeat
GPU 사용 여부에 따라 다음 두 명령 중 하나를 사용하세요. 글 작성 시점에서 Pytorch 2.4가 설치되었습니다.
# GPU를 사용
conda install pytorch torchvision torchaudio pytorch-cuda=11.8 -c pytorch -c nvidia
# CPU를 사용
pip install torch==1.10.1+cpu -f https://download.pytorch.org/whl/cpu/torch_stable.html
필요한 패키지를 설치합니다.
pip install opencv-contrib-python tqdm matplotlib
현재 폴더에서 코드를 실행해야 XFeat 모듈을 사용할 수 있습니다.
(xfeat) webnautes@webnautes-laptop:~/accelerated_features$ pwd
/home/webnautes/accelerated_features
현재 위치에 vscode를 실행한후, 다음 코드를 실행합니다.
code .
실행 결과입니다. 두번 보입니다.
지금은 OpenCV에 포함된 SIFT도 사용해봤습니다.
실행 결과입니다. OpenCV에서 제공하는 코드인데 물체 위치까지 잡아주지는 않네요.
SIFT와 XFeat 비교결과입니다. 아래 영상은 XFeat 실시간 매칭 결과입니다.
SIFT와 XFeat 비교결과입니다. 아래 영상은 SIFT 실시간 매칭 결과입니다.
테스트에 사용한 코드입니다.
XFeat
SIFT
Member discussion