본문 바로가기

Jetson/ROS Pytorch

[Jetson Pytorch] 1. Pytorch 개요 및 설치

Pytorch 개요

 회사에서 pytorch를 다루게 되었다. 원래 tensorflow를 사용할 생각이었으나 찾아보니 tensorflow의 경우 tensorflow1.x 버전은 성능면에서 다른 신규 Neural Network 툴에 비해 약하며 tensorflow2.x버전은 아직 신규 툴이라 버그가 많다는 것 같다. 그 외 툴로는 pytorch가 가장 대표적이며 연구 논문들에서 사용하는 툴의 빈도로도 pytorch가 tensorflow를 넘어섰다기에 이를 다루어 보도록하겠다.

 

 우선 pytorch는 python을 위한 오픈소스 머신러닝 라이브러리Facebook 인공지능 연구팀이 개발한것으로 유명하다. 쉽게 GPU 사용이 가능하며 Uber등에서 사용하는등 다양한 실증 사례가 존재한다. 그리고 무엇보다도 tensorflow등에 비해 코드사용이 간단하다고 한다.

 

설치 방법

 설치는 간단하다. https://pytorch.org/에서 사용하려는 조건을 입력하면 설치 명령어를 출력해 주며 이를 그대로 터미널에 입력하면 된다.

 

 필자의 경우 jetson Xavier NX에서 사용하기에 아래와 같은 조건을 입력했다.

문제가 발생했다. 또 ARM 칩셋에서는 그냥 설치를 못한댄다.

 

 여러가지 포럼을 통해 설치를 시도해보았으나 현재 python 2.x버전에서는 작동하지 않는것으로 보이며 python3.x버전으로는 설치가 가능한 것으로 보인다. 이 글에서는 python3기반으로 사용하기로 결정했으며 따라서 ros와 연동시켜 사용하려 한다면 ros에서 python3를 사용하도록 해야한다. 이는 junk-research-note.tistory.com/10?category=956442에서 정리해 두었다. 

 

 설치 코드는 다음과 같다. 

pip install --upgrade pip3
pip3 install -U setuptools
sudo apt-get install python3-testresources
sudo pip3 install torch torchvision

 

 pip3에 대해서 업데이트가 필요하며 testresources의 설치도 필요하다. 이후 pip3를 통해 torch와 torchvision을 설치하면 된다.

 

 만일 위의 과정을 통해 설치가 안된다면 nvidia 포럼을 확인해 보자 forums.developer.nvidia.com/t/pytorch-for-jetson-version-1-7-0-now-available/72048 

 

내용을 보면 우선 whl 파일을 설치해야하며 이후 Cython, numpy등을 설치한 이후 설치를 진행하도록 되어 있다. 

wget https://nvidia.box.com/shared/static/wa34qwrwtk9njtyarwt5nvo6imenfy26.whl -O torch-1.7.0-cp36-cp36m-linux_aarch64.whl
sudo apt-get install python3-pip libopenblas-base libopenmpi-dev 
pip3 install Cython
pip3 install numpy torch-1.7.0-cp36-cp36m-linux_aarch64.whl

 

위의 과정으로 설치한 이후 아래를 통해 설치를 진행하면 된다. 단 버전은 정확히 확인해서 입력해야 한다.

 

$ sudo apt-get install libjpeg-dev zlib1g-dev libpython3-dev libavcodec-dev libavformat-dev libswscale-dev
$ git clone --branch <version> https://github.com/pytorch/vision torchvision   # see below for version of torchvision to download
$ cd torchvision
$ export BUILD_VERSION=0.8.1  # where 0.x.0 is the torchvision version  
$ sudo python setup.py install     # use python3 if installing for Python 3.6

 

필자의 경우 두번째 방법을 실행하다 실패한 이후 첫번째 방법으로 성공했다. 

 

설치가 완료된 이후에는 torch가 import 되는지 확인해보자

 

python3
import torch

 

 python3로 진입한 뒤 torch를 임포트 하고 에러가 발생하지 않는다면 설치가 성공한 것이다.

 이후 ros에서도 작동하는지 확인해 보자

 

cs
catkin_create_pkg test_torch rospy

 

rospy만 종속성으로 추가한 테스트 패키지를 작성해 보자 이후 패키지 내에 test.py를 추가한뒤 다음과 같이 작성해 보자

 

#!/usr/bin/env python3

import torch

 

위 파일을 작성한 뒤 저장하고 roscore 및 rosrun으로 해당 파일을 구동시켜보자

 

roscore
rosrun test_torch test.py

 

구동후 정상작동한다면 ros 내에서도 구동이 되는 것이다.