<p align="center"><img src="https://www.deepdetect.com/img/icons/menu/sidebar/deepdetect.svg" alt="DeepDetect Logo" width="45%" /></p>
Deep Learning Server and CLI
GitHub release (latest SemVer)
GitHub Release Date
GitHub commits since latest release
DeepDetect는 훈련(training)과 추론(inference)을 위한 딥러닝 런타임, 커맨드라인 도구(CLI), 그리고 REST 서버입니다. Python wheel은 DeepDetect 런타임을 현재 Python 환경에 임베딩하고, 반복 가능한 모델 워크플로우를 위해 deepdetect CLI를 제공합니다. 서버는 장시간 실행되는 REST 서비스, 컨테이너화된 서빙(containerized serving), 전용 프로세스가 필요한 통합을 위해 계속 사용할 수 있습니다.
DeepDetect는 다음과 같은 실질적인 모델 운영에 중점을 둡니다: 서비스를 생성하고, 모델을 훈련하며, 예측을 실행하고, 작업을 모니터링하며, 파일 시스템에서 모델 저장소를 체계적으로 관리합니다. 단일 API 표면(single API surface)을 통해 이미지, 텍스트, CSV/표 형식 데이터, 시계열(time series), 희소/SVM 스타일 데이터, 객체 탐지 박스(object-detection boxes), 그리고 분할 마스크(segmentation masks)를 지원합니다.
Quickstart
Python 환경에 wheel 변형(wheel variant) 하나를 설치하십시오. deepdetect-cpu와 deepdetect-gpu 모두 import deepdetect를 제공하므로, 동일한 환경에서는 상호 배타적입니다.
python -m pip install \
--extra-index-url https://www.deepdetect.com/download/wheels/simple \
deepdetect-cpu
CUDA가 활성화된 환경의 경우, 대신 GPU 패키지를 설치하십시오:
python -m pip install \
--extra-index-url https://www.deepdetect.com/download/wheels/simple \
deepdetect-gpu
패키징된 CLI 프로필과 명령어 옵션을 확인해 보십시오:
deepdetect inspect models
deepdetect train yolox --help
deepdetect infer segformer --help
첫 번째 CLI 프로필은 다음과 같습니다:
yolox: 객체 탐지(object detection)
segformer: 의미론적 분할(semantic segmentation)
torchvision-detector: 관리형 PyTorch Faster R-CNN 탐지
external-pytorch-detector: 외부 PyTorch 탐지 워커 진입점(entrypoint)
external-pytorch-image: 외부 Python 로드 이미지 워커 진입점(entrypoint)
YAML 설정 파일은 실행을 반복 가능하게 만듭니다. 기본 예시는 시작점이며, 실제 실행에 사용하기 전에 데이터셋, 가중치 및 저장소 경로를 교체해야 합니다.
deepdetect train yolox --config bindings/python/deepdetect/cli/yolox-default.yaml
deepdetect infer yolox image.jpg --config bindings/python/deepdetect/cli/yolox-default.yaml
deepdetect train external-pytorch-detector --config bindings/python/deepdetect/cli/external-pytorch-detector-default.yaml
...
일반적인 external-pytorch-image 프로파일은 이미지 목록 경로를 워커(worker)에게 전달합니다. 이 워커는 이미지 디코딩, 증강(augmentation), 배치 처리(batching), 그리고 모델별 마스킹을 담당하며, C++ 텐서 풀 데이터로더(tensor-pull dataloader)를 사용하지 않습니다.
최소한의 객체 탐지 실행은 wheel 테스트에서 사용된 것과 동일한 작은 더미 데이터를 사용할 수 있습니다. 두 번째 터미널에서 Visdom을 시작하세요:
python -m pip install visdom
python -m visdom.server -port 8097
퀵스타트 데이터셋과 모델 저장소를 준비합니다:
python bindings/python/scripts/prepare_cli_yolox_quickstart.py \
--output /tmp/deepdetect-yolox-quickstart \
--force
매우 작은 YOLOX 실행을 훈련합니다:
deepdetect train yolox \
--config /tmp/deepdetect-yolox-quickstart/yolox-quickstart.yaml \
--terminal live
그런 다음 준비 스크립트가 출력한 Sample image: 경로로 추론을 실행합니다:
deepdetect infer yolox <sample-image> \
--config /tmp/deepdetect-yolox-quickstart/yolox-quickstart.yaml \
--visualize \
...
deepdetect-gpu wheel을 사용하고 train 및 infer 명령어에 --gpu를 추가하여 CUDA에서 이 예시를 실행하세요.
훈련, 추론, 모니터링, 설정 우선순위(config precedence) 및 출력 형식에 대한 내용은 CLI 사양을 참조하십시오.
핵심 기능
deepdetect CLI 또는 REST API를 통해 학습(Train) 및 추론(inference)을 실행합니다.
- 로컬 모델 저장소에 기반한 모델 서비스를 생성합니다.
- 비동기 학습 작업(asynchronous training jobs)을 실행하고 상태를 검사합니다.
- 이미지 분류(image classification), 객체 탐지(object detection), 시맨틱 분할(semantic segmentation),
언어 모델(language models), 테이블 데이터(tabular data), 시계열(time series), 희소 데이터(sparse data)와 함께 작업합니다.
- 데이터베이스 의존성 없이 파일 시스템 기반의 모델 스토리지를 사용합니다.
- 자동화 및 사람이 읽기 쉬운 터미널 출력을 위해 구조화된 CLI 이벤트를 방출합니다.
- 서버 통합을 위해 JSON 요청 및 응답 페이로드(payloads)를 사용합니다.
- 클래스, 점수(scores), 바운딩 박스(bounding boxes), 분할 마스크(segmentation masks) 등 예측 출력을 생성하고 모델별 메트릭(metrics)을 제공합니다.
백엔드 및 모델 지원
DeepDetect는 학습 및 추론의 주요 백엔드로 Torch를 사용합니다.
최적화된 추론을 위해 내보내기(exported)되었거나 호환되는 모델에 대해 TensorRT를 사용할 수 있습니다. Caffe 형식의 protobuf와 prototxt 파일은 호환성 또는 모델 형식 세부 정보로 나타날 수 있지만, Caffe는 활성 런타임 백엔드가 아닙니다.
CLI는 현재 다음을 중심으로 한 워크플로우를 패키징합니다:
- YOLOX 객체 탐지(object detection).
- SegFormer 시맨틱 분할(semantic segmentation).
더 광범위한 Torch API는 다음과 같은 추가 모델 및 템플릿 계열을 지원합니다:
- ResNet, VGG, DenseNet, MobileNet, ShuffleNet, SqueezeNet과 같은 TorchVision 스타일 분류기(classifiers)를 사용한 이미지 분류.
- YOLOX, Faster R-CNN, RetinaNet을 사용한 객체 탐지.
- SegFormer 및 분할 서비스(segmentation services)를 사용한 시맨틱 분할.
- BERT 및 GPT-2와 같은 언어 모델 및 추적된 모델(traced models).
- 재귀(recurrent), N-BEATS, 트랜스포머(transformer), time-transformer 템플릿을 사용한 시계열.
- ViT 및 Visformer와 같은 비전 트랜스포머(vision transformers).
서비스 매개변수, 커넥터, 템플릿 및 요청/응답 세부 정보는 API reference를 참조하십시오.
배포
로컬 학습, 인프로세스 추론(in-process inference), 그리고 자동화 친화적인 워크플로우를 위해 Python wheel과 CLI를 사용합니다.
DeepDetect 서버는 장시간 실행되는 REST 서비스, 원격 클라이언트, HTTP API를 통한 비동기 작업, 또는 전용 서빙 프로세스가 필요할 때 사용합니다.
REST API 문서는 docs/api.md에서 확인할 수 있습니다.
컨테이너화된 서빙 및 재현 가능한 서비스 환경에는 Docker를 사용하세요.
docs/docker.md를 참고하세요.
커스텀 C++ 빌드, 서버 옵션, TensorRT 지원 또는 로컬 개발 변경 사항이 필요할 때는 소스에서 직접 빌드합니다. docs/source.md부터 시작하세요.
Python 클라이언트
Python REST 클라이언트는 실행 중인 DeepDetect 서버와 통신합니다.
이는 import deepdetect 및 deepdetect CLI를 제공하는 인-프로세스(in-process) Python wheel과는 별개입니다. Wheel 빌드 및 패키징 세부 정보는 bindings/python/README.md에 있습니다.
문서
작성자, 라이선스 및 참고 자료
DeepDetect는 Jolibrain에서 기여자들의 도움을 받아 설계, 구현 및 지원됩니다.
작성자는 AUTHORS에 나열되어 있습니다. DeepDetect는 GNU Lesser General Public License v3.0 하에 배포되며, COPYING을 참조하세요.
프로젝트 웹사이트: https://www.deepdetect.com/