Mikubill / sd-webui-controlnet

WebUI extension for ControlNet
GNU General Public License v3.0
16.42k stars 1.91k forks source link

[Bug]: After installing the latest version, using webui API calls will result in errors #2892

Closed hjj-lmx closed 1 month ago

hjj-lmx commented 1 month ago

Is there an existing issue for this?

What happened?

Traceback (most recent call last): File "D:\stable-diffusion-webui-1.8\venv\lib\site-packages\anyio\streams\memory.py", line 98, in receive return self.receive_nowait() File "D:\stable-diffusion-webui-1.8\venv\lib\site-packages\anyio\streams\memory.py", line 93, in receive_nowait raise WouldBlock anyio.WouldBlock

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "D:\stable-diffusion-webui-1.8\venv\lib\site-packages\starlette\middleware\base.py", line 78, in call_next
    message = await recv_stream.receive()
  File "D:\stable-diffusion-webui-1.8\venv\lib\site-packages\anyio\streams\memory.py", line 118, in receive
    raise EndOfStream
anyio.EndOfStream

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "D:\stable-diffusion-webui-1.8\modules\api\api.py", line 187, in exception_handling
    return await call_next(request)
  File "D:\stable-diffusion-webui-1.8\venv\lib\site-packages\starlette\middleware\base.py", line 84, in call_next
    raise app_exc
  File "D:\stable-diffusion-webui-1.8\venv\lib\site-packages\starlette\middleware\base.py", line 70, in coro
    await self.app(scope, receive_or_disconnect, send_no_error)
  File "D:\stable-diffusion-webui-1.8\venv\lib\site-packages\starlette\middleware\base.py", line 108, in __call__
    response = await self.dispatch_func(request, call_next)
  File "D:\stable-diffusion-webui-1.8\modules\api\api.py", line 151, in log_and_time
    res: Response = await call_next(req)
  File "D:\stable-diffusion-webui-1.8\venv\lib\site-packages\starlette\middleware\base.py", line 84, in call_next
    raise app_exc
  File "D:\stable-diffusion-webui-1.8\venv\lib\site-packages\starlette\middleware\base.py", line 70, in coro
    await self.app(scope, receive_or_disconnect, send_no_error)
  File "D:\stable-diffusion-webui-1.8\venv\lib\site-packages\starlette\middleware\cors.py", line 84, in __call__
    await self.app(scope, receive, send)
  File "D:\stable-diffusion-webui-1.8\venv\lib\site-packages\starlette\middleware\gzip.py", line 26, in __call__
    await self.app(scope, receive, send)
  File "D:\stable-diffusion-webui-1.8\venv\lib\site-packages\starlette\middleware\exceptions.py", line 79, in __call__
    raise exc
  File "D:\stable-diffusion-webui-1.8\venv\lib\site-packages\starlette\middleware\exceptions.py", line 68, in __call__
    await self.app(scope, receive, sender)
  File "D:\stable-diffusion-webui-1.8\venv\lib\site-packages\fastapi\middleware\asyncexitstack.py", line 21, in __call__
    raise e
  File "D:\stable-diffusion-webui-1.8\venv\lib\site-packages\fastapi\middleware\asyncexitstack.py", line 18, in __call__
    await self.app(scope, receive, send)
  File "D:\stable-diffusion-webui-1.8\venv\lib\site-packages\starlette\routing.py", line 718, in __call__
    await route.handle(scope, receive, send)
  File "D:\stable-diffusion-webui-1.8\venv\lib\site-packages\starlette\routing.py", line 276, in handle
    await self.app(scope, receive, send)
  File "D:\stable-diffusion-webui-1.8\venv\lib\site-packages\starlette\routing.py", line 66, in app
    response = await func(request)
  File "D:\stable-diffusion-webui-1.8\venv\lib\site-packages\fastapi\routing.py", line 237, in app
    raw_response = await run_endpoint_function(
  File "D:\stable-diffusion-webui-1.8\venv\lib\site-packages\fastapi\routing.py", line 165, in run_endpoint_function
    return await run_in_threadpool(dependant.call, **values)
  File "D:\stable-diffusion-webui-1.8\venv\lib\site-packages\starlette\concurrency.py", line 41, in run_in_threadpool
    return await anyio.to_thread.run_sync(func, *args)
  File "D:\stable-diffusion-webui-1.8\venv\lib\site-packages\anyio\to_thread.py", line 33, in run_sync
    return await get_asynclib().run_sync_in_worker_thread(
  File "D:\stable-diffusion-webui-1.8\venv\lib\site-packages\anyio\_backends\_asyncio.py", line 877, in run_sync_in_worker_thread
    return await future
  File "D:\stable-diffusion-webui-1.8\venv\lib\site-packages\anyio\_backends\_asyncio.py", line 807, in run
    result = context.run(func, *args)
  File "D:\stable-diffusion-webui-1.8\modules\api\api.py", line 548, in img2imgapi
    processed = process_images(p)
  File "D:\stable-diffusion-webui-1.8\modules\processing.py", line 786, in process_images
    res = process_images_inner(p)
  File "D:\stable-diffusion-webui-1.8\extensions\sd-webui-controlnet\scripts\batch_hijack.py", line 56, in processing_process_images_hijack
    cn_is_batch, batches, output_dir, input_file_names = get_cn_batches(p)
  File "D:\stable-diffusion-webui-1.8\extensions\sd-webui-controlnet\scripts\batch_hijack.py", line 196, in get_cn_batches
    units = external_code.get_all_units_in_processing(p)
  File "D:\stable-diffusion-webui-1.8\extensions\sd-webui-controlnet\internal_controlnet\external_code.py", line 133, in get_all_units_in_processing
    return get_all_units(p.scripts, p.script_args)
  File "D:\stable-diffusion-webui-1.8\extensions\sd-webui-controlnet\internal_controlnet\external_code.py", line 146, in get_all_units
    return get_all_units_from(script_args[cn_script.args_from : cn_script.args_to])
  File "D:\stable-diffusion-webui-1.8\extensions\sd-webui-controlnet\internal_controlnet\external_code.py", line 174, in get_all_units_from
    all_units = [
  File "D:\stable-diffusion-webui-1.8\extensions\sd-webui-controlnet\internal_controlnet\external_code.py", line 175, in <listcomp>
    to_processing_unit(script_arg)
  File "D:\stable-diffusion-webui-1.8\extensions\sd-webui-controlnet\internal_controlnet\external_code.py", line 228, in to_processing_unit
    return ControlNetUnit.from_dict(unit)
  File "D:\stable-diffusion-webui-1.8\extensions\sd-webui-controlnet\internal_controlnet\args.py", line 414, in from_dict
    values = cls.legacy_field_alias(values)
  File "D:\stable-diffusion-webui-1.8\extensions\sd-webui-controlnet\internal_controlnet\args.py", line 318, in legacy_field_alias
    assert key not in values, f"Conflict of field '{alias}' and '{key}'"
AssertionError: Conflict of field 'input_image' and 'image'

Steps to reproduce the problem

Traceback (most recent call last): File "D:\stable-diffusion-webui-1.8\venv\lib\site-packages\anyio\streams\memory.py", line 98, in receive return self.receive_nowait() File "D:\stable-diffusion-webui-1.8\venv\lib\site-packages\anyio\streams\memory.py", line 93, in receive_nowait raise WouldBlock anyio.WouldBlock

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "D:\stable-diffusion-webui-1.8\venv\lib\site-packages\starlette\middleware\base.py", line 78, in call_next
    message = await recv_stream.receive()
  File "D:\stable-diffusion-webui-1.8\venv\lib\site-packages\anyio\streams\memory.py", line 118, in receive
    raise EndOfStream
anyio.EndOfStream

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "D:\stable-diffusion-webui-1.8\modules\api\api.py", line 187, in exception_handling
    return await call_next(request)
  File "D:\stable-diffusion-webui-1.8\venv\lib\site-packages\starlette\middleware\base.py", line 84, in call_next
    raise app_exc
  File "D:\stable-diffusion-webui-1.8\venv\lib\site-packages\starlette\middleware\base.py", line 70, in coro
    await self.app(scope, receive_or_disconnect, send_no_error)
  File "D:\stable-diffusion-webui-1.8\venv\lib\site-packages\starlette\middleware\base.py", line 108, in __call__
    response = await self.dispatch_func(request, call_next)
  File "D:\stable-diffusion-webui-1.8\modules\api\api.py", line 151, in log_and_time
    res: Response = await call_next(req)
  File "D:\stable-diffusion-webui-1.8\venv\lib\site-packages\starlette\middleware\base.py", line 84, in call_next
    raise app_exc
  File "D:\stable-diffusion-webui-1.8\venv\lib\site-packages\starlette\middleware\base.py", line 70, in coro
    await self.app(scope, receive_or_disconnect, send_no_error)
  File "D:\stable-diffusion-webui-1.8\venv\lib\site-packages\starlette\middleware\cors.py", line 84, in __call__
    await self.app(scope, receive, send)
  File "D:\stable-diffusion-webui-1.8\venv\lib\site-packages\starlette\middleware\gzip.py", line 26, in __call__
    await self.app(scope, receive, send)
  File "D:\stable-diffusion-webui-1.8\venv\lib\site-packages\starlette\middleware\exceptions.py", line 79, in __call__
    raise exc
  File "D:\stable-diffusion-webui-1.8\venv\lib\site-packages\starlette\middleware\exceptions.py", line 68, in __call__
    await self.app(scope, receive, sender)
  File "D:\stable-diffusion-webui-1.8\venv\lib\site-packages\fastapi\middleware\asyncexitstack.py", line 21, in __call__
    raise e
  File "D:\stable-diffusion-webui-1.8\venv\lib\site-packages\fastapi\middleware\asyncexitstack.py", line 18, in __call__
    await self.app(scope, receive, send)
  File "D:\stable-diffusion-webui-1.8\venv\lib\site-packages\starlette\routing.py", line 718, in __call__
    await route.handle(scope, receive, send)
  File "D:\stable-diffusion-webui-1.8\venv\lib\site-packages\starlette\routing.py", line 276, in handle
    await self.app(scope, receive, send)
  File "D:\stable-diffusion-webui-1.8\venv\lib\site-packages\starlette\routing.py", line 66, in app
    response = await func(request)
  File "D:\stable-diffusion-webui-1.8\venv\lib\site-packages\fastapi\routing.py", line 237, in app
    raw_response = await run_endpoint_function(
  File "D:\stable-diffusion-webui-1.8\venv\lib\site-packages\fastapi\routing.py", line 165, in run_endpoint_function
    return await run_in_threadpool(dependant.call, **values)
  File "D:\stable-diffusion-webui-1.8\venv\lib\site-packages\starlette\concurrency.py", line 41, in run_in_threadpool
    return await anyio.to_thread.run_sync(func, *args)
  File "D:\stable-diffusion-webui-1.8\venv\lib\site-packages\anyio\to_thread.py", line 33, in run_sync
    return await get_asynclib().run_sync_in_worker_thread(
  File "D:\stable-diffusion-webui-1.8\venv\lib\site-packages\anyio\_backends\_asyncio.py", line 877, in run_sync_in_worker_thread
    return await future
  File "D:\stable-diffusion-webui-1.8\venv\lib\site-packages\anyio\_backends\_asyncio.py", line 807, in run
    result = context.run(func, *args)
  File "D:\stable-diffusion-webui-1.8\modules\api\api.py", line 548, in img2imgapi
    processed = process_images(p)
  File "D:\stable-diffusion-webui-1.8\modules\processing.py", line 786, in process_images
    res = process_images_inner(p)
  File "D:\stable-diffusion-webui-1.8\extensions\sd-webui-controlnet\scripts\batch_hijack.py", line 56, in processing_process_images_hijack
    cn_is_batch, batches, output_dir, input_file_names = get_cn_batches(p)
  File "D:\stable-diffusion-webui-1.8\extensions\sd-webui-controlnet\scripts\batch_hijack.py", line 196, in get_cn_batches
    units = external_code.get_all_units_in_processing(p)
  File "D:\stable-diffusion-webui-1.8\extensions\sd-webui-controlnet\internal_controlnet\external_code.py", line 133, in get_all_units_in_processing
    return get_all_units(p.scripts, p.script_args)
  File "D:\stable-diffusion-webui-1.8\extensions\sd-webui-controlnet\internal_controlnet\external_code.py", line 146, in get_all_units
    return get_all_units_from(script_args[cn_script.args_from : cn_script.args_to])
  File "D:\stable-diffusion-webui-1.8\extensions\sd-webui-controlnet\internal_controlnet\external_code.py", line 174, in get_all_units_from
    all_units = [
  File "D:\stable-diffusion-webui-1.8\extensions\sd-webui-controlnet\internal_controlnet\external_code.py", line 175, in <listcomp>
    to_processing_unit(script_arg)
  File "D:\stable-diffusion-webui-1.8\extensions\sd-webui-controlnet\internal_controlnet\external_code.py", line 228, in to_processing_unit
    return ControlNetUnit.from_dict(unit)
  File "D:\stable-diffusion-webui-1.8\extensions\sd-webui-controlnet\internal_controlnet\args.py", line 414, in from_dict
    values = cls.legacy_field_alias(values)
  File "D:\stable-diffusion-webui-1.8\extensions\sd-webui-controlnet\internal_controlnet\args.py", line 318, in legacy_field_alias
    assert key not in values, f"Conflict of field '{alias}' and '{key}'"
AssertionError: Conflict of field 'input_image' and 'image'

What should have happened?

Unable to call normally

Commit where the problem happens

webui: controlnet: 1

What browsers do you use to access the UI ?

No response

Command Line Arguments

1

List of enabled extensions

1

Console logs

1

Additional information

No response

huchenlei commented 1 month ago

It is expected. You should have either input_image or image field in ControlNet unit payload. Not both.

hjj-lmx commented 1 month ago

image Can the current version be used by passing in either input_image or image? I previously defined these two parameters, but only assigned input_image a value