santa hat
deerdeer nosedeer glow
Sign In

Anti-blur Flux Lora

479
7.1k
5.3k
209
Updated: Sep 9, 2024
background
Verified:
SafeTensor
Type
LoRA
Stats
5,807
5,163
Reviews
Published
Sep 9, 2024
Base Model
Flux.1 D
Hash
AutoV2
328F945688
The FLUX.1 [dev] Model is licensed by Black Forest Labs. Inc. under the FLUX.1 [dev] Non-Commercial License. Copyright Black Forest Labs. Inc.
IN NO EVENT SHALL BLACK FOREST LABS, INC. BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH USE OF THIS MODEL.

AntiBlur Lora has been significantly improved!

Improvements in new Lora:

  • DoF can be adjusted by Lora's weight.

So a weight of 0 will give a shallow DoF, typical for Flux generations.

A default weight of 1.0 will reduce DoF to a (hopefully) more pleasant image, without significant changes in style and composition. The goal was to get DoF at weight 1.0 to be exactly how you'd expect it to be: minor good bokeh here and there, without overdoing it as is often the case with Flux (more on that later)

A weight of over 1.0 can be used to make shots with deep DoF. Lora can handle weights up to 3.0 and beyond without significant degradation in quality.

  • Stylistically neutral

The dataset was made from hundreds of images created with Flux, so as not to take the style too far from the original model, while small number of real photos were used to keep Flux from degrading in composition (which is what happens when you train AI on it's own pictures)

  • Pairs well with Hires. fix

This Lora works well with hiresfix, allowing you to further increase the details and minimize shallow DoF. This was not the case with basic Flux, because by trying to do hires. fix to a blurred image with shallow DoF, it'd stil remain blurred with the same DoF effect. You just need the details to start appearing in the image, for hires.fix to improve them further.

  • No more Trigger words

Just connect the Lora and it'll do the job

  • Much less artifacts

Using Flux-generated images minimizes artifacts. I also trained a lot of models, and made a merge of the best of them, using tool provided by anashel (This smoothed out the edges of individual models that led to artifacts. Also, merging turned out to be especially useful for making the model more stylistically diverse.)

Why does Lora weight 655mb

It seemed to me that Lora with basically a "deep DoF" effect should be small, as it doesn't introduce a new style or concept, it just has to remove shallow DoF.

So I tried different Lora ranks, but as it turned out, information about the backgrounds is everywhere in the latent space, and the larger the model, the better results it gives. That's how I settled on the 128-rank Lora.

It's possible to isolate Lora's layers, and only use layers with DoF information in them, but as it turned out, information about DoF is scattered throughout most of the layers. For example, when generating macro shots, DoF is generated from the first layers. Information that appears in the backgrounds is really everywhere in the model, and constant shallow DoF is just the way training data was like for Flux. To make matters worse, Flux has a really poor understanding of DoF and blur conceptually. So not only it is present in much bigger amount than SD1.5/SDXL, it also provides much worse control over it than SD1.5/SDXL.

How was this Lora made

First, I put together a huge dataset with focus stacking techniques and deep DoF, on this I trained a new Lora. Next, using this Lora, I created images for a new dataset.

I've got several hundred variants of the "antiblur" Lora, selected the best ones each with their advantages, and combined them into a one well-balanced model.

What's next?

Since the higher the rank, the better the quality, the obvious way to improve the result would be to train a full finetune (and effectively touch every corner of the latent space, where there is information related to backgrounds), and then extract the Lora.

Another theoretical option is to find the "blur" or "dof" concept/weights in Flux latent space, and make a Lora out of inverted weights. This method wasn't very effective for dof control in SD-based models though.

As of now though I'm happy with the result. The model will remain my best effort for a while