이 때, 물체를 판별하는 작업을 진행하기 위하여 Tensorflow Image Recognition in ROS 를 이용하기로 하였다.
이 과정에 대한 내용은 다음 사이트를 참고하여 진행하였다.
https://medium.com/@k3083518729/tensorflow-image-recognition-58b0ac77c263
작업환경 (Labtop)
OS : Linux_Ubuntu_16.04
ROS : Kinetic
Python version : 2.7
Tensorflow version : 1.13.1
일단 시작하기 전에 다음과 같은 주의사항이 있다.
a. ROS는 python3와 호환이 힘드므로 python2를 사용해야 한다. ROS 설치시 기본적으로 python2.7이 들어있다.
b. tensorflow 설치 또한 python2에 해야한다.
많은 시행착오를 거치며 위 두가지 사항을 지켜야 한다고 깨달았다.
그럼 시작하자.
1. Install Ubuntu 16.04
다음 링크를 참조한다.
http://doocong.com/webserver/ubuntu-setup/
2. Install ROS Kinetic
다음 링크를 참조한다.
https://cafe.naver.com/openrt/14575
wget https://raw.githubusercontent.com/ROBOTIS-GIT/robotis_tools/master/install_ros_kinetic.sh && chmod 755 ./install_ros_kinetic.sh && bash ./install_ros_kinetic.sh
3. Install pip
다음 링크를 참조한다.
https://pip.pypa.io/en/stable/installing/
Installing with get-pip.py
To install pip, securely download get-pip.py. 1:
Then run the following:
4. Install Tensorflow to Python 2
다음 링크를 참조한다.
https://crystalcube.co.kr/189
해당 링크에서는 virtualenv를 이용했지만 내 경우엔 이용하지 않을 것이므로 아래 부분만 진행한다.
sudo pip install --upgrade pip
sudo pip install --upgrade setuptools
// Python 2.7 인 경우
pip install --upgrade tensorflow
출처: https://crystalcube.co.kr/189 [유리상자 속 이야기]
# Error
다음과 같은 에러가 발생했다.
(1) /usr/local/lib/python2.7/dist-packages/pip/_vendor/requests/__init__.py:83: RequestsDependencyWarning: Old version of cryptography ([1, 2, 3]) may cause slowdown. warnings.warn(warning, RequestsDependencyWarning)
(2) ERROR: pyasn1-modules 0.2.7 has requirement pyasn1<0.5.0,>=0.4.6, but you'll have pyasn1 0.1.9 which is incompatible.
(3) ERROR: tensorboard 2.0.1 has requirement futures>=3.1.1; python_version < "3", but you'll have futures 3.0.5 which is incompatible.
(4) ERROR: Cannot uninstall 'enum34'. It is a distutils installed project and thus we cannot accurately determine which files belong to it which would lead to only a partial uninstall.
(1) /usr/local/lib/python2.7/dist-packages/pip/_vendor/requests/__init__.py:83: RequestsDependencyWarning: Old version of cryptography ([1, 2, 3]) may cause slowdown. warnings.warn(warning, RequestsDependencyWarning)
cryptography module의 version 문제라고 한다.
다음 링크를 참조하자.
이제 upgrade를 진행하자.
sudo pip install --upgrade cryptography
이 후 다음과 같은 error가 발생한다.Traceback (most recent call last):
File "/usr/local/bin/pip", line 8, in <module>
sys.exit(main())
File "/usr/local/lib/python2.7/dist-packages/pip/_internal/main.py", line 45, in main
command = create_command(cmd_name, isolated=("--isolated" in cmd_args))
File "/usr/local/lib/python2.7/dist-packages/pip/_internal/commands/__init__.py", line 96, in create_command
module = importlib.import_module(module_path)
File "/usr/lib/python2.7/importlib/__init__.py", line 37, in import_module
__import__(name)
File "/usr/local/lib/python2.7/dist-packages/pip/_internal/commands/install.py", line 23, in <module>
from pip._internal.cli.req_command import RequirementCommand
File "/usr/local/lib/python2.7/dist-packages/pip/_internal/cli/req_command.py", line 20, in <module>
from pip._internal.network.session import PipSession
File "/usr/local/lib/python2.7/dist-packages/pip/_internal/network/session.py", line 17, in <module>
from pip._vendor import requests, six, urllib3
File "/usr/local/lib/python2.7/dist-packages/pip/_vendor/requests/__init__.py", line 97, in <module>
from pip._vendor.urllib3.contrib import pyopenssl
File "/usr/local/lib/python2.7/dist-packages/pip/_vendor/urllib3/contrib/pyopenssl.py", line 46, in <module>
import OpenSSL.SSL
File "/usr/lib/python2.7/dist-packages/OpenSSL/__init__.py", line 8, in <module>
from OpenSSL import rand, crypto, SSL
File "/usr/lib/python2.7/dist-packages/OpenSSL/SSL.py", line 118, in <module>
SSL_ST_INIT = _lib.SSL_ST_INIT
AttributeError: 'module' object has no attribute 'SSL_ST_INIT'
다음 명령어를 통해 해결하자.
sudo python -m easy_install --upgrade pyOpenSSL
(2) ERROR: pyasn1-modules 0.2.7 has requirement pyasn1<0.5.0,>=0.4.6, but you'll have pyasn1 0.1.9 which is incompatible.
해당 에러는 pyasn1-modules 은 0.2.7 version 이 필요하고, pyasn1 은 <0.5.0,>=0.4.6 version 이 필요하다는 이야기이다.
다음 링크를 참조한다.
https://github.com/etingof/pyasn1-modules/issues/10
먼저 아래 명령어를 통해 내가 가지고 있는 modules의 version을 확인한다.
pip freeze | grep pyasn1
pyasn1==0.1.9pyasn1-modules==0.0.7
이제 업그레이드를 해보자.
아래 명령어를 수행 시에 pyasn1은 upgrade 된 것을 확인할 수 있다.
pip uninstall pyasn1 && pip install pyasn1
pip freeze | grep pyasn1
pyasn1==0.4.7pyasn1-modules==0.0.7
이제 pyasn1-modules를 업그레이드 한다.
하지만 다음과 같은 에러가 뜬다.
ERROR: Cannot uninstall 'pyasn1-modules'. It is a distutils installed project and thus we cannot accurately determine which files belong to it which would lead to only a partial uninstall.
https://blog.naver.com/waterey/221576731282
distutils installed project는 manual하게 삭제를 해주어야 한다고 한다.
한번 해보자.
$ cd /usr/lib/python2.7/dist-packages/
$ sudo rm -r pyasn1_modules/
$ sudo rm -r pyasn1_modules-0.0.7.egg-info
sudo pip install pyasn1-modules
pip freeze | grep pyasn1
pyasn1==0.4.7pyasn1-modules==0.2.7
이제 다음 에러를 확인해보자.
(3) ERROR: tensorboard 2.0.1 has requirement futures>=3.1.1; python_version < "3", but you'll have futures 3.0.5 which is incompatible.
해당 내용에는 futures module의 version이 3.1.1 이상이어야 한다고 한다.
하지만 내가 갖고 있는 futures의 module은 3.0.5 version이다.
pip freeze | grep furtures
futures==3.0.5sudo pip uninstall futures && sudo pip install futures
pip freeze | grep furtures
futures==3.3.0
(4) ERROR: Cannot uninstall 'enum34'. It is a distutils installed project and thus we cannot accurately determine which files belong to it which would lead to only a partial uninstall.
이 또한 위 과정에서 해결방법을 참고하면, Manual하게 enum34 module을 삭제해야 하겠다.
다음 명령어를 통해 제거를 진행한다.
$ cd /usr/lib/python2.7/dist-packages/
$ sudo rm -r enum34-1.1.2.egg-info
이제 다시 설치를 진행해보자.
$ sudo pip install --upgrade tensorflow
Successfully installed absl-py-0.8.1 astor-0.8.0 backports.weakref-1.0.post1 cachetools-3.1.1 certifi-2019.9.11 chardet-3.0.4 enum34-1.1.6 funcsigs-1.0.2 functools32-3.2.3.post2 gast-0.2.2 google-auth-1.7.0 google-auth-oauthlib-0.4.1 google-pasta-0.1.8 grpcio-1.25.0 h5py-2.10.0 idna-2.8 keras-applications-1.0.8 keras-preprocessing-1.1.0 markdown-3.1.1 mock-3.0.5 numpy-1.16.5 oauthlib-3.1.0 opt-einsum-2.3.2 protobuf-3.10.0 requests-2.22.0 requests-oauthlib-1.3.0 rsa-4.0 tensorboard-2.0.1 tensorflow-2.0.0 tensorflow-estimator-2.0.1 urllib3-1.25.7 werkzeug-0.16.0 wrapt-1.11.2
드디어 설치가 제대로 된 것을 확인할 수 있다.
댓글 없음:
댓글 쓰기