소소한 컴퓨터 이야기

Detectron2 사용하기 (feat. Docker)

by Cori

Detectron2는 Object Detection 등에 사용하는 라이브러리로, 나는 PDF 내 Table 및 수식을 감지하기 위해 사용해보려 했다. 


사용하는 PC에 설치되어 있는 Cuda, Cudnn 버전에 맞는 Docker Image를 사용해야 한다.

cuda 10.2 버전을 사용중이기에, 관련 이미지를 사용하는 Dockerfile을 만들어 기초 환경을 구축했다. 

dockerfile
0.00MB
requirements.txt
0.00MB

 

* detectron2는 현재 (2024.04.11) python 3.9 이하 버전만 지원한다고 하니, 이 점에 유의하자. 

 

$ docker build -t detectron2:test . 

$ docker run -p 8890:8890 -i -t -v C:/Users/:/workspace detectron:test

 

기본적인 설정은 완료했고, 도커도 실행했다.

도커 안에서, 다음 명령어로 필요한 패키지들을 설치해주자. 

 

$ apt-get install poppler-utils

$ apt-get install tesseract-ocr-eng

$ pip install layoutparser torchvision

$ pip install "detectron2@git+https://github.com/facebookresearch/detectron2.git@v0.5#egg=detectron2"

$ pip install pdf2img

$ pip install "layoutparser[ocr]"

 

이후 자유롭게 코딩하면 되는데, layoutparser에서 모델을 로드할 때 다음과 같은 오류가 발생할 수 있다.

ImportError: libGL.so.1: cannot open shared object file: No such file or directory

얘는 모델을 불러오는 과정에서 "importlib.import_module("cv2")"를 호출하는데, 이거 때문에 발생한다.

다음 명령어를 통해 해결해주자

 

$ apt-get install libgl1-mesa-glx  

$ apt-get install libglib2.0-0 -y 

 

** 추가. detect 과정에서 다음과 같은 오류가 발생하는 경우 

 

Couldn't load custom C++ ops ... 

 

pytorch와 torchvision 버전 간 호환성 문제로 인해 발생하는 것이니 https://github.com/pytorch/vision#installation 

여기서 버전을 확인한 후 다시 설치해주자. 

 

Ref. 

https://coens.tistory.com/19

블로그의 정보

코딩하는 오리

Cori

활동하기