# ICLight

Пересветите любое изображение с помощью управления освещением на базе ИИ.

{% hint style="success" %}
Все примеры можно запустить на GPU-серверах, арендуемых через [CLORE.AI Маркетплейс](https://clore.ai/marketplace).
{% endhint %}

{% hint style="info" %}
Все примеры в этом руководстве можно запустить на GPU-серверах, арендуемых через [CLORE.AI Маркетплейс](https://clore.ai/marketplace) маркетплейс.
{% endhint %}

## Аренда на CLORE.AI

1. Посетите [CLORE.AI Маркетплейс](https://clore.ai/marketplace)
2. Фильтруйте по типу GPU, объёму VRAM и цене
3. Выберите **По запросу** (фиксированная ставка) или **Спот** (цена заявки)
4. Настройте заказ:
   * Выберите Docker-образ
   * Установите порты (TCP для SSH, HTTP для веб-интерфейсов)
   * При необходимости добавьте переменные окружения
   * Введите команду запуска
5. Выберите способ оплаты: **CLORE**, **BTC**, или **USDT/USDC**
6. Создайте заказ и дождитесь развертывания

### Доступ к вашему серверу

* Найдите данные для подключения в **Мои заказы**
* Веб-интерфейсы: используйте URL HTTP-порта
* SSH: `ssh -p <порт> root@<proxy-address>`

## Что такое IC-Light?

IC-Light от lllyasviel позволяет:

* Пересвечивать изображения с помощью текстовых описаний
* Менять направление и цвет освещения
* Добавлять или убирать тени
* Создавать студийные световые эффекты
* Пересвет переднего/заднего плана

## Ресурсы

* **GitHub:** [lllyasviel/IC-Light](https://github.com/lllyasviel/IC-Light)
* **HuggingFace:** [lllyasviel/IC-Light](https://huggingface.co/lllyasviel/IC-Light)
* **Демо:** [HuggingFace Space](https://huggingface.co/spaces/lllyasviel/IC-Light)
* **Статья:** Основано на архитектуре ControlNet

## Рекомендованное оборудование

| Компонент | Минимум       | Рекомендуется | Оптимально    |
| --------- | ------------- | ------------- | ------------- |
| GPU       | RTX 3060 12GB | RTX 4080 16GB | RTX 4090 24GB |
| VRAM      | 8GB           | 12GB          | 16GB          |
| CPU       | 4 ядра        | 8 ядер        | 16 ядер       |
| ОЗУ       | 16GB          | 32GB          | 64GB          |
| Хранилище | 30GB SSD      | 50GB NVMe     | 100GB NVMe    |
| Интернет  | 100 Мбит/с    | 500 Мбит/с    | 1 Гбит/с      |

## Быстрое развертывание на CLORE.AI

**Docker-образ:**

```
pytorch/pytorch:2.5.1-cuda12.4-cudnn9-devel
```

**Порты:**

```
22/tcp
7860/http
```

**Команда:**

```bash
cd /workspace && \
git clone https://github.com/lllyasviel/IC-Light.git && \
cd IC-Light && \
pip install -r requirements.txt && \
python gradio_demo.py
```

## Доступ к вашему сервису

После развертывания найдите ваш `http_pub` URL в **Мои заказы**:

1. Перейдите на **Мои заказы** страницу
2. Нажмите на ваш заказ
3. Найдите `http_pub` URL (например, `abc123.clorecloud.net`)

Используйте `https://YOUR_HTTP_PUB_URL` вместо `localhost` в примерах ниже.

## Установка

```bash
git clone https://github.com/lllyasviel/IC-Light.git
cd IC-Light
pip install -r requirements.txt

# Модели скачиваются автоматически при первом запуске
```

## Что вы можете создать

### Предметная фотография

* Идеальное освещение для электронной коммерции
* Единообразные изображения каталога
* Результаты студийного качества без студии

### Улучшение портретов

* Исправление плохого освещения на фотографиях
* Добавление драматических световых эффектов
* Создание профессиональных портретов

### Творческие проекты

* Изменение настроения
* Преобразование дня в ночь
* Художественные световые эффекты

### Видеопроизводство

* Согласование освещения между сценами
* Создание материалов, готовых для VFX
* Исправление проблем освещения на локации

### Маркетинговые материалы

* Создание главного изображения
* Единый фирменный стиль изображений
* Быстрая ретушь фотографий

## Базовое использование

### Пересвет переднего плана (режим FC)

Пересветите объект при сохранении фона:

```python
import torch
from PIL import Image
from diffusers import StableDiffusionPipeline
from ic_light import ICLightFC

# Загрузить модель
model = ICLightFC.from_pretrained("lllyasviel/IC-Light-FC")
model.to("cuda")

# Загрузить изображение
image = Image.open("portrait.jpg")

# Пересвет с текстовым запросом
result = model.relight(
    image=image,
    prompt="золотой час солнечного света слева",
    num_inference_steps=25
)

result.save("relit_portrait.jpg")
```

### Условный фон (режим FBC)

Пересвет переднего плана для соответствия новому фону:

```python
from ic_light import ICLightFBC
from PIL import Image

model = ICLightFBC.from_pretrained("lllyasviel/IC-Light-FBC")
model.to("cuda")

# Загрузить передний план и новый фон
foreground = Image.open("person.png")  # С прозрачным фоном
background = Image.open("sunset_scene.jpg")

# Пересвет для соответствия фону
result = model.relight(
    foreground=foreground,
    background=background,
    prompt="тёплое закатное освещение",
    num_inference_steps=25
)

result.save("composited.jpg")
```

## Запросы по освещению

### Освещение по направлению

```python
prompts = [
    "яркий свет с левой стороны",
    "мягкий свет сверху",
    "драматический контровой свет сзади",
    "каймовое освещение справа",
    "фронтальный рассеянный свет",
    "низкоугловой свет снизу"
]
```

### Освещение по цвету

```python
prompts = [
    "тёплый золотой солнечный свет",
    "прохладный синий сумеречный свет",
    "неоново-розовый свет",
    "зелёный фоновой свет",
    "оранжевое закатное свечение",
    "белое студийное освещение"
]
```

### Освещение по окружающей среде

```python
prompts = [
    "дневной свет на улице, яркое солнце",
    "внутренний свет из окна, мягкие тени",
    "ночные городские огни, неоновые отражения",
    "свет свечи, тёплое мерцание",
    "пасмурный день, рассеянное освещение",
    "студийный софтбокс, профессионально"
]
```

## Пакетная обработка

```python
import os
from PIL import Image
from ic_light import ICLightFC

model = ICLightFC.from_pretrained("lllyasviel/IC-Light-FC")
model.to("cuda")

input_dir = "./images"
output_dir = "./relit"
os.makedirs(output_dir, exist_ok=True)

lighting_prompt = "профессиональное студийное освещение, мягкие тени"

for filename in os.listdir(input_dir):
    if not filename.endswith(('.jpg', '.png')):
        continue

    image = Image.open(os.path.join(input_dir, filename))

    result = model.relight(
        image=image,
        prompt=lighting_prompt,
        num_inference_steps=25
    )

    result.save(os.path.join(output_dir, f"relit_{filename}"))
    print(f"Обработано: {filename}")
```

## Несколько вариантов освещения

```python
from ic_light import ICLightFC
from PIL import Image
import os

model = ICLightFC.from_pretrained("lllyasviel/IC-Light-FC")
model.to("cuda")

image = Image.open("product.jpg")

lighting_variations = {
    "daylight": "яркий естественный дневной свет, чистый белый фон",
    "dramatic": "драматическое боковое освещение, тёмные тени",
    "warm": "тёплый золотой час, мягкое оранжевое свечение",
    "cool": "прохладное синее освещение, современная эстетика",
    "studio": "профессиональный студийный софтбокс, ровное освещение"
}

os.makedirs("./variations", exist_ok=True)

for name, prompt in lighting_variations.items():
    result = model.relight(
        image=image,
        prompt=prompt,
        num_inference_steps=25
    )
    result.save(f"./variations/{name}.jpg")
    print(f"Создано: {name}")
```

## Интерфейс Gradio

```python
import gradio as gr
from PIL import Image
from ic_light import ICLightFC

model = ICLightFC.from_pretrained("lllyasviel/IC-Light-FC")
model.to("cuda")

def relight_image(image, prompt, steps, seed):
    generator = torch.Generator("cuda").manual_seed(seed) if seed > 0 else None

    result = model.relight(
        image=image,
        prompt=prompt,
        num_inference_steps=steps,
        generator=generator
    )

    return result

demo = gr.Interface(
    fn=relight_image,
    inputs=[
        gr.Image(type="pil", label="Входное изображение"),
        gr.Textbox(
            label="Запрос по освещению",
            value="профессиональное студийное освещение",
            placeholder="Опишите желаемое освещение..."
        ),
        gr.Slider(10, 50, value=25, step=5, label="Шаги"),
        gr.Number(value=-1, label="Seed (-1 для случайного)")
    ],
    outputs=gr.Image(label="Пересвеченное изображение"),
    title="IC-Light - AI Image Relighting",
    description="Изменяйте освещение на любом изображении с помощью текстовых описаний. Запуск на GPU-серверах CLORE.AI.",
    examples=[
        ["example.jpg", "золотой час солнечного света слева", 25, -1],
        ["example.jpg", "драматичное каймовое освещение, тёмный фон", 25, -1],
        ["example.jpg", "мягкий оконный свет, нежные тени", 25, -1]
    ]
)

demo.launch(server_name="0.0.0.0", server_port=7860)
```

## Интеграция с ComfyUI

IC-Light доступен как узлы ComfyUI:

```bash
cd ComfyUI/custom_nodes
git clone https://github.com/kijai/ComfyUI-IC-Light.git
```

### Рабочий процесс ComfyUI

1. Загрузите ваше изображение
2. Добавьте узел IC-Light Loader
3. Подключите к узлу IC-Light Apply
4. Установите запрос по освещению
5. Подключите к KSampler
6. Вывод в Save Image

## С удалением фона

```python
from ic_light import ICLightFBC
from rembg import remove
from PIL import Image

# Сначала удалите фон
original = Image.open("photo.jpg")
foreground = remove(original)

# Загрузите новый фон
background = Image.open("studio_bg.jpg")

# Пересвет для соответствия
model = ICLightFBC.from_pretrained("lllyasviel/IC-Light-FBC")
model.to("cuda")

result = model.relight(
    foreground=foreground,
    background=background,
    prompt="студийное освещение, соответствующее фону",
    num_inference_steps=25
)

result.save("composited.jpg")
```

## Производительность

| Режим              | Разрешение | GPU      | Скорость |
| ------------------ | ---------- | -------- | -------- |
| FC (передний план) | 512x512    | RTX 3090 | 3 с      |
| FC (передний план) | 512x512    | RTX 4090 | 2 с      |
| FBC (композит)     | 512x512    | RTX 4090 | 3 с      |
| FC (передний план) | 1024x1024  | A100     | 4 с      |

## Варианты моделей

| Модель       | Описание                                  | Случай использования            |
| ------------ | ----------------------------------------- | ------------------------------- |
| IC-Light-FC  | Согласованность переднего плана           | Пересвет одиночного изображения |
| IC-Light-FBC | Согласованность переднего и заднего плана | Композиция с фонами             |

## Распространённые проблемы и решения

### Освещение не меняется

**Проблема:** Выход похож на вход

**Решения:**

* Используйте более описательные запросы по освещению
* Увеличьте число шагов вывода до 30-40
* Попробуйте разные значения seed
* Используйте более сильный контраст в запросе (например, "драматичное" вместо "мягкое")

```python

# Более описательный запрос
result = model.relight(
    image=image,
    prompt="чрезвычайно яркий драматический прожектор сверху слева, тёмные тени справа",
    num_inference_steps=35
)
```

### Артефакты на лице/деталях

**Проблема:** Лицо или детали выглядят искажёнными

**Решения:**

* Понизьте силу/масштаб управления
* Используйте больше шагов вывода
* Держите изменения освещения сдержанными
* Постобработка с восстановлением лица

### Проблемы со сдвигом цвета

**Проблема:** Нежелательные изменения цвета

**Решения:**

* Будьте конкретны в описании цвета в запросе
* Добавьте «сохранить оригинальные цвета» в запрос
* Используйте нейтральные по цвету описания освещения
* Постобработка цветокоррекцией

### Изменения фона

**Проблема:** Фон меняется, когда должен меняться только передний план

**Решения:**

* Используйте режим FC (согласованность переднего плана)
* Предварительная обработка с удалением фона
* Используйте маску для изоляции объекта

### Несогласованные результаты

**Проблема:** Одинаковый запрос даёт очень разные результаты

**Решения:**

* Установите фиксированный seed для воспроизводимости
* Увеличьте число шагов вывода для стабильности
* Используйте более простые, прямые запросы

```python

# Согласованные результаты с фиксированным seed
result = model.relight(
    image=image,
    prompt=prompt,
    num_inference_steps=30,
    generator=torch.Generator("cuda").manual_seed(42)
)
```

## Устранение неполадок

### Пересвет выглядит неестественно

* Согласуйте направление освещения с сценой
* Используйте подходящую интенсивность света
* Учитывайте тени на оригинальном изображении

### Фон затронут

* Правильно используйте маску переднего плана
* Сначала сегментируйте объект от фона
* Настройте параметры затухания света

### Выход слишком тёмный/яркий

* Отрегулируйте значения интенсивности света
* Используйте HDR-вывод, если доступно
* Постобработка с помощью кривых

### Модель не загружается

* Загрузите все необходимые контрольные точки
* Проверьте целостность файлов
* Проверьте совместимость с CUDA

## Оценка стоимости

Типичные ставки на маркетплейсе CLORE.AI (по состоянию на 2024):

| GPU       | Почасовая ставка | Дневная ставка | Сессия 4 часа |
| --------- | ---------------- | -------------- | ------------- |
| RTX 3060  | \~$0.03          | \~$0.70        | \~$0.12       |
| RTX 3090  | \~$0.06          | \~$1.50        | \~$0.25       |
| RTX 4090  | \~$0.10          | \~$2.30        | \~$0.40       |
| A100 40GB | \~$0.17          | \~$4.00        | \~$0.70       |
| A100 80GB | \~$0.25          | \~$6.00        | \~$1.00       |

*Цены варьируются в зависимости от провайдера и спроса. Проверьте* [*CLORE.AI Маркетплейс*](https://clore.ai/marketplace) *для текущих тарифов.*

**Экономьте деньги:**

* Используйте **Спот** market для гибких нагрузок (часто на 30–50% дешевле)
* Платите с помощью **CLORE** токенов
* Сравнивайте цены у разных провайдеров

## Следующие шаги

* [TripoSR](/guides/guides_v2-ru/3d-generaciya/triposr.md) - Преобразование пересвеченных изображений в 3D
* Stable Diffusion - Генерация изображений для пересвета
* ComfyUI - Расширенная интеграция рабочих процессов
* [Fooocus](/guides/guides_v2-ru/generaciya-izobrazhenii/fooocus-simple-sd.md) - Простая генерация изображений


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.clore.ai/guides/guides_v2-ru/obrabotka-izobrazhenii/iclight.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
