2022. 1. 12. 12:36ㆍProject/AI
BOAZ의 분석 부문 base 미니 프로젝트로 마스크 인식 프로젝트를 진행하였다.
초반에 팀원들과 이야기 한 목표는
- 마스크를 확실히 썼는지, 아예 쓰지 않았는지, 쓰긴 했지만 코를 가리지 않았는지 이렇게 3가지의 경우로 labeling하기
- labeling한 텍스트를 score와 함께 bounding 박스의 위쪽에 표시하기
- 눈에 띄기 좋은 색으로 bounding box와 텍스트 색을 지정하기
- 이미지마다 size가 다르므로 각 사진의 비율에 맞게 resize 하기
- 내 컴퓨터의 사진도 바로 선택하여 test 해볼 수 있게 하기
이렇게 5가지 였다.
base를 진행하는 동안 매주 detection의 관련 논문들을 읽었는데, 우리가 공부한 논문은
- yolo v3
- faster rcnn
- swin transformer
- retina net
- detr
이렇게 5가지 정도 되었다.
이 중에서 yolo와 faster rcnn 중에 고민을 하였는데,
yolo는 v3보다는 v5가 주로 쓰이고, faster rcnn이 구현된 코드가 더 많고 공부하기에 좋을 것 같아 faster rcnn으로 진행하게 되었다.
발표 자료
https://www.miricanvas.com/v/1ssm1t
Detection_미니프로젝트
위 이미지는 무료 디자인툴 미리캔버스에서 만들었어요.
www.miricanvas.com
최종 결과




모델은 resnet50으로 미리 학습되어 있는 모델을 읽어와서 미리 학습된 모델의 머리 부분을 새로운 것으로 교체하는 방법으로 진행하였다.
아래의 코드들은 kaggle에서 참고하였다.
https://www.kaggle.com/bbkkanth/pytorch-pretrained-fasterrcnn
Pytorch_pretrained_FasterRCNN
Explore and run machine learning code with Kaggle Notebooks | Using data from Face Mask Detection
www.kaggle.com
모델 불러오기

하이퍼파라미터
이후에 하이퍼파라미터를 진행하면서 loss 값을 줄여나갔다.

최종적인 모델을 저장해서 팀원들은 train 하는 과정을 진행하지 않고 바로 실행시킬 수 있게 코드를 수정하였다.


Bounding Box 설정 및 이미지 위에 표시하기

사진에 라벨과 스코어 출력하기

사진에 텍스트를 출력하니까 사진마다 배경 색이 달라서 잘 안보이는 문제가 있었다.
색을 수정하면서 보았는데, 텍스트에 배경이 있으면 어떤 사진에서도 잘 보여서 텍스트에 배경을 추가하였다.
사진 위에 텍스트의 배경색을 넣는 방법은 backgroundcolor만 지정해주면 되어서 생각보다 간단했다!
이미지 비율로 축소하기

bounding box의 두께를 2로 지정하였는데, 사진의 크기가 작으면 두께가 너무 두꺼워 보이고,
사진의 크기가 크면 너무 얇아서 제대로 보이지 않는 문제가 있었다.
이 문제를 해결하기 위해서 가로 길이는 800으로 지정하고, 원래 사진의 비율을 그대로 유지하면서 세로 길이를 계산하여
사진을 resize 하는 함수를 작성하였다.
이미지로 테스트하기
위에서 짠 함수들을 호출하면서 다양한 이미지들로 테스트를 진행하였다.


발표하기
실제 발표에서는 실시간으로 보아즈 동아리분들의 zoom화면을 캡처해서 테스트하는 형식으로 진행하였다.
다들 마스크를 써주시거나, 코스크를 해보신다거나, 마스크를 쓰지 않고 재밌게 참여해주셨다.

논문을 읽고 코드를 정식으로 구현해본건 아니지만 모델 내에서 이미지의 input과 output,
모델에 적용하려면 데이터를 어떻게 전처리를 해야하는지 등을 배울 수 있었다.
자세한 코드는 github링크를 첨부한다!
https://github.com/haaaein/detection_miniproject
GitHub - haaaein/detection_miniproject: BOAZ 🐘 miniproject / mask detection (FasterRCNN)
BOAZ 🐘 miniproject / mask detection (FasterRCNN). Contribute to haaaein/detection_miniproject development by creating an account on GitHub.
github.com