Skip to content

Latest commit

 

History

History
364 lines (275 loc) · 9.41 KB

INSTALL_KO.md

File metadata and controls

364 lines (275 loc) · 9.41 KB

How to Install VMeta


본 문서는 local 환경에서의 VMeta 설치 방법에 대해 기술합니다.
Windows10를 기준으로 작성되었습니다.

최종 수정 : 2022.10.21


Docs Map

  1. Get Project File
  2. Install Python
  3. Install Libraries
  4. Set up MySQL
  5. Set up config.py


1. Get Project File

자신의 Workspace에 프로젝트 파일을 다운로드합니다. 이 문서에서는 Workspace의 위치를 E:\Workspace로 가정합니다.

C:\ > cd E:/Workspace
E:\Workspace > git clone https://github.com/HSTACK-2022/VideoMetaSystem.git
E:\Workspace > cd VideoMetaSystem



2. Install Python

  • Install

    Download Link
    VMeta는 Python 3.8.9 버전을 사용합니다.
    프로젝트 내 라이브러리와의 충돌을 방지하기 위해 3.8.* ~ 3.9.* 버전의 설치를 권장합니다.
    Python install steps


  • Setup Virtual Env

    Official Docs
    프로젝트 실행을 위한 가상환경을 설정합니다.

     E:\Workspace\VideoMetaSystem > python -m venv venv (venv is your virtualenv name)
     E:\Workspace\VideoMetaSystem > .\venv\Scripts\activate.bat
     (venv) E:\Workspace >
    

3. Install Libraries

VMeta에 사용되는 라이브러리들을 설치합니다.

  • Ffmpeg

    Download Link
    영상에서의 음원 추출을 위해 Ffmpeg을 설치합니다.
    본 프로젝트는 4.4.1 버전을 사용하였으나, 3.* 이상의 버전이면 호환 가능합니다.
    ffmpeg install

    ${Workspace}\VideoMetaSytem 에 압축 파일을 해제하고, 환경 변수를 등록합니다.
    setup $PATH

    VideoMetaSystem 하위의 구조가 아래와 같아야 합니다.

     (venv) E:\Workspace\VideoMetaSystem > dir
     E 드라이브의 볼륨: 
     볼륨 일련 번호: 
    
     E:\Workspace\VideoMetaSystem 디렉터리
    
     2022-10-06  오후 03:24    <DIR>          .
     2022-10-06  오후 03:24    <DIR>          ..
     2022-10-06  오후 02:42             6,076 .gitignore
     2022-10-06  오후 02:42    <DIR>          DJANGO
     2022-04-15  오전 05:13    <DIR>          ffmpeg-5.0.1-full_build
     2022-10-06  오후 02:43    <DIR>          FLASK
     2022-10-06  오후 02:43            35,823 LICENSE
     2022-10-06  오후 02:43            14,735 README.md
     2022-10-06  오후 02:43    <DIR>          report
     2022-10-06  오후 03:11    <DIR>          venv
                    3개 파일              56,634 바이트
                    7개 디렉터리  12,588,204,032 바이트 남음
    

  • Tesseract

    Official Docs / Download link
    OCR을 사용하기 위해 Tesseract를 설치합니다.
    공식 문서의 Windows 부분을 참고하여 다운로드 합니다.
    Tesseract download

    install 파일을 다운로드 한 후, 설치 가이드에 따라 설치를 진행합니다.
    5의 Set up config.py를 진행하기 위해, Tesseract의 경로를 기억해주시기 바랍니다.


  • Java

    Download link
    JPype1의 정상적인 사용을 위해 Java를 다운로드합니다.
    프로젝트 내 라이브러리와의 충돌을 방지하기 위해 JDK 11의 설치를 권장합니다.
    JAVA download

    install 파일을 다운로드 한 후, 설치 가이드에 따라 설치를 진행합니다.
    이후 시스템 환경 변수를 설정합니다.
    그림3

    만약 JAVA_HOME 환경변수가 없다면 새로 생성합니다.


  • requirements.txt

    requirements.txt에 있는 라이브러리들을 설치합니다.

     (venv) E:\Workspace\VideoMetaSystem > pip install -r requirements.txt
    

  • special requirements

    subprocess에서의 정상 동작을 위해 특정 라이브러리들은 가상환경이 아닌 곳에도 설치합니다.

     (venv) E:\Workspace\VideoMetaSystem > deactivate
     E:\Workspace\VideoMetaSystem > pip install -r special_requirements.txt
    

    또한, 일부 라이브러리는 git에서 별도로 가져와 사용합니다.
    pykospacing : 한국어 전처리에 이용합니다.
    background : uploadApi를 비동기적으로 실행하기 위해 사용합니다.

     (venv) E:\Workspace\VideoMetaSystem > pip install git+https://github.com/haven-jeon/PyKoSpacing.git
     (venv) E:\Workspace\VideoMetaSystem > pipenv install background
    



4. Set up MySQL

프로젝트 DB를 설정합니다.
컴퓨터에 MySQL이 설치되어 있다고 가정합니다.

  • hstackDB 생성

     CREATE DATABASE hstackDB;
    
  • 메타데이터 테이블 생성

     use hstackDB;
     
     CREATE TABLE videopath (
     	id int PRIMARY KEY AUTO_INCREMENT,
     	title VARCHAR(50),
     	videoAddr VARCHAR(200),
     	audioAddr VARCHAR(200),
     	textAddr VARCHAR(200),
     	imageAddr VARCHAR(200),
     	extracted int,
     	password VARCHAR(10)
     );
    
     CREATE TABLE metadata (
     	id int PRIMARY KEY,
     	title VARCHAR(50),
     	presenter VARCHAR(50),
     	category VARCHAR(20),
     	narrative VARCHAR(30),
     	presentation VARCHAR(10),
     	videoLength VARCHAR(10),
     	videoFrame VARCHAR(10),
     	videoType VARCHAR(5),
     	videoSize VARCHAR(10),
     	uploadDate DATE,
     	voiceManRate FLOAT,
     	voiceWomanRate FLOAT,
     	category_percent VARCHAR(30),
     	FOREIGN KEY (id) REFERENCES videopath(id)
     );
    
     CREATE TABLE keywords (
     	id int,
     	keyword VARCHAR(10),
     	expose int,
     	sysdef int,
     	percent float,
     	PRIMARY KEY (id, keyword),
     	FOREIGN KEY (id) REFERENCES videopath(id)
     );
    
     CREATE TABLE timestamp (
     	id int,
     	time VARCHAR(10),
     	subtitle VARCHAR(100),
     	expose int,
     	sysdef int,
     	PRIMARY KEY (id, time),
     	FOREIGN KEY (id) REFERENCES videopath(id)
     );
    
  • 모니터링 테이블 생성

     use hstackDB;
    
     CREATE TABLE SearchSatisfy (
     	val int PRIMARY KEY,
     	cnt int
     );
    
     CREATE TABLE upload_time (
     	id int PRIMARY KEY,
     	time float,
     	size float,
     	FOREIGN KEY (id) REFERENCES videopath(id)
     );
    
     CREATE TABLE total_search (
     	tKeyword VARCHAR(50) PRIMARY KEY,
     	cnt int
     );
    
     CREATE TABLE title_search (
     	tiKeyword VARCHAR(50) PRIMARY KEY,
     	cnt int
     );
    
     CREATE TABLE presenter_search (
     	pKeyword VARCHAR(50) PRIMARY KEY,
     	cnt int
     );
    
     CREATE TABLE keyword_search (
     	kKeyword VARCHAR(50) PRIMARY KEY,
     	cnt int
     );
    
  • SearchSatisfy를 위한 데이터 추가

     INSERT INTO searchSatisfy (val, cnt) VALUE (1, 0);
     INSERT INTO searchSatisfy (val, cnt) VALUE (2, 0);
     INSERT INTO searchSatisfy (val, cnt) VALUE (3, 0);
     INSERT INTO searchSatisfy (val, cnt) VALUE (4, 0);
     INSERT INTO searchSatisfy (val, cnt) VALUE (5, 0);
    



5. Set up config.py

자신의 DB와 API Key를 이용해 설정파일을 수정합니다.

  • FLASK\hstack\hstack
     # in __init__.py
     # line 15
     
     app.config['SQLALCHEMY_DATABASE_URI'] = "mysql://root:${YOUR_DB_PASSWORD}@localhost/hstackdb"
    
     # in config.py
     
     import  os
     import  platform
     
     from  flask_sqlalchemy  import  SQLAlchemy
     
     OS = platform.system()
     BASE_DIR = os.path.dirname(__file__)
     UPLOAD_FILE_DIR = os.path.join('.', 'media', 'Uploaded')
     UPLOAD_LOG_DIR = os.path.join('.', 'logs')
    
     STT_API_KEY = {
     	YOUR_ETRI_API_KEY
     	(We need at least 5 Keys.)
     }
     
     db = {
     'user' : 'root',
     'password' : ${YOUR_DB_PASSWORD},
     'host' : 'localhost',
     'port' : 3306,
     'database' : 'hstackDB'
     }
     
     DB = SQLAlchemy()
    
     DB_URL = f"mysql+mysqlconnector://{db['user']}:{db['password']}@{db['host']}:{db['port']}/{db['database']}?charset=utf8"
    

  • FLASK\hstack\uploadApi
     # in __init__.py
     # line 17
     
     app.config['SQLALCHEMY_DATABASE_URI'] = "mysql://root:${YOUR_DB_PASSWORD}@localhost/hstackdb"
    
     # in config.py
     
     import  os
     import  platform
     
     from  flask_sqlalchemy  import  SQLAlchemy
     
     OS = platform.system()
     BASE_DIR = os.path.dirname(__file__)
     UPLOAD_FILE_DIR = os.path.join('.', 'media', 'Uploaded')
     UPLOAD_LOG_DIR = os.path.join('.', 'logs')
    
     STT_API_KEY = {
     	YOUR_ETRI_API_KEY
     	(We need at least 5.)
     }
     
     db = {
     'user' : 'root',
     'password' : ${YOUR DB PASSWORD},
     'host' : 'localhost',
     'port' : 3306,
     'database' : 'hstackDB'
     }
     
     DB = SQLAlchemy()
    
     DB_URL = f"mysql+mysqlconnector://{db['user']}:{db['password']}@{db['host']}:{db['port']}/{db['database']}?charset=utf8"
    
     # in sceneText.py
     # line 47
     
     pytesseract.pytesseract.tesseract_cmd = ${YOUR_TESSERACT_LOCATION}