Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
AUTOMATIC1111
GitHub Repository: AUTOMATIC1111/stable-diffusion-webui
Path: blob/master/extensions-builtin/postprocessing-for-training/scripts/postprocessing_focal_crop.py
2448 views
1
2
from modules import scripts_postprocessing, ui_components, errors
3
import gradio as gr
4
5
from modules.textual_inversion import autocrop
6
7
8
class ScriptPostprocessingFocalCrop(scripts_postprocessing.ScriptPostprocessing):
9
name = "Auto focal point crop"
10
order = 4010
11
12
def ui(self):
13
with ui_components.InputAccordion(False, label="Auto focal point crop") as enable:
14
face_weight = gr.Slider(label='Focal point face weight', value=0.9, minimum=0.0, maximum=1.0, step=0.05, elem_id="postprocess_focal_crop_face_weight")
15
entropy_weight = gr.Slider(label='Focal point entropy weight', value=0.15, minimum=0.0, maximum=1.0, step=0.05, elem_id="postprocess_focal_crop_entropy_weight")
16
edges_weight = gr.Slider(label='Focal point edges weight', value=0.5, minimum=0.0, maximum=1.0, step=0.05, elem_id="postprocess_focal_crop_edges_weight")
17
debug = gr.Checkbox(label='Create debug image', elem_id="train_process_focal_crop_debug")
18
19
return {
20
"enable": enable,
21
"face_weight": face_weight,
22
"entropy_weight": entropy_weight,
23
"edges_weight": edges_weight,
24
"debug": debug,
25
}
26
27
def process(self, pp: scripts_postprocessing.PostprocessedImage, enable, face_weight, entropy_weight, edges_weight, debug):
28
if not enable:
29
return
30
31
if not pp.shared.target_width or not pp.shared.target_height:
32
return
33
34
dnn_model_path = None
35
try:
36
dnn_model_path = autocrop.download_and_cache_models()
37
except Exception:
38
errors.report("Unable to load face detection model for auto crop selection. Falling back to lower quality haar method.", exc_info=True)
39
40
autocrop_settings = autocrop.Settings(
41
crop_width=pp.shared.target_width,
42
crop_height=pp.shared.target_height,
43
face_points_weight=face_weight,
44
entropy_points_weight=entropy_weight,
45
corner_points_weight=edges_weight,
46
annotate_image=debug,
47
dnn_model_path=dnn_model_path,
48
)
49
50
result, *others = autocrop.crop_image(pp.image, autocrop_settings)
51
52
pp.image = result
53
pp.extra_images = [pp.create_copy(x, nametags=["focal-crop-debug"], disable_processing=True) for x in others]
54
55
56