<2020 SMU 캡스톤디자인 경진대회 1학기 우수상, 2학기 대상 수상작>
YOLOv2(darkflow)를 활용한 영상 속 유해, 개인정보 이미지를 탐지하고 모자이크 처리하여 반환하는 서비스입니다.
-
cfg 폴더
- 모델 세부 설정 내용이 담긴 cfg 파일들이 포함된 폴더입니다.
- "-demon" 은 4개의 항목을 다중 탐지하는 모델에 대한, "-addr", "-carnumber", "-cigarette2", "-knife"은 각각 도로명주소, 차 번호판, 칼, 담배 항목을 단일 탐지하는 모델에 대한 cfg 파일입니다.
-
server 폴더
- Localhost에서 테스트를 진행했던 웹페이지 및 서버 구현 파일들입니다.
-
"training 폴더"
- 소규모의 규칙 기반 모델이 작성된 파일입니다.
- 임의의 문장이 구현된 개체명 인식 모델을 통과한 결과를 일정한 출력 형태로 맞추는 역할을 합니다.
-
"yomo.py"
- 서버와 연동되어 학습된 모델을 통해 탐지 및 모자이크 처리를 진행하는 코드 파일입니다.
-
darkflow 설치 및 초기 설정 과정(CUDA, cudnn설치 등)이 필요합니다. (https://github.com/thtrieu/darkflow)
-
_가중치 파일과 학습에 사용한 이미지 데이터는 용량 문제로 원격으로 사용하던 데스크탑에 우선 저장해두었는데, 해당 데스크탑 데이터가 모두 날아가는 일이 발생했습니다.. 혹시나 복구된다면 바로 업로드 하겠습니다...
- 사용자는 YOMO 웹페이지에서 모자이크 처리를 원하는 영상을 업로드합니다.
- 체크박스에서 모자이크 하길 원하는 항목(현재는 도로명주소판, 차 번호판, 칼, 담배 가능)을 선택한 후 모자이크 처리 버튼을 클릭합니다.
- 처리가 완료되면 완료된 동영상을 다운로드 받습니다.
- 사용자가 업로드한 원본 영상에서 frame을 하나 씩 추출합니다.
- 사전 학습된 모델을 통해 추출한 frame에서 사용자가 요청한 항목이 있는지 탐지합니다.
- 탐지된 항목이 있는 경우엔 모자이크 처리를 진행하고 처리가 끝난 frame을 하나씩 쌓아 영상으로 만듭니다.
1. 이미지 수집 및 가공
- 크롤링과 직접 촬영을 통해 이미지를 수집했습니다.
- 크롤링한 이미지에서 중복제거, 품질 낮은 이미지 제거 등의 후처리를 진행했고, 전체 이미지에 대해 대칭 이동, 밝기 변화를 적용하여 최대한 데이터 수를 늘렸습니다.
2. Modeling
- YOLOv2(darkflow)를 통해 모델을 생성했습니다.
3. Training
- Optimizer와 Hyper parameters를 다음과 같이 설정한 뒤 학습을 진행했습니다.
- Optimizer : Adam optimizer
- Learning rate : 1e-4 ~ 1e-6
- Epochs : 105
- Batch size : 4
4. 모자이크 처리
- 탐지 결과가 일정 confidence 값 이상을 넘는 경우 blur() 함수로 모자이크 처리를 진행햇습니다.
5. 테스트