내배캠 (22.04~22.08)

Safety Manager Team 프로젝트 - 2 (최종)

yubi5050 2022. 5. 24. 19:29

1. 프로젝트 기간

2022.05.18 (수) ~ 2022.05.24 (화)

 

2. 팀 구성

김선민, 김민기, 박재현, 황신혜 

 

3. 프로젝트 주제

공사장 안전 사고 예방을 위한 안전모 착용 여부 탐지(Object Detection) Web 솔루션(SafetyManager) 개발

 

4. 프로젝트 진행 방식

  • 화면 기획 (Figma) : 링크 
  • API 설계 (Notion) : 링크 
  • 일정 관리 (Git Project, Notion) : 링크
  • 기능 구현 관리 (Git Issue) : 링크

 

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 : 작업 시간을 기록하여 월 별 통계(랭킹) 등을 집계 할 수 있게 함

 

User, Result Collection

 

5.3 모델 학습

 

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. 프로젝트 결과 및 시연 영상