feat(nodes): enhance radial attention resolution selector for video
- Overhauled the resolution calculation to be compatible with video radial attention by incorporating video length and patch divisor. - Added UI controls for , , and to the ResolutionSelector node. - The node now outputs for easier integration with video pipelines. - Updated presets and added an example workflow for the new functionality.
This commit is contained in:
@@ -24,44 +24,55 @@ PREFERED_KONTEXT_RESOLUTIONS = [
|
||||
(1568, 672),
|
||||
]
|
||||
|
||||
def calculate_radial_compatible_resolution(width, height, mode="closest", block_size=64):
|
||||
def calculate_radial_compatible_resolution(width, height, mode="closest", block_size=128, length=None, patch_divisor=16):
|
||||
"""
|
||||
Calculate radial attention compatible resolution.
|
||||
Calculate radial attention compatible resolution for images or videos.
|
||||
|
||||
For radial attention to work, patches_per_frame must be divisible by block_size:
|
||||
patches_per_frame = (height//8) * (width//8) // 4
|
||||
For images (length=None):
|
||||
(width/patch_divisor * height/patch_divisor) must be divisible by block_size.
|
||||
|
||||
For videos:
|
||||
(width/patch_divisor * height/patch_divisor * (length+3)/4) must be divisible by block_size.
|
||||
|
||||
Args:
|
||||
width (int): Original width
|
||||
height (int): Original height
|
||||
mode (str): "upscale", "downscale", or "closest"
|
||||
block_size (int): Radial attention block size (64 or 128)
|
||||
length (int, optional): Length of video in frames. If None, calculates for an image.
|
||||
patch_divisor (int): The spatial patch size divisor (e.g., 16 or 32).
|
||||
|
||||
Returns:
|
||||
tuple: (compatible_width, compatible_height)
|
||||
"""
|
||||
|
||||
def find_compatible_dimension(target_size, mode, block_size):
|
||||
# Start with VAE-aligned size
|
||||
base_size = (target_size // VAE_STRIDE[1]) * VAE_STRIDE[1]
|
||||
if length is not None:
|
||||
if (length + 3) % 4 != 0:
|
||||
print(f"Warning: Radial attention may not work with length {length}. It should be 4k-3 (e.g., 1, 5, ..., 81).")
|
||||
length_factor = 1
|
||||
else:
|
||||
length_factor = (length + 3) // 4
|
||||
|
||||
# Search for a size where patches_per_frame % block_size == 0
|
||||
search_range = range(max(VAE_STRIDE[1], base_size - 64), base_size + 80, VAE_STRIDE[1])
|
||||
common_divisor = math.gcd(length_factor, block_size)
|
||||
target_divisor = block_size // common_divisor
|
||||
else:
|
||||
target_divisor = block_size
|
||||
|
||||
def find_compatible_dimension(target_size, other_dim_patched, mode):
|
||||
base_size = (target_size // patch_divisor) * patch_divisor
|
||||
search_range = range(max(patch_divisor, base_size - 128), base_size + 128 + patch_divisor, patch_divisor)
|
||||
|
||||
candidates = []
|
||||
for test_size in search_range:
|
||||
lat_dim = test_size // VAE_STRIDE[1]
|
||||
patches_per_frame = (lat_dim * lat_dim) // (PATCH_SIZE[1] * PATCH_SIZE[2])
|
||||
|
||||
if patches_per_frame % block_size == 0:
|
||||
patched_dim = test_size // patch_divisor
|
||||
if (patched_dim * other_dim_patched) % target_divisor == 0:
|
||||
distance = abs(test_size - target_size)
|
||||
candidates.append((distance, test_size))
|
||||
|
||||
if not candidates:
|
||||
# Fallback: just ensure VAE alignment
|
||||
return base_size if base_size >= VAE_STRIDE[1] else VAE_STRIDE[1]
|
||||
return base_size if base_size >= patch_divisor else patch_divisor
|
||||
|
||||
candidates.sort() # Sort by distance
|
||||
candidates.sort()
|
||||
|
||||
if mode == "upscale":
|
||||
valid_candidates = [size for dist, size in candidates if size >= target_size]
|
||||
@@ -71,93 +82,52 @@ def calculate_radial_compatible_resolution(width, height, mode="closest", block_
|
||||
return valid_candidates[0] if valid_candidates else candidates[0][1]
|
||||
else: # closest
|
||||
return candidates[0][1]
|
||||
|
||||
# Handle square resolutions specially (both dimensions must work together)
|
||||
|
||||
if width == height:
|
||||
# For square resolutions, find size where lat_dim^2 // 4 % block_size == 0
|
||||
target_lat = width // VAE_STRIDE[1]
|
||||
|
||||
# Always prefer higher values - search upward first
|
||||
target_patched = width // patch_divisor
|
||||
candidates = []
|
||||
|
||||
# Search upward for compatible sizes
|
||||
for offset in range(0, 16): # Search upward from target
|
||||
test_lat = target_lat + offset
|
||||
if test_lat <= 0:
|
||||
continue
|
||||
|
||||
patches_per_frame = (test_lat * test_lat) // (PATCH_SIZE[1] * PATCH_SIZE[2])
|
||||
if patches_per_frame % block_size == 0:
|
||||
test_size = test_lat * VAE_STRIDE[1]
|
||||
for offset in range(0, 32):
|
||||
test_patched = target_patched + offset
|
||||
if test_patched > 0 and (test_patched * test_patched) % target_divisor == 0:
|
||||
test_size = test_patched * patch_divisor
|
||||
distance = abs(test_size - width)
|
||||
candidates.append((distance, test_size, test_size >= width))
|
||||
|
||||
# If no upward candidates, search downward
|
||||
if not candidates:
|
||||
for offset in range(-1, -16, -1): # Search downward from target
|
||||
test_lat = target_lat + offset
|
||||
if test_lat <= 0:
|
||||
continue
|
||||
|
||||
patches_per_frame = (test_lat * test_lat) // (PATCH_SIZE[1] * PATCH_SIZE[2])
|
||||
if patches_per_frame % block_size == 0:
|
||||
test_size = test_lat * VAE_STRIDE[1]
|
||||
for offset in range(-1, -32, -1):
|
||||
test_patched = target_patched + offset
|
||||
if test_patched > 0 and (test_patched * test_patched) % target_divisor == 0:
|
||||
test_size = test_patched * patch_divisor
|
||||
distance = abs(test_size - width)
|
||||
candidates.append((distance, test_size, test_size >= width))
|
||||
|
||||
if candidates:
|
||||
# Always prefer higher values (>= original size)
|
||||
higher_candidates = [c for c in candidates if c[2]] # c[2] is "is_higher_or_equal"
|
||||
higher_candidates = [c for c in candidates if c[2]]
|
||||
if higher_candidates:
|
||||
# Sort by distance and return the closest higher value
|
||||
higher_candidates.sort(key=lambda x: x[0])
|
||||
return higher_candidates[0][1], higher_candidates[0][1]
|
||||
res = higher_candidates[0][1]
|
||||
return res, res
|
||||
else:
|
||||
# Fallback to closest if no higher candidates
|
||||
candidates.sort(key=lambda x: x[0])
|
||||
return candidates[0][1], candidates[0][1]
|
||||
|
||||
# If no perfect match found, use the original if it's already compatible
|
||||
orig_lat = width // VAE_STRIDE[1]
|
||||
orig_patches = (orig_lat * orig_lat) // 4
|
||||
if orig_patches % block_size == 0:
|
||||
return width, height
|
||||
res = candidates[0][1]
|
||||
return res, res
|
||||
|
||||
# For non-square or fallback, handle dimensions independently
|
||||
compatible_width = find_compatible_dimension(width, mode, block_size)
|
||||
compatible_height = find_compatible_dimension(height, mode, block_size)
|
||||
# For non-square, we can't easily solve for both. Let's adjust one dimension first.
|
||||
# We'll adjust width first, then find a compatible height.
|
||||
base_width = (width // patch_divisor) * patch_divisor
|
||||
base_height = (height // patch_divisor) * patch_divisor
|
||||
|
||||
return compatible_width, compatible_height
|
||||
w_p = base_width // patch_divisor
|
||||
h_p = base_height // patch_divisor
|
||||
|
||||
if (w_p * h_p) % target_divisor == 0:
|
||||
return base_width, base_height
|
||||
|
||||
def update_resolutions_for_radial_attention(resolutions_dict, mode="closest", block_size=64):
|
||||
"""
|
||||
Update resolution dictionary to make all resolutions radial attention compatible.
|
||||
# If not compatible, find a new height for the current width
|
||||
compatible_height = find_compatible_dimension(height, w_p, mode)
|
||||
|
||||
Args:
|
||||
resolutions_dict (dict): Original resolutions dictionary
|
||||
mode (str): "upscale", "downscale", or "closest"
|
||||
block_size (int): Radial attention block size (64 or 128)
|
||||
|
||||
Returns:
|
||||
dict: Updated resolutions dictionary
|
||||
"""
|
||||
updated_resolutions = {}
|
||||
|
||||
for model_type, orientations in resolutions_dict.items():
|
||||
updated_resolutions[model_type] = {}
|
||||
|
||||
for orientation, qualities in orientations.items():
|
||||
updated_resolutions[model_type][orientation] = {}
|
||||
|
||||
for quality, (width, height) in qualities.items():
|
||||
new_width, new_height = calculate_radial_compatible_resolution(width, height, mode, block_size)
|
||||
updated_resolutions[model_type][orientation][quality] = (new_width, new_height)
|
||||
|
||||
# Log changes if resolution was modified
|
||||
if new_width != width or new_height != height:
|
||||
print(f"Radial Attention (block_size={block_size}): {model_type}-{orientation}-{quality}: {width}x{height} -> {new_width}x{new_height}")
|
||||
|
||||
return updated_resolutions
|
||||
return base_width, compatible_height
|
||||
|
||||
class ResolutionSelector:
|
||||
"""Select width & height for video/image generation.
|
||||
@@ -266,20 +236,22 @@ class ResolutionSelector:
|
||||
"mode": (modes, {"default": modes[0], "tooltip": "Generation mode"}),
|
||||
"aspect_ratio": (sorted(list(all_aspect_ratios)), {"default": "Horizontal"}),
|
||||
"quality": (["HQ", "MQ", "LQ"], {"default": "HQ"}),
|
||||
"radial_attention_mode": (["disabled", "image", "video"], {"default": "disabled", "tooltip": "Enable and configure radial attention compatibility"}),
|
||||
},
|
||||
"optional": {
|
||||
"context": ("*", {}),
|
||||
"enable_radial_attention": ("BOOLEAN", {"default": False, "tooltip": "Enable radial attention compatibility"}),
|
||||
"length": ("INT", {"default": 81, "min": 1, "max": 8192, "step": 4, "tooltip": "Video length in frames (for video radial attention)"}),
|
||||
"patch_divisor": ("INT", {"default": 16, "min": 8, "max": 64, "step": 8, "tooltip": "Spatial patch divisor for radial attention (e.g., 16 or 32)"}),
|
||||
"block_size": ([128, 64], {"default": 128, "tooltip": "Radial attention block size"}),
|
||||
}
|
||||
}
|
||||
|
||||
RETURN_TYPES = ("INT", "INT", "STRING", "*")
|
||||
RETURN_NAMES = ("width", "height", "size_string", "context")
|
||||
RETURN_TYPES = ("INT", "INT", "INT", "STRING", "*")
|
||||
RETURN_NAMES = ("width", "height", "length", "size_string", "context")
|
||||
FUNCTION = "get_resolution"
|
||||
CATEGORY = "🔗llm_toolkit/utils"
|
||||
|
||||
def get_resolution(self, mode, aspect_ratio, quality, context=None, enable_radial_attention=False, block_size=128):
|
||||
def get_resolution(self, mode, aspect_ratio, quality, radial_attention_mode, context=None, length=81, patch_divisor=16, block_size=128):
|
||||
# Initialize or copy the context
|
||||
if context is None:
|
||||
output_context = {}
|
||||
@@ -298,9 +270,11 @@ class ResolutionSelector:
|
||||
|
||||
w, h = self.RESOLUTIONS[mode][aspect_ratio][quality]
|
||||
|
||||
# Apply radial attention compatibility if enabled (always prefer higher values)
|
||||
if enable_radial_attention:
|
||||
w, h = calculate_radial_compatible_resolution(w, h, "upscale", block_size)
|
||||
# Apply radial attention compatibility if enabled
|
||||
if radial_attention_mode == "video":
|
||||
w, h = calculate_radial_compatible_resolution(w, h, "upscale", block_size, length, patch_divisor)
|
||||
elif radial_attention_mode == "image":
|
||||
w, h = calculate_radial_compatible_resolution(w, h, "upscale", block_size, None, patch_divisor)
|
||||
|
||||
# Determine the string output based on the mode
|
||||
if mode in ["GEMINI_IMAGEN", "NANO_BANANA"]:
|
||||
@@ -325,10 +299,10 @@ class ResolutionSelector:
|
||||
output_context["generation_config"] = generation_config
|
||||
# --- End Update context ---
|
||||
|
||||
return (w, h, size_string, output_context)
|
||||
return (w, h, length, size_string, output_context)
|
||||
except KeyError:
|
||||
# fallback default
|
||||
return (832, 480, "832x480", output_context)
|
||||
return (832, 480, length, "832x480", output_context)
|
||||
|
||||
|
||||
NODE_CLASS_MAPPINGS = {
|
||||
@@ -340,48 +314,4 @@ NODE_DISPLAY_NAME_MAPPINGS = {
|
||||
}
|
||||
|
||||
# Export for potential JavaScript access
|
||||
WEB_DIRECTORY = "./web"
|
||||
|
||||
def get_radial_resolutions(mode="closest", block_size=64):
|
||||
"""Get radial attention compatible resolutions."""
|
||||
return update_resolutions_for_radial_attention(ResolutionSelector.RESOLUTIONS, mode, block_size)
|
||||
|
||||
if __name__ == "__main__":
|
||||
# Test the calculator
|
||||
print("Testing radial attention compatible resolutions:")
|
||||
|
||||
for block_size in [64, 128]:
|
||||
print(f"\n=== BLOCK SIZE {block_size} ===")
|
||||
print(f"Original problematic size: 624x624")
|
||||
print("Upscale mode:", calculate_radial_compatible_resolution(624, 624, "upscale", block_size))
|
||||
print("Downscale mode:", calculate_radial_compatible_resolution(624, 624, "downscale", block_size))
|
||||
print("Closest mode:", calculate_radial_compatible_resolution(624, 624, "closest", block_size))
|
||||
|
||||
print(f"\n--- Resolution Sets (block_size={block_size}) ---")
|
||||
|
||||
for mode in ["upscale", "downscale", "closest"]:
|
||||
print(f"\n{mode.upper()} MODE:")
|
||||
radial_resolutions = get_radial_resolutions(mode, block_size)
|
||||
|
||||
# Show squarish resolutions (most affected)
|
||||
print("Squarish resolutions:")
|
||||
for model_type in radial_resolutions:
|
||||
if "Squarish" in radial_resolutions[model_type]:
|
||||
for quality, (w, h) in radial_resolutions[model_type]["Squarish"].items():
|
||||
original = ResolutionSelector.RESOLUTIONS[model_type]["Squarish"][quality]
|
||||
changed = "✓" if (w, h) != original else " "
|
||||
print(f" {model_type}-{quality}: {w}x{h} {changed}")
|
||||
|
||||
# Test a few other problematic ones
|
||||
print("Other potentially problematic:")
|
||||
test_cases = [
|
||||
("T2V14B", "Horizontal", "MQ"), # 1088x832
|
||||
("IMG", "Cinematic", "LQ"), # 1024x440
|
||||
]
|
||||
|
||||
for model, orient, qual in test_cases:
|
||||
if orient in radial_resolutions[model] and qual in radial_resolutions[model][orient]:
|
||||
w, h = radial_resolutions[model][orient][qual]
|
||||
original = ResolutionSelector.RESOLUTIONS[model][orient][qual]
|
||||
changed = "✓" if (w, h) != original else " "
|
||||
print(f" {model}-{orient}-{qual}: {w}x{h} {changed}")
|
||||
WEB_DIRECTORY = "./web"
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 332 KiB |
File diff suppressed because it is too large
Load Diff
+18
-18
@@ -32,27 +32,27 @@
|
||||
{
|
||||
"task": "7 Background and Outfit Replacement",
|
||||
"num_instructions": 1,
|
||||
"prompt": "Image Order: IMAGE_1 is always the main SUBJECT; the LAST image is always the BACKGROUND; any middle images (IMAGE_2..IMAGE_{n-1}) are optional REFS that may represent garment/style/pose/prop or other concepts per user text. Swap scenes and clothing while preserving the subject's identity using Nano Banana AI. Change the background to [your desired background] and the clothes to [your desired clothing style] ."
|
||||
"prompt": "Image Order: IMAGE_1 is always the main SUBJECT; the LAST image is always the BACKGROUND; any middle images (IMAGE_2..IMAGE_{n-1}) are optional REFS that may represent garment/style/pose/prop or other concepts per user text. Swap scenes and clothing while preserving the subject's identity. Change the background to [your desired background] and the clothes to [your desired clothing style] ."
|
||||
},
|
||||
{
|
||||
"task": "8 Outfit Try-On",
|
||||
"num_instructions": 1,
|
||||
"prompt": "Image Order: IMAGE_1 is always the main SUBJECT; the LAST image is always the BACKGROUND; any middle images (IMAGE_2..IMAGE_{n-1}) are optional REFS that may represent garment/style/pose/prop or other concepts per user text. Leverage Nano Banana AI with a selfie and clothing reference to produce multiple on-body effect images, minimizing the need for physical models ."
|
||||
"prompt": "Image Order: IMAGE_1 is always the main SUBJECT; the LAST image is always the BACKGROUND; any middle images (IMAGE_2..IMAGE_{n-1}) are optional REFS that may represent garment/style/pose/prop or other concepts per user text. The priority is to maintain the exact facial features and likeness while replacing clothing to produce an accurate image of the subject wearing on-body effects. This involves following the underlying body structure, ensuring garments fall and fold naturally, and ensuring the subject fits seamlessly with the background, with matching lighting, accurate scale, and perspective images."
|
||||
},
|
||||
{
|
||||
"task": "9 Accessory Swap",
|
||||
"num_instructions": 1,
|
||||
"prompt": "Image Order: IMAGE_1 is always the main SUBJECT; the LAST image is always the BACKGROUND; any middle images (IMAGE_2..IMAGE_{n-1}) are optional REFS that may represent garment/style/pose/prop or other concepts per user text. Transform accessory types and add complementary objects that fit the theme and scene via Nano Banana AI, while keeping facial features intact. Swap [original accessory] with [new accessory] and add [complementary object] ."
|
||||
"prompt": "Image Order: IMAGE_1 is always the main SUBJECT; the LAST image is always the BACKGROUND; any middle images (IMAGE_2..IMAGE_{n-1}) are optional REFS that may represent garment/style/pose/prop or other concepts per user text. Transform accessory types and add complementary objects that fit the theme and scene, while keeping facial features intact. Swap [original accessory] with [new accessory] and add [complementary object] ."
|
||||
},
|
||||
{
|
||||
"task": "10 Single-Hand Holding/Product Placement Consistency",
|
||||
"num_instructions": 1,
|
||||
"prompt": "Image Order: IMAGE_1 is always the main SUBJECT; the LAST image is always the BACKGROUND; any middle images (IMAGE_2..IMAGE_{n-1}) are optional REFS that may represent garment/style/pose/prop or other concepts per. Use Nano Banana AI to add or reposition products with one-arm adjustments, ensuring smooth integration for e-commerce imagery. Have the subject hold [product] with [specific pose/action] ."
|
||||
"prompt": "Image Order: IMAGE_1 is always the main SUBJECT; the LAST image is always the BACKGROUND; any middle images (IMAGE_2..IMAGE_{n-1}) are optional REFS that may represent garment/style/pose/prop or other concepts per. to add or reposition products with one-arm adjustments, ensuring smooth integration for e-commerce imagery. Have the subject hold [product] with [specific pose/action] ."
|
||||
},
|
||||
{
|
||||
"task": "11 Item Accessory Replacement",
|
||||
"num_instructions": 1,
|
||||
"prompt": "Image Order: IMAGE_1 is always the main SUBJECT; the LAST image is always the BACKGROUND; any middle images (IMAGE_2..IMAGE_{n-1}) are optional REFS that may represent garment/style/pose/prop or other concepts per user text. Replace specific accessories or items, such as phone cases, without disturbing the rest of the image through Nano Banana AI. Replace the [original item] with [new item] ."
|
||||
"prompt": "Image Order: IMAGE_1 is always the main SUBJECT; the LAST image is always the BACKGROUND; any middle images (IMAGE_2..IMAGE_{n-1}) are optional REFS that may represent garment/style/pose/prop or other concepts per user text. Replace specific accessories or items, such as phone cases, without disturbing the rest of the image. Replace the [original item] with [new item] ."
|
||||
},
|
||||
{
|
||||
"task": "12 Multi-Panel Montage Storyboard",
|
||||
@@ -62,7 +62,7 @@
|
||||
{
|
||||
"task": "13 Logo-Integrated Ad Short",
|
||||
"num_instructions": 1,
|
||||
"prompt": "Image Order: IMAGE_1 is always the main SUBJECT; the LAST image is always the BACKGROUND; any middle images (IMAGE_2..IMAGE_{n-1}) are optional REFS that may represent garment/style/pose/prop or other concepts per user text. Seamlessly embed brand logos into reference-derived scenes using Nano Banana AI to craft branded narratives. Workflow: Base generation with Ideogram, placement via Nano Banana AI, animation with Runway Gen-4 Turbo ."
|
||||
"prompt": "Image Order: IMAGE_1 is always the main SUBJECT; the LAST image is always the BACKGROUND; any middle images (IMAGE_2..IMAGE_{n-1}) are optional REFS that may represent garment/style/pose/prop or other concepts per user text. Seamlessly embed brand logos into reference-derived scenes to craft branded narratives. Workflow: Base generation with Ideogram, placement, animation with Runway Gen-4 Turbo ."
|
||||
},
|
||||
{
|
||||
"task": "14 Single Product Breakdown",
|
||||
@@ -72,7 +72,7 @@
|
||||
{
|
||||
"task": "15 High-Angle View",
|
||||
"num_instructions": 1,
|
||||
"prompt": "Image Order: IMAGE_1 is always the main SUBJECT; the LAST image is always the BACKGROUND; any middle images (IMAGE_2..IMAGE_{n-1}) are optional REFS that may represent garment/style/pose/prop or other concepts per user text. Produce a high-angle overhead rendition of the original scene using Nano Banana AI for dynamic photography perspectives. Create a high-angle view of this shot ."
|
||||
"prompt": "Image Order: IMAGE_1 is always the main SUBJECT; the LAST image is always the BACKGROUND; any middle images (IMAGE_2..IMAGE_{n-1}) are optional REFS that may represent garment/style/pose/prop or other concepts per user text. Produce a high-angle overhead rendition of the original scene for dynamic photography perspectives. Create a high-angle view of this shot ."
|
||||
},
|
||||
{
|
||||
"task": "16 First-Person POV + Background Blur",
|
||||
@@ -82,7 +82,7 @@
|
||||
{
|
||||
"task": "17 Macro Photography",
|
||||
"num_instructions": 1,
|
||||
"prompt": "Image Order: IMAGE_1 is always the main SUBJECT; the LAST image is always the BACKGROUND; any middle images (IMAGE_2..IMAGE_{n-1}) are optional REFS that may represent garment/style/pose/prop or other concepts per user text. Craft ultra-detailed, realistic images with rich textures via Nano Banana AI, such as hyper-realistic close-ups. Create a hyper-realistic macro photograph of [subject], focusing on [specific details]. The background should be [background description] ."
|
||||
"prompt": "Image Order: IMAGE_1 is always the main SUBJECT; the LAST image is always the BACKGROUND; any middle images (IMAGE_2..IMAGE_{n-1}) are optional REFS that may represent garment/style/pose/prop or other concepts per user text. Craft ultra-detailed, realistic images with rich textures, such as hyper-realistic close-ups. Create a hyper-realistic macro photograph of [subject], focusing on [specific details]. The background should be [background description] ."
|
||||
},
|
||||
{
|
||||
"task": "18 Storyboard/B-Roll Sequence",
|
||||
@@ -92,7 +92,7 @@
|
||||
{
|
||||
"task": "19 Pose Adjustment (Redirection)",
|
||||
"num_instructions": 1,
|
||||
"prompt": "Image Order: IMAGE_1 is always the main SUBJECT; the LAST image is always the BACKGROUND; any middle images (IMAGE_2..IMAGE_{n-1}) are optional REFS that may represent garment/style/pose/prop or other concepts per user text. Effortlessly alter subject poses or gaze directions in images using Nano Banana AI. Change the subject's pose to [desired pose or gaze direction] ."
|
||||
"prompt": "Image Order: IMAGE_1 is always the main SUBJECT; the LAST image is always the BACKGROUND; any middle images (IMAGE_2..IMAGE_{n-1}) are optional REFS that may represent garment/style/pose/prop or other concepts per user text. Effortlessly alter subject poses or gaze directions in images. Change the subject's pose to [desired pose or gaze direction] ."
|
||||
},
|
||||
{
|
||||
"task": "20 DSLR-Style Photo Upgrade: Low-Res to Simulated SLR Quality",
|
||||
@@ -107,17 +107,17 @@
|
||||
{
|
||||
"task": "22 YouTube Thumbnail Creation",
|
||||
"num_instructions": 1,
|
||||
"prompt": "Image Order: IMAGE_1 is always the main SUBJECT; the LAST image is always the BACKGROUND; any middle images (IMAGE_2..IMAGE_{n-1}) are optional REFS that may represent garment/style/pose/prop or other concepts per user text. Design eye-catching thumbnails by combining characters, text, and elements via Nano Banana AI prompts. Create a YouTube thumbnail with [your theme description]. The text should say '[YOUR TITLE]', [font style description]."
|
||||
"prompt": "Image Order: IMAGE_1 is always the main SUBJECT; the LAST image is always the BACKGROUND; any middle images (IMAGE_2..IMAGE_{n-1}) are optional REFS that may represent garment/style/pose/prop or other concepts per user text. Design eye-catching thumbnails by combining characters, text, and elements prompts. Create a YouTube thumbnail with [your theme description]. The text should say '[YOUR TITLE]', [font style description]."
|
||||
},
|
||||
{
|
||||
"task": "23 Continuous Comic Sequel",
|
||||
"num_instructions": 1,
|
||||
"prompt": "Image Order: IMAGE_1 is always the main SUBJECT; the LAST image is always the BACKGROUND; any middle images (IMAGE_2..IMAGE_{n-1}) are optional REFS that may represent garment/style/pose/prop or other concepts per user text. Extend comic panels or chapters in the original art style with straightforward Nano Banana AI prompts. Continue the comic from the provided panel, showing [description of the next scene or action] ."
|
||||
"prompt": "Image Order: IMAGE_1 is always the main SUBJECT; the LAST image is always the BACKGROUND; any middle images (IMAGE_2..IMAGE_{n-1}) are optional REFS that may represent garment/style/pose/prop or other concepts per user text. Extend comic panels or chapters in the original art style with straightforward prompts. Continue the comic from the provided panel, showing [description of the next scene or action] ."
|
||||
},
|
||||
{
|
||||
"task": "24 Stop-Motion Puppet Style",
|
||||
"num_instructions": 1,
|
||||
"prompt": "Image Order: IMAGE_1 is always the main SUBJECT; the LAST image is always the BACKGROUND; any middle images (IMAGE_2..IMAGE_{n-1}) are optional REFS that may represent garment/style/pose/prop or other concepts per user text. Produce handmade stop-motion aesthetics with textured details and lighting through Nano Banana AI. Ultra detailed stop-motion animation frame, scene of [subject and action] interacting on a miniature set, felt and fabric textures, visible stitching, slightly imperfect shapes, handcrafted props, subtle dust and wear for realism, expressions made with sewn buttons and embroidered mouths in the style [specific details about materials, lighting, and style] ."
|
||||
"prompt": "Image Order: IMAGE_1 is always the main SUBJECT; the LAST image is always the BACKGROUND; any middle images (IMAGE_2..IMAGE_{n-1}) are optional REFS that may represent garment/style/pose/prop or other concepts per user text. Produce handmade stop-motion aesthetics with textured details and lighting . Ultra detailed stop-motion animation frame, scene of [subject and action] interacting on a miniature set, felt and fabric textures, visible stitching, slightly imperfect shapes, handcrafted props, subtle dust and wear for realism, expressions made with sewn buttons and embroidered mouths in the style [specific details about materials, lighting, and style] ."
|
||||
},
|
||||
{
|
||||
"task": "25 Tokusatsu Style Scene",
|
||||
@@ -127,7 +127,7 @@
|
||||
{
|
||||
"task": "26 Stick Figure to Character Action",
|
||||
"num_instructions": 1,
|
||||
"prompt": "Image Order: IMAGE_1 is always the main SUBJECT; the LAST image is always the BACKGROUND; any middle images (IMAGE_2..IMAGE_{n-1}) are optional REFS that may represent garment/style/pose/prop or other concepts per user text. Convert basic stick figures into dynamic anime scenes with specified characters using Nano Banana AI for pose-based generation. Transform the stick figure into [character description], performing the action [action description], in an anime style ."
|
||||
"prompt": "Image Order: IMAGE_1 is always the main SUBJECT; the LAST image is always the BACKGROUND; any middle images (IMAGE_2..IMAGE_{n-1}) are optional REFS that may represent garment/style/pose/prop or other concepts per user text. Convert basic stick figures into dynamic anime scenes with specified characters for pose-based generation. Transform the stick figure into [character description], performing the action [action description], in an anime style ."
|
||||
},
|
||||
{
|
||||
"task": "27 Generate a Set of Character Designs/Storybook",
|
||||
@@ -142,7 +142,7 @@
|
||||
{
|
||||
"task": "29 Sci-Fi Landscape Concept Art",
|
||||
"num_instructions": 1,
|
||||
"prompt": "Image Order: IMAGE_1 is always the main SUBJECT; the LAST image is always the BACKGROUND; any middle images (IMAGE_2..IMAGE_{n-1}) are optional REFS that may represent garment/style/pose/prop or other concepts per user text. Render intricate, vibrant sci-fi landscapes and alien worlds using Nano Banana AI. Create a hyper-realistic sci-fi landscape of [scene description], including details like [specific elements, e.g., planets, flora, structures] ."
|
||||
"prompt": "Image Order: IMAGE_1 is always the main SUBJECT; the LAST image is always the BACKGROUND; any middle images (IMAGE_2..IMAGE_{n-1}) are optional REFS that may represent garment/style/pose/prop or other concepts per user text. Render intricate, vibrant sci-fi landscapes and alien worlds. Create a hyper-realistic sci-fi landscape of [scene description], including details like [specific elements, e.g., planets, flora, structures] ."
|
||||
},
|
||||
{
|
||||
"task": "30 Google Street View Annotation",
|
||||
@@ -152,17 +152,17 @@
|
||||
{
|
||||
"task": "31 3D Mask Edits & Color Marking",
|
||||
"num_instructions": 1,
|
||||
"prompt": "Image Order: IMAGE_1 is always the main SUBJECT; the LAST image is always the BACKGROUND; any middle images (IMAGE_2..IMAGE_{n-1}) are optional REFS that may represent garment/style/pose/prop or other concepts per user text. Apply 3D volume masking, pose edits, and color-coded changes in 2D images via Nano Banana AI for technical visualizations. On the provided figure, apply the following edits: [list of edits, e.g., mask specific parts, change pose, mark moved parts with a light blue color grid, unchanged remain unmarked] ."
|
||||
"prompt": "Image Order: IMAGE_1 is always the main SUBJECT; the LAST image is always the BACKGROUND; any middle images (IMAGE_2..IMAGE_{n-1}) are optional REFS that may represent garment/style/pose/prop or other concepts per user text. Apply 3D volume masking, pose edits, and color-coded changes in 2D images for technical visualizations. On the provided figure, apply the following edits: [list of edits, e.g., mask specific parts, change pose, mark moved parts with a light blue color grid, unchanged remain unmarked] ."
|
||||
},
|
||||
{
|
||||
"task": "32 Illustration to Figurine",
|
||||
"num_instructions": 1,
|
||||
"prompt": "Image Order: IMAGE_1 is always the main SUBJECT; the LAST image is always the BACKGROUND; any middle images (IMAGE_2..IMAGE_{n-1}) are optional REFS that may represent garment/style/pose/prop or other concepts per user text. Convert 2D illustrations into realistic 3D figurines, complete with packaging and modeling scenes, using Nano Banana AI. Turn the illustration into a character figurine, and place it in a scene with [details of the background, packaging, and any other elements like a modeling screen] ."
|
||||
"prompt": "Image Order: IMAGE_1 is always the main SUBJECT; the LAST image is always the BACKGROUND; any middle images (IMAGE_2..IMAGE_{n-1}) are optional REFS that may represent garment/style/pose/prop or other concepts per user text. Convert 2D illustrations into realistic 3D figurines, complete with packaging and modeling scenes,. Turn the illustration into a character figurine, and place it in a scene with [details of the background, packaging, and any other elements like a modeling screen] ."
|
||||
},
|
||||
{
|
||||
"task": "33 Illustration to Commercialized 1/7-Scale Figurine",
|
||||
"num_instructions": 1,
|
||||
"prompt": "Image Order: IMAGE_1 is always the main SUBJECT; the LAST image is always the BACKGROUND; any middle images (IMAGE_2..IMAGE_{n-1}) are optional REFS that may represent garment/style/pose/prop or other concepts per user text. Use Nano Banana AI to create a 1/7-scale commercialized figure of the character in the illustration in a realistic style and environment. Place the figure on a computer desk using a circular transparent acrylic base without any text. On the computer screen, display the ZBrush modeling process of the figure. Next to the computer screen, place a BANDAI-style toy packaging box printed with the original artwork ."
|
||||
"prompt": "Image Order: IMAGE_1 is always the main SUBJECT; the LAST image is always the BACKGROUND; any middle images (IMAGE_2..IMAGE_{n-1}) are optional REFS that may represent garment/style/pose/prop or other concepts per user text. to create a 1/7-scale commercialized figure of the character in the illustration in a realistic style and environment. Place the figure on a computer desk using a circular transparent acrylic base without any text. On the computer screen, display the ZBrush modeling process of the figure. Next to the computer screen, place a BANDAI-style toy packaging box printed with the original artwork ."
|
||||
},
|
||||
{
|
||||
"task": "34 Old Photo Restoration and Enhancement",
|
||||
@@ -172,7 +172,7 @@
|
||||
{
|
||||
"task": "35 Professional-Level Photo Retouching",
|
||||
"num_instructions": 1,
|
||||
"prompt": "Image Order: IMAGE_1 is always the main SUBJECT; the LAST image is always the BACKGROUND; any middle images (IMAGE_2..IMAGE_{n-1}) are optional REFS that may represent garment/style/pose/prop or other concepts per user text. Achieve pro-grade edits like blemish removal while retaining natural features using Nano Banana AI, bypassing traditional software. Clean the face by removing acne, pimples, blemishes, and temporary spots from the skin (face, nose, forehead, neck, back of the head, throat). Smooth and correct the skin texture for a realistic and natural look. Preserve all permanent marks such as scars, moles, or birthmarks without altering them. [list optional additional edits] ."
|
||||
"prompt": "Image Order: IMAGE_1 is always the main SUBJECT; the LAST image is always the BACKGROUND; any middle images (IMAGE_2..IMAGE_{n-1}) are optional REFS that may represent garment/style/pose/prop or other concepts per user text. Achieve pro-grade edits like blemish removal while retaining natural features, bypassing traditional software. Clean the face by removing acne, pimples, blemishes, and temporary spots from the skin (face, nose, forehead, neck, back of the head, throat). Smooth and correct the skin texture for a realistic and natural look. Preserve all permanent marks such as scars, moles, or birthmarks without altering them. [list optional additional edits] ."
|
||||
},
|
||||
{
|
||||
"task": "36 3D Model Product Marketing",
|
||||
|
||||
Reference in New Issue
Block a user