Scene Transition Detection 라이브러리 PySceneDetect 사용 영상을 구성하는 프레임들 중 연속된 프레임의 색상, 채도, 명도 등을 비교. 그 차이가 임계값 초과인 경우 해당 지점을 장면의 전환점으로 식별 전환점을 기준으로 장면을 자동 분할하여 클립 영상 생성.
시선 (x, y) 좌표와 동공 고정 여부 (Fixation/Saccade) 고려 영상 내부의 한 응시점에 동공이 고정된 경우 집중으로 판단 장면별 집중률 계산, 평균 집중률이 70%이상인 장면 선정
장면별로 많은 사람들이 공통으로 느낀 감정과 그 비율 계산, 감정 감지율이 20%이상인 장면 선정
매 프레임마다 등장하는 객체들의 바운딩 박스 좌표 저장. 시선 클러스터링에는 DBSCAN 알고리즘 사용. 다량의 시선 데이터를 밀도 기반으로 클러스터링 가장 많은 시선을 포함하는 클러스터의 바운딩 박스 계산하고 '시선이 가장 집중된 구역'으로 선정 이후 시선 집중 구역과 객체의 바운딩 박스의 교차 정도 계산, 가장 많이 교차하는 객체를 씬스틸러로 선정
OpenCV를 사용하여 씬스틸러를 확대한 9:16비의 쇼츠 영상 생성
장면별 집중률과 감정 감지율 점수화, 영상 장르와 일치하는 감정 점수에는 가중치 부여 모든 장면을 중요도 점수를 기준으로 정렬하고 상위 5개의 장면을 합쳐 하이라이트 영상으로 재편집. ffmpeg, moviepy 사용
1.1.mp4
2.1.mp4
3.1.mp4
4.1.mp4
PySceneDetect : https://github.com/Breakthrough/PySceneDetect
Yolov5 : https://github.com/capstone-nineteen/seeyoutube-backend-yolov5.git