Skip to content

potomatoo/Byeper

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Byeper

개요 및 배경

코로나로 인해 비대면 수업이 많아지고, 학습자와 강사간의 커뮤니케이션을 도와주는 플랫폼이 지속적으로 성장하고 있는 추세입니다. 대표적으로 Webex와 Zoom이 대표적인 사례입니다. 학습자들은 이러한 비대면 플랫폼을 활용하여 학습을 하는 과정에서 가장 큰 장점은 ‘녹화기능’입니다. 강의에 대하여 추후에도 다시 리뷰하며 학습할 수 있는 기회가 생겼습니다. 하지만 대면에서 비대면으로 추세가 변화한지 시간이 지났지만 여전히 해결되지 못한 점이 있습니다. 바로 ‘수업자료’에 대한 문제점입니다. 구체적으로 녹화기능을 이용하여 사용자들은 강의를 저장할 수 있지만 강의 특성상 PPT인 수업자료를 저장하기 위해서는 녹화된 영상을 수작업으로 캡처를 해야하는 불편함이 이 문제점의 핵심입니다. 해결방안은 간단했습니다. 영상에서 수업자료의 변화율을 감지하여 자동으로 PPT를 추출하는 것입니다. openCV와 자체적인 알고리즘을 고안해내 구현을 하였으며 추후에는 정확성을 높이며 시간을 단축시키는 효율성까지 보완하였습니다. 기술을 구현해내는 과정에서 어떻게 하면 많은 사용자들이 학습을 하는 데 PPT자동 추출 기술을 통하여 도움을 받을 수 있을까라는 생각을 하게 되었습니다. 이러한 생각은 자연스럽게 플랫폼으로 이어졌으며, 많은 강의를 해당 기술을 활용하여 도움을 받는 학습자와 가장 큰 동영상 플랫폼인 Youtube에서의 교육 유튜버와의 연결을 고안해냈습니다. 결론적으로 Byeper는 자동PPT추출 기술과 플랫폼, 그리고 유튜브라는 3가지 특성이 합쳐져 기획되었습니다. 학습자와 강사간의 학습 플랫폼이라는 방향성을 확보한 후에는 학습자의 측면에서는 자신이 공부하고 있는 영상의 진도율 및 전반적인 학습에서 도움을 받을 수 있도록 학습 관리 기능에 집중을 하였습니다. 또한 강사입장에서도 보다 손 쉽게 자신의 영상을 Byeper 서비스에 제공할 수 있도록 Youtube API를 활용할 수 있도록 기능을 추가하였습니다.
마지막으로 핵심 기능 외적인 부분을 보완하였습니다. 자동으로 추출된 PPT를 통하여 인쇄를 하지 않고 그 자리에서 동시적으로 정리를 할 수 있도록 노트 필기 기능을 추가했습니다. 나아가 다시 듣고 싶은 부분이 있을 때 해당 부분을 찾기 어려운 점을 해결하기 위해 동영상에서 ppt를 자동 추출할 때 시간 정보를 함께 기록해 해당 ppt가 나타난 시점으로 이동할 수 있는 기능을 제공합니다. 또한 강의를 다 듣고 나서 복습을 하고 싶거나, 강의를 듣기 전에 이미 내가 아는 내용인지, 어떤 내용을 배울 것인지 미리 알 수 있도록 인공지능 문제풀이를 제공합니다.

목표

  • 자동PPT추출 기술을 구현하는 동시에 정확성과 효율성 극대화
  • 학습 플랫폼 측면에서 다양한 기능 구현

기술 스택

Front End

Vue.js를 사용하여 프론트 페이지를 구성하며 상태관리를 위해 Vuex 와 페이지 구성을 위하여 Vue Router를 사용한다. 서버와의 통신을 위해 Ajax를 사용하여 비동기 통신을 구현하고 TypeScript를 사용하여 생산성을 높인다.

Back End

Rest API 방식으로 구현되며 서비스 제공을 위한 Spring boot와 동영상 분석과 문제 생성을 위한 Django 사용한다. 사용자 인증을 위해 Spring Security 와 JPA를 사용하여 인증 절차를 진행하며 Youtube API를 통해 사용자의 동영상 정보를 가져온다. NLTK모델을 사용하여 분석된 동영상에서 문제를 생성한다.

Server

AWS 서버를 운영하며 서비스 데이터를 저장하기 위한 mysql과 사용자 인증을 위한 Redis서버를 운영한다. 안정성 있는 서비스를 위해 Docker를 사용하며 CI/CD환경 구축을 위해 Jenkins를 통해 테스트/배포를 진행한다. Nginx를 통해 Docker컨테이너와 서버 자원을 매핑하여 프론트에 제공한다.

openCV 및 인공지능 문제생성

openCV를 활용한 PPT 자동 추출

PPT가 변환됐다는 것을 판단하는 조건은 서로 다른 픽셀의 수가 어느 숫자보다 큰 것이다. 예를 들면 동영상에서 5초때의 이미지와 6초때의 이미지에서 서로 다른 픽셀이 20000개면 (내가 정한 숫자는 3000) 5초와 6초 사이에 PPT가 변환됐다는 뜻이다.

  • 분할정복 1초마다 이미지를 보면서 비교하면 시간이 굉장히 오래걸린다. 동영상의 구간 s초 ~ e초를 분석한다고 할때, 기저사례는 s와 e가 1초이하로 차이날때다. 이때는 e초를 리턴한다. 그 외에는 s와 e의 중간지점 mid를 구해서 이때 mid초의 이미지를 s, e와 각각 비교해서 같은지 다른지를 판별한다. 만약 s와 mid가 다르다면 mid이전에 ppt가 변환된것이므로 s와 mid초 사이에서 같은 과정을 반복한다. 그리고 e와 mid가 다르다면 mid이후에 ppt가 변환된 것이므로 mid초와 e초 사이에서 같은 과정을 반복했다. 그렇게해서 가장 처음에 동영상의 시작부분과 끝부분을 초기 입력값으로 넣으면 과정이 끝이 난다.
NLTK를 활용한 인공지능 문제생성

문제생성 기능은 기본적으로 Sentence가 존재해야 한다. 우리는 이 Sentence라는 데이터를 가지기 위해 Python의 라이브러리인 pytube를 이용하여 Youtube 영상의 caption을 추출하였다. 그리고 NLTK의 한 분류인 konlpy인 한국어 자연어 처리모듈 중, Komoran 클래스를 이용하여 고유명사를 추출하였고, 불필요한 불용어를 단어사전으로 정리하였다. 또한 영문으로 구성된 단어, 혹은 고유명사가 연속적으로 등장하는 경우 (예를 들어, Java Script, gradient descent, 컴퓨터 프로그래밍 등등) 한 단어로 묶어 패턴을 분석하면서 Answer로 가질 수 있는 최적의 Keyword 를 뽑아내었다. 사용자에게는 이 Keyword가 비워진 Sentence를 제공하고 답을 찾는 과정을 통해 영상을 학습하는데 도움을 줄 수 있다.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published