들어가며

최근에 어떤 프로젝트를 진행하게 되면서 안전모를 착용했는지 확인하기 위한 모바일용 머신러닝 모델이 필요하게 되었다. 3일이라는 짧은 시간 안에 프로토타입을 만들게 되었는데, 진행하면서 알게 된 에러 사항에 대해서 공유하기 위해서 이 글을 작성하니 모바일용 객체 탐지 모델을 만드는 사람들이 참고해서 쉽게 사용했으면 좋겠다.

혹시 결과물이 바로 보고 싶은 사람은 아래의 링크를 참고하란다.

github.com/BEOKS/Bicycle-Helmet-Wearing-Detection

 

BEOKS/Bicycle-Helmet-Wearing-Detection

Tensorflow lite model that detects bicycle helmet wearing and Android demo application - BEOKS/Bicycle-Helmet-Wearing-Detection

github.com

데이터 수집

모든 머신러닝 모델의 시작은 데이터를 확보하는 것이다. Kaggle에서 사용가능한 데이터들이 있는데 나는 이를 참고하였다. 참고로 라이선스가 전부 다르기 때문에 주의하기 바란다. 만약 이미 데이터가 확보되어있다면 이 과정을 넘겨도 된다.

www.kaggle.com/brendan45774/bike-helmets-detection

 

Bike Helmets Detection

764 images in 2 classes

www.kaggle.com

데이터 처리

전처리 프레임워크

머신러닝 모델이 잘 학습 할 수 있도록 데이터를 처리를 해야 한다. 데이터에 따라 몇 가지가 있지만 프로토타입 제작이므로 잘못된 정보가 있는지만 확인하도록 하겠다.

roboflow.com/

 

Roboflow: Everything you need to start building computer vision into your applications

Even if you're not a machine learning expert, you can use Roboflow train a custom, state-of-the-art computer vision model on your own data. Let us show you how.

roboflow.com

위 사이트는 확보한 데이터를 업로드하여 이미지를 육안으로 확인하거나 모델 향상을 위해서 Augmentation 시킬 수 있는 사이트이다. 만약 이미지 보안이 별로 중요하지 않다면 이를 활용하면 좋다. 업로드 및 활용과정은 처음 사이트를 이용할 경우 튜토리얼이 진행되니 순서만 따라간다면 어렵지 않게 사용할 수 있다.

데이터 확인

데이터를 입력하고 나면 위처럼 대시보드가 나오게된다. 여기서 이미지를 클릭하여 어노테이션이 잘 되어있는지 확인할 수 있다. 만약 어노테이션이 되어있지 않은 이미지가 있다면 쉽게 어노테이션을 추가할 수 있다.

데이터 전처리

대시보드 아래에 보면 Preprocessing Option을 볼 수 있다. 여기선 Crop, GrayScale, Tile 등의 전처리를 UI로 손쉽게 다룰 수 있다. (일부 기능은 유료버전에서만 사용 가능한데 돈내기는 싫으니 사이킷런의 전처리 라이브러리를 사용해서 코드에서 진행 후 다시 업로드하도록 하자)

Augmentation

Augmentation은 머신러닝 모델의 정확도 향상을 위해서 데이터를 증식시키는 것을 의미한다. 이 또한 대시보드에서 Augmentation Option을 선택하여 진행 할 수 있다. 여기도 몇 가지 기능은 유료버전에서만 사용 가능하다. 그러니 Albumentation(아래 링크 참고)을 사용해서 코드상에서 구현하도록 하자. 이 라이브러리가 roboflow보다 더욱 다양한 기능을 제공한다.

 github.com/albumentations-team/albumentations

 

albumentations-team/albumentations

Fast image augmentation library and easy to use wrapper around other libraries. Documentation: https://albumentations.ai/docs/ Paper about library: https://www.mdpi.com/2078-2489/11/2/125 - albume...

github.com

마무리

데이터와 모델의 목적에 따라서 위에서 언급한 것들 이외의 전처리 과정이 더 필요할 것이다. 기존의 솔루션을 잘 분석해서 어떻게 데이터를 처리할지 결정하고 이를 추가적으로 작업하여 데이터셋을 완성하자. 다음 장에서는 이 데이터셋을 가지고 tensorflow 프레임 워크를 사용하여 SSD MobileNetv2 모델을 만든 다음 이를 Tensorflwo Lite 모델로 컨버팅 하는 방법에 대해서 알아보자

 

Reference

  1. How to Train a Custom TensorFlow Lite Object Detection Model, https://blog.roboflow.com/how-to-train-a-tensorflow-lite-object-detection-model/
 

How to Train a Custom TensorFlow Lite Object Detection Model

In this post, we walk through the steps to train and export a custom TensorFlow Lite object detection model with your own object detection dataset to detect your own custom objects. If you need a fast model on lower-end hardware, this post is for you. Whet

blog.roboflow.com

+ Recent posts