Katna는 지루하고 오류가 발생하기 쉬운 비디오 키/최상의 프레임 추출, 비디오 압축, ML을 사용하여 이미지 자르기 및 크기 조정 등 시간이 많이 소요되는 수동 작업을 자동화합니다.
즉, 다음 작업이 있는 경우 Katna 라이브러리 사용을 고려할 수 있습니다.
더 작은 크기로 압축하려는 비디오/비디오가 있습니다. (예: 1GB 크기의 비디오가 있지만 가능한 한 작게 압축하려고 합니다.)
대상 해상도로 스마트하게 크기를 조정하려는 이미지가 있습니다. (예: 500x500, 1080p(1920x1080) 등)
입력 이미지에서 특정 종횡비(예: 4:3)의 자르기를 추출하려고 합니다. (예: 해상도 1920x1080(16:9 화면비 이미지) 이미지에서 화면비 1:1 자르기 가져오기)
비디오 크기를 특정 종횡비(예: 16:9(가로))로 조정하고 1:1(정사각형)로 조정하려고 합니다. 이 기능은 현재 실험적 이므로 Google mediapipe 라이브러리를 추가로 컴파일하고 구성해야 합니다.
Katna는 두 개의 모듈로 나뉩니다.
이 모듈은 키 프레임 추출 및 비디오 압축 작업을 처리합니다.
키프레임은 비디오 스트림의 대표 프레임, 즉 비디오 콘텐츠에 대한 가장 정확하고 간결한 요약을 제공하는 프레임으로 정의됩니다.
키프레임 추출을 위한 프레임 추출 및 선택 기준
비디오 압축은 ffmpeg 라이브러리를 사용하여 처리됩니다. 자세한 내용은 Katna.video_compressor 모듈 섹션에서 읽을 수 있습니다.
Katna 버전 0.8.0부터 Google의 Mediapipe 프로젝트를 통해 스마트 크기 조정 기능을 동영상으로 확장하고 있습니다. 이에 대한 자세한 내용은 [Katna를 사용한 비디오 스마트 크기 조정](https://katna.readthedocs.io/en/latest/understanding_katna.html#katna-video-resize) 문서를 참조하세요. 이 기능은 선택적 실험적 기능입니다. 이후 버전에서는 제거/수정될 수 있습니다. 또한 이 기능이 작동하려면 Google의 Mediapipe 라이브러리, 특히 autoflip 바이너리도 설치해야 합니다. katna와 함께 사용할 미디어파이프를 설치하고 구성하는 방법은 링크를 참조하세요.
이 모듈은 스마트 자르기 및 이미지 크기 조정과 관련된 작업을 처리합니다.
스마트 이미지 크롭은 모듈이 이미지를 자르면서 가장 좋은 부분이나 누군가가 더 집중하는 영역을 식별하고 이 정보를 해석하는 방식으로 이루어집니다.
작물 추출 및 선택 기준
스마트 자르기와 유사하게 Katna 이미지 모듈은 스마트 이미지 크기 조정 기능을 지원합니다. 입력 이미지가 주어지면 입력 이미지와 대상 이미지의 종횡비가 동일한 경우 간단한 크기 조정을 통해 이미지 크기를 대상 해상도로 조정할 수 있습니다. 가로 세로 비율이 스마트 이미지 크기 조정과 다른 경우 먼저 대상 해상도에서 가장 좋은 품질의 자르기를 자른 다음 대상 해상도에서 이미지 크기를 조정합니다. 이렇게 하면 입력 이미지가 실제로 왜곡되지 않고 이미지 크기가 조정됩니다. 입력 및 출력 이미지의 가로 세로 비율이 동일하지 않으면 katna image_resize로 인해 이미지 내용이 일부 손실될 수 있습니다.
지원되는 비디오 및 이미지 파일 형식 ######################################
.mp4,.mov,.avi 등과 같은 모든 주요 비디오 형식과 .jpg, .png, .jpeg 등과 같은 이미지 형식이 지원됩니다.
개발 파이프라인에 더 많은 선택 기능이 있습니다.
자식 설치
Anaconda 또는 Miniconda Python 설치
터미널 열기
여기에서 레포를 복제하세요 https://github.com/keplerlab/Katna.git
저장소를 복제한 디렉터리로 디렉터리를 변경합니다.
$cd path_to_the_folder_repo_cloned
Anaconda Python 배포를 사용하는 경우 새 아나콘다 환경을 만듭니다.
conda create --name katna python=3.7
source activate katna
설정을 실행합니다.
python setup.py install
Katna 버전 0.4.0부터 Katna 비디오 모듈은 Python 다중 처리 모듈을 사용하여 다중 처리를 사용하도록 최적화되었습니다. Windows의 다중 처리 제한으로 인해 Windows 시스템에서 메인 모듈을 안전하게 가져오려면 프로그램의 "진입점"이 다음과 같이 name == ' main '으로 래핑되어 있는지 확인하세요.
from Katna.video import Video
if __name__ == "__main__":
vd = Video()
# your code
자세한 내용은 https://docs.python.org/2/library/multiprocessing.html#windows를 참조하세요.
입력 이미지의 크기가 매우 큰 경우( 2000x2000 보다 큼) 자동 스마트 자르기를 수행하는 데 시간이 오래 걸릴 수 있습니다. 이 문제가 발생하면 down_sample_factor를 기본값 8에서 더 큰 값(예: 16 또는 32)으로 변경하는 것이 좋습니다. 이렇게 하면 처리 시간이 크게 단축됩니다.
"AttributeError: 'cv2.cv2' 모듈에 'saliency' 속성이 없습니다." 오류가 표시되는 경우. "python -m pip uninstall opencv-contrib-python" 명령을 실행하여 opencv-contrib를 제거한 다음 명령을 실행하여 다시 설치합니다.
python -m pip install opencv-contrib-python
"FileNotFoundError: Frozen_east_text_Detection.pb 파일을 찾을 수 없습니다."가 표시되는 경우. Python 쉘을 열고 아래 명령을 따르십시오.
from Katna.image_filters.text_detector import TextDetector
td = TextDetector()
td.download()
Windows에서는 일부 모듈을 설치하는 동안 쓰기 권한으로 인해 실패하므로 anaconda로 설치하는 경우 anaconda에 관리자 권한이 있는지 확인하십시오.
"RuntimeError: ffmpeg exe를 찾을 수 없습니다"라는 메시지가 표시되는 경우. 시스템에 ffmpeg를 설치하거나 IMAGEIO_FFMPEG_EXE 또는 FFMPEG_EXE 환경 변수를 ffmpeg 바이너리 경로로 설정하세요. 일반적으로 ffmpeg는 imageio-ffmpeg 패키지를 사용하여 설치됩니다. 사이트 패키지 폴더 내의 imageio_ffmpeg-*.egg 폴더를 확인하세요. 바이너리 폴더 안에 ffmpeg 파일이 있어야 합니다. 이 파일에 적절한 읽기/실행 권한 집합이 있는지 확인하고 추가로 경로를 설정하세요. 환경 변수에.
Python 버전 3.6 및 3.7에서 대량 비디오 키프레임 추출을 실행할 때 Katna 버전 0.8.2 이하에는 알려진 메모리 누수 문제가 있습니다. 이는 Python 3.6 및 3.7에서만 관찰되는 다중 처리 버그입니다. katna 버전 0.9 이상에서는 수정되었습니다. 많은 수의 비디오에서 키프레임 추출 코드를 실행하고 있고 메모리 문제가 있는 경우 katna 버전을 버전 0.9 이상으로 업그레이드하도록 요청하십시오. 여전히 이전 버전의 katna를 사용하려면 Python 버전을 3.8 이상으로 업그레이드하는 것이 좋습니다.
Katna 비디오 및 이미지 모듈의 데이터를 처리하기 위해 작성기 프레임워크를 추가했습니다. 이 버전은 또한 이 문제와 이 문제로 보고된 메모리 누수 문제를 해결합니다.
video.extract_video_keyframes 및 video.extract_video_keyframes_from_dir에는 추가 작성기 개체가 필요합니다. 기본적으로 KeyFrameDiskWriter는 Katna.writer 모듈에서 사용할 수 있습니다. 요구 사항에 따라 작성기 프레임워크를 확장할 수 있습니다.
image.crop_image 및 image.crop_image_from_dir에는 추가 작성기 개체가 필요합니다. 기본적으로 ImageCropDiskWriter는 Katna.writer 모듈에서 사용할 수 있습니다. 요구 사항에 따라 Writer 프레임워크를 확장할 수 있습니다.
업데이트된 예제에 대한 설명서는 여기에서 참조하세요. 링크
이 버그 수정 버전은 이 문제를 해결합니다. 링크
드물게 ffmpeg를 사용하여 비디오를 분할할 때 읽을 수 없고 예외 링크가 발생하는 문제가 해결되었습니다.
Google의 mediapipe Autoflip 코드 예제를 사용하여 비디오 자동 자르기/크기 조정에 대한 실험적 지원을 추가했습니다.
image_module Crop_image 및 Crop_image_from_dir 메서드에서 잘못된 사양 자르기가 반환되는 버그가 수정되었습니다.
Katna.video 모듈에 비디오 압축에 대한 지원이 추가되었습니다.
Katna.image 모듈에 스마트 이미지 크기 조정에 대한 지원이 추가되었습니다.
버전 0.5.0에서는 키프레임 추출에 사용되는 Katna.video 모듈 내부의 일부 공개 함수 이름을 변경했습니다.