비디오 검색 시스템을 구축하는 4단계

말 그대로 이미지에 따라 영상을 검색하는 것은 저장소에서 입력한 이미지와 비슷한 프레임을 포함하는 영상을 검색하는 과정이다.관건적인 절차 중 하나는 영상을 삽입으로 바꾸는 것이다. 즉, 관건적인 프레임을 추출하고 그 특징을 벡터로 바꾸는 것이다.
이제 우리는 어떻게 영상 검색 시스템을 구축하는지 깊이 있게 이해합시다.

1. 시스템 개요


다음 그림은 이러한 비디오 검색 시스템의 일반적인 작업 흐름을 보여 줍니다.

비디오를 가져올 때 OpenCV 라이브러리를 사용하여 각 비디오를 프레임으로 절단하고 이미지 특징 추출 모델인 VGG를 사용하여 키프레임의 벡터를 추출한 다음 추출된 벡터(삽입)를 Milvus에 삽입합니다.우리는 Minio를 사용하여 원본 비디오를 저장하고, Redis를 사용하여 비디오와 벡터 간의 상관성을 저장합니다.
영상을 검색할 때, 우리는 같은 VGG 모델을 사용하여 입력 이미지를 특징 벡터로 변환하고, 이를 Milvus에 삽입하여 가장 비슷한 벡터를 찾습니다.그런 다음 Redis의 상관성에 따라 인터페이스의 Minio에서 해당 비디오를 검색합니다.

2. 데이터 준비


본고에서 우리는 Tumblr에서 약 100000개의 GIF 파일을 샘플 데이터 집합으로 사용하여 끝에서 끝까지의 영상 검색 솔루션을 구축한다.자신의 비디오 저장소를 사용할 수 있습니다.

3. 배포


본고에서 영상 검색 시스템을 구축하는 코드는 GitHub에 있다.
1단계: Docker 이미지를 구축합니다.
비디오 검색 시스템은 Milvus v0.7.1 docker, Redis docker, Minio docker, 프런트엔드 인터페이스 docker와 백엔드 API docker가 필요합니다.프런트엔드 인터페이스 docker와 백엔드 API docker를 직접 구축해야 하며, docker Hub에서 다른 세 개의 docker를 직접 가져올 수 있습니다.
# Get the video search code
$ git clone -b 0.10.0 https://github.com/JackLCL/search-video-demo.git

# Build front-end interface docker and api docker images
$ cd search-video-demo & make all
2단계: 환경을 구성합니다.
여기에서 우리는 docker compose를 사용한다.yml은 상술한 다섯 개의 컨테이너를 관리하는 것을 책임진다.dockercompose의 설정은 다음 표를 보십시오.yml:

위 표의 IP 주소 192.168.1.38은 본고가 영상 검색 시스템을 구축하는 데 전문적으로 사용하는 서버 주소입니다.서버 주소로 업데이트해야 합니다.
Milvus, Redis, Minio를 위한 메모리 디렉터리를 수동으로 만들고 docker compose에 해당하는 경로를 추가해야 합니다.yml.이 예제에서는 다음 디렉토리를 만들었습니다.
/mnt/redis/data /mnt/minio/data /mnt/milvus/db
Docker compose에서 Milvus, Redis, Minio를 구성할 수 있습니다.yml은 다음과 같습니다.

3단계: 시스템을 시작합니다.
수정된 docker compose를 사용합니다.yml에서 비디오 검색 시스템에 사용되는 다섯 개의 docker 용기를 시작합니다.
$ docker-compose up -d
그리고 다섯 개의 docker 용기가 제대로 시작되었는지 확인하기 위해dockercomposeps를 실행할 수 있습니다.다음 화면 캡처는 성공적으로 시작된 일반적인 인터페이스를 보여 줍니다.

데이터베이스에 동영상이 없지만 비디오 검색 시스템을 성공적으로 구축했습니다.
4단계: 비디오 가져오기.
시스템 저장소의 deploy 디렉터리에 import\u 데이터가 있습니다.py, 비디오 가져오기 스크립트입니다.비디오 파일의 경로와 가져오기 간격만 업데이트하면 스크립트를 실행할 수 있습니다.

data\u path: 가져올 비디오의 경로입니다.
시간잠(0.5): 비디오 가져오기 간격입니다.비디오 검색 시스템을 구축하는 데 사용되는 서버에는 96개의 CPU 코어가 있습니다.따라서 간격을 0.5초로 설정하는 것이 좋습니다.서버의 CPU 코어가 적은 경우 간격을 더 큰 값으로 설정합니다.그렇지 않으면 가져오기 프로세스가 CPU에 부담을 주고 좀비 프로세스를 생성합니다.
import_data를 실행합니다.py 비디오 가져오기.
$ cd deploy
$ python3 import_data.py
비디오를 가져오면 자신의 비디오 검색 시스템을 사용할 수 있습니다!

4. 인터페이스 디스플레이


브라우저를 열고 192.168.1.38:8001을 입력하여 비디오 검색 시스템의 인터페이스를 보십시오. 아래와 같습니다.

저장소의 모든 비디오를 보려면 오른쪽 상단의 기어 스위치를 전환합니다.

왼쪽 상단의 업로드 상자를 클릭하여 대상 이미지를 입력합니다.다음 그림과 같이 시스템은 가장 유사한 프레임이 포함된 비디오를 반환합니다.

다음은 즐겁게 놀고 동영상 검색 시스템을 구축하자!

좋은 웹페이지 즐겨찾기