1. 프로젝트 기간
2022.05.18 (수) ~ 2022.05.24 (화)
2. 팀 구성
김선민, 김민기, 박재현, 황신혜
3. 프로젝트 주제
공사장 안전 사고 예방을 위한 안전모 착용 여부 탐지(Object Detection) Web 솔루션(SafetyManager) 개발
4. 프로젝트 진행 방식
5. 프로젝트 진행
5.1 화면 와이어프레임 및 기능 정의
화면 | 화면 이름 | 기능 | 담당자 |
로그인 회원가입 |
회원가입, 로그인, 로그아웃 JWT 토큰 활용 쿠키 저장 |
황신혜 | |
- | - | Object Detection 모델 학습 (Yolo v5) |
모두 |
메인 페이지 |
이미지/동영상 파일 업로드 이미지/동영상 Detect Detect 결과 출력 (Detect 이미지, 라벨값, Score 등) |
김선민, 김민기, 박재현 | |
Ranking 페이지 |
기업별 월별 Score Ranking 구현 View 페이지네이션 기능 |
박재현 | |
MyPage | 기업의 모든 User에 대한 결과 View View 페이지네이션 기능 |
김민기, 박재현 |
|
· · · | · · · | · · · |
5.2 DB 설계도 작성 (MongoDB)
- User : 사용자 정보
- 회사명(company) 속성을 통해 mypage에서 기업의 관리자가 사내 정보를 한 눈에 볼 수 있게 함
- Result : 서빙 모델 이용 기록
- Detecting 결과 필드들(head, helmet, score, isPass)을 이용해 안전 여부를 판단 하고자 함
- date : 작업 시간을 기록하여 월 별 통계(랭킹) 등을 집계 할 수 있게 함
5.3 모델 학습
- Dataset : Roboflow의 Hard Hat Worker Dataset (안전모 데이터셋) 사용
- Model : Open Source Object Detection Yolo v5
- 안전모 데이터와 Model을 Colab 로드 후 학습 (mAP .5 / 0.9 이상)
5.4 Safety Manager 개발
(중요} 기능 분담 및 소스코드 분리 작성 => 개발 생산성 최대화, 코드 충돌 최소화 지향
1) BE에서 Detector 추론 모듈/ Web 모듈 분리
- Detector 모듈 : Detection 결과 (Img, Video, 결과값을 이용한 Score 등) 리턴
- Web Module : DB 연동, FE 요청에 따른 Detection 모듈 호출 및 응답
2) Blueprints를 이용한 API Endpoint 분리
3) Jinja의 include 문법을 이용한 nav.html 분리 및 Nav Bar 중복 구현 방지
5.5 소스코드 Folder Structure
### Structure
```
├── detector // Yolov5 Detector Module
│ ├── models/ // BackBone
│ ├── utils/ // box 라벨값 Draw
│ ├── detect.py // detect 관련 소스코드
│ └── ...
│
├── routers // API Endpoint (Blueprints)
│ ├── main.py // Upload 및 기본 기능 API
│ ├── detect.py // Detection 요청 API
│ ├── profile.py // Mypage 정보 조회 API
│ ├── ranking.py // Ranking 정보 조회 API
│ └── user.py // user 회원가입/로그인 API
│
├── static
│ ├── css/ // css
│ ├── js/ // JS
│ ├── predict_data/ // Detect 결과
│ ├── upload_data/ // 업로드 이미지
│ └── test_data/ // 테스트용 이미지
│
├── templates
│ ├── nav.html // nav Page
│ ├── index.html // Main Page
│ ├── profile.html // MyPage
│ ├── ranking.html // Ranking Page
│ ├── login.html // Login Page
│ └── join.html // Join Page
│
├── training
│ └── training code // colab용 학습코드
│
└── app.py // 메인
```
6. 프로젝트 결과 및 시연 영상
'내배캠 (22.04~22.08)' 카테고리의 다른 글
TODAY LUNCH 팀 프로젝트 - 1 (0) | 2022.06.02 |
---|---|
Safety Manager Team 프로젝트 - KPT 회고 (0) | 2022.05.25 |
Safety Manager Team 프로젝트 - 1 (0) | 2022.05.18 |
인스타그램 클론 Team 프로젝트 - KPT 회고 (2) | 2022.05.11 |
인스타그램 클론 Team 프로젝트 - 3 (최종) (0) | 2022.05.11 |