Apple Detection(Edge AI) - Approach

류창훈·2024년 3월 8일
0

딥러닝

목록 보기
6/9

이번 포스팅은 '최적 설계' 분야의 논문을 읽고, 끄적이는 포스팅 입니다.




논문의 제목은 위와 같고,

전반적인 논문의 내용은
이탈리아 어느 지역의 사과 데이터를 가지고, detection 하는 모델을 임베디드 플랫폼에 넣었다는 내용의 논문 입니다.

논문 링크는 밑에 달아놓도록 하겠습니다.




Data Set


여기서 사용한 데이터는 이탈리아 북부 사과 과수원에서 이미지 입니다.

Breaburn과 Fuji 종류의 사과를 데이터화 했고,

18 megapixel의 카메라를 사용했다고 합니다.

여러 조건의 환경에서, 오랜 시간동안 수집을 했다고 하고,

총 618개의 이미지로 train.

608 by 608 사이즈로 조절.

mean-substraction 방식으로 정규화 했다고 합니다.


사과 자체에도 이렇게 종류가 나눠져 있는 걸 이번에 처음 알았다.




Embedded Platforms



이 사람들이 사용한 임베디드 플랫폼의 스팩은,

NVIDIA Jetson AGX Xavier
NVIDIA Jetson Nano
Raspberry Pi 3B+
Intel Movidius Neural Compute Stick(NCS) 1세대 및 2세대

과 같습니다.


찾아보니,
모두 저가로 구성되어 있었고, 자율주행 rc카, 자율주행 학습용 로봇 등등
일반적으로 우리가 접할 수 있는 기계에 내장되어 있는 스팩입니다.


전에 갖고 놀려고 자율주행 RC카 알아봤었는데, 다른 것보다는 저렴하지... 그래도 좀 부담되는 가격이다....


결국 못 샀다


Layer


YOLO는, 즉 detetction 파트는 classifier와 regressor가 합쳐진 느낌의 방식입니다.


여기서는 기존 YOLO 계층에 몇가지 본인들이 추가한 계층에 대해 설명을 했습니다.


Backbone block(feature extractor)에는 위의 그림에 보이는 것과 같이 Conv, BatchNorm, LeakyReLU activation Func, Pooling 계층이 포함 되어있고,

여기서 조금 눈에 띄었던 부분은 1 by 1 layer 입니다.


위의 표를 보면, 각 YOLO 계층 전에 1 by 1 layer 들이 보입니다.

처음 NIN 논문에서 이를 사용했는데, 또 전에 읽었던 ResNet도 이 계층이 껴 있었고,

차원 축소, 연산량 감소 등등의 이점 때문에 정말 이곳저곳에서 다 쓰이는 것 같습니다.



결국 darknet에 나와있던 YOLOv3-tiny 계층에
위와 같이 더 껴넣은 전체 네트워크를 기반으로
본인들이 수집한 Dataset으로 학습하여 만족스러운 결과를 보여주었다는 이야기 입니다.





Test Results

테스트 데이터셋은 OIDv4 데이터셋의 'apple' 클래스를 사용하였다고 합니다.


여기서의 성능 평가는 mAP(mean Average Precision)을 사용했는데,
기존 YOLOv3-tiny 성능보다 본인들 입맛으로 바꾼 YOLOv3-tiny 비교했을 때, 6.6% 성능 향상되었다고 이야기 합니다.


Quantitative Results로 실제 환경에 적용을 해봤는데,

위와 같이 훨씬 더 견고하고 조명, 크기, 가림, 배경 잡음과 같은 변화에도 잘 탐지 한다고 합니다.





주절주절


사실 전의 프로젝트 할 때도 느꼈는데, 인공지능 모델은 아무리 단순화 해도 정말 무겁습니다.

아무리 모델 단순화해서 서버 구축하고 docker 컨테이너화 해도 4GB는 어렵지 않게 넘었었고,

꾸역꾸역 클라우드에 올려도 다운 되는 문제도 여럿 발생했었습니다.

제가 전에 만든 모델을 APP에 싩을 때도 굉장히 무겁다는 이야기를 여러번 들었었는데,

여기서는 고작 600여장의 학습 데이터셋으로 다뤘고, 심지어 사과에 대해서만 분야를 매우 간소화 했습니다.

이 논문에서도 그렇고, 애초에 이 분야(Edge AI) 분야 자체도 여기에 초점이 맞춰져 있는 것 같습니다.


사실 이 논문 읽으면서 컴퓨터 자체로는 정말 아무렇지 않게 다룰 수 있는 규모인데... 도대체 얼마나 생각한 것 보다 더 무거운건지... 학습할 때도 1시간 밖에 안 걸렸다는 것도 참 신기했고...


일단 이거 읽으면서 접근은 했으니, 좀 더 규모 키워 보면서 이것저것 해볼 생각입니다.


다음 포스팅은 코드로 찾아뵙도록 하겠습니다.




감사합니당 ~ 🦾





참고자료
https://ieeexplore.ieee.org/document/8951147
profile
Linear AI Developer입니다.

0개의 댓글

관련 채용 정보