feat: add template json

This commit is contained in:
imeepos
2025-08-15 13:41:17 +08:00
parent c37fff0d09
commit 247eebef9e
261 changed files with 89699 additions and 0 deletions

588
cargos/tvai-v2/Cargo.lock generated Normal file
View File

@@ -0,0 +1,588 @@
# This file is automatically @generated by Cargo.
# It is not intended for manual editing.
version = 4
[[package]]
name = "android-tzdata"
version = "0.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0"
[[package]]
name = "android_system_properties"
version = "0.1.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311"
dependencies = [
"libc",
]
[[package]]
name = "autocfg"
version = "1.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8"
[[package]]
name = "bitflags"
version = "2.9.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1b8e56985ec62d17e9c1001dc89c88ecd7dc08e47eba5ec7c29c7b5eeecde967"
[[package]]
name = "bumpalo"
version = "3.19.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "46c5e41b57b8bba42a04676d81cb89e9ee8e859a1a66f80a5a72e1cb76b34d43"
[[package]]
name = "cc"
version = "1.2.32"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2352e5597e9c544d5e6d9c95190d5d27738ade584fa8db0a16e130e5c2b5296e"
dependencies = [
"shlex",
]
[[package]]
name = "cfg-if"
version = "1.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9555578bc9e57714c812a1f84e4fc5b4d21fcb063490c624de019f7464c91268"
[[package]]
name = "chrono"
version = "0.4.41"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c469d952047f47f91b68d1cba3f10d63c11d73e4636f24f08daf0278abf01c4d"
dependencies = [
"android-tzdata",
"iana-time-zone",
"js-sys",
"num-traits",
"serde",
"wasm-bindgen",
"windows-link",
]
[[package]]
name = "core-foundation-sys"
version = "0.8.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b"
[[package]]
name = "errno"
version = "0.3.13"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "778e2ac28f6c47af28e4907f13ffd1e1ddbd400980a9abd7c8df189bf578a5ad"
dependencies = [
"libc",
"windows-sys 0.60.2",
]
[[package]]
name = "fastrand"
version = "2.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be"
[[package]]
name = "getrandom"
version = "0.3.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "26145e563e54f2cadc477553f1ec5ee650b00862f0a58bcd12cbdc5f0ea2d2f4"
dependencies = [
"cfg-if",
"libc",
"r-efi",
"wasi",
]
[[package]]
name = "iana-time-zone"
version = "0.1.63"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b0c919e5debc312ad217002b8048a17b7d83f80703865bbfcfebb0458b0b27d8"
dependencies = [
"android_system_properties",
"core-foundation-sys",
"iana-time-zone-haiku",
"js-sys",
"log",
"wasm-bindgen",
"windows-core",
]
[[package]]
name = "iana-time-zone-haiku"
version = "0.1.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f"
dependencies = [
"cc",
]
[[package]]
name = "itoa"
version = "1.0.15"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c"
[[package]]
name = "js-sys"
version = "0.3.77"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1cfaf33c695fc6e08064efbc1f72ec937429614f25eef83af942d0e227c3a28f"
dependencies = [
"once_cell",
"wasm-bindgen",
]
[[package]]
name = "libc"
version = "0.2.175"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6a82ae493e598baaea5209805c49bbf2ea7de956d50d7da0da1164f9c6d28543"
[[package]]
name = "linux-raw-sys"
version = "0.9.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "cd945864f07fe9f5371a27ad7b52a172b4b499999f1d97574c9fa68373937e12"
[[package]]
name = "log"
version = "0.4.27"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "13dc2df351e3202783a1fe0d44375f7295ffb4049267b0f3018346dc122a1d94"
[[package]]
name = "memchr"
version = "2.7.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "32a282da65faaf38286cf3be983213fcf1d2e2a58700e808f83f4ea9a4804bc0"
[[package]]
name = "num-traits"
version = "0.2.19"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841"
dependencies = [
"autocfg",
]
[[package]]
name = "once_cell"
version = "1.21.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d"
[[package]]
name = "proc-macro2"
version = "1.0.97"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d61789d7719defeb74ea5fe81f2fdfdbd28a803847077cecce2ff14e1472f6f1"
dependencies = [
"unicode-ident",
]
[[package]]
name = "quote"
version = "1.0.40"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d"
dependencies = [
"proc-macro2",
]
[[package]]
name = "r-efi"
version = "5.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f"
[[package]]
name = "rustix"
version = "1.0.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "11181fbabf243db407ef8df94a6ce0b2f9a733bd8be4ad02b4eda9602296cac8"
dependencies = [
"bitflags",
"errno",
"libc",
"linux-raw-sys",
"windows-sys 0.60.2",
]
[[package]]
name = "rustversion"
version = "1.0.22"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d"
[[package]]
name = "ryu"
version = "1.0.20"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f"
[[package]]
name = "serde"
version = "1.0.219"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5f0e2c6ed6606019b4e29e69dbaba95b11854410e5347d525002456dbbb786b6"
dependencies = [
"serde_derive",
]
[[package]]
name = "serde_derive"
version = "1.0.219"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00"
dependencies = [
"proc-macro2",
"quote",
"syn",
]
[[package]]
name = "serde_json"
version = "1.0.142"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "030fedb782600dcbd6f02d479bf0d817ac3bb40d644745b769d6a96bc3afc5a7"
dependencies = [
"itoa",
"memchr",
"ryu",
"serde",
]
[[package]]
name = "shlex"
version = "1.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64"
[[package]]
name = "syn"
version = "2.0.105"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7bc3fcb250e53458e712715cf74285c1f889686520d79294a9ef3bd7aa1fc619"
dependencies = [
"proc-macro2",
"quote",
"unicode-ident",
]
[[package]]
name = "tempfile"
version = "3.20.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e8a64e3985349f2441a1a9ef0b853f869006c3855f2cda6862a94d26ebb9d6a1"
dependencies = [
"fastrand",
"getrandom",
"once_cell",
"rustix",
"windows-sys 0.59.0",
]
[[package]]
name = "tvai-sdk"
version = "0.1.0"
dependencies = [
"chrono",
"serde",
"serde_json",
"tempfile",
]
[[package]]
name = "unicode-ident"
version = "1.0.18"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512"
[[package]]
name = "wasi"
version = "0.14.2+wasi-0.2.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9683f9a5a998d873c0d21fcbe3c083009670149a8fab228644b8bd36b2c48cb3"
dependencies = [
"wit-bindgen-rt",
]
[[package]]
name = "wasm-bindgen"
version = "0.2.100"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1edc8929d7499fc4e8f0be2262a241556cfc54a0bea223790e71446f2aab1ef5"
dependencies = [
"cfg-if",
"once_cell",
"rustversion",
"wasm-bindgen-macro",
]
[[package]]
name = "wasm-bindgen-backend"
version = "0.2.100"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2f0a0651a5c2bc21487bde11ee802ccaf4c51935d0d3d42a6101f98161700bc6"
dependencies = [
"bumpalo",
"log",
"proc-macro2",
"quote",
"syn",
"wasm-bindgen-shared",
]
[[package]]
name = "wasm-bindgen-macro"
version = "0.2.100"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7fe63fc6d09ed3792bd0897b314f53de8e16568c2b3f7982f468c0bf9bd0b407"
dependencies = [
"quote",
"wasm-bindgen-macro-support",
]
[[package]]
name = "wasm-bindgen-macro-support"
version = "0.2.100"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de"
dependencies = [
"proc-macro2",
"quote",
"syn",
"wasm-bindgen-backend",
"wasm-bindgen-shared",
]
[[package]]
name = "wasm-bindgen-shared"
version = "0.2.100"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1a05d73b933a847d6cccdda8f838a22ff101ad9bf93e33684f39c1f5f0eece3d"
dependencies = [
"unicode-ident",
]
[[package]]
name = "windows-core"
version = "0.61.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c0fdd3ddb90610c7638aa2b3a3ab2904fb9e5cdbecc643ddb3647212781c4ae3"
dependencies = [
"windows-implement",
"windows-interface",
"windows-link",
"windows-result",
"windows-strings",
]
[[package]]
name = "windows-implement"
version = "0.60.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a47fddd13af08290e67f4acabf4b459f647552718f683a7b415d290ac744a836"
dependencies = [
"proc-macro2",
"quote",
"syn",
]
[[package]]
name = "windows-interface"
version = "0.59.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bd9211b69f8dcdfa817bfd14bf1c97c9188afa36f4750130fcdf3f400eca9fa8"
dependencies = [
"proc-macro2",
"quote",
"syn",
]
[[package]]
name = "windows-link"
version = "0.1.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5e6ad25900d524eaabdbbb96d20b4311e1e7ae1699af4fb28c17ae66c80d798a"
[[package]]
name = "windows-result"
version = "0.3.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "56f42bd332cc6c8eac5af113fc0c1fd6a8fd2aa08a0119358686e5160d0586c6"
dependencies = [
"windows-link",
]
[[package]]
name = "windows-strings"
version = "0.4.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "56e6c93f3a0c3b36176cb1327a4958a0353d5d166c2a35cb268ace15e91d3b57"
dependencies = [
"windows-link",
]
[[package]]
name = "windows-sys"
version = "0.59.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b"
dependencies = [
"windows-targets 0.52.6",
]
[[package]]
name = "windows-sys"
version = "0.60.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb"
dependencies = [
"windows-targets 0.53.3",
]
[[package]]
name = "windows-targets"
version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973"
dependencies = [
"windows_aarch64_gnullvm 0.52.6",
"windows_aarch64_msvc 0.52.6",
"windows_i686_gnu 0.52.6",
"windows_i686_gnullvm 0.52.6",
"windows_i686_msvc 0.52.6",
"windows_x86_64_gnu 0.52.6",
"windows_x86_64_gnullvm 0.52.6",
"windows_x86_64_msvc 0.52.6",
]
[[package]]
name = "windows-targets"
version = "0.53.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d5fe6031c4041849d7c496a8ded650796e7b6ecc19df1a431c1a363342e5dc91"
dependencies = [
"windows-link",
"windows_aarch64_gnullvm 0.53.0",
"windows_aarch64_msvc 0.53.0",
"windows_i686_gnu 0.53.0",
"windows_i686_gnullvm 0.53.0",
"windows_i686_msvc 0.53.0",
"windows_x86_64_gnu 0.53.0",
"windows_x86_64_gnullvm 0.53.0",
"windows_x86_64_msvc 0.53.0",
]
[[package]]
name = "windows_aarch64_gnullvm"
version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3"
[[package]]
name = "windows_aarch64_gnullvm"
version = "0.53.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "86b8d5f90ddd19cb4a147a5fa63ca848db3df085e25fee3cc10b39b6eebae764"
[[package]]
name = "windows_aarch64_msvc"
version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469"
[[package]]
name = "windows_aarch64_msvc"
version = "0.53.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c7651a1f62a11b8cbd5e0d42526e55f2c99886c77e007179efff86c2b137e66c"
[[package]]
name = "windows_i686_gnu"
version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b"
[[package]]
name = "windows_i686_gnu"
version = "0.53.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c1dc67659d35f387f5f6c479dc4e28f1d4bb90ddd1a5d3da2e5d97b42d6272c3"
[[package]]
name = "windows_i686_gnullvm"
version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66"
[[package]]
name = "windows_i686_gnullvm"
version = "0.53.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9ce6ccbdedbf6d6354471319e781c0dfef054c81fbc7cf83f338a4296c0cae11"
[[package]]
name = "windows_i686_msvc"
version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66"
[[package]]
name = "windows_i686_msvc"
version = "0.53.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "581fee95406bb13382d2f65cd4a908ca7b1e4c2f1917f143ba16efe98a589b5d"
[[package]]
name = "windows_x86_64_gnu"
version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78"
[[package]]
name = "windows_x86_64_gnu"
version = "0.53.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2e55b5ac9ea33f2fc1716d1742db15574fd6fc8dadc51caab1c16a3d3b4190ba"
[[package]]
name = "windows_x86_64_gnullvm"
version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d"
[[package]]
name = "windows_x86_64_gnullvm"
version = "0.53.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0a6e035dd0599267ce1ee132e51c27dd29437f63325753051e71dd9e42406c57"
[[package]]
name = "windows_x86_64_msvc"
version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec"
[[package]]
name = "windows_x86_64_msvc"
version = "0.53.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "271414315aff87387382ec3d271b52d7ae78726f5d44ac98b4f4030c91880486"
[[package]]
name = "wit-bindgen-rt"
version = "0.39.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6f42320e61fe2cfd34354ecb597f86f413484a798ba44a8ca1165c58d42da6c1"
dependencies = [
"bitflags",
]

36
cargos/tvai-v2/Cargo.toml Normal file
View File

@@ -0,0 +1,36 @@
[package]
name = "tvai-sdk"
version = "0.1.0"
edition = "2021"
authors = ["AI Assistant"]
description = "Rust SDK for Topaz Video AI template management and FFmpeg command generation"
license = "MIT"
repository = "https://github.com/example/tvai-sdk"
keywords = ["video", "ai", "ffmpeg", "topaz", "template"]
categories = ["multimedia::video", "api-bindings"]
[workspace]
[dependencies]
serde = { version = "1.0", features = ["derive"] }
serde_json = "1.0"
chrono = { version = "0.4", features = ["serde"] }
[dev-dependencies]
tempfile = "3.0"
[lib]
name = "tvai_sdk"
path = "src/lib.rs"
[[example]]
name = "basic_usage"
path = "examples/basic_usage.rs"
[[example]]
name = "template_management"
path = "examples/template_management.rs"
[[example]]
name = "ffmpeg_generation"
path = "examples/ffmpeg_generation.rs"

293
cargos/tvai-v2/README.md Normal file
View File

@@ -0,0 +1,293 @@
# Topaz Video AI Rust SDK
A comprehensive Rust SDK for managing Topaz Video AI templates and generating FFmpeg commands with AI-powered video processing filters.
## Features
- 🎯 **Template Management**: Load, validate, and manage Topaz Video AI templates
- 🔧 **FFmpeg Command Generation**: Convert templates to optimized FFmpeg commands
- 🚀 **Hardware Acceleration**: Support for NVIDIA, AMD, and Intel hardware acceleration
- 📦 **Batch Processing**: Generate commands for multiple files at once
- 🛠️ **Template Builder**: Programmatically create custom templates
- 📋 **Presets**: Built-in templates for common video processing tasks
- 💾 **Database Support**: Interface for database storage and runtime loading
-**Validation**: Comprehensive template validation and auto-completion
## Quick Start
Add this to your `Cargo.toml`:
```toml
[dependencies]
tvai-sdk = "0.1.0"
serde = { version = "1.0", features = ["derive"] }
serde_json = "1.0"
```
### Basic Usage
```rust
use tvai_sdk::*;
fn main() -> Result<(), Box<dyn std::error::Error>> {
// Create SDK instance
let mut sdk = TvaiSdk::new();
// Create a template using presets
let template = TemplatePresets::upscale_to_4k()?;
// Generate FFmpeg command
let command = sdk.generate_ffmpeg_command(
&template,
"input.mp4",
"output_4k.mp4"
)?;
println!("FFmpeg command: {}", command);
Ok(())
}
```
### Load Templates from Directory
```rust
let mut sdk = TvaiSdk::new();
// Load all JSON templates from directory
sdk.load_templates_from_dir("./templates")?;
// List loaded templates
for name in sdk.get_template_names() {
println!("Loaded template: {}", name);
}
```
### Create Custom Templates
```rust
let custom_template = TemplateBuilder::new("My Custom Template")
.description("Custom video enhancement")
.enable_enhancement("prob-4")
.enhancement_params(30, 20, 10) // denoise, detail, sharpen
.enable_stabilization(60, 1) // smoothness, method
.output_settings(6, 60.0) // FHD, 60fps
.build()?;
sdk.add_template(custom_template)?;
```
### Hardware Acceleration
```rust
// Generate command with GPU acceleration
let gpu_command = sdk.generate_ffmpeg_command_with_gpu(
&template,
"input.mp4",
"output.mp4",
"0" // GPU device 0
)?;
// Generate command with custom codec
let nvenc_command = sdk.generate_ffmpeg_command_with_codec(
&template,
"input.mp4",
"output.mp4",
"hevc_nvenc",
Some(20) // quality
)?;
```
### Batch Processing
```rust
let input_files = vec![
"video1.mp4".to_string(),
"video2.mp4".to_string(),
"video3.mp4".to_string(),
];
let commands = sdk.generate_batch_commands(
&template,
&input_files,
"./output"
)?;
for command in commands {
println!("Batch command: {}", command);
}
```
## Template Structure
Templates are JSON files with the following structure:
```json
{
"name": "Template Name",
"description": "Template description",
"author": "Author Name",
"date": "Creation date",
"veaiversion": "5.1.2",
"editable": true,
"enabled": true,
"saveOutputSettings": false,
"settings": {
"stabilize": { ... },
"motionblur": { ... },
"slowmo": { ... },
"enhance": { ... },
"grain": { ... },
"output": { ... }
}
}
```
## Supported Processing Modules
### Video Enhancement (`enhance`)
- **Models**: prob-3, prob-4, nyx-3, etc.
- **Parameters**: denoise, detail, sharpen, compress, dehalo, deblur
- **FFmpeg Filter**: `tvai_up`
### Frame Interpolation (`slowmo`)
- **Models**: apo-8, chf-3, chr-2, etc.
- **Parameters**: factor, fps, duplicate threshold
- **FFmpeg Filter**: `tvai_fi`
### Video Stabilization (`stabilize`)
- **Parameters**: smoothness, method, rolling shutter correction
- **FFmpeg Filter**: `tvai_stb`
### Grain Effect (`grain`)
- **Parameters**: grain amount, grain size
- **FFmpeg Filter**: `noise` (approximation)
## Built-in Presets
The SDK includes several built-in template presets:
- `TemplatePresets::upscale_to_4k()` - Upscale video to 4K resolution
- `TemplatePresets::convert_to_60fps()` - Convert video to 60 FPS
- `TemplatePresets::remove_noise()` - Remove noise using AI
- `TemplatePresets::stabilize_video()` - Stabilize shaky video
- `TemplatePresets::slow_motion_4x()` - Create 4x slow motion effect
- `TemplatePresets::comprehensive_enhancement()` - Complete enhancement
## Hardware Acceleration Support
### NVIDIA (NVENC/NVDEC)
```rust
// Single GPU
let command = sdk.generate_ffmpeg_command_with_gpu(&template, input, output, "0")?;
// Multi-GPU
let command = sdk.generate_ffmpeg_command_with_gpu(&template, input, output, "0.1")?;
// NVENC codec
let command = sdk.generate_ffmpeg_command_with_codec(&template, input, output, "hevc_nvenc", Some(20))?;
```
### AMD (AMF)
```rust
let command = sdk.generate_ffmpeg_command_with_codec(&template, input, output, "h264_amf", Some(25))?;
```
### Intel (QSV)
```rust
let command = sdk.generate_ffmpeg_command_with_codec(&template, input, output, "h264_qsv", Some(23))?;
```
## Database Integration
Implement the `TemplateDatabase` trait for custom database storage:
```rust
use tvai_sdk::TemplateDatabase;
struct MyDatabase {
// Your database connection
}
impl TemplateDatabase for MyDatabase {
fn save_template(&self, template: &Template) -> TvaiResult<()> {
// Save template to database
Ok(())
}
fn load_template(&self, name: &str) -> TvaiResult<Template> {
// Load template from database
todo!()
}
// Implement other methods...
}
// Use with DatabaseTemplateManager
let db = MyDatabase::new();
let mut manager = DatabaseTemplateManager::new(db);
manager.load_from_database()?;
```
## Examples
Run the included examples:
```bash
# Basic usage
cargo run --example basic_usage
# Template management
cargo run --example template_management
# FFmpeg command generation
cargo run --example ffmpeg_generation
```
## Testing
Run the test suite:
```bash
cargo test
```
## Model Mappings
The SDK maps Topaz Video AI template models to FFmpeg filter models:
| Template Model | FFmpeg Model | Filter |
|----------------|--------------|--------|
| prob-3, prob-4 | ahq-12 | tvai_up |
| nyx-3 | nyx-3 | tvai_up |
| apo-8, chf-3 | chr-2 | tvai_fi |
| thm-2 | thm-2 | tvai_up |
You can add custom mappings:
```rust
sdk.add_model_mapping("custom-model".to_string(), "ffmpeg-model".to_string());
```
## Error Handling
The SDK uses a comprehensive error system:
```rust
use tvai_sdk::TvaiError;
match sdk.load_template_from_file("template.json") {
Ok(template) => println!("Loaded: {}", template.name),
Err(TvaiError::IoError(e)) => println!("File error: {}", e),
Err(TvaiError::JsonParseError(e)) => println!("JSON error: {}", e),
Err(TvaiError::ValidationError(msg)) => println!("Validation error: {}", msg),
Err(e) => println!("Other error: {}", e),
}
```
## License
MIT License - see LICENSE file for details.
## Contributing
Contributions are welcome! Please feel free to submit a Pull Request.

150
cargos/tvai-v2/SUMMARY.md Normal file
View File

@@ -0,0 +1,150 @@
# Topaz Video AI Rust SDK - 项目总结
## 项目概述
本项目成功开发了一个完整的Rust SDK用于管理Topaz Video AI模板并生成FFmpeg命令。SDK提供了从模板分析、管理到FFmpeg命令生成的完整解决方案。
## 完成的功能
### ✅ 1. 模板结构分析和数据模型设计
- **完整的模板结构映射**: 分析了现有模板文件设计了完整的Rust数据结构
- **支持所有功能模块**: stabilize、motionblur、slowmo、enhance、grain、output、filterManager
- **版本兼容性**: 支持不同版本的模板格式3.3.5 到 5.1.2
- **序列化支持**: 使用serde实现JSON序列化/反序列化
### ✅ 2. 模板管理系统
- **文件加载**: 支持从单个文件或目录批量加载模板
- **内存管理**: 高效的模板存储和检索
- **数据库接口**: 提供TemplateDatabase trait支持自定义数据库实现
- **导入导出**: JSON格式的模板导入导出功能
- **验证和补全**: 自动验证模板完整性并补全缺失字段
### ✅ 3. FFmpeg命令生成器
- **核心滤镜支持**:
- `tvai_up` (视频增强)
- `tvai_fi` (帧插值)
- `tvai_stb` (视频稳定)
- `noise` (颗粒效果近似)
- **模型映射**: 自动将模板模型映射到FFmpeg滤镜模型
- **硬件加速**: 支持NVIDIA、AMD、Intel硬件加速
- **批处理**: 支持批量文件处理命令生成
- **自定义编码器**: 支持多种编码器和质量设置
### ✅ 4. 模板验证和补全功能
- **结构验证**: 检查模板结构完整性
- **参数范围验证**: 验证参数值在合理范围内
- **默认值补全**: 自动补全缺失的字段和参数
- **错误报告**: 详细的验证错误信息
### ✅ 5. SDK公共接口
- **易用的API**: 简洁直观的公共接口
- **构建器模式**: TemplateBuilder用于程序化创建模板
- **预设模板**: 内置常用模板预设
- **错误处理**: 完善的错误类型和处理机制
- **文档完整**: 详细的API文档和示例
### ✅ 6. 测试和文档
- **单元测试**: 覆盖核心功能的单元测试
- **集成测试**: 完整的集成测试套件
- **示例代码**: 3个详细的使用示例
- **文档**: 完整的README和API文档
## 技术特性
### 核心架构
```
TvaiSdk
├── TemplateManager (模板管理)
├── FfmpegCommandGenerator (命令生成)
├── Template (数据模型)
├── TemplateBuilder (构建器)
└── TemplatePresets (预设)
```
### 支持的模板功能
- **视频增强**: 降噪、细节恢复、锐化、压缩伪影减少
- **帧插值**: 慢动作、帧率转换、重复帧处理
- **视频稳定**: 平滑度控制、全帧/自动裁剪、滚动快门校正
- **输出设置**: 分辨率、帧率、像素比例
- **颗粒效果**: 颗粒量和大小控制
### 硬件加速支持
- **NVIDIA**: NVENC/NVDEC (H.264, H.265, AV1)
- **AMD**: AMF (H.264, H.265)
- **Intel**: QSV (H.264, H.265, MJPEG)
- **多GPU**: 支持多GPU并行处理
## 实际测试结果
### 模板加载测试
- ✅ 成功加载8个现有模板文件
- ⚠️ 5个模板因结构不完整而跳过验证功能正常工作
- ✅ 自动验证和补全功能正常
### FFmpeg命令生成测试
```bash
# 4K放大示例
ffmpeg -i "input.mp4" -vf "tvai_up=model=ahq-12" -s 3840x2160 -c:v libx264 -crf 18 -preset slow "output.mp4"
# GPU加速示例
ffmpeg -i "input.mp4" -vf "tvai_up=device=0:model=ahq-12" -s 3840x2160 -c:v libx264 -crf 18 -preset slow "output.mp4"
# 复合处理示例
ffmpeg -i "input.mp4" -vf "tvai_stb=model=ref-2:smoothness=11:full=1,tvai_up=model=ahq-12:details=0.15:noise=0.25:preblur=-0.05,noise=alls=0.6:allf=t" -s 1920x1080 -c:v libx264 -crf 18 -preset slow "output.mp4"
```
### 性能特性
- **内存效率**: 高效的模板存储和检索
- **批处理**: 支持大量文件的批处理命令生成
- **错误恢复**: 优雅的错误处理和恢复机制
## 使用场景
### 1. 应用系统集成
```rust
// 启动时从数据库加载模板
let mut sdk = TvaiSdk::new();
sdk.load_templates_from_dir("./templates")?;
// 运行时生成FFmpeg命令
let command = sdk.generate_ffmpeg_command(&template, input, output)?;
```
### 2. 批处理工具
```rust
// 批量处理视频文件
let commands = sdk.generate_batch_commands(&template, &input_files, "./output")?;
for command in commands {
// 执行FFmpeg命令
}
```
### 3. 自定义模板创建
```rust
// 程序化创建模板
let template = TemplateBuilder::new("Custom Template")
.enable_enhancement("prob-4")
.enhancement_params(30, 20, 10)
.build()?;
```
## 项目优势
1. **完整性**: 覆盖了从模板管理到命令生成的完整流程
2. **易用性**: 简洁的API设计丰富的预设和示例
3. **扩展性**: 支持自定义模型映射和数据库集成
4. **可靠性**: 完善的测试覆盖和错误处理
5. **性能**: 高效的内存管理和批处理支持
6. **兼容性**: 支持多种硬件加速和编码器
## 后续建议
1. **模型扩展**: 添加更多AI模型的支持
2. **GUI集成**: 可以基于此SDK开发图形界面
3. **云服务**: 支持云端模板存储和同步
4. **性能优化**: 进一步优化大批量处理性能
5. **插件系统**: 支持第三方插件扩展
## 总结
本Rust SDK成功实现了Topaz Video AI模板管理和FFmpeg命令生成的完整解决方案。通过模块化设计、完善的测试和详细的文档为视频处理应用提供了强大而易用的工具。SDK不仅满足了当前需求还为未来的扩展和优化奠定了坚实基础。

View File

@@ -0,0 +1,136 @@
use tvai_sdk::*;
fn main() -> Result<(), Box<dyn std::error::Error>> {
println!("Topaz Video AI SDK - Basic Usage Example");
println!("=========================================");
// Create a new SDK instance
let mut sdk = TvaiSdk::new();
// Example 1: Create templates using presets
println!("\n1. Creating templates using presets:");
let upscale_template = TemplatePresets::upscale_to_4k()?;
println!(" Created: {}", upscale_template.name);
let fps_template = TemplatePresets::convert_to_60fps()?;
println!(" Created: {}", fps_template.name);
let denoise_template = TemplatePresets::remove_noise()?;
println!(" Created: {}", denoise_template.name);
// Add templates to SDK
sdk.add_template(upscale_template.clone())?;
sdk.add_template(fps_template.clone())?;
sdk.add_template(denoise_template.clone())?;
println!(" Total templates loaded: {}", sdk.template_count());
// Example 2: Generate FFmpeg commands
println!("\n2. Generating FFmpeg commands:");
let input_file = "input_video.mp4";
let output_file = "output_video.mp4";
// Basic command generation
let command = sdk.generate_ffmpeg_command(&upscale_template, input_file, output_file)?;
println!(" Basic upscale command:");
println!(" {}", command);
// Command with GPU acceleration
let gpu_command = sdk.generate_ffmpeg_command_with_gpu(&upscale_template, input_file, "output_gpu.mp4", "0")?;
println!("\n GPU accelerated command:");
println!(" {}", gpu_command);
// Command with custom codec
let nvenc_command = sdk.generate_ffmpeg_command_with_codec(&upscale_template, input_file, "output_nvenc.mp4", "hevc_nvenc", Some(20))?;
println!("\n NVENC H.265 command:");
println!(" {}", nvenc_command);
// Example 3: Create custom template using builder
println!("\n3. Creating custom template:");
let custom_template = TemplateBuilder::new("Custom Enhancement")
.description("Custom video enhancement with multiple effects")
.author("Example User")
.enable_enhancement("prob-4")
.enhancement_params(25, 15, 5) // denoise=25, detail=15, sharpen=5
.enable_stabilization(70, 1) // smoothness=70, full frame
.enable_grain(3, 2) // grain amount=3, size=2
.output_settings(6, 0.0) // FHD output, original FPS
.build()?;
println!(" Created custom template: {}", custom_template.name);
println!(" Description: {}", custom_template.description);
println!(" Enhancement active: {}", custom_template.settings.enhance.active);
println!(" Stabilization active: {}", custom_template.settings.stabilize.active);
println!(" Grain active: {}", custom_template.settings.grain.active);
// Generate command for custom template
let custom_command = sdk.generate_ffmpeg_command(&custom_template, input_file, "custom_output.mp4")?;
println!("\n Custom template command:");
println!(" {}", custom_command);
// Example 4: Batch processing
println!("\n4. Batch processing:");
let input_files = vec![
"video1.mp4".to_string(),
"video2.mp4".to_string(),
"video3.mp4".to_string(),
"video4.mp4".to_string(),
];
let batch_commands = sdk.generate_batch_commands(&fps_template, &input_files, "./output")?;
println!(" Generated {} batch commands:", batch_commands.len());
for (i, command) in batch_commands.iter().enumerate() {
println!(" Batch {}: {}", i + 1, command);
}
// Example 5: Template validation
println!("\n5. Template validation:");
// Validate template for FFmpeg generation
match sdk.validate_template_for_ffmpeg(&upscale_template) {
Ok(()) => println!(" Upscale template is valid for FFmpeg generation"),
Err(e) => println!(" Validation error: {}", e),
}
// Example 6: Export and import templates
println!("\n6. Template export/import:");
// Export all templates to JSON
let json_export = sdk.export_templates_to_json()?;
println!(" Exported {} templates to JSON ({} bytes)", sdk.template_count(), json_export.len());
// Clear templates and import them back
sdk.clear_templates();
println!(" Cleared all templates. Count: {}", sdk.template_count());
let imported_count = sdk.import_templates_from_json(&json_export)?;
println!(" Imported {} templates from JSON. Count: {}", imported_count, sdk.template_count());
// Example 7: Template management
println!("\n7. Template management:");
// List all template names
let template_names = sdk.get_template_names();
println!(" Available templates:");
for name in template_names {
println!(" - {}", name);
}
// Find specific template
if let Some(template) = sdk.find_template("Upscale to 4K") {
println!(" Found template: {} (Author: {})", template.name, template.author);
}
// Check if template exists
println!(" Has 'Convert to 60 FPS' template: {}", sdk.has_template("Convert to 60 FPS"));
println!(" Has 'Non-existent' template: {}", sdk.has_template("Non-existent"));
println!("\n✅ Basic usage example completed successfully!");
Ok(())
}

View File

@@ -0,0 +1,183 @@
use tvai_sdk::*;
fn main() -> Result<(), Box<dyn std::error::Error>> {
println!("Topaz Video AI SDK - FFmpeg Command Generation Example");
println!("=====================================================");
let sdk = TvaiSdk::new();
// Example 1: Basic FFmpeg command generation
println!("\n1. Basic FFmpeg command generation:");
let upscale_template = TemplatePresets::upscale_to_4k()?;
let basic_command = sdk.generate_ffmpeg_command(&upscale_template, "input.mp4", "output_4k.mp4")?;
println!(" Template: {}", upscale_template.name);
println!(" Command: {}", basic_command);
// Example 2: Hardware acceleration commands
println!("\n2. Hardware acceleration commands:");
// NVIDIA GPU acceleration
let nvidia_command = sdk.generate_ffmpeg_command_with_gpu(&upscale_template, "input.mp4", "output_nvidia.mp4", "0")?;
println!(" NVIDIA GPU (device 0):");
println!(" {}", nvidia_command);
// Multi-GPU setup
let multi_gpu_command = sdk.generate_ffmpeg_command_with_gpu(&upscale_template, "input.mp4", "output_multi_gpu.mp4", "0.1")?;
println!("\n Multi-GPU (devices 0 and 1):");
println!(" {}", multi_gpu_command);
// Example 3: Different codec configurations
println!("\n3. Different codec configurations:");
// H.264 with NVENC
let h264_nvenc = sdk.generate_ffmpeg_command_with_codec(&upscale_template, "input.mp4", "output_h264_nvenc.mp4", "h264_nvenc", Some(20))?;
println!(" H.264 NVENC (CQ 20):");
println!(" {}", h264_nvenc);
// H.265 with NVENC
let h265_nvenc = sdk.generate_ffmpeg_command_with_codec(&upscale_template, "input.mp4", "output_h265_nvenc.mp4", "hevc_nvenc", Some(22))?;
println!("\n H.265 NVENC (CQ 22):");
println!(" {}", h265_nvenc);
// AMD AMF H.264
let h264_amf = sdk.generate_ffmpeg_command_with_codec(&upscale_template, "input.mp4", "output_h264_amf.mp4", "h264_amf", Some(25))?;
println!("\n H.264 AMF (QP 25):");
println!(" {}", h264_amf);
// Intel QSV H.264
let h264_qsv = sdk.generate_ffmpeg_command_with_codec(&upscale_template, "input.mp4", "output_h264_qsv.mp4", "h264_qsv", Some(23))?;
println!("\n H.264 QSV (Global Quality 23):");
println!(" {}", h264_qsv);
// Example 4: Different template types
println!("\n4. Commands for different template types:");
// Frame interpolation
let fps_template = TemplatePresets::convert_to_60fps()?;
let fps_command = sdk.generate_ffmpeg_command(&fps_template, "input_30fps.mp4", "output_60fps.mp4")?;
println!(" Frame interpolation (60 FPS):");
println!(" {}", fps_command);
// Noise removal
let denoise_template = TemplatePresets::remove_noise()?;
let denoise_command = sdk.generate_ffmpeg_command(&denoise_template, "noisy_input.mp4", "clean_output.mp4")?;
println!("\n Noise removal:");
println!(" {}", denoise_command);
// Video stabilization
let stabilize_template = TemplatePresets::stabilize_video()?;
let stabilize_command = sdk.generate_ffmpeg_command(&stabilize_template, "shaky_input.mp4", "stable_output.mp4")?;
println!("\n Video stabilization:");
println!(" {}", stabilize_command);
// Slow motion
let slowmo_template = TemplatePresets::slow_motion_4x()?;
let slowmo_command = sdk.generate_ffmpeg_command(&slowmo_template, "normal_speed.mp4", "slow_motion.mp4")?;
println!("\n 4x Slow motion:");
println!(" {}", slowmo_command);
// Example 5: Complex custom template
println!("\n5. Complex custom template:");
let complex_template = TemplateBuilder::new("Professional Enhancement")
.description("Professional video enhancement with multiple effects")
.enable_enhancement("prob-4")
.enhancement_params(30, 40, 20) // denoise=30, detail=40, sharpen=20
.enable_stabilization(75, 1) // high stabilization, full frame
.enable_frame_interpolation("chf-3", 1.0)
.output_settings(7, 60.0) // 4K at 60fps
.build()?;
let complex_command = sdk.generate_ffmpeg_command(&complex_template, "input_professional.mp4", "output_professional.mp4")?;
println!(" Complex template command:");
println!(" {}", complex_command);
// Example 6: Batch processing commands
println!("\n6. Batch processing commands:");
let input_files = vec![
"project/clip1.mp4".to_string(),
"project/clip2.mp4".to_string(),
"project/clip3.mp4".to_string(),
"project/clip4.mp4".to_string(),
"project/clip5.mp4".to_string(),
];
let batch_commands = sdk.generate_batch_commands(&upscale_template, &input_files, "project/output")?;
println!(" Generated {} batch commands:", batch_commands.len());
for (i, command) in batch_commands.iter().enumerate() {
println!(" Batch {}: {}", i + 1, command);
}
// Example 7: Using FFmpeg command builder for advanced scenarios
println!("\n7. Advanced FFmpeg command builder:");
// Create a custom command with multiple filters
let advanced_command = FfmpegCommandBuilder::new("input_advanced.mp4", "output_advanced.mp4")
.add_filter("tvai_up=model=ahq-12:scale=2:noise=0.3:details=0.2")
.add_filter("tvai_fi=model=chr-2:fps=60")
.add_filter("tvai_stb=model=ref-2:smoothness=8")
.codec("hevc_nvenc")
.quality(18)
.hardware_accel("cuda")
.custom_param("-preset slow")
.custom_param("-profile:v main10")
.build();
println!(" Advanced custom command:");
println!(" {}", advanced_command);
// Create a command for HDR content
let hdr_command = FfmpegCommandBuilder::new("input_hdr.mp4", "output_hdr.mp4")
.add_filter("tvai_up=model=hyp-1:scale=2:sdr_ip=0.65:hdr_ip_adjust=0.3:saturate=0.8")
.codec("hevc_nvenc")
.quality(16)
.custom_param("-color_primaries bt2020")
.custom_param("-color_trc smpte2084")
.custom_param("-colorspace bt2020nc")
.build();
println!("\n HDR processing command:");
println!(" {}", hdr_command);
// Example 8: Template validation for FFmpeg
println!("\n8. Template validation for FFmpeg generation:");
let templates_to_validate = vec![
TemplatePresets::upscale_to_4k()?,
TemplatePresets::convert_to_60fps()?,
TemplatePresets::remove_noise()?,
TemplatePresets::stabilize_video()?,
TemplatePresets::slow_motion_4x()?,
];
for template in &templates_to_validate {
match sdk.validate_template_for_ffmpeg(template) {
Ok(()) => println!(" ✅ '{}' is valid for FFmpeg generation", template.name),
Err(e) => println!(" ❌ '{}' validation failed: {}", template.name, e),
}
}
// Example 9: Performance optimization suggestions
println!("\n9. Performance optimization suggestions:");
println!(" For best performance:");
println!(" - Use GPU acceleration when available (device=0, device=0.1, etc.)");
println!(" - Choose appropriate codec based on your hardware:");
println!(" • NVIDIA: h264_nvenc, hevc_nvenc");
println!(" • AMD: h264_amf, hevc_amf");
println!(" • Intel: h264_qsv, hevc_qsv");
println!(" - Adjust quality settings based on content:");
println!(" • High quality: CQ/CRF 16-20");
println!(" • Balanced: CQ/CRF 20-25");
println!(" • Fast encoding: CQ/CRF 25-30");
println!(" - Use multiple instances for parallel processing on high-end GPUs");
println!(" - Consider VRAM usage with vram parameter (0.5-0.8 for shared systems)");
println!("\n✅ FFmpeg command generation example completed successfully!");
Ok(())
}

View File

@@ -0,0 +1,212 @@
use tvai_sdk::*;
use std::path::Path;
fn main() -> Result<(), Box<dyn std::error::Error>> {
println!("Topaz Video AI SDK - Template Management Example");
println!("===============================================");
// Create SDK instance
let mut sdk = TvaiSdk::new();
// Example 1: Load templates from directory
println!("\n1. Loading templates from directory:");
let template_dir = "template"; // Relative to current directory
if Path::new(template_dir).exists() {
match sdk.load_templates_from_dir(template_dir) {
Ok(()) => {
println!(" Successfully loaded templates from directory: {}", template_dir);
println!(" Total templates loaded: {}", sdk.template_count());
// List loaded templates
let template_names = sdk.get_template_names();
for name in template_names {
println!(" - {}", name);
}
},
Err(e) => {
println!(" Failed to load templates: {}", e);
println!(" Creating templates using presets instead...");
// Create some templates using presets
sdk.add_template(TemplatePresets::upscale_to_4k()?)?;
sdk.add_template(TemplatePresets::convert_to_60fps()?)?;
sdk.add_template(TemplatePresets::remove_noise()?)?;
sdk.add_template(TemplatePresets::stabilize_video()?)?;
sdk.add_template(TemplatePresets::slow_motion_4x()?)?;
println!(" Created {} preset templates", sdk.template_count());
}
}
} else {
println!(" Template directory '{}' not found, creating preset templates...", template_dir);
// Create preset templates
sdk.add_template(TemplatePresets::upscale_to_4k()?)?;
sdk.add_template(TemplatePresets::convert_to_60fps()?)?;
sdk.add_template(TemplatePresets::remove_noise()?)?;
sdk.add_template(TemplatePresets::stabilize_video()?)?;
sdk.add_template(TemplatePresets::slow_motion_4x()?)?;
sdk.add_template(TemplatePresets::comprehensive_enhancement()?)?;
println!(" Created {} preset templates", sdk.template_count());
}
// Example 2: Create and manage custom templates
println!("\n2. Creating custom templates:");
// Create a custom deinterlacing template
let deinterlace_template = TemplateBuilder::new("Deinterlace and Enhance")
.description("Deinterlace interlaced video and enhance quality")
.author("Template Manager")
.enable_enhancement("prob-4")
.enhancement_params(20, 30, 15) // moderate denoise, high detail, some sharpen
.output_settings(6, 0.0) // FHD output
.build()?;
sdk.add_template(deinterlace_template)?;
println!(" Created: Deinterlace and Enhance");
// Create a film restoration template
let film_restore_template = TemplateBuilder::new("Film Restoration")
.description("Restore old film footage with comprehensive enhancement")
.author("Template Manager")
.enable_enhancement("prob-4")
.enhancement_params(40, 50, 20) // high denoise and detail for old film
.enable_stabilization(80, 1) // high stabilization for old footage
.enable_grain(2, 1) // subtle grain to maintain film look
.output_settings(7, 24.0) // 4K output at 24fps
.build()?;
sdk.add_template(film_restore_template)?;
println!(" Created: Film Restoration");
// Create a gaming video template
let gaming_template = TemplateBuilder::new("Gaming Video Enhancement")
.description("Optimize gaming footage for streaming")
.author("Template Manager")
.enable_enhancement("prob-4")
.enhancement_params(10, 25, 30) // low denoise, good detail, high sharpen
.enable_frame_interpolation("chf-3", 1.0)
.output_settings(6, 60.0) // FHD at 60fps
.build()?;
sdk.add_template(gaming_template)?;
println!(" Created: Gaming Video Enhancement");
println!(" Total templates after additions: {}", sdk.template_count());
// Example 3: Template inspection and modification
println!("\n3. Template inspection:");
if let Some(template) = sdk.find_template("Gaming Video Enhancement") {
println!(" Template: {}", template.name);
println!(" Description: {}", template.description);
println!(" Author: {}", template.author);
println!(" Version: {}", template.veai_version);
println!(" Settings:");
println!(" Enhancement active: {}", template.settings.enhance.active);
println!(" Enhancement model: {}", template.settings.enhance.model);
println!(" Denoise: {}", template.settings.enhance.denoise);
println!(" Detail: {}", template.settings.enhance.detail);
println!(" Sharpen: {}", template.settings.enhance.sharpen);
println!(" Frame interpolation active: {}", template.settings.slow_motion.active);
println!(" Output FPS: {}", template.settings.output.out_fps);
}
// Example 4: Template validation
println!("\n4. Template validation:");
let validation_errors = sdk.validate_all_templates();
if validation_errors.is_empty() {
println!(" ✅ All templates are valid");
} else {
println!(" ❌ Found validation errors:");
for (name, error) in validation_errors {
println!(" {}: {}", name, error);
}
}
// Example 5: Export templates to files
println!("\n5. Exporting templates:");
// Create output directory
let output_dir = "exported_templates";
std::fs::create_dir_all(output_dir)?;
// Save all templates to directory
match sdk.save_templates_to_dir(output_dir) {
Ok(()) => {
println!(" ✅ Successfully exported all templates to: {}", output_dir);
// List exported files
let entries = std::fs::read_dir(output_dir)?;
println!(" Exported files:");
for entry in entries {
let entry = entry?;
if entry.path().extension().and_then(|s| s.to_str()) == Some("json") {
println!(" - {}", entry.file_name().to_string_lossy());
}
}
},
Err(e) => println!(" ❌ Failed to export templates: {}", e),
}
// Example 6: Template removal and cleanup
println!("\n6. Template management operations:");
// Remove a specific template
if let Some(removed) = sdk.remove_template("Gaming Video Enhancement") {
println!(" Removed template: {}", removed.name);
println!(" Remaining templates: {}", sdk.template_count());
}
// Show remaining templates
println!(" Current templates:");
for name in sdk.get_template_names() {
println!(" - {}", name);
}
// Example 7: JSON export/import workflow
println!("\n7. JSON export/import workflow:");
// Export to JSON string
let json_data = sdk.export_templates_to_json()?;
println!(" Exported {} templates to JSON ({} bytes)", sdk.template_count(), json_data.len());
// Save JSON to file
let json_file = format!("{}/all_templates.json", output_dir);
std::fs::write(&json_file, &json_data)?;
println!(" Saved JSON to: {}", json_file);
// Clear all templates
let original_count = sdk.template_count();
sdk.clear_templates();
println!(" Cleared all templates (was: {}, now: {})", original_count, sdk.template_count());
// Import from JSON file
let imported_json = std::fs::read_to_string(&json_file)?;
let imported_count = sdk.import_templates_from_json(&imported_json)?;
println!(" Imported {} templates from JSON file", imported_count);
println!(" Final template count: {}", sdk.template_count());
// Example 8: Model mappings
println!("\n8. Model mappings:");
let mappings = sdk.get_model_mappings();
println!(" Current model mappings:");
for (template_model, ffmpeg_model) in mappings {
println!(" {} -> {}", template_model, ffmpeg_model);
}
// Add custom model mapping
sdk.add_model_mapping("custom-model-1".to_string(), "custom-ffmpeg-1".to_string());
println!(" Added custom model mapping: custom-model-1 -> custom-ffmpeg-1");
println!("\n✅ Template management example completed successfully!");
println!(" Final statistics:");
println!(" Total templates: {}", sdk.template_count());
println!(" Model mappings: {}", sdk.get_model_mappings().len());
Ok(())
}

View File

@@ -0,0 +1,67 @@
{
"name": "4倍慢动作",
"description": "对视频素材应用4倍400%)慢动作效果",
"author": "Topaz Labs",
"date": "Tue Jul 11 12:00:00 2023 GMT-0500",
"veaiversion": "3.3.5",
"editable": false,
"enabled": true,
"saveOutputSettings": false,
"path": null,
"settings": {
"stabilize": {
"active": false,
"smooth": 50,
"method": 1,
"rsc": false,
"reduceMotion": false,
"reduceMotionIteration": 2
},
"motionblur": {
"active": false,
"model": "thm-2"
},
"slowmo": {
"active": true,
"model": "apo-8",
"factor": 4.0,
"duplicate": true,
"duplicateThreshold": 10
},
"enhance": {
"active": false,
"model": "prob-3",
"videoType": 1,
"auto": 0,
"fieldOrder": 0,
"compress": 0,
"detail": 0,
"sharpen": 0,
"denoise": 0,
"dehalo": 0,
"deblur": 0,
"addNoise": 0,
"recoverOriginalDetailValue": 20,
"isArtemis": false,
"isGaia": false,
"isTheia": false,
"isProteus": true,
"isIris": false,
"focusFixLevel": "Off"
},
"grain": {
"active": false,
"grain": 5,
"grainSize": 2
},
"output": {
"active": true,
"outSizeMethod": 0,
"cropToFit": false,
"outputPAR": 0,
"outFPS": 0.0,
"customResolutionPriority": 0,
"lockAspectRatio": true
}
}
}

View File

@@ -0,0 +1,67 @@
{
"name": "8倍超级慢动作",
"description": "对视频素材应用8倍800%)超级慢动作效果",
"author": "Topaz Labs",
"date": "Tue Jul 11 12:00:00 2023 GMT-0500",
"veaiversion": "3.3.5",
"editable": false,
"enabled": true,
"saveOutputSettings": false,
"path": null,
"settings": {
"stabilize": {
"active": false,
"smooth": 50,
"method": 1,
"rsc": false,
"reduceMotion": false,
"reduceMotionIteration": 2
},
"motionblur": {
"active": false,
"model": "thm-2"
},
"slowmo": {
"active": true,
"model": "apo-8",
"factor": 8.0,
"duplicate": true,
"duplicateThreshold": 10
},
"enhance": {
"active": false,
"model": "prob-3",
"videoType": 1,
"auto": 0,
"fieldOrder": 0,
"compress": 0,
"detail": 0,
"sharpen": 0,
"denoise": 0,
"dehalo": 0,
"deblur": 0,
"addNoise": 0,
"recoverOriginalDetailValue": 20,
"isArtemis": false,
"isGaia": false,
"isTheia": false,
"isProteus": true,
"isIris": false,
"focusFixLevel": "Off"
},
"grain": {
"active": false,
"grain": 5,
"grainSize": 2
},
"output": {
"active": true,
"outSizeMethod": 0,
"cropToFit": false,
"outputPAR": 0,
"outFPS": 0.0,
"customResolutionPriority": 0,
"lockAspectRatio": true
}
}
}

View File

@@ -0,0 +1,68 @@
{
"name": "Deinterlace and Enhance",
"description": "Deinterlace interlaced video and enhance quality",
"author": "Template Manager",
"date": "Fri Aug 15 05:34:55 2025 GMT+0000",
"veaiversion": "5.1.2",
"editable": true,
"enabled": true,
"saveOutputSettings": false,
"path": null,
"settings": {
"stabilize": {
"active": false,
"smooth": 50,
"method": 1,
"rsc": false,
"reduceMotion": false,
"reduceMotionIteration": 2
},
"motionblur": {
"active": false,
"model": "thm-2"
},
"slowmo": {
"active": false,
"model": "apo-8",
"factor": 1.0,
"duplicate": true,
"duplicateThreshold": 10
},
"enhance": {
"active": true,
"model": "prob-4",
"videoType": 1,
"auto": 0,
"fieldOrder": 0,
"compress": 0,
"detail": 30,
"sharpen": 15,
"denoise": 20,
"dehalo": 0,
"deblur": 0,
"addNoise": 0,
"recoverOriginalDetailValue": 20,
"isArtemis": false,
"isGaia": false,
"isTheia": false,
"isProteus": true,
"isIris": false,
"focusFixLevel": "Off",
"isSecondEnhancement": false
},
"grain": {
"active": false,
"grain": 5,
"grainSize": 2
},
"output": {
"active": true,
"outSizeMethod": 6,
"cropToFit": false,
"outputPAR": 0,
"outFPS": 0.0,
"customResolutionPriority": 0,
"lockAspectRatio": true
}
}
}

View File

@@ -0,0 +1,68 @@
{
"name": "Film Restoration",
"description": "Restore old film footage with comprehensive enhancement",
"author": "Template Manager",
"date": "Fri Aug 15 05:34:55 2025 GMT+0000",
"veaiversion": "5.1.2",
"editable": true,
"enabled": true,
"saveOutputSettings": false,
"path": null,
"settings": {
"stabilize": {
"active": true,
"smooth": 80,
"method": 1,
"rsc": false,
"reduceMotion": false,
"reduceMotionIteration": 2
},
"motionblur": {
"active": false,
"model": "thm-2"
},
"slowmo": {
"active": false,
"model": "apo-8",
"factor": 1.0,
"duplicate": true,
"duplicateThreshold": 10
},
"enhance": {
"active": true,
"model": "prob-4",
"videoType": 1,
"auto": 0,
"fieldOrder": 0,
"compress": 0,
"detail": 50,
"sharpen": 20,
"denoise": 40,
"dehalo": 0,
"deblur": 0,
"addNoise": 0,
"recoverOriginalDetailValue": 20,
"isArtemis": false,
"isGaia": false,
"isTheia": false,
"isProteus": true,
"isIris": false,
"focusFixLevel": "Off",
"isSecondEnhancement": false
},
"grain": {
"active": true,
"grain": 2,
"grainSize": 1
},
"output": {
"active": true,
"outSizeMethod": 7,
"cropToFit": false,
"outputPAR": 0,
"outFPS": 24.0,
"customResolutionPriority": 0,
"lockAspectRatio": true
}
}
}

View File

@@ -0,0 +1,68 @@
{
"name": "Gaming Video Enhancement",
"description": "Optimize gaming footage for streaming",
"author": "Template Manager",
"date": "Fri Aug 15 05:34:55 2025 GMT+0000",
"veaiversion": "5.1.2",
"editable": true,
"enabled": true,
"saveOutputSettings": false,
"path": null,
"settings": {
"stabilize": {
"active": false,
"smooth": 50,
"method": 1,
"rsc": false,
"reduceMotion": false,
"reduceMotionIteration": 2
},
"motionblur": {
"active": false,
"model": "thm-2"
},
"slowmo": {
"active": true,
"model": "chf-3",
"factor": 1.0,
"duplicate": true,
"duplicateThreshold": 10
},
"enhance": {
"active": true,
"model": "prob-4",
"videoType": 1,
"auto": 0,
"fieldOrder": 0,
"compress": 0,
"detail": 25,
"sharpen": 30,
"denoise": 10,
"dehalo": 0,
"deblur": 0,
"addNoise": 0,
"recoverOriginalDetailValue": 20,
"isArtemis": false,
"isGaia": false,
"isTheia": false,
"isProteus": true,
"isIris": false,
"focusFixLevel": "Off",
"isSecondEnhancement": false
},
"grain": {
"active": false,
"grain": 5,
"grainSize": 2
},
"output": {
"active": true,
"outSizeMethod": 6,
"cropToFit": false,
"outputPAR": 0,
"outFPS": 60.0,
"customResolutionPriority": 0,
"lockAspectRatio": true
}
}
}

View File

@@ -0,0 +1,674 @@
[
{
"name": "放大至4K",
"description": "将视频分辨率放大至4K分辨率同时增强画质。",
"author": "Topaz Labs",
"date": "Tue Jul 11 12:00:00 2023 GMT-0500",
"veaiversion": "3.3.5",
"editable": false,
"enabled": true,
"saveOutputSettings": false,
"path": null,
"settings": {
"stabilize": {
"active": false,
"smooth": 50,
"method": 1,
"rsc": false,
"reduceMotion": false,
"reduceMotionIteration": 2
},
"motionblur": {
"active": false,
"model": "thm-2"
},
"slowmo": {
"active": false,
"model": "apo-8",
"factor": 1.0,
"duplicate": true,
"duplicateThreshold": 10
},
"enhance": {
"active": true,
"model": "prob-4",
"videoType": 1,
"auto": 0,
"fieldOrder": 0,
"compress": 0,
"detail": 0,
"sharpen": 0,
"denoise": 0,
"dehalo": 0,
"deblur": 0,
"addNoise": 0,
"recoverOriginalDetailValue": 20,
"isArtemis": false,
"isGaia": false,
"isTheia": false,
"isProteus": true,
"isIris": false,
"focusFixLevel": "Off"
},
"grain": {
"active": false,
"grain": 5,
"grainSize": 2
},
"output": {
"active": true,
"outSizeMethod": 7,
"cropToFit": false,
"outputPAR": 0,
"outFPS": 0.0,
"customResolutionPriority": 0,
"lockAspectRatio": true
}
}
},
{
"name": "8倍超级慢动作",
"description": "对视频素材应用8倍800%)超级慢动作效果",
"author": "Topaz Labs",
"date": "Tue Jul 11 12:00:00 2023 GMT-0500",
"veaiversion": "3.3.5",
"editable": false,
"enabled": true,
"saveOutputSettings": false,
"path": null,
"settings": {
"stabilize": {
"active": false,
"smooth": 50,
"method": 1,
"rsc": false,
"reduceMotion": false,
"reduceMotionIteration": 2
},
"motionblur": {
"active": false,
"model": "thm-2"
},
"slowmo": {
"active": true,
"model": "apo-8",
"factor": 8.0,
"duplicate": true,
"duplicateThreshold": 10
},
"enhance": {
"active": false,
"model": "prob-3",
"videoType": 1,
"auto": 0,
"fieldOrder": 0,
"compress": 0,
"detail": 0,
"sharpen": 0,
"denoise": 0,
"dehalo": 0,
"deblur": 0,
"addNoise": 0,
"recoverOriginalDetailValue": 20,
"isArtemis": false,
"isGaia": false,
"isTheia": false,
"isProteus": true,
"isIris": false,
"focusFixLevel": "Off"
},
"grain": {
"active": false,
"grain": 5,
"grainSize": 2
},
"output": {
"active": true,
"outSizeMethod": 0,
"cropToFit": false,
"outputPAR": 0,
"outFPS": 0.0,
"customResolutionPriority": 0,
"lockAspectRatio": true
}
}
},
{
"name": "转换至60帧",
"description": "将视频素材的帧率转换为60fps同时保持原始分辨率",
"author": "Topaz Labs",
"date": "Tue Jul 11 12:00:00 2023 GMT-0500",
"veaiversion": "3.3.5",
"editable": false,
"enabled": true,
"saveOutputSettings": false,
"path": null,
"settings": {
"stabilize": {
"active": false,
"smooth": 50,
"method": 1,
"rsc": false,
"reduceMotion": false,
"reduceMotionIteration": 2
},
"motionblur": {
"active": false,
"model": "thm-2"
},
"slowmo": {
"active": true,
"model": "chf-3",
"factor": 1.0,
"duplicate": true,
"duplicateThreshold": 10
},
"enhance": {
"active": false,
"model": "prob-3",
"videoType": 1,
"auto": 0,
"fieldOrder": 0,
"compress": 0,
"detail": 0,
"sharpen": 0,
"denoise": 0,
"dehalo": 0,
"deblur": 0,
"addNoise": 0,
"recoverOriginalDetailValue": 20,
"isArtemis": false,
"isGaia": false,
"isTheia": false,
"isProteus": true,
"isIris": false,
"focusFixLevel": "Off"
},
"grain": {
"active": false,
"grain": 5,
"grainSize": 2
},
"output": {
"active": true,
"outSizeMethod": 0,
"cropToFit": false,
"outputPAR": 0,
"outFPS": 60.0,
"customResolutionPriority": 0,
"lockAspectRatio": true
}
}
},
{
"name": "去隔行扫描并放大至全高清",
"description": "对视频素材进行去隔行扫描处理并放大至全高清分辨率",
"author": "Topaz Labs",
"date": "Tue Jul 11 12:00:00 2023 GMT-0500",
"veaiversion": "3.3.5",
"editable": false,
"enabled": true,
"saveOutputSettings": false,
"path": null,
"settings": {
"stabilize": {
"active": false,
"smooth": 50,
"method": 1,
"rsc": false,
"reduceMotion": false,
"reduceMotionIteration": 2
},
"motionblur": {
"active": false,
"model": "thm-2"
},
"slowmo": {
"active": false,
"model": "chf-3",
"factor": 1.0,
"duplicate": true,
"duplicateThreshold": 10
},
"enhance": {
"active": true,
"model": "ddv-3",
"videoType": 0,
"auto": 0,
"fieldOrder": 0,
"compress": 0,
"detail": 0,
"sharpen": 0,
"denoise": 0,
"dehalo": 0,
"deblur": 0,
"addNoise": 0,
"recoverOriginalDetailValue": 20,
"isArtemis": false,
"isGaia": false,
"isTheia": false,
"isProteus": false,
"isIris": false,
"focusFixLevel": "Off"
},
"grain": {
"active": false,
"grain": 5,
"grainSize": 2
},
"output": {
"active": true,
"outSizeMethod": 6,
"cropToFit": false,
"outputPAR": 0,
"outFPS": 0.0,
"customResolutionPriority": 0,
"lockAspectRatio": true
}
}
},
{
"name": "放大至4K并转换至60帧",
"description": "将视频素材放大至4K分辨率并转换为60fps。",
"author": "Topaz Labs",
"date": "Tue Jul 11 12:00:00 2023 GMT-0500",
"veaiversion": "3.3.5",
"editable": false,
"enabled": true,
"saveOutputSettings": false,
"path": null,
"settings": {
"stabilize": {
"active": false,
"smooth": 50,
"method": 1,
"rsc": false,
"reduceMotion": false,
"reduceMotionIteration": 2
},
"motionblur": {
"active": false,
"model": "thm-2"
},
"slowmo": {
"active": true,
"model": "apo-8",
"factor": 1.0,
"duplicate": true,
"duplicateThreshold": 10
},
"enhance": {
"active": true,
"model": "prob-4",
"videoType": 1,
"auto": 0,
"fieldOrder": 0,
"compress": 0,
"detail": 0,
"sharpen": 0,
"denoise": 0,
"dehalo": 0,
"deblur": 0,
"addNoise": 0,
"recoverOriginalDetailValue": 20,
"isArtemis": false,
"isGaia": false,
"isTheia": false,
"isProteus": true,
"isIris": false,
"focusFixLevel": "Off"
},
"grain": {
"active": false,
"grain": 5,
"grainSize": 2
},
"output": {
"active": true,
"outSizeMethod": 7,
"cropToFit": false,
"outputPAR": 0,
"outFPS": 60.0,
"customResolutionPriority": 0,
"lockAspectRatio": true
}
}
},
{
"name": "Deinterlace and Enhance",
"description": "Deinterlace interlaced video and enhance quality",
"author": "Template Manager",
"date": "Fri Aug 15 05:34:55 2025 GMT+0000",
"veaiversion": "5.1.2",
"editable": true,
"enabled": true,
"saveOutputSettings": false,
"path": null,
"settings": {
"stabilize": {
"active": false,
"smooth": 50,
"method": 1,
"rsc": false,
"reduceMotion": false,
"reduceMotionIteration": 2
},
"motionblur": {
"active": false,
"model": "thm-2"
},
"slowmo": {
"active": false,
"model": "apo-8",
"factor": 1.0,
"duplicate": true,
"duplicateThreshold": 10
},
"enhance": {
"active": true,
"model": "prob-4",
"videoType": 1,
"auto": 0,
"fieldOrder": 0,
"compress": 0,
"detail": 30,
"sharpen": 15,
"denoise": 20,
"dehalo": 0,
"deblur": 0,
"addNoise": 0,
"recoverOriginalDetailValue": 20,
"isArtemis": false,
"isGaia": false,
"isTheia": false,
"isProteus": true,
"isIris": false,
"focusFixLevel": "Off",
"isSecondEnhancement": false
},
"grain": {
"active": false,
"grain": 5,
"grainSize": 2
},
"output": {
"active": true,
"outSizeMethod": 6,
"cropToFit": false,
"outputPAR": 0,
"outFPS": 0.0,
"customResolutionPriority": 0,
"lockAspectRatio": true
}
}
},
{
"name": "Film Restoration",
"description": "Restore old film footage with comprehensive enhancement",
"author": "Template Manager",
"date": "Fri Aug 15 05:34:55 2025 GMT+0000",
"veaiversion": "5.1.2",
"editable": true,
"enabled": true,
"saveOutputSettings": false,
"path": null,
"settings": {
"stabilize": {
"active": true,
"smooth": 80,
"method": 1,
"rsc": false,
"reduceMotion": false,
"reduceMotionIteration": 2
},
"motionblur": {
"active": false,
"model": "thm-2"
},
"slowmo": {
"active": false,
"model": "apo-8",
"factor": 1.0,
"duplicate": true,
"duplicateThreshold": 10
},
"enhance": {
"active": true,
"model": "prob-4",
"videoType": 1,
"auto": 0,
"fieldOrder": 0,
"compress": 0,
"detail": 50,
"sharpen": 20,
"denoise": 40,
"dehalo": 0,
"deblur": 0,
"addNoise": 0,
"recoverOriginalDetailValue": 20,
"isArtemis": false,
"isGaia": false,
"isTheia": false,
"isProteus": true,
"isIris": false,
"focusFixLevel": "Off",
"isSecondEnhancement": false
},
"grain": {
"active": true,
"grain": 2,
"grainSize": 1
},
"output": {
"active": true,
"outSizeMethod": 7,
"cropToFit": false,
"outputPAR": 0,
"outFPS": 24.0,
"customResolutionPriority": 0,
"lockAspectRatio": true
}
}
},
{
"name": "自动裁剪防抖",
"description": "对抖动的视频素材应用自动裁剪防抖功能",
"author": "Topaz Labs",
"date": "Tue Jul 11 12:00:00 2023 GMT-0500",
"veaiversion": "3.3.5",
"editable": false,
"enabled": true,
"saveOutputSettings": false,
"path": null,
"settings": {
"stabilize": {
"active": true,
"smooth": 50,
"method": 0,
"rsc": false,
"reduceMotion": false,
"reduceMotionIteration": 2
},
"motionblur": {
"active": false,
"model": "thm-2"
},
"slowmo": {
"active": false,
"model": "apo-8",
"factor": 1.0,
"duplicate": true,
"duplicateThreshold": 10
},
"enhance": {
"active": false,
"model": "prob-3",
"videoType": 1,
"auto": 0,
"fieldOrder": 0,
"compress": 0,
"detail": 0,
"sharpen": 0,
"denoise": 0,
"dehalo": 0,
"deblur": 0,
"addNoise": 0,
"recoverOriginalDetailValue": 20,
"isArtemis": false,
"isGaia": false,
"isTheia": false,
"isProteus": true,
"isIris": false,
"focusFixLevel": "Off"
},
"grain": {
"active": false,
"grain": 5,
"grainSize": 2
},
"output": {
"active": true,
"outSizeMethod": 0,
"cropToFit": false,
"outputPAR": 0,
"outFPS": 0.0,
"customResolutionPriority": 0,
"lockAspectRatio": true
}
}
},
{
"name": "4倍慢动作",
"description": "对视频素材应用4倍400%)慢动作效果",
"author": "Topaz Labs",
"date": "Tue Jul 11 12:00:00 2023 GMT-0500",
"veaiversion": "3.3.5",
"editable": false,
"enabled": true,
"saveOutputSettings": false,
"path": null,
"settings": {
"stabilize": {
"active": false,
"smooth": 50,
"method": 1,
"rsc": false,
"reduceMotion": false,
"reduceMotionIteration": 2
},
"motionblur": {
"active": false,
"model": "thm-2"
},
"slowmo": {
"active": true,
"model": "apo-8",
"factor": 4.0,
"duplicate": true,
"duplicateThreshold": 10
},
"enhance": {
"active": false,
"model": "prob-3",
"videoType": 1,
"auto": 0,
"fieldOrder": 0,
"compress": 0,
"detail": 0,
"sharpen": 0,
"denoise": 0,
"dehalo": 0,
"deblur": 0,
"addNoise": 0,
"recoverOriginalDetailValue": 20,
"isArtemis": false,
"isGaia": false,
"isTheia": false,
"isProteus": true,
"isIris": false,
"focusFixLevel": "Off"
},
"grain": {
"active": false,
"grain": 5,
"grainSize": 2
},
"output": {
"active": true,
"outSizeMethod": 0,
"cropToFit": false,
"outputPAR": 0,
"outFPS": 0.0,
"customResolutionPriority": 0,
"lockAspectRatio": true
}
}
},
{
"name": "放大至全高清",
"description": "将视频素材放大至全高清分辨率",
"author": "Topaz Labs",
"date": "Tue Jul 11 12:00:00 2023 GMT-0500",
"veaiversion": "3.3.5",
"editable": false,
"enabled": true,
"saveOutputSettings": false,
"path": null,
"settings": {
"stabilize": {
"active": false,
"smooth": 50,
"method": 1,
"rsc": false,
"reduceMotion": false,
"reduceMotionIteration": 2
},
"motionblur": {
"active": false,
"model": "thm-2"
},
"slowmo": {
"active": false,
"model": "chf-3",
"factor": 1.0,
"duplicate": true,
"duplicateThreshold": 10
},
"enhance": {
"active": true,
"model": "prob-4",
"videoType": 1,
"auto": 0,
"fieldOrder": 0,
"compress": 0,
"detail": 0,
"sharpen": 0,
"denoise": 0,
"dehalo": 0,
"deblur": 0,
"addNoise": 0,
"recoverOriginalDetailValue": 20,
"isArtemis": false,
"isGaia": false,
"isTheia": false,
"isProteus": true,
"isIris": false,
"focusFixLevel": "Off"
},
"grain": {
"active": false,
"grain": 5,
"grainSize": 2
},
"output": {
"active": true,
"outSizeMethod": 6,
"cropToFit": false,
"outputPAR": 0,
"outFPS": 0.0,
"customResolutionPriority": 0,
"lockAspectRatio": true
}
}
}
]

View File

@@ -0,0 +1,67 @@
{
"name": "去隔行扫描并放大至全高清",
"description": "对视频素材进行去隔行扫描处理并放大至全高清分辨率",
"author": "Topaz Labs",
"date": "Tue Jul 11 12:00:00 2023 GMT-0500",
"veaiversion": "3.3.5",
"editable": false,
"enabled": true,
"saveOutputSettings": false,
"path": null,
"settings": {
"stabilize": {
"active": false,
"smooth": 50,
"method": 1,
"rsc": false,
"reduceMotion": false,
"reduceMotionIteration": 2
},
"motionblur": {
"active": false,
"model": "thm-2"
},
"slowmo": {
"active": false,
"model": "chf-3",
"factor": 1.0,
"duplicate": true,
"duplicateThreshold": 10
},
"enhance": {
"active": true,
"model": "ddv-3",
"videoType": 0,
"auto": 0,
"fieldOrder": 0,
"compress": 0,
"detail": 0,
"sharpen": 0,
"denoise": 0,
"dehalo": 0,
"deblur": 0,
"addNoise": 0,
"recoverOriginalDetailValue": 20,
"isArtemis": false,
"isGaia": false,
"isTheia": false,
"isProteus": false,
"isIris": false,
"focusFixLevel": "Off"
},
"grain": {
"active": false,
"grain": 5,
"grainSize": 2
},
"output": {
"active": true,
"outSizeMethod": 6,
"cropToFit": false,
"outputPAR": 0,
"outFPS": 0.0,
"customResolutionPriority": 0,
"lockAspectRatio": true
}
}
}

View File

@@ -0,0 +1,67 @@
{
"name": "放大至4K",
"description": "将视频分辨率放大至4K分辨率同时增强画质。",
"author": "Topaz Labs",
"date": "Tue Jul 11 12:00:00 2023 GMT-0500",
"veaiversion": "3.3.5",
"editable": false,
"enabled": true,
"saveOutputSettings": false,
"path": null,
"settings": {
"stabilize": {
"active": false,
"smooth": 50,
"method": 1,
"rsc": false,
"reduceMotion": false,
"reduceMotionIteration": 2
},
"motionblur": {
"active": false,
"model": "thm-2"
},
"slowmo": {
"active": false,
"model": "apo-8",
"factor": 1.0,
"duplicate": true,
"duplicateThreshold": 10
},
"enhance": {
"active": true,
"model": "prob-4",
"videoType": 1,
"auto": 0,
"fieldOrder": 0,
"compress": 0,
"detail": 0,
"sharpen": 0,
"denoise": 0,
"dehalo": 0,
"deblur": 0,
"addNoise": 0,
"recoverOriginalDetailValue": 20,
"isArtemis": false,
"isGaia": false,
"isTheia": false,
"isProteus": true,
"isIris": false,
"focusFixLevel": "Off"
},
"grain": {
"active": false,
"grain": 5,
"grainSize": 2
},
"output": {
"active": true,
"outSizeMethod": 7,
"cropToFit": false,
"outputPAR": 0,
"outFPS": 0.0,
"customResolutionPriority": 0,
"lockAspectRatio": true
}
}
}

View File

@@ -0,0 +1,67 @@
{
"name": "放大至4K并转换至60帧",
"description": "将视频素材放大至4K分辨率并转换为60fps。",
"author": "Topaz Labs",
"date": "Tue Jul 11 12:00:00 2023 GMT-0500",
"veaiversion": "3.3.5",
"editable": false,
"enabled": true,
"saveOutputSettings": false,
"path": null,
"settings": {
"stabilize": {
"active": false,
"smooth": 50,
"method": 1,
"rsc": false,
"reduceMotion": false,
"reduceMotionIteration": 2
},
"motionblur": {
"active": false,
"model": "thm-2"
},
"slowmo": {
"active": true,
"model": "apo-8",
"factor": 1.0,
"duplicate": true,
"duplicateThreshold": 10
},
"enhance": {
"active": true,
"model": "prob-4",
"videoType": 1,
"auto": 0,
"fieldOrder": 0,
"compress": 0,
"detail": 0,
"sharpen": 0,
"denoise": 0,
"dehalo": 0,
"deblur": 0,
"addNoise": 0,
"recoverOriginalDetailValue": 20,
"isArtemis": false,
"isGaia": false,
"isTheia": false,
"isProteus": true,
"isIris": false,
"focusFixLevel": "Off"
},
"grain": {
"active": false,
"grain": 5,
"grainSize": 2
},
"output": {
"active": true,
"outSizeMethod": 7,
"cropToFit": false,
"outputPAR": 0,
"outFPS": 60.0,
"customResolutionPriority": 0,
"lockAspectRatio": true
}
}
}

View File

@@ -0,0 +1,67 @@
{
"name": "放大至全高清",
"description": "将视频素材放大至全高清分辨率",
"author": "Topaz Labs",
"date": "Tue Jul 11 12:00:00 2023 GMT-0500",
"veaiversion": "3.3.5",
"editable": false,
"enabled": true,
"saveOutputSettings": false,
"path": null,
"settings": {
"stabilize": {
"active": false,
"smooth": 50,
"method": 1,
"rsc": false,
"reduceMotion": false,
"reduceMotionIteration": 2
},
"motionblur": {
"active": false,
"model": "thm-2"
},
"slowmo": {
"active": false,
"model": "chf-3",
"factor": 1.0,
"duplicate": true,
"duplicateThreshold": 10
},
"enhance": {
"active": true,
"model": "prob-4",
"videoType": 1,
"auto": 0,
"fieldOrder": 0,
"compress": 0,
"detail": 0,
"sharpen": 0,
"denoise": 0,
"dehalo": 0,
"deblur": 0,
"addNoise": 0,
"recoverOriginalDetailValue": 20,
"isArtemis": false,
"isGaia": false,
"isTheia": false,
"isProteus": true,
"isIris": false,
"focusFixLevel": "Off"
},
"grain": {
"active": false,
"grain": 5,
"grainSize": 2
},
"output": {
"active": true,
"outSizeMethod": 6,
"cropToFit": false,
"outputPAR": 0,
"outFPS": 0.0,
"customResolutionPriority": 0,
"lockAspectRatio": true
}
}
}

View File

@@ -0,0 +1,67 @@
{
"name": "自动裁剪防抖",
"description": "对抖动的视频素材应用自动裁剪防抖功能",
"author": "Topaz Labs",
"date": "Tue Jul 11 12:00:00 2023 GMT-0500",
"veaiversion": "3.3.5",
"editable": false,
"enabled": true,
"saveOutputSettings": false,
"path": null,
"settings": {
"stabilize": {
"active": true,
"smooth": 50,
"method": 0,
"rsc": false,
"reduceMotion": false,
"reduceMotionIteration": 2
},
"motionblur": {
"active": false,
"model": "thm-2"
},
"slowmo": {
"active": false,
"model": "apo-8",
"factor": 1.0,
"duplicate": true,
"duplicateThreshold": 10
},
"enhance": {
"active": false,
"model": "prob-3",
"videoType": 1,
"auto": 0,
"fieldOrder": 0,
"compress": 0,
"detail": 0,
"sharpen": 0,
"denoise": 0,
"dehalo": 0,
"deblur": 0,
"addNoise": 0,
"recoverOriginalDetailValue": 20,
"isArtemis": false,
"isGaia": false,
"isTheia": false,
"isProteus": true,
"isIris": false,
"focusFixLevel": "Off"
},
"grain": {
"active": false,
"grain": 5,
"grainSize": 2
},
"output": {
"active": true,
"outSizeMethod": 0,
"cropToFit": false,
"outputPAR": 0,
"outFPS": 0.0,
"customResolutionPriority": 0,
"lockAspectRatio": true
}
}
}

View File

@@ -0,0 +1,67 @@
{
"name": "转换至60帧",
"description": "将视频素材的帧率转换为60fps同时保持原始分辨率",
"author": "Topaz Labs",
"date": "Tue Jul 11 12:00:00 2023 GMT-0500",
"veaiversion": "3.3.5",
"editable": false,
"enabled": true,
"saveOutputSettings": false,
"path": null,
"settings": {
"stabilize": {
"active": false,
"smooth": 50,
"method": 1,
"rsc": false,
"reduceMotion": false,
"reduceMotionIteration": 2
},
"motionblur": {
"active": false,
"model": "thm-2"
},
"slowmo": {
"active": true,
"model": "chf-3",
"factor": 1.0,
"duplicate": true,
"duplicateThreshold": 10
},
"enhance": {
"active": false,
"model": "prob-3",
"videoType": 1,
"auto": 0,
"fieldOrder": 0,
"compress": 0,
"detail": 0,
"sharpen": 0,
"denoise": 0,
"dehalo": 0,
"deblur": 0,
"addNoise": 0,
"recoverOriginalDetailValue": 20,
"isArtemis": false,
"isGaia": false,
"isTheia": false,
"isProteus": true,
"isIris": false,
"focusFixLevel": "Off"
},
"grain": {
"active": false,
"grain": 5,
"grainSize": 2
},
"output": {
"active": true,
"outSizeMethod": 0,
"cropToFit": false,
"outputPAR": 0,
"outFPS": 60.0,
"customResolutionPriority": 0,
"lockAspectRatio": true
}
}
}

View File

@@ -0,0 +1,18 @@
{
"embed_dim": 1024,
"vision_cfg": {
"image_size": 224,
"timm_model_name": "eva_giant_patch14_224",
"timm_model_pretrained": false,
"timm_pool": "token",
"timm_proj": null
},
"text_cfg": {
"context_length": 77,
"vocab_size": 49408,
"width": 1024,
"heads": 16,
"layers": 24
},
"custom_text": true
}

View File

@@ -0,0 +1,18 @@
{
"embed_dim": 1024,
"vision_cfg": {
"image_size": 224,
"timm_model_name": "eva_giant_patch14_224",
"timm_model_pretrained": false,
"timm_pool": "token",
"timm_proj": null
},
"text_cfg": {
"context_length": 77,
"vocab_size": 49408,
"width": 768,
"heads": 12,
"layers": 12
},
"custom_text": true
}

View File

@@ -0,0 +1,18 @@
{
"embed_dim": 512,
"vision_cfg": {
"image_size": 224,
"timm_model_name": "eva02_base_patch16_clip_224",
"timm_model_pretrained": false,
"timm_pool": "token",
"timm_proj": null
},
"text_cfg": {
"context_length": 77,
"vocab_size": 49408,
"width": 512,
"heads": 8,
"layers": 12
},
"custom_text": true
}

View File

@@ -0,0 +1,18 @@
{
"embed_dim": 1024,
"vision_cfg": {
"image_size": 224,
"timm_model_name": "eva02_enormous_patch14_clip_224",
"timm_model_pretrained": false,
"timm_pool": "token",
"timm_proj": null
},
"text_cfg": {
"context_length": 77,
"vocab_size": 49408,
"width": 1280,
"heads": 20,
"layers": 32
},
"custom_text": true
}

View File

@@ -0,0 +1,18 @@
{
"embed_dim": 1024,
"vision_cfg": {
"image_size": 224,
"timm_model_name": "eva02_enormous_patch14_clip_224",
"timm_model_pretrained": false,
"timm_pool": "token",
"timm_proj": null
},
"text_cfg": {
"context_length": 77,
"vocab_size": 49408,
"width": 1024,
"heads": 16,
"layers": 24
},
"custom_text": true
}

View File

@@ -0,0 +1,18 @@
{
"embed_dim": 768,
"vision_cfg": {
"image_size": 336,
"timm_model_name": "eva02_large_patch14_clip_336",
"timm_model_pretrained": false,
"timm_pool": "token",
"timm_proj": null
},
"text_cfg": {
"context_length": 77,
"vocab_size": 49408,
"width": 768,
"heads": 12,
"layers": 12
},
"custom_text": true
}

View File

@@ -0,0 +1,18 @@
{
"embed_dim": 768,
"vision_cfg": {
"image_size": 224,
"timm_model_name": "eva02_large_patch14_clip_224",
"timm_model_pretrained": false,
"timm_pool": "token",
"timm_proj": null
},
"text_cfg": {
"context_length": 77,
"vocab_size": 49408,
"width": 768,
"heads": 12,
"layers": 12
},
"custom_text": true
}

View File

@@ -0,0 +1,21 @@
{
"embed_dim": 512,
"vision_cfg": {
"timm_model_name": "vit_base_mci_224",
"timm_model_pretrained": false,
"timm_pool": "token",
"timm_proj": null,
"timm_drop": 0.0,
"timm_drop_path": 0.0,
"image_size": 224
},
"text_cfg": {
"context_length": 77,
"vocab_size": 49408,
"width": 512,
"heads": 8,
"layers": 12,
"no_causal_mask": false
},
"custom_text": true
}

View File

@@ -0,0 +1,21 @@
{
"embed_dim": 512,
"vision_cfg": {
"timm_model_name": "fastvit_mci1",
"timm_model_pretrained": false,
"timm_pool": "avg",
"timm_proj": null,
"timm_drop": 0.0,
"timm_drop_path": 0.0,
"image_size": 256
},
"text_cfg": {
"context_length": 77,
"vocab_size": 49408,
"width": 512,
"heads": 8,
"layers": 12,
"no_causal_mask": true
},
"custom_text": true
}

View File

@@ -0,0 +1,21 @@
{
"embed_dim": 512,
"vision_cfg": {
"timm_model_name": "fastvit_mci2",
"timm_model_pretrained": false,
"timm_pool": "avg",
"timm_proj": null,
"timm_drop": 0.0,
"timm_drop_path": 0.0,
"image_size": 256
},
"text_cfg": {
"context_length": 77,
"vocab_size": 49408,
"width": 512,
"heads": 8,
"layers": 12,
"no_causal_mask": true
},
"custom_text": true
}

View File

@@ -0,0 +1,22 @@
{
"embed_dim": 512,
"quick_gelu": true,
"vision_cfg": {
"image_size": 224,
"layers": [
3,
4,
23,
3
],
"width": 64,
"patch_size": null
},
"text_cfg": {
"context_length": 77,
"vocab_size": 49408,
"width": 512,
"heads": 8,
"layers": 12
}
}

View File

@@ -0,0 +1,21 @@
{
"embed_dim": 512,
"vision_cfg": {
"image_size": 224,
"layers": [
3,
4,
23,
3
],
"width": 64,
"patch_size": null
},
"text_cfg": {
"context_length": 77,
"vocab_size": 49408,
"width": 512,
"heads": 8,
"layers": 12
}
}

View File

@@ -0,0 +1,22 @@
{
"embed_dim": 1024,
"quick_gelu": true,
"vision_cfg": {
"image_size": 224,
"layers": [
3,
4,
6,
3
],
"width": 64,
"patch_size": null
},
"text_cfg": {
"context_length": 77,
"vocab_size": 49408,
"width": 512,
"heads": 8,
"layers": 12
}
}

View File

@@ -0,0 +1,21 @@
{
"embed_dim": 1024,
"vision_cfg": {
"image_size": 224,
"layers": [
3,
4,
6,
3
],
"width": 64,
"patch_size": null
},
"text_cfg": {
"context_length": 77,
"vocab_size": 49408,
"width": 512,
"heads": 8,
"layers": 12
}
}

View File

@@ -0,0 +1,22 @@
{
"embed_dim": 768,
"quick_gelu": true,
"vision_cfg": {
"image_size": 384,
"layers": [
6,
8,
18,
8
],
"width": 96,
"patch_size": null
},
"text_cfg": {
"context_length": 77,
"vocab_size": 49408,
"width": 768,
"heads": 12,
"layers": 12
}
}

View File

@@ -0,0 +1,21 @@
{
"embed_dim": 768,
"vision_cfg": {
"image_size": 384,
"layers": [
6,
8,
18,
8
],
"width": 96,
"patch_size": null
},
"text_cfg": {
"context_length": 77,
"vocab_size": 49408,
"width": 768,
"heads": 12,
"layers": 12
}
}

View File

@@ -0,0 +1,22 @@
{
"embed_dim": 640,
"quick_gelu": true,
"vision_cfg": {
"image_size": 288,
"layers": [
4,
6,
10,
6
],
"width": 80,
"patch_size": null
},
"text_cfg": {
"context_length": 77,
"vocab_size": 49408,
"width": 640,
"heads": 10,
"layers": 12
}
}

View File

@@ -0,0 +1,21 @@
{
"embed_dim": 640,
"vision_cfg": {
"image_size": 288,
"layers": [
4,
6,
10,
6
],
"width": 80,
"patch_size": null
},
"text_cfg": {
"context_length": 77,
"vocab_size": 49408,
"width": 640,
"heads": 10,
"layers": 12
}
}

View File

@@ -0,0 +1,22 @@
{
"embed_dim": 1024,
"quick_gelu": true,
"vision_cfg": {
"image_size": 448,
"layers": [
3,
15,
36,
10
],
"width": 128,
"patch_size": null
},
"text_cfg": {
"context_length": 77,
"vocab_size": 49408,
"width": 1024,
"heads": 16,
"layers": 12
}
}

View File

@@ -0,0 +1,21 @@
{
"embed_dim": 1024,
"vision_cfg": {
"image_size": 448,
"layers": [
3,
15,
36,
10
],
"width": 128,
"patch_size": null
},
"text_cfg": {
"context_length": 77,
"vocab_size": 49408,
"width": 1024,
"heads": 16,
"layers": 12
}
}

View File

@@ -0,0 +1,29 @@
{
"embed_dim": 768,
"init_logit_bias": -10,
"custom_text": true,
"vision_cfg": {
"image_size": 256,
"timm_model_name": "vit_base_patch16_siglip_256",
"timm_model_pretrained": false,
"timm_pool": "map",
"timm_proj": "none"
},
"text_cfg": {
"context_length": 64,
"vocab_size": 32000,
"hf_tokenizer_name": "timm/ViT-B-16-SigLIP",
"tokenizer_kwargs": {
"clean": "canonicalize"
},
"width": 768,
"heads": 12,
"layers": 12,
"no_causal_mask": true,
"proj_bias": true,
"pool_type": "last",
"norm_kwargs":{
"eps": 1e-6
}
}
}

View File

@@ -0,0 +1,29 @@
{
"embed_dim": 768,
"init_logit_bias": -10,
"custom_text": true,
"vision_cfg": {
"image_size": 384,
"timm_model_name": "vit_base_patch16_siglip_384",
"timm_model_pretrained": false,
"timm_pool": "map",
"timm_proj": "none"
},
"text_cfg": {
"context_length": 64,
"vocab_size": 32000,
"hf_tokenizer_name": "timm/ViT-B-16-SigLIP",
"tokenizer_kwargs": {
"clean": "canonicalize"
},
"width": 768,
"heads": 12,
"layers": 12,
"no_causal_mask": true,
"proj_bias": true,
"pool_type": "last",
"norm_kwargs":{
"eps": 1e-6
}
}
}

View File

@@ -0,0 +1,29 @@
{
"embed_dim": 768,
"init_logit_bias": -10,
"custom_text": true,
"vision_cfg": {
"image_size": 512,
"timm_model_name": "vit_base_patch16_siglip_512",
"timm_model_pretrained": false,
"timm_pool": "map",
"timm_proj": "none"
},
"text_cfg": {
"context_length": 64,
"vocab_size": 32000,
"hf_tokenizer_name": "timm/ViT-B-16-SigLIP",
"tokenizer_kwargs": {
"clean": "canonicalize"
},
"width": 768,
"heads": 12,
"layers": 12,
"no_causal_mask": true,
"proj_bias": true,
"pool_type": "last",
"norm_kwargs":{
"eps": 1e-6
}
}
}

View File

@@ -0,0 +1,29 @@
{
"embed_dim": 768,
"init_logit_bias": -10,
"custom_text": true,
"vision_cfg": {
"image_size": 256,
"timm_model_name": "vit_base_patch16_siglip_256",
"timm_model_pretrained": false,
"timm_pool": "map",
"timm_proj": "none"
},
"text_cfg": {
"context_length": 64,
"vocab_size": 250000,
"hf_tokenizer_name": "timm/ViT-B-16-SigLIP-i18n-256",
"tokenizer_kwargs": {
"clean": "canonicalize"
},
"width": 768,
"heads": 12,
"layers": 12,
"no_causal_mask": true,
"proj_bias": true,
"pool_type": "last",
"norm_kwargs":{
"eps": 1e-6
}
}
}

View File

@@ -0,0 +1,29 @@
{
"embed_dim": 768,
"init_logit_bias": -10,
"custom_text": true,
"vision_cfg": {
"image_size": 224,
"timm_model_name": "vit_base_patch16_siglip_224",
"timm_model_pretrained": false,
"timm_pool": "map",
"timm_proj": "none"
},
"text_cfg": {
"context_length": 64,
"vocab_size": 32000,
"hf_tokenizer_name": "timm/ViT-B-16-SigLIP",
"tokenizer_kwargs": {
"clean": "canonicalize"
},
"width": 768,
"heads": 12,
"layers": 12,
"no_causal_mask": true,
"proj_bias": true,
"pool_type": "last",
"norm_kwargs":{
"eps": 1e-6
}
}
}

View File

@@ -0,0 +1,32 @@
{
"embed_dim": 768,
"init_logit_bias": -10,
"custom_text": true,
"vision_cfg": {
"image_size": 256,
"timm_model_name": "vit_base_patch16_siglip_256",
"timm_model_pretrained": false,
"timm_pool": "map",
"timm_proj": "none"
},
"text_cfg": {
"context_length": 64,
"vocab_size": 256000,
"hf_tokenizer_name": "timm/ViT-B-16-SigLIP2-256",
"tokenizer_kwargs": {
"clean": "canonicalize"
},
"width": 768,
"heads": 12,
"layers": 12,
"no_causal_mask": true,
"proj_bias": true,
"pool_type": "last",
"norm_kwargs":{
"eps": 1e-6
},
"act_kwargs": {
"approximate": "tanh"
}
}
}

View File

@@ -0,0 +1,32 @@
{
"embed_dim": 768,
"init_logit_bias": -10,
"custom_text": true,
"vision_cfg": {
"image_size": 384,
"timm_model_name": "vit_base_patch16_siglip_384",
"timm_model_pretrained": false,
"timm_pool": "map",
"timm_proj": "none"
},
"text_cfg": {
"context_length": 64,
"vocab_size": 256000,
"hf_tokenizer_name": "timm/ViT-B-16-SigLIP2-384",
"tokenizer_kwargs": {
"clean": "canonicalize"
},
"width": 768,
"heads": 12,
"layers": 12,
"no_causal_mask": true,
"proj_bias": true,
"pool_type": "last",
"norm_kwargs":{
"eps": 1e-6
},
"act_kwargs": {
"approximate": "tanh"
}
}
}

View File

@@ -0,0 +1,32 @@
{
"embed_dim": 768,
"init_logit_bias": -10,
"custom_text": true,
"vision_cfg": {
"image_size": 512,
"timm_model_name": "vit_base_patch16_siglip_512",
"timm_model_pretrained": false,
"timm_pool": "map",
"timm_proj": "none"
},
"text_cfg": {
"context_length": 64,
"vocab_size": 256000,
"hf_tokenizer_name": "timm/ViT-B-16-SigLIP2-512",
"tokenizer_kwargs": {
"clean": "canonicalize"
},
"width": 768,
"heads": 12,
"layers": 12,
"no_causal_mask": true,
"proj_bias": true,
"pool_type": "last",
"norm_kwargs":{
"eps": 1e-6
},
"act_kwargs": {
"approximate": "tanh"
}
}
}

View File

@@ -0,0 +1,32 @@
{
"embed_dim": 768,
"init_logit_bias": -10,
"custom_text": true,
"vision_cfg": {
"image_size": 224,
"timm_model_name": "vit_base_patch16_siglip_224",
"timm_model_pretrained": false,
"timm_pool": "map",
"timm_proj": "none"
},
"text_cfg": {
"context_length": 64,
"vocab_size": 256000,
"hf_tokenizer_name": "timm/ViT-B-16-SigLIP2",
"tokenizer_kwargs": {
"clean": "canonicalize"
},
"width": 768,
"heads": 12,
"layers": 12,
"no_causal_mask": true,
"proj_bias": true,
"pool_type": "last",
"norm_kwargs":{
"eps": 1e-6
},
"act_kwargs": {
"approximate": "tanh"
}
}
}

View File

@@ -0,0 +1,16 @@
{
"embed_dim": 640,
"vision_cfg": {
"image_size": 240,
"layers": 12,
"width": 896,
"patch_size": 16
},
"text_cfg": {
"context_length": 77,
"vocab_size": 49408,
"width": 640,
"heads": 10,
"layers": 12
}
}

View File

@@ -0,0 +1,16 @@
{
"embed_dim": 640,
"vision_cfg": {
"image_size": 224,
"layers": 12,
"width": 896,
"patch_size": 16
},
"text_cfg": {
"context_length": 77,
"vocab_size": 49408,
"width": 640,
"heads": 10,
"layers": 12
}
}

View File

@@ -0,0 +1,17 @@
{
"embed_dim": 512,
"quick_gelu": true,
"vision_cfg": {
"image_size": 224,
"layers": 12,
"width": 768,
"patch_size": 16
},
"text_cfg": {
"context_length": 77,
"vocab_size": 49408,
"width": 512,
"heads": 8,
"layers": 12
}
}

View File

@@ -0,0 +1,16 @@
{
"embed_dim": 512,
"vision_cfg": {
"image_size": 224,
"layers": 12,
"width": 768,
"patch_size": 16
},
"text_cfg": {
"context_length": 77,
"vocab_size": 49408,
"width": 512,
"heads": 8,
"layers": 12
}
}

View File

@@ -0,0 +1,16 @@
{
"embed_dim": 512,
"vision_cfg": {
"image_size": 256,
"layers": 12,
"width": 768,
"patch_size": 32
},
"text_cfg": {
"context_length": 77,
"vocab_size": 49408,
"width": 512,
"heads": 8,
"layers": 12
}
}

View File

@@ -0,0 +1,32 @@
{
"embed_dim": 768,
"init_logit_bias": -10,
"custom_text": true,
"vision_cfg": {
"image_size": 256,
"timm_model_name": "vit_base_patch32_siglip_256",
"timm_model_pretrained": false,
"timm_pool": "map",
"timm_proj": "none"
},
"text_cfg": {
"context_length": 64,
"vocab_size": 256000,
"hf_tokenizer_name": "timm/ViT-B-32-SigLIP2-256",
"tokenizer_kwargs": {
"clean": "canonicalize"
},
"width": 768,
"heads": 12,
"layers": 12,
"no_causal_mask": true,
"proj_bias": true,
"pool_type": "last",
"norm_kwargs":{
"eps": 1e-6
},
"act_kwargs": {
"approximate": "tanh"
}
}
}

View File

@@ -0,0 +1,16 @@
{
"embed_dim": 640,
"vision_cfg": {
"image_size": 256,
"layers": 12,
"width": 896,
"patch_size": 32
},
"text_cfg": {
"context_length": 77,
"vocab_size": 49408,
"width": 640,
"heads": 10,
"layers": 12
}
}

View File

@@ -0,0 +1,17 @@
{
"embed_dim": 512,
"quick_gelu": true,
"vision_cfg": {
"image_size": 224,
"layers": 12,
"width": 768,
"patch_size": 32
},
"text_cfg": {
"context_length": 77,
"vocab_size": 49408,
"width": 512,
"heads": 8,
"layers": 12
}
}

View File

@@ -0,0 +1,16 @@
{
"embed_dim": 512,
"vision_cfg": {
"image_size": 224,
"layers": 12,
"width": 768,
"patch_size": 32
},
"text_cfg": {
"context_length": 77,
"vocab_size": 49408,
"width": 512,
"heads": 8,
"layers": 12
}
}

View File

@@ -0,0 +1,18 @@
{
"embed_dim": 1024,
"quick_gelu": true,
"vision_cfg": {
"image_size": 378,
"layers": 32,
"width": 1280,
"head_width": 80,
"patch_size": 14
},
"text_cfg": {
"context_length": 77,
"vocab_size": 49408,
"width": 1024,
"heads": 16,
"layers": 24
}
}

View File

@@ -0,0 +1,17 @@
{
"embed_dim": 1024,
"vision_cfg": {
"image_size": 378,
"layers": 32,
"width": 1280,
"head_width": 80,
"patch_size": 14
},
"text_cfg": {
"context_length": 77,
"vocab_size": 49408,
"width": 1024,
"heads": 16,
"layers": 24
}
}

View File

@@ -0,0 +1,26 @@
{
"embed_dim": 1024,
"vision_cfg": {
"image_size": 336,
"layers": 32,
"width": 1280,
"head_width": 80,
"patch_size": 14,
"no_ln_pre": true,
"pool_type": "avg",
"final_ln_after_pool": true
},
"text_cfg": {
"context_length": 32,
"vocab_size": 32000,
"hf_tokenizer_name": "bert-base-uncased",
"tokenizer_kwargs": {
"strip_sep_token": true
},
"width": 1024,
"heads": 16,
"layers": 24,
"pool_type": "last",
"no_causal_mask": true
}
}

View File

@@ -0,0 +1,26 @@
{
"embed_dim": 1024,
"vision_cfg": {
"image_size": 224,
"layers": 32,
"width": 1280,
"head_width": 80,
"patch_size": 14,
"no_ln_pre": true,
"pool_type": "avg",
"final_ln_after_pool": true
},
"text_cfg": {
"context_length": 32,
"vocab_size": 32000,
"hf_tokenizer_name": "bert-base-uncased",
"tokenizer_kwargs": {
"strip_sep_token": true
},
"width": 1024,
"heads": 16,
"layers": 24,
"pool_type": "last",
"no_causal_mask": true
}
}

View File

@@ -0,0 +1,18 @@
{
"embed_dim": 1024,
"quick_gelu": true,
"vision_cfg": {
"image_size": 224,
"layers": 32,
"width": 1280,
"head_width": 80,
"patch_size": 14
},
"text_cfg": {
"context_length": 77,
"vocab_size": 49408,
"width": 1024,
"heads": 16,
"layers": 24
}
}

View File

@@ -0,0 +1,17 @@
{
"embed_dim": 1024,
"vision_cfg": {
"image_size": 224,
"layers": 32,
"width": 1280,
"head_width": 80,
"patch_size": 14
},
"text_cfg": {
"context_length": 77,
"vocab_size": 49408,
"width": 1024,
"heads": 16,
"layers": 24
}
}

View File

@@ -0,0 +1,17 @@
{
"embed_dim": 1024,
"vision_cfg": {
"image_size": 224,
"layers": 32,
"width": 1280,
"head_width": 80,
"patch_size": 16
},
"text_cfg": {
"context_length": 77,
"vocab_size": 49408,
"width": 1024,
"heads": 16,
"layers": 24
}
}

View File

@@ -0,0 +1,16 @@
{
"embed_dim": 768,
"vision_cfg": {
"image_size": 280,
"layers": 24,
"width": 1024,
"patch_size": 14
},
"text_cfg": {
"context_length": 77,
"vocab_size": 49408,
"width": 768,
"heads": 12,
"layers": 12
}
}

View File

@@ -0,0 +1,17 @@
{
"embed_dim": 768,
"quick_gelu": true,
"vision_cfg": {
"image_size": 336,
"layers": 24,
"width": 1024,
"patch_size": 14
},
"text_cfg": {
"context_length": 77,
"vocab_size": 49408,
"width": 768,
"heads": 12,
"layers": 12
}
}

View File

@@ -0,0 +1,16 @@
{
"embed_dim": 768,
"vision_cfg": {
"image_size": 336,
"layers": 24,
"width": 1024,
"patch_size": 14
},
"text_cfg": {
"context_length": 77,
"vocab_size": 49408,
"width": 768,
"heads": 12,
"layers": 12
}
}

View File

@@ -0,0 +1,25 @@
{
"embed_dim": 768,
"vision_cfg": {
"image_size": 336,
"layers": 24,
"width": 1024,
"patch_size": 14,
"no_ln_pre": true,
"pool_type": "avg",
"final_ln_after_pool": true
},
"text_cfg": {
"context_length": 32,
"vocab_size": 32000,
"hf_tokenizer_name": "bert-base-uncased",
"tokenizer_kwargs": {
"strip_sep_token": true
},
"width": 768,
"heads": 12,
"layers": 12,
"pool_type": "last",
"no_causal_mask": true
}
}

View File

@@ -0,0 +1,25 @@
{
"embed_dim": 768,
"vision_cfg": {
"image_size": 224,
"layers": 24,
"width": 1024,
"patch_size": 14,
"no_ln_pre": true,
"pool_type": "avg",
"final_ln_after_pool": true
},
"text_cfg": {
"context_length": 32,
"vocab_size": 32000,
"hf_tokenizer_name": "bert-base-uncased",
"tokenizer_kwargs": {
"strip_sep_token": true
},
"width": 768,
"heads": 12,
"layers": 12,
"pool_type": "last",
"no_causal_mask": true
}
}

View File

@@ -0,0 +1,17 @@
{
"embed_dim": 768,
"quick_gelu": true,
"vision_cfg": {
"image_size": 224,
"layers": 24,
"width": 1024,
"patch_size": 14
},
"text_cfg": {
"context_length": 77,
"vocab_size": 49408,
"width": 768,
"heads": 12,
"layers": 12
}
}

View File

@@ -0,0 +1,16 @@
{
"embed_dim": 768,
"vision_cfg": {
"image_size": 224,
"layers": 24,
"width": 1024,
"patch_size": 14
},
"text_cfg": {
"context_length": 77,
"vocab_size": 49408,
"width": 768,
"heads": 12,
"layers": 12
}
}

View File

@@ -0,0 +1,16 @@
{
"embed_dim": 768,
"vision_cfg": {
"image_size": 320,
"layers": 24,
"width": 1024,
"patch_size": 16
},
"text_cfg": {
"context_length": 77,
"vocab_size": 49408,
"width": 768,
"heads": 12,
"layers": 12
}
}

View File

@@ -0,0 +1,29 @@
{
"embed_dim": 1024,
"init_logit_bias": -10,
"custom_text": true,
"vision_cfg": {
"image_size": 256,
"timm_model_name": "vit_large_patch16_siglip_256",
"timm_model_pretrained": false,
"timm_pool": "map",
"timm_proj": "none"
},
"text_cfg": {
"context_length": 64,
"vocab_size": 32000,
"hf_tokenizer_name": "timm/ViT-B-16-SigLIP",
"tokenizer_kwargs": {
"clean": "canonicalize"
},
"width": 1024,
"heads": 16,
"layers": 24,
"no_causal_mask": true,
"proj_bias": true,
"pool_type": "last",
"norm_kwargs":{
"eps": 1e-6
}
}
}

View File

@@ -0,0 +1,29 @@
{
"embed_dim": 1024,
"init_logit_bias": -10,
"custom_text": true,
"vision_cfg": {
"image_size": 384,
"timm_model_name": "vit_large_patch16_siglip_384",
"timm_model_pretrained": false,
"timm_pool": "map",
"timm_proj": "none"
},
"text_cfg": {
"context_length": 64,
"vocab_size": 32000,
"hf_tokenizer_name": "timm/ViT-B-16-SigLIP",
"tokenizer_kwargs": {
"clean": "canonicalize"
},
"width": 1024,
"heads": 16,
"layers": 24,
"no_causal_mask": true,
"proj_bias": true,
"pool_type": "last",
"norm_kwargs":{
"eps": 1e-6
}
}
}

View File

@@ -0,0 +1,32 @@
{
"embed_dim": 1024,
"init_logit_bias": -10,
"custom_text": true,
"vision_cfg": {
"image_size": 256,
"timm_model_name": "vit_large_patch16_siglip_256",
"timm_model_pretrained": false,
"timm_pool": "map",
"timm_proj": "none"
},
"text_cfg": {
"context_length": 64,
"vocab_size": 256000,
"hf_tokenizer_name": "timm/ViT-L-16-SigLIP2-256",
"tokenizer_kwargs": {
"clean": "canonicalize"
},
"width": 1024,
"heads": 16,
"layers": 24,
"no_causal_mask": true,
"proj_bias": true,
"pool_type": "last",
"norm_kwargs":{
"eps": 1e-6
},
"act_kwargs": {
"approximate": "tanh"
}
}
}

View File

@@ -0,0 +1,32 @@
{
"embed_dim": 1024,
"init_logit_bias": -10,
"custom_text": true,
"vision_cfg": {
"image_size": 384,
"timm_model_name": "vit_large_patch16_siglip_384",
"timm_model_pretrained": false,
"timm_pool": "map",
"timm_proj": "none"
},
"text_cfg": {
"context_length": 64,
"vocab_size": 256000,
"hf_tokenizer_name": "timm/ViT-L-16-SigLIP2-384",
"tokenizer_kwargs": {
"clean": "canonicalize"
},
"width": 1024,
"heads": 16,
"layers": 24,
"no_causal_mask": true,
"proj_bias": true,
"pool_type": "last",
"norm_kwargs":{
"eps": 1e-6
},
"act_kwargs": {
"approximate": "tanh"
}
}
}

View File

@@ -0,0 +1,32 @@
{
"embed_dim": 1024,
"init_logit_bias": -10,
"custom_text": true,
"vision_cfg": {
"image_size": 512,
"timm_model_name": "vit_large_patch16_siglip_512",
"timm_model_pretrained": false,
"timm_pool": "map",
"timm_proj": "none"
},
"text_cfg": {
"context_length": 64,
"vocab_size": 256000,
"hf_tokenizer_name": "timm/ViT-L-16-SigLIP2-512",
"tokenizer_kwargs": {
"clean": "canonicalize"
},
"width": 1024,
"heads": 16,
"layers": 24,
"no_causal_mask": true,
"proj_bias": true,
"pool_type": "last",
"norm_kwargs":{
"eps": 1e-6
},
"act_kwargs": {
"approximate": "tanh"
}
}
}

View File

@@ -0,0 +1,16 @@
{
"embed_dim": 768,
"vision_cfg": {
"image_size": 224,
"layers": 24,
"width": 1024,
"patch_size": 16
},
"text_cfg": {
"context_length": 77,
"vocab_size": 49408,
"width": 768,
"heads": 12,
"layers": 12
}
}

View File

@@ -0,0 +1,17 @@
{
"embed_dim": 384,
"vision_cfg": {
"image_size": 224,
"layers": 12,
"width": 512,
"patch_size": 16,
"ls_init_value": 1e-4
},
"text_cfg": {
"context_length": 77,
"vocab_size": 49408,
"width": 384,
"heads": 6,
"layers": 12
}
}

View File

@@ -0,0 +1,16 @@
{
"embed_dim": 512,
"vision_cfg": {
"image_size": 224,
"layers": 12,
"width": 512,
"patch_size": 16
},
"text_cfg": {
"context_length": 77,
"vocab_size": 49408,
"width": 512,
"heads": 8,
"layers": 12
}
}

View File

@@ -0,0 +1,16 @@
{
"embed_dim": 384,
"vision_cfg": {
"image_size": 224,
"layers": 12,
"width": 512,
"patch_size": 32
},
"text_cfg": {
"context_length": 77,
"vocab_size": 49408,
"width": 384,
"heads": 6,
"layers": 12
}
}

View File

@@ -0,0 +1,16 @@
{
"embed_dim": 512,
"vision_cfg": {
"image_size": 224,
"layers": 12,
"width": 512,
"patch_size": 32
},
"text_cfg": {
"context_length": 77,
"vocab_size": 49408,
"width": 512,
"heads": 8,
"layers": 12
}
}

View File

@@ -0,0 +1,16 @@
{
"embed_dim": 256,
"vision_cfg": {
"image_size": 224,
"layers": 12,
"width": 384,
"patch_size": 16
},
"text_cfg": {
"context_length": 77,
"vocab_size": 49408,
"width": 256,
"heads": 4,
"layers": 10
}
}

View File

@@ -0,0 +1,16 @@
{
"embed_dim": 384,
"vision_cfg": {
"image_size": 224,
"layers": 12,
"width": 384,
"patch_size": 16
},
"text_cfg": {
"context_length": 77,
"vocab_size": 49408,
"width": 384,
"heads": 6,
"layers": 12
}
}

View File

@@ -0,0 +1,16 @@
{
"embed_dim": 256,
"vision_cfg": {
"image_size": 224,
"layers": 12,
"width": 384,
"patch_size": 32
},
"text_cfg": {
"context_length": 77,
"vocab_size": 49408,
"width": 256,
"heads": 4,
"layers": 10
}
}

View File

@@ -0,0 +1,16 @@
{
"embed_dim": 384,
"vision_cfg": {
"image_size": 224,
"layers": 12,
"width": 384,
"patch_size": 32
},
"text_cfg": {
"context_length": 77,
"vocab_size": 49408,
"width": 384,
"heads": 6,
"layers": 12
}
}

View File

@@ -0,0 +1,30 @@
{
"embed_dim": 1152,
"init_logit_bias": -10,
"custom_text": true,
"vision_cfg": {
"image_size": 378,
"timm_model_name": "vit_so400m_patch14_siglip_378",
"timm_model_pretrained": false,
"timm_pool": "map",
"timm_proj": "none"
},
"text_cfg": {
"context_length": 64,
"vocab_size": 32000,
"hf_tokenizer_name": "timm/ViT-B-16-SigLIP",
"tokenizer_kwargs": {
"clean": "canonicalize"
},
"width": 1152,
"heads": 16,
"layers": 27,
"mlp_ratio": 3.7362,
"no_causal_mask": true,
"proj_bias": true,
"pool_type": "last",
"norm_kwargs":{
"eps": 1e-6
}
}
}

View File

@@ -0,0 +1,30 @@
{
"embed_dim": 1152,
"init_logit_bias": -10,
"custom_text": true,
"vision_cfg": {
"image_size": 384,
"timm_model_name": "vit_so400m_patch14_siglip_384",
"timm_model_pretrained": false,
"timm_pool": "map",
"timm_proj": "none"
},
"text_cfg": {
"context_length": 64,
"vocab_size": 32000,
"hf_tokenizer_name": "timm/ViT-B-16-SigLIP",
"tokenizer_kwargs": {
"clean": "canonicalize"
},
"width": 1152,
"heads": 16,
"layers": 27,
"mlp_ratio": 3.7362,
"no_causal_mask": true,
"proj_bias": true,
"pool_type": "last",
"norm_kwargs":{
"eps": 1e-6
}
}
}

View File

@@ -0,0 +1,30 @@
{
"embed_dim": 1152,
"init_logit_bias": -10,
"custom_text": true,
"vision_cfg": {
"image_size": 224,
"timm_model_name": "vit_so400m_patch14_siglip_224",
"timm_model_pretrained": false,
"timm_pool": "map",
"timm_proj": "none"
},
"text_cfg": {
"context_length": 16,
"vocab_size": 32000,
"hf_tokenizer_name": "timm/ViT-B-16-SigLIP",
"tokenizer_kwargs": {
"clean": "canonicalize"
},
"width": 1152,
"heads": 16,
"layers": 27,
"mlp_ratio": 3.7362,
"no_causal_mask": true,
"proj_bias": true,
"pool_type": "last",
"norm_kwargs":{
"eps": 1e-6
}
}
}

View File

@@ -0,0 +1,33 @@
{
"embed_dim": 1152,
"init_logit_bias": -10,
"custom_text": true,
"vision_cfg": {
"image_size": 378,
"timm_model_name": "vit_so400m_patch14_siglip_378",
"timm_model_pretrained": false,
"timm_pool": "map",
"timm_proj": "none"
},
"text_cfg": {
"context_length": 64,
"vocab_size": 256000,
"hf_tokenizer_name": "timm/ViT-SO400M-14-SigLIP2-378",
"tokenizer_kwargs": {
"clean": "canonicalize"
},
"width": 1152,
"heads": 16,
"layers": 27,
"mlp_ratio": 3.7362,
"no_causal_mask": true,
"proj_bias": true,
"pool_type": "last",
"norm_kwargs":{
"eps": 1e-6
},
"act_kwargs": {
"approximate": "tanh"
}
}
}

View File

@@ -0,0 +1,33 @@
{
"embed_dim": 1152,
"init_logit_bias": -10,
"custom_text": true,
"vision_cfg": {
"image_size": 224,
"timm_model_name": "vit_so400m_patch14_siglip_224",
"timm_model_pretrained": false,
"timm_pool": "map",
"timm_proj": "none"
},
"text_cfg": {
"context_length": 64,
"vocab_size": 256000,
"hf_tokenizer_name": "timm/ViT-SO400M-14-SigLIP2",
"tokenizer_kwargs": {
"clean": "canonicalize"
},
"width": 1152,
"heads": 16,
"layers": 27,
"mlp_ratio": 3.7362,
"no_causal_mask": true,
"proj_bias": true,
"pool_type": "last",
"norm_kwargs":{
"eps": 1e-6
},
"act_kwargs": {
"approximate": "tanh"
}
}
}

View File

@@ -0,0 +1,30 @@
{
"embed_dim": 1152,
"init_logit_bias": -10,
"custom_text": true,
"vision_cfg": {
"image_size": 256,
"timm_model_name": "vit_so400m_patch16_siglip_256",
"timm_model_pretrained": false,
"timm_pool": "map",
"timm_proj": "none"
},
"text_cfg": {
"context_length": 64,
"vocab_size": 250000,
"hf_tokenizer_name": "timm/ViT-B-16-SigLIP-i18n-256",
"tokenizer_kwargs": {
"clean": "canonicalize"
},
"width": 1152,
"heads": 16,
"layers": 27,
"mlp_ratio": 3.7362,
"no_causal_mask": true,
"pool_type": "last",
"proj_type": "none",
"norm_kwargs":{
"eps": 1e-6
}
}
}

View File

@@ -0,0 +1,33 @@
{
"embed_dim": 1152,
"init_logit_bias": -10,
"custom_text": true,
"vision_cfg": {
"image_size": 256,
"timm_model_name": "vit_so400m_patch16_siglip_256",
"timm_model_pretrained": false,
"timm_pool": "map",
"timm_proj": "none"
},
"text_cfg": {
"context_length": 64,
"vocab_size": 256000,
"hf_tokenizer_name": "timm/ViT-SO400M-16-SigLIP2-256",
"tokenizer_kwargs": {
"clean": "canonicalize"
},
"width": 1152,
"heads": 16,
"layers": 27,
"mlp_ratio": 3.7362,
"no_causal_mask": true,
"proj_bias": true,
"pool_type": "last",
"norm_kwargs":{
"eps": 1e-6
},
"act_kwargs": {
"approximate": "tanh"
}
}
}

View File

@@ -0,0 +1,33 @@
{
"embed_dim": 1152,
"init_logit_bias": -10,
"custom_text": true,
"vision_cfg": {
"image_size": 384,
"timm_model_name": "vit_so400m_patch16_siglip_384",
"timm_model_pretrained": false,
"timm_pool": "map",
"timm_proj": "none"
},
"text_cfg": {
"context_length": 64,
"vocab_size": 256000,
"hf_tokenizer_name": "timm/ViT-SO400M-16-SigLIP2-384",
"tokenizer_kwargs": {
"clean": "canonicalize"
},
"width": 1152,
"heads": 16,
"layers": 27,
"mlp_ratio": 3.7362,
"no_causal_mask": true,
"proj_bias": true,
"pool_type": "last",
"norm_kwargs":{
"eps": 1e-6
},
"act_kwargs": {
"approximate": "tanh"
}
}
}

View File

@@ -0,0 +1,33 @@
{
"embed_dim": 1152,
"init_logit_bias": -10,
"custom_text": true,
"vision_cfg": {
"image_size": 512,
"timm_model_name": "vit_so400m_patch16_siglip_512",
"timm_model_pretrained": false,
"timm_pool": "map",
"timm_proj": "none"
},
"text_cfg": {
"context_length": 64,
"vocab_size": 256000,
"hf_tokenizer_name": "timm/ViT-SO400M-16-SigLIP2-512",
"tokenizer_kwargs": {
"clean": "canonicalize"
},
"width": 1152,
"heads": 16,
"layers": 27,
"mlp_ratio": 3.7362,
"no_causal_mask": true,
"proj_bias": true,
"pool_type": "last",
"norm_kwargs":{
"eps": 1e-6
},
"act_kwargs": {
"approximate": "tanh"
}
}
}

View File

@@ -0,0 +1,27 @@
{
"embed_dim": 1280,
"vision_cfg": {
"image_size": 336,
"layers": 48,
"width": 1664,
"head_width": 104,
"mlp_ratio": 4.9231,
"patch_size": 14,
"no_ln_pre": true,
"pool_type": "avg",
"final_ln_after_pool": true
},
"text_cfg": {
"context_length": 32,
"vocab_size": 32000,
"hf_tokenizer_name": "bert-base-uncased",
"tokenizer_kwargs": {
"strip_sep_token": true
},
"width": 1280,
"heads": 20,
"layers": 32,
"pool_type": "last",
"no_causal_mask": true
}
}

View File

@@ -0,0 +1,27 @@
{
"embed_dim": 1280,
"vision_cfg": {
"image_size": 224,
"layers": 48,
"width": 1664,
"head_width": 104,
"mlp_ratio": 4.9231,
"patch_size": 14,
"no_ln_pre": true,
"pool_type": "avg",
"final_ln_after_pool": true
},
"text_cfg": {
"context_length": 32,
"vocab_size": 32000,
"hf_tokenizer_name": "bert-base-uncased",
"tokenizer_kwargs": {
"strip_sep_token": true
},
"width": 1280,
"heads": 20,
"layers": 32,
"pool_type": "last",
"no_causal_mask": true
}
}

View File

@@ -0,0 +1,19 @@
{
"embed_dim": 1280,
"quick_gelu": true,
"vision_cfg": {
"image_size": 224,
"layers": 48,
"width": 1664,
"head_width": 104,
"mlp_ratio": 4.9231,
"patch_size": 14
},
"text_cfg": {
"context_length": 77,
"vocab_size": 49408,
"width": 1280,
"heads": 20,
"layers": 32
}
}

View File

@@ -0,0 +1,18 @@
{
"embed_dim": 1280,
"vision_cfg": {
"image_size": 224,
"layers": 48,
"width": 1664,
"head_width": 104,
"mlp_ratio": 4.9231,
"patch_size": 14
},
"text_cfg": {
"context_length": 77,
"vocab_size": 49408,
"width": 1280,
"heads": 20,
"layers": 32
}
}

View File

@@ -0,0 +1,18 @@
{
"embed_dim": 1280,
"vision_cfg": {
"image_size": 224,
"layers": 56,
"width": 1792,
"head_width": 112,
"mlp_ratio": 8.5715,
"patch_size": 14
},
"text_cfg": {
"context_length": 77,
"vocab_size": 49408,
"width": 1280,
"heads": 20,
"layers": 36
}
}

Some files were not shown because too many files have changed in this diff Show More