banodoco / Dough

Dough is a open source tool for steering AI animations with precision.
https://banodoco.ai/
Other
464 stars 33 forks source link

First run errors #95

Closed SoftologyPro closed 6 months ago

SoftologyPro commented 6 months ago

Cloned the repo. Installed all deps into a new clean virtual environment (voc_dough). When the UI appears it shows this wanring

Please replace st.experimental_get_query_params with st.query_params.
st.experimental_get_query_params will be removed after 2024-04-11.
Refer to our [docs page](https://docs.streamlit.io/library/api-reference/utilities/st.query_params) for more information.

and this error

UnboundLocalError: local variable 'res' referenced before assignment
Traceback:

File "D:\Tests\Dough\voc_dough\lib\site-packages\streamlit\runtime\scriptrunner\script_runner.py", line 535, in _run_script
    exec(code, module.__dict__)
File "D:\Tests\Dough\app.py", line 112, in <module>
    raise e
File "D:\Tests\Dough\app.py", line 109, in <module>
    main()
File "D:\Tests\Dough\app.py", line 101, in main
    setup_app_ui()
File "D:\Tests\Dough\ui_components\setup.py", line 103, in setup_app_ui
    check_project_meta_data(st.session_state["project_uuid"])
File "D:\Tests\Dough\ui_components\methods\common_methods.py", line 793, in check_project_meta_data
    if acquire_lock(key):
File "D:\Tests\Dough\utils\common_utils.py", line 253, in acquire_lock
    lock_status = data_repo.acquire_lock(key)
File "D:\Tests\Dough\utils\data_repo\data_repo.py", line 439, in acquire_lock
    return res.data['data'] if res and res.status else None

If I create a new project, it shows that the project is created, but then the above error is displayed again.

piyushK52 commented 6 months ago

noted.. will push a fix shortly !

SoftologyPro commented 6 months ago

noted.. will push a fix shortly !

OK, thanks. Can you let me know when it is ready to test?

piyushK52 commented 6 months ago

@SoftologyPro can you check the green-head branch and let me know if it’s working for you? (Also delete the comfy_runner folder inside Dough,if it’s present, it will create a new one automatically)

SoftologyPro commented 6 months ago

@SoftologyPro can you check the green-head branch and let me know if it’s working for you? (Also delete the comfy_runner folder inside Dough,if it’s present, it will create a new one automatically)

How do I git clone the "green-head branch"?

peteromallet commented 6 months ago

Hi @SoftologyPro,

You need to fetch and switch to the branch by running this in your Terminal:

git fetch git checkout green-head

SoftologyPro commented 6 months ago

Hi @SoftologyPro,

You need to fetch and switch to the branch by running this in your Terminal:

git fetch git checkout green-head

D:\Tests\Dough>git fetch D:\Tests\Dough>git checkout green-head error: pathspec 'green-head' did not match any file(s) known to git

piyushK52 commented 6 months ago

Do one thing for now, go into the data_repo.py file and find this method - acquire_lock.. and add the line "res = None" as shown in the image.. then start the app Screenshot 2024-03-05 at 3 05 19 PM

SoftologyPro commented 6 months ago

OK, that gets past the error. There is still this warning at startup,

Please replace st.experimental_get_query_params with st.query_params.

st.experimental_get_query_params will be removed after 2024-04-11.

Refer to our [docs page](https://docs.streamlit.io/library/api-reference/utilities/st.query_params) for more information.

but it seems to start OK after that. I start the James Dean watercolor example, the models downloaded and various packages are installed.

Then after a while this error...

DEBUG:app_logger:database busy, retrying
error occured:  No module named 'websocket'
Traceback (most recent call last):
  File "D:\Tests\Dough\banodoco_runner.py", line 298, in check_and_update_db
    output = predict_gpu_output(data['workflow_input'], data['file_path_list'], \
  File "D:\Tests\Dough\utils\ml_processor\gpu\utils.py", line 23, in predict_gpu_output
    from comfy_runner.inf import ComfyRunner
  File "D:\Tests\Dough\comfy_runner\inf.py", line 10, in <module>
    import websocket
ModuleNotFoundError: No module named 'websocket'
DEBUG:app_logger:database busy, retrying
DEBUG:app_logger:database busy, retrying
piyushK52 commented 6 months ago

Ah.. I think you didn’t install websocket… close the app, run “pip install websocket” and then start the app.. although weirdly you shouldn’t be seeing “database busy” message… I feel like you missed some steps or didn’t install the packages in venv

SoftologyPro commented 6 months ago

Ah.. I think you didn’t install websocket… close the app, run “pip install websocket” and then start the app.. although weirdly you shouldn’t be seeing “database busy” message… I feel like you missed some steps or didn’t install the packages in venv

OK, typo in your requirements. You have "websockets" and not "websocket". pip install websocket fixes that. But then I get ModuleNotFoundError: No module named 'fuzzywuzzy' pip install fuzzywuzzy fixes that There is also so the message

D:\Tests\Dough\voc_dough\lib\site-packages\fuzzywuzzy\fuzz.py:11: UserWarning: Using slow pure-python SequenceMatcher. Install python-Levenshtein to remove this warning
  warnings.warn('Using slow pure-python SequenceMatcher. Install python-Levenshtein to remove this warning')

so I also ran pip install python-Levenshtein

UI starts. I click the film strip icon button "Animate 'Shot 1'" That takes a few seconds to show the 3 images. I then click the bottom "Generate Animation Clip" button.

Another error ModuleNotFoundError: No module named 'numexpr' fixed with pip install numexpr

Now it stops with...

To see the GUI go to: http://127.0.0.1:4333
DEBUG:app_logger:Process 49488 (Port 4333)
DEBUG:app_logger:comfy server is running
FETCH DATA from: D:\Tests\Dough\ComfyUI\custom_nodes\ComfyUI-Manager\extension-node-map.json
FETCH DATA from: D:\Tests\Dough\ComfyUI\custom_nodes\ComfyUI-Manager\custom-node-list.json
Update check done.
DEBUG:app_logger:Updating ip-adapter-plus_sd15.bin to ip-adapter-plus_sd15.bin
DEBUG:app_logger:Updating pytorch_model.bin to SD1.5\pytorch_model.bin
DEBUG:app_logger:Updating vae-ft-mse-840000-ema-pruned.safetensors to vae-ft-mse-840000-ema-pruned.safetensors
DEBUG:app_logger:Updating anything-v3-fp16-pruned.safetensors to anything-v3-fp16-pruned.safetensors
DEBUG:app_logger:Updating v3_sd15_sparsectrl_rgb.ckpt to SD1.5\animatediff\v3_sd15_sparsectrl_rgb.ckpt
DEBUG:app_logger:Updating v3_sd15_adapter.ckpt to SD1.5\animatediff\v3_sd15_adapter.ckpt
DEBUG:app_logger:Updating v3_sd15_mm.ckpt to v3_sd15_mm.ckpt
DEBUG:app_logger:Updating v3_sd15_sparsectrl_rgb.ckpt to SD1.5\animatediff\v3_sd15_sparsectrl_rgb.ckpt
INFO:app_logger:Generating output please wait
INFO:app_logger:Error generating output WebSocket.__init__() missing 3 required positional arguments: 'environ', 'socket', and 'rfile'
DEBUG:app_logger:Process 49488 (Port 4333)
error occured:  'file_paths'
Traceback (most recent call last):
  File "D:\Tests\Dough\banodoco_runner.py", line 298, in check_and_update_db
    output = predict_gpu_output(data['workflow_input'], data['file_path_list'], \
  File "D:\Tests\Dough\utils\ml_processor\gpu\utils.py", line 35, in predict_gpu_output
    return output['file_paths']   # ignoring text output for now {"file_paths": [], "text_content": []}
KeyError: 'file_paths'
piyushK52 commented 6 months ago

I think the very first time you mistakenly ran the app without activating the environment… I simple fix for this could be to delete the old venv folder (as you installed some packages manually), create a new venv, activate it and do “pip install -r requirements.txt” and “pip install -r comfy_runner/requirements.txt”

SoftologyPro commented 6 months ago

OK, I now see I missed the pip install websocket on your Windows install documentation. That was my problem.

I created a quick install.bat batch file to make sure I am installing Dough cleanly from scratch.

@echo off
echo *** Deleting Dough directory if it exists
if exist Dough\. rd /S /Q Dough
echo *** Cloning Dough
git clone --depth 1 -b staging https://github.com/banodoco/Dough.git
cd Dough
echo *** setting up virtual environment
python -m venv venv
call venv\Scripts\activate.bat
echo *** updating pip
python.exe -m pip install --upgrade pip
echo *** installing requirements
pip install -r requirements.txt
pip install websocket
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118
call venv\Scripts\deactivate.bat
copy .env.sample .env
cd ..
echo *** finished Dough install
pause

Then I start it with a quick run.bat

@echo off
cd Dough
call venv\scripts\activate.bat
call entrypoint.bat
call venv\scripts\deactivate.bat
cd..

And now everything works as expected.

One minor issue still. When the movie is built the stats show

Moviepy - Building video C:\Users\Jason\AppData\Local\Temp\tmpau9v7y4h.mp4.
Moviepy - Writing video C:\Users\Jason\AppData\Local\Temp\tmpau9v7y4h.mp4

Moviepy - Done !
Moviepy - video ready C:\Users\Jason\AppData\Local\Temp\tmpau9v7y4h.mp4

That movie does not exist. The movie is under the Dough sub directory videos\17727bfd-14f9-4adc-8a29-c4f5c7e8d27d\assets\videos\1_final\

piyushK52 commented 6 months ago

This script is pretty good! I will add something like this in the repo very soon. Regarding your issue, I didn’t get what went wrong, is the video not showing up in the app? (The temp files that are created while generation are automatically deleted).

SoftologyPro commented 6 months ago

Regarding your issue, I didn’t get what went wrong, is the video not showing up in the app? (The temp files that are created while generation are automatically deleted).

No, it is not showing in the UI. Is it supposed to display down the bottom after the "Generate Animation Clip" button? This is in Firefox.

piyushK52 commented 6 months ago

It is supposed to be shown at the top inside the “animate shot” section.. can you check if it’s there?

SoftologyPro commented 6 months ago

It is supposed to be shown at the top inside the “animate shot” section.. can you check if it’s there?

Yes, it is up top :) I expeccted to be down the bottom and never scrolled up. All working fine now. Thanks for all your help.

SoftologyPro commented 6 months ago

Actually, not 100% right. The first run after install it gets to the end with

Desired Speed Change: 2.29
Moviepy - Building video C:\Users\Jason\AppData\Local\Temp\tmpp32wh2t4.mp4.
Moviepy - Writing video C:\Users\Jason\AppData\Local\Temp\tmpp32wh2t4.mp4
t:   0% 0/45 [00:00<?, ?it/s, now=None] 

Moviepy - Done !
Moviepy - video ready C:\Users\Jason\AppData\Local\Temp\tmpp32wh2t4.mp4
no audio to sync

But when I scroll up there is no output movie displayed. Then I realised there is the little toggle to the right "show video" that is off by default. Maybe that needs to be enabled by default.

peteromallet commented 6 months ago

Implemented that idea in the branch that's coming tomorrow - thanks for the suggestion @SoftologyPro!