관리 메뉴

ComputerVision Jack

Vision Task Workflow 본문

Computer Vision/Vision Note

Vision Task Workflow

JackYoon 2021. 3. 14. 16:39
반응형

이번엔 제 나름대로 일을 진행하면서 Object Dtection과 관련하여 workFlow를 정리해보려고합니다.

처음엔 막연히 전반적인 Task 흐름도 고려하지 않고 Computer Vision 분야의 개발자가 되려했지만, 개발을 진행함에 있어서 workFlow를 세우고 기본에 충실한 코딩이 얼마나 중요한지 깨닫게 되었습니다.

Dataset 

우선 vision Task에 맞는 데이터 수집이 가장 중요합니다. Face Detection이면 얼굴 데이터, Object Detection이면 object에 관련된 데이터셋을 수집합니다.

그 다음 수집된 데이터셋에 대해 predict ouput을 고려하여 라벨링을 진행해야합니다. 기본적으로 라벨링을 진행할 때, 저는 PyQT5 (python GUI) 프로그램으로 Tagging Tool을 직접 제작했습니다. 아니면 다양한 카메라 센서를 이용하여 결과값을 TXT나 JSHON 파일로 저장해도 좋습니다.

BackBone 설정

다음은 Task를 진행할 Backbone을 설정하는 것입니다. 하드웨어적 고려를 하지 않는다면 메모리 제약이 발생하지 않기 때문에 다양한 Backbone Network로 public dataset을 이용한 Backbone Test를 진행해 성능 좋은 backbone을 사용해도 좋습니다. (저 같은 경우는 onBoard 상의 메모리를 신경써야 하기 때문에 비교적 lite한 모델인 EfficientNet과 RexNet, MobileNetv3를 사용하였습니다.)

Backbone info

그 다음 Tiny ImageNet 데이터를 사용하여 Backbone Test를 진행했습니다. 또한 각각 flops와 parameter를 체크하였습니다.

Backbone Test
Backbone Test

BackBonee Test의 결과 RexNet이 가장 성능이 좋기 때문에 RexNet을 model의 backbone으로 사용하기로 하였습니다. 또한 Backbone Test를 진행했기 때문에 pretrained model로 사용할 수도 있습니다.

Generator 설정

다음은 model에 input으로 넣어주기 위해 Generator를 설정해야합니다. Dataset의 수가 작은 경우 그냥 train / label을 나누어 model에 입력하면 되지만 Dataset이 큰경우 Generator를 생성하여 model의 input으로 넣어줘야합니다.

Neck / Head 설정

다음은 만든 backbone에 대해 neck과 head를 설정해야합니다. 기본적으로 backbone에 neck과 head를 붙이는 방법이 성능이 좋은 관례이기 때문에 저도 neckhead를 사용했습니다. neck에는 FPN과 BiFPN등 다양한 방법이 있지만 다음에 설명하도록하겠습니다.

Loss 설정

다음은 task의 목적에 맞게 Loss를 설정하면 됩니다. keras에서 제공하는 loss를 사용하기도 하고 직접 loss를 만들어서 model fit 부분에 던져주기도 합니다. 보통 classification의 경우 categorical_cross_entropy보다 focal loss를 사용하는 편입니다. loss에 대한 내용도 차후 포스팅하겠습니다. 또한 anchor를 base로 prediction을 진행하기 때문에 location에 대한 정보에도 loss를 적용하였습니다.

model 학습 진행

위와 같은 기본적인 Task 흐름을 고려하여 모델을 학습하고 prediction을 진행하면 됩니다. 이렇게 학습을 진행시킨 후, 다양한 방식을 사용하여 model을 reproduction 시키면 됩니다.

 

기본적으로 learning rate을 설정하고 bach_size를 설정하는 것과 동시에, callback 함수로 mAP를 측정하는 함수를 만들어 달아주거나, learning_rate scheduler를 사용하여 lr을 설정해줘도 좋습니다. 또한 어떤 Optimizer를 사용할지도 좋은 고려대상이 될거 같습니다. 

반응형

'Computer Vision > Vision Note' 카테고리의 다른 글

ssh를 이용한 Docker 실행  (0) 2021.04.17
Data Augmentation  (0) 2021.03.30
Docker 구축  (0) 2021.03.21
Comments