Skip to content

SoongSilComputingClub/SSCCounter

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

69 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

📃 SSCCounter README

image

Hits

숭실대학교 컴퓨터 동아리 (SoongSil Computing Club)
개발기간: 2022.06~
Version: 0.2.0

배포 주소

웹페이지 : http://ssccounter.sscc.run/
프론트 서버 : http://ssccounter.sscc.run/uploadfile/
Json 요청 : http://ssccounter.sscc.run/ssccounter.json/

팀원 구성

백승우 원영진 이종인
@SWtheWhite @AI-WonYJ @bell-person-ii
SSCC 36th SSCC 40th SSCC 39th
PM & WEB HardWare & WEB WEB

프로젝트 소개

SSCCounter은 동아리방 인원수 카운터 머신입니다. 기존에 많은 사람들이 동아리방에 몇명이나 있는지 문의하는 글이 자주 올라왔었는데, 하루에도 2~3번 씩 올라오는 문의 글로 인해, 중요한 공지 글을 확인하기 힘들었다. 이를 해결하기 위해 동아리방 사용 인원수를 알려주는 머신이 있으면 좋겠다는 요청에 진행된 '2022 여름방학 Smart동방 프로젝트' 중 'nCnt' 개발 프로젝트에서 시작되었습니다. 현재는 Smart동방 프로젝트가 종료됨에 따라 'SSCCounter'라는 이름으로 변경되었으며, 매일 평균 30명 이상이 서비스를 이용하는 동아리 핵심 프로젝트로 진행되고 있습니다.

SSCCounter uses 'YOLOv3 Object Detection Neural Network'.

You can easily check the number of people using the club room by analyzing the images processed by YOLOv3. Thanks to real-time analysis of the club room images, you can instantly verify the number of people without any delays.

SSCCounter's website will give you a check-friendly environment.

Our website supports the following component.

  1. Last refresh time.
  2. Last headcount time
  3. Images that can be checked at a glance according to the number of people.

시작 가이드

Requirements

For building and running the application you need:

Installation

$ git clone https://github.com/SoongSilComputingClub/SSCCounter.git
$ cd SSCCounter
$ apt-get update
$ apt-get -y install libgl1-mesa-glx wget
$ pip install -r requirements.txt

$ cd WebServer/yolo_data
$ wget https://pjreddie.com/media/files/yolov3.weights

CamDevice

$ cd CamDevice
$ python3 main.py

WebServer

$ cd WebServer
$ uvicorn main:app --reload --port=3000 --host=0.0.0.0

Stacks 🐈

Environment

Windows 11 Ubuntu Raspberry Pi Visual Studio Code Git Github

Object Detection Neural Network

YOLO

Development

Python FastAPI HTML CSS

Communication

Discord Notion Zoom


화면 구성 📺

메인 페이지 Json 페이지

주요 기능 📦

⭐️ 동아리 인원수를 숫자와 이미지로 확인 가능

  • 숫자뿐만 아니라 이미지 또한 인원수에 따라 변하게 하여 한눈에 확인 가능

⭐️ 동아리 홍보 페이지 연계

  • 아이콘을 클릭하면 동아리 홍보 페이지나, 소셜 네트워크 페이지로 연결

⭐️ 새로고침 버튼

  • 간편하게 버튼 하나로 동아리방 인원수를 새로고침

릴리즈 버젼

Version 0.1.0

  • Device: capture image
  • Analysis: get people count from image
  • WebServer: show people count

Version 0.2.0

  • Refactor: e.v.e.r.y.(Divide and Unite)
  • Add: Dockerfile
  • Add: Requirements.txt
  • Feat: Github Action
  • Update: README.md
  • Fix: 307error
  • Fix: upload port

도입 예정 기능 및 성능 개선 📝

0. log 기능 추가

  • logging 기능 추가

1. Database 추가

  • log 기록을 위한 Database 추가

2. 인터페이스 개선

  • UX/UI를 더욱 눈에 띄도록 메인 페이지를 개선

3. API 활용 계획 수립

  • URL 접속이 아닌, APP을 통해 확인할 수 있는 APP 서비스 출시
  • PUSH 알림 등으로 더욱 간편하게 확인

4. 로그인 기능 추가

  • 동아리 외부인이 접속할 수 없도록 로그인 기능 추가

5. 동아리방 환경 정보 제공 기능 추가

  • 온도 및 습도 정보와 공기 오염도를 확인할 수 있는 기능 추가

6. AI 인원수 예측 기능 추가

  • 요일과 날씨, 학교 행사 정보 등을 이용해 동아리방 인원수를 예측

7. YOLO 모델 업그레이드

  • YOLOv3 -> YOLOv4, 5, ... 8 중 상위 모델로 업그레이드

아키텍쳐

디렉토리 구조

.
├── README.md
├── Dockerfile
├── LICENSE
├── requirements.txt
├── CamDevice
│   ├── main.py
│   └── utils
│       ├── image_creater
│       │   ├── cv2.py
│       │   └── pi.py
│       └── image_sender.py
└── WebServer
    ├── main.py
    ├── static
    │   ├── css
    │   │   ├── contribute.css
    │   │   ├── contribute2
    │   │   ├── main(Ver_2).css
    │   │   ├── main.css
    │   │   └── new.css
    │   └── images
    │       ├── 0 people.png
    │       ├── 1 people.png
    │       ├── 2 people.png
    │       ├── 3 people.png
    │       ├── 3analysis.jpg
    │       ├── 4 people.png
    │       ├── 5 people.png
    │       ├── 6 people.png
    │       ├── Kakao_lion.png
    │       ├── SSCC_logo.png
    │       ├── SSCC_logo_rev.png
    │       ├── analysis.jpg
    │       ├── analysis_outdoor.jpg
    │       ├── discord.png
    │       ├── facebook.png
    │       ├── humidity.png
    │       ├── instagram.png
    │       ├── kakao.png
    │       ├── logo.png
    │       ├── notion.png
    │       ├── people.png
    │       ├── photo_out.jpg
    │       └── temperature.png
    ├── temp
    │   ├── analysis.jpg
    │   └── photo.jpg
    ├── templates
    │   ├── Contribute.html
    │   ├── docs.html
    │   ├── image.html
    │   ├── index(Ver_8).html
    │   ├── manager.html
    │   ├── new.html
    │   └── test.html
    ├── utils
    │   └── count
    │       ├── yolo.py
    │       └── yolo_test.py
    └── yolo_data
        ├── yolov3.cfg
        ├── yolov3.weights
        └── yolov3.md