프로젝트/학기중

AI 기반 실시간 새 탐지 및 분류 시스템

디티 2025. 6. 2. 20:52

작년 임베디드소프트웨어 수업때 진행했던 토이 프로젝트다

중간고사까지는 아두이노를 활용하여 EEG(뇌파), EMG(근전도) 생체신호 기반 로봇팔 제어 프로젝트를 진행했었는데 정처기 기사 실기 병행, 팀원과 의사사통 부족, 하드웨어 이해 부족, 뇌파 관련 지식 부족 등 여러 문제가 있어서 만족할만한 결과를 내지 못해 아쉬웠다

중간 프로젝트

 

간단 시연

기말에는 기사시험을 마무리해서 중간보단 시간적 여유가 있어서 좀 더 집중할수 있었다. 또한 사업성을 보이지 않아도 됐고 라즈베리파이와 AI를 활용하여 하드웨어와 연결성을 보이는게 핵심이였다

 

무엇을 해야할까 하다가 캡스톤디자인(역사 속 인물 닮은꼴 매칭 웹 제작 및 AI 학습모델 개선)때 얼굴인식, 객체인식을 사용했던것이 생각나서 팀원 형과 이야기 하다가 새를 탐지하고 촬영해서 분류하는 시스템을 만들어보기로 했다. 원래는 수화(sign language)를 인식하고 번역해주는 시스템을 만들어보려했으나 시간적으로 목표 개발기간인 기말고사 기간 전까지 완성이 불가능할 것 같았고 기술적으로도 팔,손목,손가락 관절인식, 수화 학습 등을 잘 학습시킨다고 해도 최적화를 할수 있을지 의문이였다. 또한 라즈베리파이는 아니지만 이미 개발된것도 있으며 개발중이신 분들도 있으셔서 위와 같은 주제를 선택하게 되었다. 어쨌든 팀원 형도 마음에 든다고 했고 이후엔 개발 가능할지 어떻게 개발할지를 의논했다.

 

새를 탐지하고 분류하는데에 있어서 기술적인 걱정은 없었다. 이전에 비슷한 프로젝트를 해보았고 조금이지만 모델을 학습시키고 활용하는데에 익숙해 졌기 때문이다. 다만 이러한 시스템을 라즈베리파이에서 사용할수 있을지가 주된 고민이였고, 크게 2개 정도였다.

라즈베리파이가 실시간 객체인식과 분류작업을 버틸수 있을것인가? (24시간 가동으로 인한 과부화가 오지 않을지)

상시 카메라로 객체인식을 한다면 과부화우려가 있으니 자원을 적게 쓰는 센서를 이용해서 센서가 움직임을 감지하면 카메라를 켜서 객체인식을 하기로 했다. 중간프로젝트때 움직임 감지 센서를 알게되었는데 아두이노에서 가능하다면 라즈베리파이에서도 문제 없을것이라 생각했다.

객체인식을 하면서 적정 프레임을 뽑아낼수 있는지?

위와 이어지는 고민으로 실시간이라고 하려면 20~30fps정도는 나와야하는데 이는 해상도를 낮추고 객체인식을 모든 프레임에서 진행하는것이 아니라 일정 프레임만 진행하면 fps개선을 할 수 있을것 같았다. 프로젝트중 조교님이 객체인식을 해봤을때 3fps밖에 안나온다고 하셔서 이후에 적정프레임이 잘 나오는지를 우선 테스트 해봤고 프로젝트를 진행하였다. 아마 우리말고도 객체인식을 사용하려는 조들이 있었나보다.

 

시스템 구조

 

 

 

 

 



먼저 움직임 감지가 되면 카메라를 켜서 객체인식을 진행하고, 객체가 새(bird)라면 어떤 새 인지 분류하여 사진과 녹화된 영상을 저장한 후 움직임이 감지되지 않으면 객체인식 및 카메라를 종료한다. 객체탐지모델은 경량화 모델이면서 어느정도 정확도도 필요해서 YOLOv8 nano 모델로 선택했고 새 종류 분류를 위한 모델로는 MobileNetV2를 전이학습 모델로 선택하였다.

 

 

 

 

 

 

 

yolo학습 - yolo는 직접 학습시키지 않고 학습된 v8 nano 모델 pt를 다운받아 사용하였다

detection test 코드 - bird_classification_project/cam_bird_detection_capture.py at main · kopmer/bird_classification_project

 

bird_classification_project/cam_bird_detection_capture.py at main · kopmer/bird_classification_project

yolo test code. Contribute to kopmer/bird_classification_project development by creating an account on GitHub.

github.com

 

mobilenet 학습 - 해외 코드(어디서 참고했는지 까먹음)를 참고하여 colab에서 전이학습을 진행하였다. 

colab notbook en (결과 o)

bird_classification_project/mobilenetV2_train.ipynb at main · kopmer/bird_classification_project

 

bird_classification_project/mobilenetV2_train.ipynb at main · kopmer/bird_classification_project

yolo test code. Contribute to kopmer/bird_classification_project development by creating an account on GitHub.

github.com

 

colab notbook ko(gpt로 주석 한국어로 변경, 결과x)

https://colab.research.google.com/drive/1e3p7P6H7Nk0fYv1ZwLzrmriVN4aobCbs?usp=sharing

 

mobilenetV2_ko.ipynb

Colab notebook

colab.research.google.com

 

전체 동작영상

 

시연

 

저장된 까치(pica pica)사진

객체 인식

 

프로젝트 후기

중간에 비해 시간적여유가 있었다고는 하지만 그럼에도 임베디드와 인공지능을 접목하기에는 여전히 시간이 부족했다. 집중할 수 있었던기간은 거의 1~2주 정도밖에 없어서 틈틈이 짬을내서 진행해야했고 기말고사기간 전에 끝내버리고 싶은 욕심이 있었다(물론 실패했지만). 중간때 실패했던 경험을 발판삼아 적절한 주제를 선정했고 최대한 배운것을 활용하려 노력했다(움직임 감지 센서, 얼굴 객체인식 경험 등). 같이 프로젝트를 진행한 물리학과 형 덕분에 3D 프린터나 필요한 부품에 대한 걱정없이 개발에 집중할수 있어서 편하고 좋았다(분업을 할수 있어서 개발시간 단축됨).


보완할 점

영상 녹화 메커니즘 개선이 필요할것 같다. 새 인식 후 5초 동안 녹화가 이루어지는데 녹화가 종료되고 새가 카메라 앞에서 떠나지 않았다면 또 녹화될것이다. 이렇게 되면 한마리의 새가 여러번 녹화되고 이는 컴퓨터 자원(용량)고갈을 야기할수도 있을것 같다.