Unfiltered GenAI Image/Video Generation

Published: Feb 26, 2026 by Isaac Johnson

A Preamble on what Uncensored Images can mean: Illustrations for the purpose of humor or satire geared for an adult audience that would understand said humor and satire.

NOTE: I will not be showing actual NSFW Violence nor Nudity in this post, so it is safe to read at work/in the office

In this article, to test the ‘uncensored’ nature of some of the AI tooling, I am going to use a well known political figure (the current “president” of the US) and ask AI tools to show him waving a gun. This is to test the AI tool’s ability to both avoid (perceived) violence along with a well known figure.

The other test will be something that came up some time ago for me; generating a picture of software engineers in a conference room bound to their chairs with ropes. At the time, I was trying to make a joke about being “tied up” in meetings, but every AI tool either took bound in ropes in a very, um, NSFW way, or refused to generate them (thinking it was some form of violence/BDSM).

Why I’m doing this

Due to the nuanced nature of US politics and trying to stay “above the line”, realize any image of a person waving a gun is purely for the purpose of testing guardrails and nothing more.

However, I strongly feel we must not avoid looking at grown-up things, and thinking of grown-up things - we must not let ourselves lean into the most bland base PG universe when using AI. Thus I think explorations like this are valuable.

FLUX 1.1 Pro

I had never heard of this AI Text to Image generator.

I deployed it to my Azure AI Foundry instance

/content/images/2026/02/fluxpro-01.png

Judge me if you must, but to test for nanny filters, I often look to see if it will show me someone tied up. For most tools, this is blocked for safety.

I’ll note that I tried that once on a, let’s just say “adult” model, and my results (while clothed) were very NSFW so I didn’t try that again.

And indeed, the nanny filters are on

/content/images/2026/02/fluxpro-02.png

I wonder if I make my own minimal content filter

/content/images/2026/02/fluxpro-03.png

and apply to my deployed model

/content/images/2026/02/fluxpro-04.png

replacing the existing filter

/content/images/2026/02/fluxpro-05.png

This time it worked. I’m not thrilled with the actual image, but it didn’t nanny block me

/content/images/2026/02/fluxpro-06.png

I liked it’s output for a WildTrack logo

/content/images/2026/02/fluxpro-07.png

But I asked for an oranged haired president waving a gun around and that it did block (This is for a logical test on well known figures, this is not a commentary on any political entity)

/content/images/2026/02/fluxpro-08.png

Though it seemed okay with kissing, which was interesting

/content/images/2026/02/fluxpro-09.png

Midjourney wouldn’t animate that

/content/images/2026/02/fluxpro-10.png

I will say that Veo did via Gemini and it was a bit more, um, passionate than I think I will share here. But I will give a screen grab

/content/images/2026/02/fluxpro-11.png

II came back a day or so later and saw the costs were about 14 cents for those three images

/content/images/2026/02/fluxpro-12.png

Ollama

Let’s see what we can do locally.

I saw this note on the blog that it’s available for Macs, but not yet Linux or Windows.

Still, I wanted to try

>>> Install complete. Run "ollama" from the command line.
WARNING: No NVIDIA/AMD GPU detected. Ollama will run in CPU-only mode.
builder@LuiGi:~$ ollama run x/z-image-turbo
pulling manifest
pulling model: 100% ▕████████████████████████████████████████████████████████████████████████▏  12 GB
writing manifest
success
Error: failed to load model: 500 Internal Server Error: mlx runner failed: Error: failed to initialize MLX: MLX: Failed to load libmlxc library. Tried: ./build/lib/ollama/libmlxc.so, libmlxc.so. Last error: libcuda.so.1: cannot open shared object file: No such file or directory (exit: exit status 1)
builder@LuiGi:~$ ollama run x/z-image-turbo
Error: failed to load model: 500 Internal Server Error: mlx runner failed: Error: failed to initialize MLX: MLX: Failed to load libmlxc library. Tried: ./build/lib/ollama/libmlxc.so, libmlxc.so. Last error: libcuda.so.1: cannot open shared object file: No such file or directory (exit: exit status 1)
builder@LuiGi:~$ ollama run x/flux2-klein
pulling manifest
pulling model: 100% ▕████████████████████████████████████████████████████████████████████████▏ 5.7 GB
writing manifest
success
Error: failed to load model: 500 Internal Server Error: mlx runner failed: Error: failed to initialize MLX: MLX: Failed to load libmlxc library. Tried: ./build/lib/ollama/libmlxc.so, libmlxc.so. Last error: libcuda.so.1: cannot open shared object file: No such file or directory (exit: exit status 1)

But alas my laptop lacks the necessary GPU support.

I even tried forcing CPU only

builder@LuiGi:~$ CUDA_VISIBLE_DEVICES=-1 ollama run x/flux2-klein
Error: failed to load model: 500 Internal Server Error: mlx runner failed: Error: failed to initialize MLX: MLX: Failed to load libmlxc library. Tried: ./build/lib/ollama/libmlxc.so, libmlxc.so. Last error: libcuda.so.1: cannot open shared object file: No such file or directory (exit: exit status 1)
builder@LuiGi:~$

ComfyUI

First I needed Miniconda

$ wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
$ bash ~/Miniconda3-latest-Linux-x86_64.sh

I can now use it to make a virtual environment

(base) builder@LuiGi:~/Workspaces$ cd comfyui/
(base) builder@LuiGi:~/Workspaces/comfyui$ conda create -n comfyenv
Do you accept the Terms of Service (ToS) for
https://repo.anaconda.com/pkgs/main? [(a)ccept/(r)eject/(v)iew]: a
Do you accept the Terms of Service (ToS) for https://repo.anaconda.com/pkgs/r?
[(a)ccept/(r)eject/(v)iew]: a
2 channel Terms of Service accepted
Retrieving notices: done
Channels:
 - defaults
Platform: linux-64
Collecting package metadata (repodata.json): done
Solving environment: done


==> WARNING: A newer version of conda exists. <==
    current version: 25.11.1
    latest version: 26.1.1

Please update conda by running

    $ conda update -n base -c defaults conda



## Package Plan ##

  environment location: /home/builder/miniconda3/envs/comfyenv



Proceed ([y]/n)? y


Downloading and Extracting Packages:

Preparing transaction: done
Verifying transaction: done
Executing transaction: done
#
# To activate this environment, use
#
#     $ conda activate comfyenv
#
# To deactivate an active environment, use
#
#     $ conda deactivate

(base) builder@LuiGi:~/Workspaces/comfyui$ conda activate comfyenv
(comfyenv) builder@LuiGi:~/Workspaces/comfyui$

I’ll now clone the repo

git clone git@github.com:comfyanonymous/ComfyUI.git

But I was blocked from Pytorch steps

(comfyenv) builder@LuiGi:~/Workspaces/comfyui$ pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/rocm6.0 --break-system-packages
Defaulting to user installation because normal site-packages is not writeable
Looking in indexes: https://download.pytorch.org/whl/rocm6.0
ERROR: Could not find a version that satisfies the requirement torch (from versions: none)
ERROR: No matching distribution found for torch

However, it did work if I removed the “index-url”.

I can now go into the ComfyUI checked out directory and install requirements.txt

(comfyenv) builder@LuiGi:~/Workspaces/comfyui/ComfyUI$ pip install -r requirements.txt --break-system-packages
Defaulting to user installation because normal site-packages is not writeable
Collecting comfyui-frontend-package==1.39.14 (from -r requirements.txt (line 1))
  Downloading comfyui_frontend_package-1.39.14-py3-none-any.whl.metadata (118 bytes)
Collecting comfyui-workflow-templates==0.9.2 (from -r requirements.txt (line 2))
  Downloading comfyui_workflow_templates-0.9.2-py3-none-any.whl.metadata (21 kB)
Collecting comfyui-embedded-docs==0.4.1 (from -r requirements.txt (line 3))
  Downloading comfyui_embedded_docs-0.4.1-py3-none-any.whl.metadata (2.9 kB)
Requirement already satisfied: torch in /home/builder/.local/lib/python3.13/site-packages (from -r requirements.txt (line 4)) (2.10.0)
... snip ...

Even though I installed AMD GPU drivers, it still vomited on launch saying it was missing NVIDIA drivers

(comfyenv) builder@LuiGi:~/Workspaces/comfyui/ComfyUI$ python3 main.py
WARNING: You need pytorch with cu130 or higher to use optimized CUDA operations.
Found comfy_kitchen backend cuda: {'available': False, 'disabled': True, 'unavailable_reason': 'CUDA not available on this system', 'capabilities': []}
Found comfy_kitchen backend triton: {'available': False, 'disabled': True, 'unavailable_reason': 'CUDA not available on this system', 'capabilities': []}
Found comfy_kitchen backend eager: {'available': True, 'disabled': False, 'unavailable_reason': None, 'capabilities': ['apply_rope', 'apply_rope1', 'dequantize_nvfp4', 'dequantize_per_tensor_fp8', 'quantize_nvfp4', 'quantize_per_tensor_fp8', 'scaled_mm_nvfp4']}
Checkpoint files will always be loaded safely.
Traceback (most recent call last):
  File "/home/builder/Workspaces/comfyui/ComfyUI/main.py", line 183, in <module>
    import execution
  File "/home/builder/Workspaces/comfyui/ComfyUI/execution.py", line 17, in <module>
    import comfy.model_management
  File "/home/builder/Workspaces/comfyui/ComfyUI/comfy/model_management.py", line 251, in <module>
    total_vram = get_total_memory(get_torch_device()) / (1024 * 1024)
                                  ~~~~~~~~~~~~~~~~^^
  File "/home/builder/Workspaces/comfyui/ComfyUI/comfy/model_management.py", line 201, in get_torch_device
    return torch.device(torch.cuda.current_device())
                        ~~~~~~~~~~~~~~~~~~~~~~~~~^^
  File "/home/builder/.local/lib/python3.13/site-packages/torch/cuda/__init__.py", line 1094, in current_device
    _lazy_init()
    ~~~~~~~~~~^^
  File "/home/builder/.local/lib/python3.13/site-packages/torch/cuda/__init__.py", line 424, in _lazy_init
    torch._C._cuda_init()
    ~~~~~~~~~~~~~~~~~~~^^
RuntimeError: Found no NVIDIA driver on your system. Please check that you have an NVIDIA GPU and installed a driver from http://www.nvidia.com/Download/index.aspx

Windows

Since I still have one windows host in my fleet, I tried the Windows installer

/content/images/2026/02/comfyui-01.png

After installing, I then ran ComfyUI

/content/images/2026/02/comfyui-02.png

I picked the GPU in this box

/content/images/2026/02/comfyui-03.png

I had to skip over a warning that my NVidia drivers are “too old” as they are just a bit behind on versions (and I really prefer not to muck with them if i can avoid it)

/content/images/2026/02/comfyui-04.png

The first time it failed - and indeed I needed to update my NVidia driver (it warned me!). Once I did that, then ComfyUI came up

/content/images/2026/02/comfyui-05.png

It didn’t take long for me to come up with some prompts that got me the exact political image I desired using Qwen3 Coder. Something I know no other AI tool would really do

/content/images/2026/02/comfyui-06.png

Midjourney was not going to animate that for me (probably rightly so)

/content/images/2026/02/comfyui-07.png

And Gemini also refused

/content/images/2026/02/comfyui-10.png

I will say that I did animate that with ComfyUI but I wont be showing it. It did more of just a mouth moving effect with that individuals voice.

Moving off political satire, the “Engineers Tied Up” prompt worked fantastic in ComfyUI

/content/images/2026/02/comfyui-08.png

And while again, no going in Midjourney

/content/images/2026/02/comfyui-09.png

Gemini did come up with a meeting idea

As far as the meeting using ComfyUI and an LTX generation model, we can see a lot of noisy artifacts, but that was just 7.5m to generate on my hardware:

A cinematic, handheld ‘documentary-style’ shot inside a modern corporate boardroom. Three software engineers are captured in a candid moment during a technical sync; one leans forward intensely while another rubs their temple, looking at a glowing presentation screen off-camera. The lighting is naturalistic, a mix of soft overhead office LEDs and the blue tint of monitors reflecting off their faces. 4k, high detail, slight motion blur as the camera subtly pans. Shaky-cam realism, shallow depth of field with a 35mm lens, visible dust motes in the light beams, and authentic skin textures.

I tried a new seed and prompt, again, this is with the model “ltx-2-spatial-upscaler-x2”

The seated people squirm in their seats, they move their heads at times but still are mostly looking at the presenter. The person presenting points to the project image then to the attendees. He says “Are We Clear Now?”

I then changed over to Wan 2.2 Image to Video. This took 101m to render (Ryzen 7 3700x 8-core CPU w/ RTX 3070 w/ 8Gb I believe) {there is no sound}

FastDS

I created a virtual env and added uv

(base) builder@LuiGi:~/Workspaces/fastsdcpu$ history | grep venv
 1855  history | grep venv
(base) builder@LuiGi:~/Workspaces/fastsdcpu$ python -m venv venv
(base) builder@LuiGi:~/Workspaces/fastsdcpu$ source venv/bin/activate
(venv) (base) builder@LuiGi:~/Workspaces/fastsdcpu$ pip install uv
Collecting uv
  Downloading uv-0.10.6-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (11 kB)
Downloading uv-0.10.6-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (23.2 MB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 23.2/23.2 MB 15.5 MB/s  0:00:01
Installing collected packages: uv
Successfully installed uv-0.10.6

[notice] A new release of pip is available: 25.3 -> 26.0.1
[notice] To update, run: pip install --upgrade pip

I now need to run the installer

(venv) (base) builder@LuiGi:~/Workspaces/fastsdcpu$ chmod 755 ./install.sh
(venv) (base) builder@LuiGi:~/Workspaces/fastsdcpu$ ./install.sh
Starting FastSD CPU env installation...
Found python command
Python version : 3.13.11
Using CPython 3.11.6                                                           Creating virtual environment at: env
Activate with: source env/bin/activate
Using Python 3.11.6 environment at: env
Resolved 12 packages in 1.98s
Prepared 12 packages in 12.59s
Installed 12 packages in 193ms
 + filelock==3.20.0
 + fsspec==2025.12.0
 + jinja2==3.1.6
 + markupsafe==3.0.2
 + mpmath==1.3.0
 + networkx==3.6.1
 + numpy==2.3.5
 + pillow==12.0.0
 + sympy==1.14.0
 + torch==2.8.0+cpu
 + torchvision==0.23.0+cpu
 + typing-extensions==4.15.0
Using Python 3.11.6 environment at: env
Resolved 130 packages in 4.52s
      Built controlnet-aux==0.0.7
      Built antlr4-python3-runtime==4.9.3
Prepared 121 packages in 30.45s
Uninstalled 4 packages in 25ms
Installed 122 packages in 244ms
 + absl-py==2.4.0
 + accelerate==1.6.0
 + aiofiles==23.2.1
 + aiohappyeyeballs==2.6.1
 + aiohttp==3.13.3
 + aiosignal==1.4.0
 + annotated-doc==0.0.4
 + annotated-types==0.7.0
 + antlr4-python3-runtime==4.9.3
 + anyio==4.12.1
 + attrs==25.4.0
 + certifi==2026.1.4
 + cffi==2.0.0
 + charset-normalizer==3.4.4
 + click==8.3.1
 + coloredlogs==15.0.1
 + contourpy==1.3.3
 + controlnet-aux==0.0.7
 + cycler==0.12.1
 + datasets==2.14.4
 + diffusers==0.33.0
 + dill==0.3.7
 + einops==0.8.2
 + fastapi==0.128.1
 + fastapi-mcp==0.3.0
 + ffmpy==1.0.0
 + flatbuffers==25.12.19
 + fonttools==4.61.1
 + frozenlist==1.8.0
 + gradio==5.6.0
 + gradio-client==1.4.3
 + h11==0.16.0
 + hf-xet==1.3.0
 + httpcore==1.0.9
 + httpx==0.28.1
 + httpx-sse==0.4.3
 + huggingface-hub==0.36.2
 + humanfriendly==10.0
 + idna==3.11
 + imageio==2.37.2
 + importlib-metadata==8.7.1
 + jax==0.7.1
 + jaxlib==0.7.1
 + kiwisolver==1.4.9
 + lazy-loader==0.4
 + markdown-it-py==4.0.0
 - markupsafe==3.0.2
 + markupsafe==2.1.5
 + matplotlib==3.10.8
 + mcp==1.6.0
 + mdurl==0.1.2
 + mediapipe==0.10.18
 + ml-dtypes==0.5.4
 + multidict==6.7.1
 + multiprocess==0.70.15
 - numpy==2.3.5
 + numpy==1.26.4
 + omegaconf==2.3.0
 + onnx==1.16.0
 + onnxruntime==1.17.3
 + opencv-contrib-python==4.11.0.86
 + opencv-python==4.8.1.78
 + openvino==2025.1.0
 + openvino-telemetry==2025.2.0
 + opt-einsum==3.4.0
 + optimum==1.27.0
 + optimum-intel==1.23.0
 + orjson==3.11.7
 + packaging==26.0
 + pandas==2.3.3
 + peft==0.6.1
 - pillow==12.0.0
 + pillow==9.4.0
 + propcache==0.4.1
 + protobuf==4.25.8
 + psutil==7.2.2
 + pyarrow==23.0.1
 + pycparser==3.0
 + pydantic==2.9.2
 + pydantic-core==2.23.4
 + pydantic-settings==2.8.1
 + pydub==0.25.1
 + pygments==2.19.2
 + pyparsing==3.3.2
 + pyqt5==5.15.11
 + pyqt5-qt5==5.15.18
 + pyqt5-sip==12.18.0
 + python-dateutil==2.9.0.post0
 + python-dotenv==1.2.1
 + python-multipart==0.0.12
 + pytz==2025.2
 + pyyaml==6.0.1
 + regex==2026.2.19
 + requests==2.32.5
 + rich==14.3.3
 + ruff==0.15.2
 + safehttpx==0.1.7
 + safetensors==0.7.0
 + scikit-image==0.24.0
 + scipy==1.17.1
 + semantic-version==2.10.0
 + sentencepiece==0.2.1
 + setuptools==82.0.0
 + shellingham==1.5.4
 + six==1.17.0
 + sounddevice==0.5.5
 + sse-starlette==3.2.0
 + starlette==0.50.0
 + tifffile==2026.2.24
 + timm==1.0.25
 + tokenizers==0.21.4
 + tomesd==0.1.3
 + tomli==2.4.0
 + tomlkit==0.12.0
 + tqdm==4.67.3
 + transformers==4.48.0
 + typer==0.24.1
 - typing-extensions==4.15.0
 + typing-extensions==4.10.0
 + tzdata==2025.3
 + urllib3==2.6.3
 + uvicorn==0.41.0
 + websockets==12.0
 + xxhash==3.6.0
 + yarl==1.22.0
 + zipp==3.23.0
FastSD CPU installation completed,press any key to continue...
(venv) (base) builder@LuiGi:~/Workspaces/fastsdcpu$

As the latest Ubuntu uses Wayland, I set the env var and launched with start.sh

(venv) (base) builder@LuiGi:~/Workspaces/fastsdcpu$ QT_QPA_PLATFORM=wayland ./start.sh
Starting FastSD CPU please wait...
Found python command
Python version : 3.13.11
/home/builder/Workspaces/fastsdcpu/env/lib/python3.11/site-packages/torch/onnx/_internal/registration.py:162: OnnxExporterWarning: Symbolic function 'aten::scaled_dot_product_attention' already registered for opset 14. Replacing the existing function with new function. This is unexpected. Please report it on https://github.com/pytorch/pytorch/issues.
  warnings.warn(
... snip ...

I tried my president waving a gun prompt and it gave me something. It took a few minutes to draw, but I was okay with that

/content/images/2026/02/fastsd-01.png

I tried some Lora models next

/content/images/2026/02/fastsd-02.png

and another

/content/images/2026/02/fastsd-03.png

I decided to just test with a name - would it block it?

/content/images/2026/02/fastsd-04.png

what about tied up devs?

I tried some LoRa models

/content/images/2026/02/fastsd-06.png

But in testing i couldn’t get them to be tied up

/content/images/2026/02/fastsd-05.png

I tried a lot of variations but without success. I saw some nice images with the anything-5 model, but no one bound

/content/images/2026/02/fastsd-07.png

with runwayml/stable-diffusion-v1-5

/content/images/2026/02/fastsd-08.png

Summary

Today we explored a few options for uncensored or minimally censored images. I mentioned humor and satire but I alluded to nudity, but did not generate. The kinds of things I was thinking about in that regard would be AI around medical procedures or nudity in old sculpture or paintings. But I won’t be exploring that here (you are welcome to do it on your own if you desire).

In the first section, we went to Azure AI Foundry and setup Flux 1.1. One of my challenges with Azure AI is there really isn’t a clear idea on costs when it comes to media (images, video, music) and tokens. It’s more of a try-and-see. So knowing that three medium sized images cost me about US$0.14, it gives me a general idea on costs.

With Azure, once I set a custom “minimal” content filter, more options became available, like the “president” kissing another politician. And with this and most of the other tests, I would fire these images into MidJourney and Google AI Pro to see if they would generate a video (video from image) or get blocked.

For self-hosted, ComfyUI worked great with Windows. I’m sure I just needed better drivers elsewhere. My daily driver laptop (LG Gram) really doesn’t have a GPU so it was not surprising it just fell down there.

I did not mention it above, but a lot my confusion around how to setup and use ComfyUI was really cleared up with this Sebastian Kamph tutorial on YouTube. He goes at a very nice slower pace.

My biggest challenge with ComfyUI (after I figured out the general idea of flows) was managing disk space. It really really wants to live on “C:" but many of these models are between 10-30Gb of downloads. I also found that because i made a symlink over to my D drive (which has space)

Microsoft Windows [Version 10.0.22621.4317]
(c) Microsoft Corporation. All rights reserved.

C:\Windows\System32>mklink /D "C:\ComfyUI\models" "D:\ComfyUIStorage\models"
symbolic link created for C:\ComfyUI\models <<===>> D:\ComfyUIStorage\models

C:\Windows\System32>

After I loaded the models, I needed to fully restart ComfyUI for it to “see” them in the web interface (I take this as just an affect of the ComfyUI wrapping a Python process that probably loads the libraries at startup).

The takeaways for me are that there are real ways, with just a bit of effort, to get less-censored or uncensored AI generated images and videos. However, the minor cloud costs, and the local time costs (again, for me, with an RTX 3070, taking between 7-60m for little video snippets) means it will really just be reserved for those things that would get rejected by online ‘free’ models.

Azure GenAI Flux AzureAI AIFoundry Ollama ComfyUI FastDS Gemini

Have something to add? Feedback? You can use the feedback form

Isaac Johnson

Isaac Johnson

Cloud Solutions Architect

Isaac is a CSA and DevOps engineer who focuses on cloud migrations and devops processes. He also is a dad to three wonderful daughters (hence the references to Princess King sprinkled throughout the blog).

Theme built by C.S. Rhymes