작성중인 게시물입니다.
코로나가 종식되려면 최소 2년은 더 걸린다는 뉴스 기사를 봤다. 마스크 착용 또한 대중교통을 이용하거나 공공기관에서 착용이 필수가 되고 있다.
버스를 타거나 지하철을 탈 때 사람들이 마스크를 끼고 있는지 확인하기 어렵고, 일일히 검사한다면 시간적으로나 비용적으로 자원이 많이 투입될 것이라 생각했다.
그래서 자동으로 마스크를 끼고 있는지 검사할 수 있는 마스크 감지기를 만들어보았습니다.
기존에 나와있는 모델은 마스크 객체를 인식하지 못함
뭔가 패션 아이템, 의류쪽인건 아는데 마스크는 학습이 안되서 인식하지 못함
나를 사람으로 생각해줘서 고마워
이것도 다 마스크라고 생각하겠지만 아직 faster r cnn 은 모름
마스크 학습 후 인식 예제 (파인튜닝 후)
기존 감지 모델의 라벨을 오버라이딩 하여 마스크 만 인식하는 모델로 만들엇음. 이전에 인식하지 못했던 마스크를 인식
tensorflow api를 보면 colab 환경에서 few_shot 돌리는 게 있는데 colab 이 1시간 자리비우면 팅기고 session 유지 기간도 정해져 있기 때문에 local 에서 jupyter notebook 으로 실행하는 법을 공유하고자 합니다.
jupyter notebook 실행시 먼저 terminal 에서 tensorflow 의 object_detection_api 설치를 완료하셔야 합니다.
$conda create --name 'YOUR_ENV_NAME' python=3.7
$conda activate 'YOUR_ENV_NAME'
(YOUR ENV)$pip install -U --pre tensorflow=="2.2.0"
(가상환경 실행상태)
$mkdir tesnorflow
$cd tensorflow
$tensorflow>> git clone https://github.com/tensorflow/models.git
$tensorlfow>> protoc object_detection/protos/*.proto --python_out=.
$tensorflow>> cd models/research
$tensorflow/models/research>> cd object_detection/packages/tf2/setup.py .
$python -m pip install .
$pip install ipykernel
$python -m ipykernel install --user --name YOUR_ENV_NAME
$jupyter notebook
##numpy shape : (img_height, img_width, 3)
현재 사용하고 있는 모델은 img_height, img_width = 640, 640 으로 통일
ex) 실제 이미지를 표현하는 numpy 형태:
numpy 로 변환할 학습 이미지
위 배열은 첫번째 사진을 numpy 형태로 변환한 값.
3차원 배열로 이루어져 있음.
길이가 3인 1차원 리스트가 640 개 있고
그 리스트를 담는 이차원 배열이 640개 존재하여 640x640x3 의 3차원 배열 형태를 이루고 있다.
object detection 에서 학습 데이터셋을 만들기 위해 이미지에서 object 에 대한 boudding box 를 만드는 작업
data 형태 :
[ymin, xmin, ymax, xmax]
ymax = ymin + height
xmax = xmin + width
ex)
앞에서 image 와 box 에 대한 값을 구했음. 이 값은 numpy 형태이므로 훈련시키기 위해 tensor 형태로 변환해줘야함 이때 detection model 은 input 을 (N,heigt, width, 3) 형태로 받기 때문에 train image (height, width, 3) 를 tensorflow 의 expand_dims 메소드를 이용하여 4차원으로 차원 확장해준다.
config 파일 설명
config 파일은 총 5로 구성되어 있음 -아직 까지 각 attribute 에 대해 정확하게 이해하지 못함
추측
모델 저장 배포하기
eager execution 에서 모델 저장하는법
저장한 모델 배포 어플리케이션에 적용하기
👍