마스크를 착용한 상태에서 카메라 인식을 통한 출석체크 프로그램으로, 수강생들이 카메라 인식을 통해 출석 체크를 하고, 교수는 수강생들의 출석 여부를 웹 페이지에서 확인할 수 있다. (A-C : Attendance Check)
해당 프로그램은 팀 프로젝트로 진행되었다! 나와 팀원들의 역할은 다음과 같다.
한소희 (본인) | 박인수 학우님 | 박세현 학우님 |
- 프로젝트 총괄 - 데이터베이스 구축 - 학습 모델 생성 - 데이터 모델링을 위한 얼굴 검출 프로그램 구현 - 얼굴 인식 프로그램 구현 - 웹 사이트 구성도 구현 |
- 데이터 확보 - 날짜별 데이터 저장을 위한 데이터베이스 구현 - 웹 사이트 구현 |
- 데이터 확보 - 날짜별 데이터 저장을 위한 데이터베이스 구현 - 웹 사이트 UI, UX |
위는 내가 초기에 구성한 시스템 구성도이다 🥲 앞으로 많이.. 수정될 예정....
학습시킬 데이터를 티처블머신을 통해 모델링을 실행한다. 생성된 모델과 카메라로 입력받은 수강생 얼굴을 비교하고, 비교된 데이터로 출석 여부를 확인한다. 출석 여부를 데이터베이스에 저장하고, 이 데이터베이스를 통해 수강생들의 출석 여부를 웹에 출력하는 것이다. 교수는 이렇게 출력된 결과물을 보고 수강생들의 출석 여부를 확인할 수 있다.
예외 (1) 수강생의 얼굴이 모자 혹은 앞머리 등에 의해 가려져 인식이 안 될 경우
-> 눈이 보이지 않는다는 에러 메시지를 카메라에 출력시킨다.
예외 (2) 데이터 모델에 수강생의 얼굴이 없어서 (인식률 낮음) 인식이 안 될 경우
-> 얼굴이 인식되지 않는다는 에러 메시지를 카메라에 출력시킨 후, 콘솔 창에 "이름, 학번, 확인요망"을 입력한다.
예외 (3) 수강생이 아닌 사람(외부인)이 카메라 인식을 시도할 경우
-> 얼굴이 인식되지 않는다는 에러 메시지를 카메라에 출력시킨다. 콘솔 창에 "이름, 학번, 확인요망"을 입력하라는 문장 옆에 "외부인은 입력하지 마세요"라는 문장을 표시해 준다.
프로그램 언어 | IDE | Database | 라이브러리 및 패키지 | WAS |
Python, JSP | Pycharm, Eclipse | MySQL | OpenCV, Numpy, Tensorflow, JDK | Apach Tomcat |
DB 생성 후 확인
Table 생성 후 확인
필드 생성 후 확인
1. 로컬에서 접속 가능한 사용자 추가하기
mysql> create user 'sohee'@'localhost' identified by '(내 비밀번호)';
2. 접근 권한 허용해 주기
mysql> GRANT ALL PRIVILEGES ON FaceMask_Program.* to 'sohee'@'localhost';
(모든 디비에 대한 권한을 허용하려면)
mysql> GRANT ALL PRIVILEGES ON *.* to '사용자'@'localhost';
3. 새로운 세팅 적용
mysql> FLUSH PRIVILEGES;
4. 파이썬에서 DB 접속해 보는 테스트
# import requests
import pymysql
# 데이터베이스 서버에 연결, 정상적으로 연결이 수립되면 커넥션 객체를 반환
conn = pymysql.connect(host='localhost', user='sohee', password='디비서버 시비밀번호',
db='FaceMask_Program', charset='utf8') # charset = 'utif8' => 한글 처리
# 커서 생성. 커넥션 객체를 통해 데이터베이스에서 SQL문을 대신 실행해 주고, 결과를 반환해 줄 커서 객체.
# 커서 객체 생성 이유 : 커서 객체에 DB 작업들을 위한 함수들이 포함되어 있기 때문
cur = conn.cursor()
# 실행할 SQL문 정의하고, 커서 객체 이용하여 inset, update, delete 작업을 수행
sql = "SELECT name FROM FaceMask" # 테스트로 이름(name)만 출력
cur.execute(sql)
# Data Fetch
rows = cur.fetchall()
print(rows)
conn.close()
4-1. 테스트 실행 결과
(학우님들 이름은 개인정보이므로 가림.. 히힛)