알 수 없는 알고리즘으로 해당 사이트로 접근했다면 바로 전 글을 읽고 오시기 바랍니다.
4. protobuf 설치
내가 참고했다던 사이트를 따라하면서 했는데 protobuf에서 정상동작을 하지 않았다. 기존 tf1환경에서는 튜토리얼에 있는 proto보다 더 낮은 버전을 사용했던 기억이 나서 해당 버전으로 설치를 진행했다.
- github.com/google/protobuf/releases/download/v3.3.0/protoc-3.3.0-linux-x86_64.zip 을 다운받고 적절한 곳에 디렉토리를 만들고 압축을 푼다.
- 터미널에서 현재 위치를 models 밑에 research 디렉토리로 이동한다.
- 위에서 압축해제한 proto 디렉토리의 bin까지의 경로를 기억한다.
- 아래 명령어를 입력해서 에러가 안나오면 성공이다
PATH/TO/PROTO/bin/protoc object_detection/protos/*.proto --python_out=.
5. COCO API 설치
내 머릿속에서는 coco dataset을 사용하지 않을 예정이니 설치를 하지 않아도 될 것이라 생각해서 스킵했는데 나중에 사용할때 해당 API가 없다고 에러가 나온다. 반드시 수행하자.
COCO Dataset을 사용하지 않을 것이라 생각해서 넘기려 했는데 반드시 필요한 부분이였다.
아래 명령어를 입력해서 cocoapi repository를 clone한다.
git clone https://github.com/cocodataset/cocoapi.git
터미널의 위치를 clone된 디렉토리의 cocoapi/PythonAPI 까지 이동한다.
cooapi를 빌드한다.
make
빌드 후 생성된 pycocotools를 research디렉토리로 복사한다.
cp -r pycocotools PATH/TO/TENSORFLOW/models/research/ // (-r 은 해당 파일 혹은 디렉토리가 외부에서 접근중이여도 복사를 할 수 있게 해주는 옵션)
6. Object Detection API 설치
이게 저 환경이랑 맞지 않아서 그럴 수 있을 것 같은데 setup.py를 수행하는 순간 파일이 깨지는 현상이 발생했다. 복구도 불가능했다.
NVIDIA docker 버전으로 사용중이라 그런가 해서 다시 처음부터 세팅한 후 setup.py를 하지 않았는데 잘 된다. 혹시 여기까지 오래 걸리지 않는다면 한번쯤 해보는 것도 추천한다.
7. 테스트
google의 tensorflow팀은 친절하게도 정상적으로 설치가 되었는지 테스트를 할 수 있는 파일을 제공해준다.
python object_detection/builders/model_builder_tf2_test.py
해당 테스트에서 일부 파일이 없다고 말하는 경우가 있을텐데 아래 2개의 명령어를 입력해 환경변수를 잡아준 후 그래도 요구하는건 pip install로 설치를 하면 된다.(해당 터미널이나 서버를 재부팅할때마다 환경을 새로 잡으라고 요구할텐데 batch파일로 하나 만들어두는게 편하다.)
환경변수를 잡으라고 하는 경우는 다음 모듈을 못찾겠다고 하는 경우다. (잘 기억이 나지 않으므로 구글링을 추천한다..)
object_detection, slim ...
환경변수의 경로는 현재 models/research까지 각자의 경로로 작성해야한다.
export PYTHONPATH=$PYTHONPATH:PATH/TO/TENSORFLOW/models/research:PATH/TO/TENSORFLOW/models/research/slim
export PYTHONPATH=$PYTHONPATH:PATH/TO/TENSORFLOW/models/
배치파일을 만드는 방법을 모르겠다면 nano든 gedit이던 뭐든 새로 파일을 만들어서
가장 위에 아래 명령어를 붙이고 원하는 명령어를 그 밑에 적어나가면 된다.
#!/bin/bash
배치파일의 실행은 . 명령어로 실행하면 된다.
테스트가 잘 끝나면 아래와 비슷하게 나온다.
...
[ OK ] ModelBuilderTF2Test.test_create_ssd_models_from_config
[ RUN ] ModelBuilderTF2Test.test_invalid_faster_rcnn_batchnorm_update
[ OK ] ModelBuilderTF2Test.test_invalid_faster_rcnn_batchnorm_update
[ RUN ] ModelBuilderTF2Test.test_invalid_first_stage_nms_iou_threshold
[ OK ] ModelBuilderTF2Test.test_invalid_first_stage_nms_iou_threshold
[ RUN ] ModelBuilderTF2Test.test_invalid_model_config_proto
[ OK ] ModelBuilderTF2Test.test_invalid_model_config_proto
[ RUN ] ModelBuilderTF2Test.test_invalid_second_stage_batch_size
[ OK ] ModelBuilderTF2Test.test_invalid_second_stage_batch_size
[ RUN ] ModelBuilderTF2Test.test_session
[ SKIPPED ] ModelBuilderTF2Test.test_session
[ RUN ] ModelBuilderTF2Test.test_unknown_faster_rcnn_feature_extractor
[ OK ] ModelBuilderTF2Test.test_unknown_faster_rcnn_feature_extractor
[ RUN ] ModelBuilderTF2Test.test_unknown_meta_architecture
[ OK ] ModelBuilderTF2Test.test_unknown_meta_architecture
[ RUN ] ModelBuilderTF2Test.test_unknown_ssd_feature_extractor
[ OK ] ModelBuilderTF2Test.test_unknown_ssd_feature_extractor ----------------------------------------------------------------------
Ran 20 tests in 68.510s
OK (skipped=1)
다음 글에서는 데이터셋에 대한 트레이닝과 트레인 후 모델 생성, 이미지에서 객체검출 예제를 진행하겠다.
'Python > 딥러닝 (Deep-Learning)' 카테고리의 다른 글
우리 EasyOCR로 한번 가자(1) (2) | 2021.04.13 |
---|---|
Tensorlfow Object Detection API 사용 중 발생한 에러 정리 (0) | 2021.03.25 |
눈물없이는 볼 수 없는 회사 딥러닝 프레임워크 업데이트 모험기(3) (0) | 2021.03.17 |
눈물없이는 볼 수 없는 회사 딥러닝 프레임워크 업데이트 모험기(1) (0) | 2021.01.30 |
Mask R cnn native 설치하기 (0) | 2019.08.28 |