balthou's picture
update tutorial
169b2fd
|
raw
history blame
2.46 kB

Advice

Keep separation between "production code" (library / not interactive) & interactivity

  • πŸ’‘ One of the strength of interactive pipe is to avoid adding hundreds of lines of code dedicated to GUI (graphical user interfaces).
  • With interactive pipe, you have the choice to keep this design choice. Each processing block can be defined as a regular function, without even importing the interactive decorator. In a separate file, you'll add sliders.

Several ways to decorate building blocks

1.Decorate afterward πŸ† = Recommended approach

  • βž– Less elegant to read (add_interactivity may be in a different file)
  • βž• The decorated function can't be re-used somewhere else.
  • βž• Possibility to add conditions (debug flag)
def gen_color(frequency=0, isotropy=0.):
    ...


def add_interactivity(debug=True):
    interactive(
        frequency=(80, [1, 100]),
        isotropy=(0.8, [0.1, 1.]) if debug else 0.8
    )(gen_color)

2.Decorate using @

@interactive(
    frequency=(80, [1, 100]),
    isotropy=(0.8, [0.1, 1.])
)
def gen_color(frequency=0, isotropy=0.):
    ...
  • βž• Easy to read
  • βž– The decorated function can't be re-used somewhere else.
  • βž– No possibility to add condition to hide/show slider. To hide the slider, you need to comment!

3. Shorter code using @

@interactive()
def gen_color(
    frequency=(80, [1, 100]),
    isotropy=(0.8, [0.1, 1.])
):
  • βž• Shortest code
  • βž– The decorated function can't be re-used somewhere else

Pipeline visualization

Internally, interactive_pipe builds an execution graph of the pipeline.

pipeline's execution graph
Pipeline

Backend choice

Backend πŸš€ Qt 🐒 Gradio
Responsiveness βž• Very fast βž– Slower
Shareable βž– No, only 1 local Qt Window βž• Share a link with others, (βž• Optional: standalone hosting on HF spaces πŸ€— )
Keyboard controls βž• Yes βž– No
Full screen βž• Yes βž– No
Image compression βž• No image compression βž– Some image compression
πŸš€ Qt 🐒 Gradio
QT Gradio