AI Video Editing
文字起こしに基づくカット、自動リフレーミング、被写体マスク、オブジェクト除去、墨消しを取り上げ、AI動画編集を支えるモデルと自動編集が失敗するケースを解説します。
AI動画編集とは、機械学習を使って、録画映像のカット、配置、変更作業を自動化または支援することです。モデルは会話を文字起こしし、ショットの境界を特定し、シーン内の被写体を追跡して背景から分離し、置き換え用のピクセルを生成します。そのため、インタビューの字幕付けや、横長動画をスマートフォン画面用にリフレームするなど、以前はフレームごとの作業に何時間もかかっていた仕事を、数分で行えるようになりました。この用語は、従来の編集ソフトに搭載された支援機能と、未編集の録画から完成クリップを自動生成するツールの両方を指します。
編集でAIが担う作業#
Adobe Premiere Pro、DaVinci Resolve、文字起こしを中心としたエディターのDescriptなどの編集ソフトには、これらの機能の多くが組み込まれています。
- 音声テキスト化による編集:タイムラインに同期した文字起こしを使い、編集者はテキストから文を削除すると、対応する映像も削除できます。
- 字幕:同じ文字起こしから字幕の草案を作成し、編集者が表現の正確さ、話者の識別、タイミングを確認します。
- シーン検出: モデルが長時間の録画や編集済みファイル内のカットを検出し、個々のショットに分割します。
- 自動リフレーミング: 被写体を追跡して、移動中も縦長または正方形のクロップ内に収めます。これにより、1つのワイドスクリーン版からソーシャルプラットフォーム向けのバージョンを作成できます。
- マスキングと物体除去:セグメンテーションで人物や物体を分離し、個別にカラーグレーディングしたり削除したりできます。インペインティングは、フレーム間で一貫性を保ちながら空白部分を補完します。
- 行動認識によるハイライト抽出:モデルがゴールやダンクなどの重要なプレーを検出し、スポーツ放送局はプレーから数分以内にハイライト映像を編集できます。
- フレーム補間によるスローモーション:モデルが中間フレームを合成するため、通常速度で撮影された映像もカクつかずにスローモーション再生できます。
- 音声のクリーンアップ: 音声強調モデルが、録音環境が整っていない場合に会話音声から背景ノイズや部屋の反響を除去します。
- データプライバシーのためのマスキング:映像を共有する前に、顔、人物、ナンバープレートを検出してぼかします。
機能を支えるビジョンモデル#
多くの視覚編集機能は、3つのコンピュータービジョンタスクを連結して使います。物体検出は各フレームの被写体を見つけ、その周囲にバウンディングボックスを描画します。物体追跡は、安定したIDを用いてフレーム間の検出結果を関連付けます。これにより、ショット内を歩く同じ人物にリフレームやぼかしを追従させられます。効果を適用する際に被写体の正確な輪郭が必要な場合は、インスタンスセグメンテーションが各物体のピクセル単位のマスクを提供します。これら3つはすべて、映像を変更せずに内容を記述する動画理解モデルです。編集機能は、変更箇所を決める前にこれらのモデルを実行します。
残りの編集は生成モデルが担います。インペインティングモデルは不要な物体を削除し、動画生成モデルはショットのスタイルを変更したり、数秒延長したり、実在しなかった映像を作成したりします。自動編集が失敗しやすい場面には、速い動きやモーションブラー、被写体同士の前後交差、追跡を終了すべきシーン切り替え、小さな被写体や一部しか見えない被写体があります。同じ技術は録画映像の見え方を変えることもできるため、ディープフェイクも生成できます。公開者は、どのツールでファイルが編集されたかを記録するContent Credentialsを添付できます。
マスキングの自動化#
マスキングは、イベント、街頭、職場の映像を公開するチームが自動化しやすい編集の1つです。Ultralyticsの物体ぼかしソリューションは、トラッキング機能付きのYOLO26検出器を各フレームに実行し、選択したクラスの各ボックスにぼかしを適用します。COCOで事前学習されたモデルのクラス0は「person」です。
import cv2
from ultralytics import solutions
cap = cv2.VideoCapture("https://github.com/ultralytics/assets/releases/download/v0.0.0/decelera_portrait_min.mov")
w = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))
h = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))
fps = cap.get(cv2.CAP_PROP_FPS)
writer = cv2.VideoWriter("blurred.mp4", cv2.VideoWriter_fourcc(*"mp4v"), fps, (w, h))
# YOLO26で人物(COCOクラス0)を検出し、すべてのフレームの各ボックスにぼかしを適用します
blurrer = solutions.ObjectBlurrer(model="yolo26n.pt", classes=[0])
while cap.isOpened():
success, frame = cap.read()
if not success:
break
results = blurrer(frame)
writer.write(results.plot_im)
cap.release()
writer.release()出力のblurred.mp4では、検出されたすべての人物がぼかされ、レビュー用にラベル付きボックスで囲まれます。また、blur_ratio(デフォルト値0.5)でぼかしの強度を設定します。OpenCVが書き出すのは動画フレームのみであるため、元の音声は編集ソフトまたはFFmpegで追加し直す必要があります。フレームの端で見切れている人や、珍しい角度から映っている人は、検出を見逃しやすい対象です。検出を見逃したフレームでは、その人にぼかしが適用されず、出力映像にそのまま残ります。










