Skip to main content

PaddleDetection과 W&B를 통한 객체 감지

PaddleDetection을 사용하여 모든 메트릭과 모델 체크포인트를 W&B에 기록하면서YOLOX 모델을 처음부터 트레이닝하는 방법에 대해 알아보세요.
Created on June 21|Last edited on June 21
이는 여기에서 볼 수 있는 영어 기사를 번역한 것이다.



목차




Run set
16


PaddleDetection 소개

PaddleDetectionPaddlePaddle을 기반으로 하는 종단간 객체 감지 개발 키트입니다. 네트워크 구성 요소, 데이터 증가 및 손실과 같은 구성 가능한 모듈을 사용하여 다양한 메인 스트림 객체 감지, 인스턴스 분할, 추적 및 키포인트 감지 알고리즘(keypoint detection algorithm)을 모듈식 설계로 구현합니다.
이제PaddleDetection엔 모든 트레이닝과 검증 메트릭과 모델 체크포인트 및 해당 메타데이터를 기록하는 W&B 통합 기능이 내장되어 있습니다.
실행 중인 코드와 함께 이 튜토리얼을 진행하시려면 아래Colab링크를 확인해주십시오.
💡
이번 튜토리얼에서는 트레이닝 세트에 1,000개의 이미지와 검증 세트에 250개의 이미지가 포함된COCO2017 데이터 세트의 하위 집합에서 YOLOX 모델을 트레이닝 시킬 것입니다.
다음 두 가지 방법으로 트레이닝 작업에 대한 W&B 로거를 활성화할 수 있습니다.
  • 명령: W&B 로거에 대한 인자(argument)는 -o로 진행되어야 하며 각 개별 인수는 접두어 "wandb-"를 포함해야 하며 `--use_wandb` 플래그를 사용해야 합니다.
python tools/train -c config.yml --use_wandb -o wandb-project=MyDetector wandb-entity=MyTeam wandb-save_dir=./logs
  • YAML 파일: 다음과 같이 wandb 헤더 아래에 있는 구성 YAML 파일에 인자를 추가합니다.
wandb:
project: MyProject
entity: MyTeam
save_dir: ./logs

설정하기

W&B SDK 설치

먼저 wandb SDK를 설치하고 W&B 계정에 로그인합니다:
pip install wandb
wandb login

PaddleDetection 설치

다음으로 PaddleDetection 라이브러리를 복제하고 패키지에 사전 구현된 다양한 모델에 대한 구성 및 트레이닝 스크립트가 포함되어 있으므로 소스에서 패키지를 설치하겠습니다!
pip install paddlepaddle-gpu pyclipper attrdict gdown -qqq
git clone https://github.com/PaddlePaddle/PaddleDetection
cd PaddleDetection
pip install -e .

COCO 데이터 세트를 다운로드하는 방법

먼저 이 어메이징한 저장소를 사용하여 생성된COCO 2017 데이터 세트의 일부를 다운로드합니다.
데이터 세트는 더 쉽게 다운로드할 수 있도록 W&B 아티팩트로 기록되어 있습니다. 여기에는 트레이닝을 위한 1000개의 이미지와 그에 상응하는 주석이 포함된 250개의 검증 이미지가 포함되어 있으며, 이제 객체 감지 모델을 트레이닝 시키는데 사용할 것입니다.
artifact = wandb.Api().artifact("manan-goel/PaddleDetectionYOLOX/COCOSubset:latest")
path = artifact.download(root='./dataset/coco')

트레이닝

모델 트레이닝

이제 PaddleDetection ��이브러리의 트레이닝 스크립트를 사용하여YOLOX 모델을 트레이닝하고 위의 구성은 트레이닝 중에 W&B 로깅을 추가합니다. 또한--eval 플래그를 추가하여 5 에폭(epoch) 마다 평가 단계를 갖습니다.

CLI 사용

python tools/train.py -c configs/yolox/yolox_nano_300e_coco.yml --use_wandb -o wandb-project=PaddleDetectionYOLOX --eval

구성 YAML 파일 사용

트레이닝 파이프라인에 대한 W&B를 사용하여 실험 추적을 자동으로 시작하기 위해 다음 스니펫을 구성 YAML 파일에 추가한 다음 트레이닝 스크립트의 입력으로 사용할 수 있습니다.
wandb:
project: PaddleDetectionYOLOX
이번 섹션에서는 이 파일을 사용할 수 있도록 편집하겠습니다.

시각화

트레이닝과 검증 메트릭 추적

트레이닝 중에 트레이닝 및 검증 세트의 메트릭이 다음과 ��이 W&B 대시보드에 기록됩니다

Run set
16


Tracking System Metrics


Run set
0


W&B에서 베스트 모델 다운로드 하기 💾

모델 체크포인트는 W&B 아티팩트로 기록되며 다음 스니펫을 사용하여 평가를 위해 다운로드할 수 있습니다.
import wandb
artifact = wandb.Api().artifact('manan-goel/PaddleDetectionYOLOX/model-26oqc38r:best', type='model')
artifact_dir = artifact.download()

이미지 테스트

다음 셀은demo 디렉토리의 모든 이미지에 대해 PaddleDetection 저장소의 추론 스크립트를 실행하고 W&B에서 가져온YOLOX 모델을 사용하여infer_output 디렉토리에 저장합니다.
for i in $(ls demo/*.jpg)
do
python tools/infer.py -c configs/yolox/yolox_nano_300e_coco.yml \
--infer_img=$i \
--output_dir=infer_output/ \
--draw_threshold=0.5 \
-o weights=./artifacts/model-26oqc38r:v1/model
done
이는 데모 디렉토리의 각 jpg 파일을 확인하며 다운로드 된 모델을 사용하여 추론 스크립트를 실행하고 주석이 달린 이미지를infer_output 디렉토리에 저장합니다.

보너스: 주석이 달린 이미지를 W&B 대시보드에 기록하기

import glob
import wandb

wandb.init(project="PaddleDetectionYOLOX")
wandb.use_artifact('manan-goel/PaddleDetectionYOLOX/model-26oqc38r:best')
table = wandb.Table(columns=["Input Image", "Annotated Image"])

inp_imgs = sorted(glob.glob("./demo/*.jpg"), key=lambda x: x.split("/")[-1])
out_imgs = sorted(glob.glob("./infer_output/*.jpg"), key=lambda x: x.split("/")[-1])

for inp in inp_imgs:
for out in out_imgs:
if out.split("/")[-1] != inp.split("/")[-1]:
continue
table.add_data(
wandb.Image(inp),
wandb.Image(out)
)

wandb.log({
"Predictions": table
})
wandb.finish()
위의 스크립트는 입력 이미지와 레이블이 지정된 이미지를 가져와 다음과 같은 W&B 테이블에 기록합니다.


Run set
16


결론

이 튜토리얼에서는 PaddleDetection과 함께 W&B를 사용하여 여러분의 모든 객체 감지 모델 개발 요구사항을 충족시켜드리는 방법에 대해 간략하게 설명하였습니다. 실행 코드가 있는 이 리포트의 버전을 보고싶으시다면 colab을 꼭 확인해주세요

관련된 작업


Iterate on AI agents and models faster. Try Weights & Biases today.