JustForWorld commited on
Commit
8fded30
·
1 Parent(s): 5c67f33

Ensure consistent results with deterministic settings

Browse files
Files changed (1) hide show
  1. logic.py +15 -14
logic.py CHANGED
@@ -63,7 +63,7 @@ class WatermarkRemover:
63
  generated_text, task=task_prompt.value, image_size=image.size
64
  )
65
 
66
- def _get_mask_for_prompt(self, image: Image.Image, text_input: str, max_bbox_percent: float, expand_ratio: float = 0.25) -> Image.Image:
67
  logger.info(f"Поиск по промпту: '{text_input}'...")
68
  parsed_answer = self._identify(image, text_input)
69
  mask = Image.new("L", image.size, 0)
@@ -165,31 +165,32 @@ class WatermarkRemover:
165
  # Адаптивные параметры на основе размера маски
166
  if mask_area > 0.3: # Большая область (более 30%)
167
  steps = 50
168
- strength = 0.92
169
- denoising_end = 0.95
170
  elif mask_area > 0.1: # Средняя область (10-30%)
171
  steps = 40
172
- strength = 0.88
173
- denoising_end = 0.9
174
  else: # Маленькая область (менее 10%)
175
  steps = 35
176
- strength = 0.85
177
- denoising_end = 0.85
178
 
179
  logger.info(f"Параметры генерации: area={mask_area:.2%}, steps={steps}, strength={strength}, denoising_end={denoising_end}")
180
 
181
- # Упрощенный позитивный промпт для минимального "фантазирования"
182
  result_image = self.inpainting_pipeline(
183
- prompt="", # Убрали креативные описания
184
  negative_prompt=(
185
  "watermark, text, logo, signature, copyright, "
186
  "blurry, distorted, artifact, deformed, noisy, "
187
- "low quality, jpeg artifacts, drawing, painting, sketch"
 
188
  ),
189
  image=image,
190
  mask_image=mask,
191
  num_inference_steps=steps,
192
- guidance_scale=8.5, # Увеличили для лучшего подавления артефактов
193
  strength=strength,
194
  denoising_end=denoising_end,
195
  ).images[0]
@@ -201,11 +202,11 @@ class WatermarkRemover:
201
  return result_image
202
 
203
  def _postprocess_result(self, original: Image.Image, result: Image.Image, mask: Image.Image) -> Image.Image:
204
- """Более консервативная постобработка"""
205
  # 1. Создаем мягкую маску для смешивания
206
- blend_mask = mask.filter(ImageFilter.GaussianBlur(radius=25)) # Увеличили радиус для плавности
207
 
208
- # 2. Плавное смешивание с оригиналом (без дополнительного шарпенинга)
209
  return Image.composite(result, original, blend_mask)
210
 
211
  def _preprocess_image(self, image: Image.Image) -> Image.Image:
 
63
  generated_text, task=task_prompt.value, image_size=image.size
64
  )
65
 
66
+ def _get_mask_for_prompt(self, image: Image.Image, text_input: str, max_bbox_percent: float, expand_ratio: float = 0.27) -> Image.Image:
67
  logger.info(f"Поиск по промпту: '{text_input}'...")
68
  parsed_answer = self._identify(image, text_input)
69
  mask = Image.new("L", image.size, 0)
 
165
  # Адаптивные параметры на основе размера маски
166
  if mask_area > 0.3: # Большая область (более 30%)
167
  steps = 50
168
+ strength = 0.95 # Увеличено для полного удаления
169
+ denoising_end = 0.98 # Почти полная обработка
170
  elif mask_area > 0.1: # Средняя область (10-30%)
171
  steps = 40
172
+ strength = 0.92 # Увеличено
173
+ denoising_end = 0.95
174
  else: # Маленькая область (менее 10%)
175
  steps = 35
176
+ strength = 0.88 # Увеличено
177
+ denoising_end = 0.9
178
 
179
  logger.info(f"Параметры генерации: area={mask_area:.2%}, steps={steps}, strength={strength}, denoising_end={denoising_end}")
180
 
181
+ # Генерация с минимальным "фантазированием"
182
  result_image = self.inpainting_pipeline(
183
+ prompt="", # Пустой промпт
184
  negative_prompt=(
185
  "watermark, text, logo, signature, copyright, "
186
  "blurry, distorted, artifact, deformed, noisy, "
187
+ "low quality, jpeg artifacts, drawing, painting, sketch, "
188
+ "overexposed, underexposed, oversaturated, surreal, abstract" # Дополнительные ограничения
189
  ),
190
  image=image,
191
  mask_image=mask,
192
  num_inference_steps=steps,
193
+ guidance_scale=10.0, # Увеличено для строгого следования инструкциям
194
  strength=strength,
195
  denoising_end=denoising_end,
196
  ).images[0]
 
202
  return result_image
203
 
204
  def _postprocess_result(self, original: Image.Image, result: Image.Image, mask: Image.Image) -> Image.Image:
205
+ """Консервативная постобработка с минимальными изменениями"""
206
  # 1. Создаем мягкую маску для смешивания
207
+ blend_mask = mask.filter(ImageFilter.GaussianBlur(radius=30)) # Больше размытия для плавности
208
 
209
+ # 2. Плавное смешивание с оригиналом
210
  return Image.composite(result, original, blend_mask)
211
 
212
  def _preprocess_image(self, image: Image.Image) -> Image.Image: