Trouble Shooting-

 * Linux: apt install 에서 "Unable to locate package"에러가 나는 경우 sudo apt-get update를 해주면 해결 된다.

 * pip를 업데이트 하였다가 "cannot import name 'main'"이란 에러가 발생하는 경우

      1) which pip를 커맨드 라인에 치면 pip의 위치가 나옵니다. [/usr/bin/pip]

          보통 이 pip 위치에서 하면 되는데 가끔 전혀 다른 곳에서 pip가 문제가 되는 경우 상단의 에러메시지와 함께 어떤 위치에서 발생하였는지 나오기 때문에 그 위치의 pip 파일을 수정해 주시면 됩니다.

      2) sudo nano pip라고 치시면 nano editor가 작동하며 파일이 열립니다. vim으로 작성하셔도 크게 문제 없습니다.

      3) 파일을 열면
from pip import main
if __name__ == '__main__':
     sys.exit(main())

 

이렇게 나와 있을 것인데, 이것을

import sys
from pip import __main__
if __name__ == '__main__':
     sys.exit(__main__._main())

 

로 바꿔주시고, ctrl+o를 눌러서 저장한다고 하시고 엔터 치신 뒤 ctrl+x로 빠져나오시면 됩니다.

그리고 이후에 pip이용시에는 문제가 되지 않을 것입니다.

   

참고-

 복붙은, GUI환경에서 ctrl+c 후에 linux cli환경에서 마우스 오른쪽 클릭으로 됩니다.

 

리눅스-

먼저 리눅스 설치가 기반이므로 리눅스 설치를 일단 설명한 뒤 윈도우 설치로 넘어가도록 하겠습니다.

나이브 linux subsystem(ubuntu)에서 까는 것으로 가정하고 서술하겠습니다.

일단 python 2.7로 깔고 이후에 pyenv등을 통하여 3.대와 같이 사용하도록 하겠습니다.

 

1) 먼저 pip가 인스톨 되어 있지 않을 것이니 apt install python-pip(혹은 sudo apt install python-pip)를 해줍니다.

2) git도 안깔려 있을테니 apt install git 해줍니다.

3) unzip도 안깔려있습니다. apt install unzip 해줍니다.

4) pip install tensorflow-gpu

5) sudo apt-get install protobuf-compiler python-pil python-lxml python-tk

   pip install --user Cython
   pip install --user contextlib2
   pip install --user jupyter
   pip install --user matplotlib

6) git clone https://github.com/cocodataset/cocoapi.git

7) git clone https://github.com/tensorflow/models

8) cd cocoapi/PythonAPI

9) make

10) cp -r pycocotools [/root]/models/research/

   pycocotools를 앞서 다운받은 models 안에 있는 research 폴더 안에 넣어야 합니다. 앞에서 다운받은 models위치를 확인하여 주시고 (보통 위에것을 그대로 실행하셨다면 최상위 디렉토리에 models가 다운되었을 것입니다. 최상위 디렉토리 이름은 유저네임과 동일하므로 /[user name]/models...으로 진행하여 주시면 됩니다. 저는 유저네임을 root로 하였기에 다음과 같은 주소입니다. [/root/models/research/]

11) cd

12) curl -OL https://github.com/google/protobuf/releases/download/v3.2.0/protoc-3.2.0-linux-x86_64.zip

13) unzip protoc-3.2.0-linux-x86_64.zip -d protoc3

14) ~/protoc3/bin/protoc --help

     위 명령어를 입력한 후에 뭔가가 주르륵 나오면 설치 완료입니다.

15) cd models/research

16) ~/protoc3/bin/protoc object_detection/protos/*.proto --python_out=.

17) export PYTHONPATH=$PYTHONPATH:`pwd`:`pwd`/slim

18) python object_detection/builders/model_builder_test.py

 

윈도우-

 윈도우 버전에서는 저번에 CUDA환경을 만들어 놓은 Anaconda 환경에서 진행하도록 하겠습니다. [https://omnil.tistory.com/64?category=777916]

 리눅스와 다르게 GUI시스템 기반이라 수기로 옮겨주고 처리해야 하는 등 리눅스보다는 조금 더 많이 왔다갔다 해야 합니다.

 0) Anaconda prompt를 열어줍니다.

 1) pip install git

    일단은 git 정도가 깔려있는지 확인해 줍니다.

 2) 이미 tensorflow는 전에 CUDA환경을 만들면서 설치하였기 때문에 넘어갑니다.

 3) windows는 apt-get 을 통한 protobuf-compiler의 인스톨이 불가하므로 pip로 대체합니다.

  pip install --user Cython 
  pip install --user contextlib2 
  pip install --user pillow 
  pip install --user lxml 
  pip install --user jupyter 
  pip install --user matplotlib

  보통 아나콘다를 깔면 위의 것들 중 많은 것이 깔리지만 일단은 확인 차원에서 한번씩 다 실행해 줍니다.

 4) git clone https://github.com/tensorflow/models

  이번에는 모델을 먼저 받아줍니다. cocoapi부분이 윈도우에서는 좀더 설명이 필요하기 때문에 간단한 것 먼저 진행합니다.

 5) linux와 다르게 윈도우에서는 깃에서 클론한 cocoapi를 사용하는 대신 바로 설치를 해버릴 것입니다.

  그 이유는 일단 윈도우 안에서 make 명령어가 없으며, make를 돌아가게하는 패키지를 conda로 깔아도(conda install makeconda install -c anaconda make) 마이크로 소프트 비쥬얼 스튜디오 버전이니 cl.exe니 하면서 과거 CUDA에서 저를 괴롭혔던 것들이 막 튀어나오거든요..

  그리고 다른 이유로는 과거에는 cocoapi가 공식적으로 windows를 지원하지 않았으나 이번에는 지원하는 것으로 나왔기 때문에 시스템 안정성 측면에서도 공식 서포트되는 것이 좋기 때문입니다. [https://github.com/philferriere/cocoapi]

  명령줄에

    pip install git+https://github.com/philferriere/cocoapi.git#subdirectory=PythonAPI

  를 입력해주시면 됩니다. 그러면 알아서 다운받고 설치까지 합니다. 이 상황에서 위의 리눅스와는 다르게 따로 설치하고 파일을 옮겨줄 필요 없이 자동으로 잘 동작합니다.

 6) protoc도 윈도우즈 용으로 따로 받아줄 것 입니다.

  아나콘다 프롬프트에서도 CURL 명령어가 먹기는 하지만, 그냥 브라우저상에서 https://github.com/protocolbuffers/protobuf/releases/download/v3.4.0/protoc-3.4.0-win32.zip를 입력하거나 그냥 링크를 클릭하셔서 protoc를 다운 받으십시오. 윈도우에서는 3.4 이상에서 버그픽스가 있었는지 많이들 권하는 버전이 3.4입니다.

 7) 이 파일을 받으신 뒤 윈도우에서 GUI로 압축을 해제하여 주시고 폴더 이름을 단순하게 지어주십시오. 경로는 가장 간편한 경로가 좋습니다. 왜냐하면 윈도우즈에서는 CLI환경에서 상대주소를 사용하기가 힘들(저는 거의 불가능이)기 때문에 시스템 path로 등록해주고 그냥 바로 이름만 써서 사용할 것 입니다.

 8)  시스템 패스를 설정합니다.

 => 시작메뉴 오른클릭 '시스템'

    -> 검색창에 '고급' 검색

      -> 검색된 결과 중 '고급시스템설정보기' 클릭

        -> 하단의 '환경변수' 버튼 클릭

          -> 하단의 '시스템 변수' 리스트 중 'Path'를 찾아 클릭하고 하단의 '편집' 버튼 클릭

            -> '새로만들기' 버튼 클릭 후 새로나오는 입력창에서 '압축푼 폴더\[압축 푼 이름]\bin\'을 입력합니다. 경로는 절대경로이어야 하며, 보통의 경우 '사용자' 아래에 바로 저장할 경우 C:\Users\[유저 이름]\압축 푼 폴더 이름\bin\'이라고 입력하면 됩니다.

              -> 이후 모든 창에서 '확인'을 눌러서 종료해주시면 됩니다.

 9) protoc --help 치면 무언가가 주르륵 뜰 것입니다. 절반의 성공입니다.

 10) 왜냐하면 위의 리눅스처럼 윈도우는 *.proto 가 먹지 않기 때문입니다. 그럼 지옥처럼 모든 proto파일마다 하나하나 protoc를 먹여주어야 하느냐.. 하면 그건 또 아닙니다. models/research 폴더로 가셔서,

      명령줄에

       for /f %i in ('dir /b object_detection\protos\*.proto') do protoc object_detection\protos\%i --python_out=.

      를 입력하여 주십시오. 명령줄에서 for문이라니! 하실 수도 있지만, 제대로 잘 작동합니다. 위의 linux의 *.proto와 같은 기능으로 파일 내 모든 .proto 파일을 protoc로 컴파일 합니다.

      잘 되었는지는 object_detection\protos에 가서 보시면 .py파일이 .proto아래 생겨있으면 성공입니다.

 11) CLI상에서 환경변수 설정하는 방법도 linux와는 약간 다르게, models/research 폴더 상에서

       SET PYTHONPATH=%cd%;%cd%\slim

      를 입력하시면 됩니다. 특이점이라면 %cd%와 %cd%사이가 콜론(:)이 아니라 세미콜론(;)입니다.

      지금까지 사용해 본 결과로는 매번 실행할 때마다 새로 해주어야 하는 것 같은데, 이는 추후에 더 확인해보고 계속 초기화 되면 시스템 패스에 등록한 뒤 제대로 작동되나 확인해보고 추가하겠습니다.

 12) python C:\Users\[유저 이름]\models\research\object_detection\builders\model_builder_test.py 를 입력하시면 OK사인이 나옵니다. GPU환경에서요. (여담이지만 윈도우즈에서는 대괄호 안에 넣은 절대주소를 이용하는 것이 속이 편합니다.)

+ Recent posts