Skip to content

calocenrieti/WoLNamesBlackedOut

Repository files navigation

WoLNamesBlackedOut

概要

FinalFantasy XIV(FF14)のキャプチャ動画からユーザ名を黒塗りする動画編集アプリです。
MP4の動画を取り込み、Ultralytics YOLOv8でユーザ名を物体検出しています。
動画の取り込み、書き出しはFFmpegを利用しています。
UIにはFletを利用させていただいています。
EXE化には、pyinstallerを利用させていただいています。

動作環境

Windows11
NVIDIA Geforce 2060以上を推奨(CUDA、NVENC利用)
AMD Radeonでも動作すると思われる。未確認(ONNX、AMF利用)
Python3.11
Windowsでの実行EXEファイルのダウンロードはこちらから
ダウンロード

コード利用上の注意点

次のファイルはファイルサイズ制限の問題から、githubではダミーファイルを置いています。

  • my_yolov8m.pt
  • my_yolov8m.onnx

ファイルが必要であれば、googleドライブよりダウンロード願います。
ダウンロード

ffmpegのバイナリ(./ffmpeg/bin/)もファイルサイズ制限からgithubにありません。
必要であれば、次のアドレスからダウンロードください。
Windows builds by BtbN

pyinstallerによるexe化

pyinstaller main.spec
exe実行時、起動(解凍)に時間を掛けたくなかったので、単体ファイルにはしていません。 ffmpegについてはexe化ではコピーしておらず、手でdist以下にフォルダコピーしています。

Ultralytics YOLOv8での学習

以下を参考に学習しています。 https://docs.ultralytics.com/modes/train/#key-features-of-train-mode
yolo_train.py

import os
os.environ['KMP_DUPLICATE_LIB_OK']='TRUE'   #エラー対策

from ultralytics import YOLO
model = YOLO('my_yolov8m.yaml')
model = YOLO("yolov8m.pt")

if __name__ == "__main__":
    # Train the model using the 'coco128.yaml' dataset for 3 epochs
    results = model.train(data='data.yaml',epochs=2000,batch=16,device=0,imgsz=1280,save_period=10,patience=150)

    # Evaluate the model's performance on the validation set
    results = model.val()

認識する物体はユーザ名の1つでよかったので、1つに編集しています。
my_yolov8m.yaml(抜粋)

# Parameters
# nc: 80 # number of classes
nc: 1 # number of classes

画像とアノテーションのフォルダ指定。coco形式であったものをyolo形式に変換していたため、このようなフォルダ名になっています。環境に合わせて指定ください。
data.yaml

path: D:\coco_converted # dataset root directory
train: images/train2017 # training images (relative to 'path')
val: images/val2017 # validation images (relative to 'path')
test: # optional test images
names:
    0: pc_name

アノテーション

アノテーションには、CVATを利用しました。
セルフホストでの個人利用はフリーとなっています。
dockerで利用しました。

About

FF14の動画からユーザ名を黒塗りするアプリ

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages