TensorFlow를 구성했으므로 이제 YOLO 아키텍처를 사용하여 개체 검색 모델을 학습합니다. YOLO는 단일 평가에서 이미지의 바운딩 박스(경계 상자) 및 클래스 확률을 예측하는 신경망입니다. YOLO 모델은 초당 60프레임 이상을 처리할 수 있으므로 비디오에서 개체를 검색하는 데 유용한 아키텍처입니다. YOLO 작동 방식에 대한 자세한 내용은 여기에서 확인할 수 있습니다.
YOLO 사용
먼저 시작할 도우미 스크립트가 포함된 이 YOLO 샘플 파일을 다운로드합니다.
YOLO를 사용하는 경우 다음 세 가지 옵션이 있습니다.
YOLO에 대해 미리 학습된 모델 가중치를 활용합니다. 미리 학습된 모델은 버스, 사람, 샌드위치 등과 같은 일상적인 개체에 대해 80개의 클래스(범주)가 있는 대규모 데이터 세트에서 학습되었습니다. 미리 학습된 YOLO 모델을 ONNX 형식으로 다운로드하려면 여기에서 다운로드할 수 있습니다. 그런 다음 이 자습서의 마지막 단계를 진행하여 해당 모델을 앱에 통합하는 방법을 알아볼 수 있습니다.
사용자 지정 데이터 세트를 사용하여 전송 학습을 구현합니다. 전이 학습은 학습된 모델을 시작점으로 사용하여 다른 관련 작업을 해결하는 모델을 학습시키는 방법입니다. 이 자습서에서는 80개의 클래스가 있는 YOLO의 사전 학습된 가중치를 사용하여 VOC 데이터 세트로 20개의 클래스를 학습하는 모델을 훈련합니다. 사용자 지정 클래스를 사용하여 사용자 고유의 데이터 세트를 만들려면 여기의 지침을 참조하세요.
처음부터 YOLO를 학습합니다. 이 기술은 수렴하기가 매우 어렵기 때문에 권장되지 않습니다. 원래 YOLO 논문은 전체 네트워크를 학습시키기 전에 이미지넷(수십만 장의 사진을 포함)에서 다크넷을 학습시켰습니다.
미리 학습된 YOLO 가중치에서 VOC 데이터 세트로 전송 학습을 구현합니다.
두 번째 옵션을 진행하고 다음 단계를 사용하여 전이 학습을 구현해 보겠습니다.
- miniconda 창에서 yolo 샘플 디렉터리로 이동하고 다음 명령을 실행하여 YOLO에 필요한 모든 pip 패키지를 설치합니다.
pip install -r requirements.txt
- 설치 스크립트를 실행하여 데이터 및 미리 학습된 가중치 다운로드
python setup.py
- 데이터 세트를 변환합니다. 구현을 참조하세요
tools/voc2012.py
. 이 형식은 tensorflow 개체 검색 API를 기반으로 합니다. 많은 필드가 필요하지 않지만 공식 API와의 호환성을 위해 여기에 입력되었습니다.
python tools/voc2012.py \
--data_dir './data/voc2012_raw/VOCdevkit/VOC2012' \
--split train \
--output_file ./data/voc2012_train.tfrecord
python tools/voc2012.py \
--data_dir './data/voc2012_raw/VOCdevkit/VOC2012' \
--split val \
--output_file ./data/voc2012_val.tfrecord
- 모델을 학습시킵니다. 다음 명령어를 실행하세요:
python convert.py
python detect.py --image ./data/meme.jpg # Sanity check
python train.py \
--dataset ./data/voc2012_train.tfrecord \
--val_dataset ./data/voc2012_val.tfrecord \
--classes ./data/voc2012.names \
--num_classes 20 \
--mode fit --transfer darknet \
--batch_size 16 \
--epochs 10 \
--weights ./checkpoints/yolov3.tf \
--weights_num_classes 80
이제 20개의 클래스를 사용하여 다시 학습된 모델을 사용할 준비가 되었습니다.
다음 단계
TensorFlow 모델을 만들었으므로 이제 Windows Machine Learning API와 함께 사용할 ONNX 형식으로 변환 해야 합니다.