Skip to content

IndexError: index 0 is out of bounds for axis 0 with size 0【Mask tool】 #1541

Description

@vlccdl

This bug has existed for a while. When using the manual tool and then regenerating the mask using MASK TOOLS, if the input type is "frame" and "all" is selected in Processing, clicking the "MASK" button will result in an error after a short wait.

The crash report is as follows:

04/25/2026 21:51:36 MainProcess MainThread objects set_name DEBUG Setting name to 'extract.detect.s3fd.batch_size'
04/25/2026 21:51:36 MainProcess MainThread objects set_name DEBUG Setting name to 'extract.identity.t_face.batch_size'
04/25/2026 21:51:36 MainProcess MainThread objects set_name DEBUG Setting name to 'extract.identity.t_face.cpu'
04/25/2026 21:51:36 MainProcess MainThread objects set_name DEBUG Setting name to 'extract.identity.t_face.backbone'
04/25/2026 21:51:36 MainProcess MainThread objects set_name DEBUG Setting name to 'extract.identity.vggface2.batch_size'
04/25/2026 21:51:36 MainProcess MainThread objects set_name DEBUG Setting name to 'extract.identity.vggface2.cpu'
04/25/2026 21:51:36 MainProcess MainThread objects set_name DEBUG Setting name to 'extract.mask.bisenet_fp.batch_size'
04/25/2026 21:51:36 MainProcess MainThread objects set_name DEBUG Setting name to 'extract.mask.bisenet_fp.cpu'
04/25/2026 21:51:36 MainProcess MainThread objects set_name DEBUG Setting name to 'extract.mask.bisenet_fp.weights'
04/25/2026 21:51:36 MainProcess MainThread objects set_name DEBUG Setting name to 'extract.mask.bisenet_fp.include_ears'
04/25/2026 21:51:36 MainProcess MainThread objects set_name DEBUG Setting name to 'extract.mask.bisenet_fp.include_hair'
04/25/2026 21:51:36 MainProcess MainThread objects set_name DEBUG Setting name to 'extract.mask.bisenet_fp.include_glasses'
04/25/2026 21:51:36 MainProcess MainThread objects set_name DEBUG Setting name to 'extract.mask.custom.batch_size'
04/25/2026 21:51:36 MainProcess MainThread objects set_name DEBUG Setting name to 'extract.mask.custom.centering'
04/25/2026 21:51:36 MainProcess MainThread objects set_name DEBUG Setting name to 'extract.mask.custom.fill'
04/25/2026 21:51:36 MainProcess MainThread objects set_name DEBUG Setting name to 'extract.mask.unet_dfl.batch_size'
04/25/2026 21:51:36 MainProcess MainThread objects set_name DEBUG Setting name to 'extract.mask.vgg_clear.batch_size'
04/25/2026 21:51:36 MainProcess MainThread objects set_name DEBUG Setting name to 'extract.mask.vgg_obstructed.batch_size'
04/25/2026 21:51:36 MainProcess MainThread ini _is_synced_structure DEBUG [extract] Configs are synced
04/25/2026 21:51:36 MainProcess MainThread ini _sync_to_app DEBUG [extract] Syncing to app
04/25/2026 21:51:36 MainProcess MainThread ini _values_synced DEBUG [extract:global] Config values are not synced: (app: [('aligner_distance', '40.0'), ('aligner_features', 'True'), ('aligner_max_scale', '4.0'), ('aligner_min_scale', '0.03'), ('aligner_roll', '0.0'), ('mask_storage_size', '128'), ('profile_max_vram', '85'), ('profile_num_faces', '2'), ('profile_save_config', 'False'), ('profile_test_time', '10'), ('profile_warmup_time', '2')], ini: [('aligner_distance', '40.0'), ('aligner_features', 'True'), ('aligner_max_scale', '4.0'), ('aligner_min_scale', '0.03'), ('aligner_roll', '0.0'), ('mask_storage_size', '128'), ('profile_max_vram', '85'), ('profile_num_faces', '2'), ('profile_save_config', 'False'), ('profile_test_time', '30'), ('profile_warmup_time', '10')])
04/25/2026 21:51:36 MainProcess MainThread ini _sync_to_app DEBUG [extract:global] Updating 'profile_warmup_time' from '10' to '2'
04/25/2026 21:51:36 MainProcess MainThread ini _get_converted_value DEBUG [extract:global] Getting config item: (option: 'profile_warmup_time', datatype: <class 'int'>)
04/25/2026 21:51:36 MainProcess MainThread ini _get_converted_value DEBUG [extract:global] Got config item: (value: 10, type: <class 'int'>)
04/25/2026 21:51:36 MainProcess MainThread ini _sync_to_app DEBUG [extract:global] Updating 'profile_test_time' from '30' to '10'
04/25/2026 21:51:36 MainProcess MainThread ini _get_converted_value DEBUG [extract:global] Getting config item: (option: 'profile_test_time', datatype: <class 'int'>)
04/25/2026 21:51:36 MainProcess MainThread ini _get_converted_value DEBUG [extract:global] Got config item: (value: 30, type: <class 'int'>)
04/25/2026 21:51:36 MainProcess MainThread ini _values_synced DEBUG [extract:align.fan] Config values are not synced: (app: [('batch_size', '16'), ('dark_decoder', 'True')], ini: [('batch_size', '256'), ('dark_decoder', 'True')])
04/25/2026 21:51:36 MainProcess MainThread ini _sync_to_app DEBUG [extract:align.fan] Updating 'batch_size' from '256' to '16'
04/25/2026 21:51:36 MainProcess MainThread ini _get_converted_value DEBUG [extract:align.fan] Getting config item: (option: 'batch_size', datatype: <class 'int'>)
04/25/2026 21:51:36 MainProcess MainThread ini _get_converted_value DEBUG [extract:align.fan] Got config item: (value: 256, type: <class 'int'>)
04/25/2026 21:51:36 MainProcess MainThread ini _values_synced DEBUG [extract:align.hrnet] Config values are not synced: (app: [('batch_size', '16'), ('dark_decoder', 'True')], ini: [('batch_size', '256'), ('dark_decoder', 'True')])
04/25/2026 21:51:36 MainProcess MainThread ini _sync_to_app DEBUG [extract:align.hrnet] Updating 'batch_size' from '256' to '16'
04/25/2026 21:51:36 MainProcess MainThread ini _get_converted_value DEBUG [extract:align.hrnet] Getting config item: (option: 'batch_size', datatype: <class 'int'>)
04/25/2026 21:51:36 MainProcess MainThread ini _get_converted_value DEBUG [extract:align.hrnet] Got config item: (value: 256, type: <class 'int'>)
04/25/2026 21:51:36 MainProcess MainThread config init DEBUG Initialized: _Config
04/25/2026 21:51:36 MainProcess MainThread plugin_loader get_extractor DEBUG Loading 'mask' from 'bisenet-fp'
04/25/2026 21:51:36 MainProcess MainThread base init DEBUG Initializing BiSeNetFP(input_size=512, batch_size=8, is_rgb=True, dtype='float32', scale=(0, 1), force_cpu=False)
04/25/2026 21:51:36 MainProcess MainThread base init DEBUG Initializing _TorchInfer(name='BiSeNetFP', force_cpu=False)
04/25/2026 21:51:36 MainProcess MainThread torch_utils get_device DEBUG Cuda available. Returning Cuda device
04/25/2026 21:51:36 MainProcess MainThread bisenet_fp _get_segment_indices DEBUG Selected segment indices: [1, 4]
04/25/2026 21:51:36 MainProcess MainThread plugin_loader get_extractor INFO Loading Mask from BiSeNetFP
04/25/2026 21:51:36 MainProcess MainThread handler _is_overridden DEBUG [bisenet-fp] Overridden method 'pre_process': True
04/25/2026 21:51:36 MainProcess MainThread handler _is_overridden DEBUG [bisenet-fp] Overridden method 'process': True
04/25/2026 21:51:36 MainProcess MainThread handler _is_overridden DEBUG [bisenet-fp] Overridden method 'post_process': True
04/25/2026 21:51:36 MainProcess MainThread handler call DEBUG [BiSeNetFP] Initializing runner from handler
04/25/2026 21:51:36 MainProcess MainThread runner init DEBUG Initializing ExtractRunner(handler=Mask(plugin='bisenet-fp', compile_model=False, config_file=None))
04/25/2026 21:51:36 MainProcess MainThread runner _get_threads DEBUG [bisenet-fp] Adding thread for 'pre_process'
04/25/2026 21:51:36 MainProcess MainThread runner register_thread DEBUG [bisenet-fp] Registering thread: 'pre_process'
04/25/2026 21:51:36 MainProcess MainThread runner _get_threads DEBUG [bisenet-fp] Adding thread for 'process'
04/25/2026 21:51:36 MainProcess MainThread runner register_thread DEBUG [bisenet-fp] Registering thread: 'process'
04/25/2026 21:51:36 MainProcess MainThread runner _get_threads DEBUG [bisenet-fp] Adding thread for 'post_process'
04/25/2026 21:51:36 MainProcess MainThread runner register_thread DEBUG [bisenet-fp] Registering thread: 'post_process'
04/25/2026 21:51:36 MainProcess MainThread runner _get_threads DEBUG [bisenet-fp] Threads: PluginThreads(name=bisenet-fp) [threads: ['pre_process', 'process', 'post_process'], alive: [False, False, False], error: False]
04/25/2026 21:51:36 MainProcess MainThread runner _get_queues DEBUG [bisenet-fp] Adding in queue for thread 'pre_process'
04/25/2026 21:51:36 MainProcess MainThread runner _get_queues DEBUG [bisenet-fp] Adding in queue for thread 'process'
04/25/2026 21:51:36 MainProcess MainThread runner _get_queues DEBUG [bisenet-fp] Adding in queue for thread 'post_process'
04/25/2026 21:51:36 MainProcess MainThread runner _get_queues DEBUG [bisenet-fp] Adding out queue
04/25/2026 21:51:36 MainProcess MainThread runner _get_queues DEBUG [bisenet-fp] Queues: {'pre_process': <queue.Queue object at 0x00000214574EE710>, 'process': <queue.Queue object at 0x00000214574EEFD0>, 'post_process': <queue.Queue object at 0x0000021457528D60>, 'out': <queue.Queue object at 0x00000214575290F0>}
04/25/2026 21:51:36 MainProcess MainThread iterator init DEBUG Initializing InputIterator(queue=<queue.Queue object at 0x00000214574EE710>, name='bisenet-fp', plugin_type='mask', batch_size=8, error_state=<lib.multithreading.ErrorState object at 0x000002142F9817F0>)
04/25/2026 21:51:36 MainProcess MainThread runner _get_inbound_iterator DEBUG [bisenet-fp.in] Got inbound iterator: InputIterator(queue=<queue.Queue object at 0x00000214574EE710>, name='bisenet-fp.input', plugin_type='mask', batch_size=8)
04/25/2026 21:51:36 MainProcess MainThread iterator init DEBUG Initializing OutputIterator(queue=<queue.Queue object at 0x00000214575290F0>, name='bisenet-fp_out', plugin_type='mask', batch_size=8, error_state=<lib.multithreading.ErrorState object at 0x000002142F9817F0>)
04/25/2026 21:51:36 MainProcess MainThread runner _register_plugin DEBUG [ExtractRunner.bisenet-fp] Registering new pipeline: '44c93b97a05541ddb361d16f674fcd8e'
04/25/2026 21:51:36 MainProcess MainThread runner start DEBUG [bisenet-fp] Starting thread: 'pre_process'
04/25/2026 21:51:36 MainProcess bisenet-fp.pre_process runner _process_batches DEBUG [bisenet-fp.pre_process] Starting process
04/25/2026 21:51:36 MainProcess MainThread runner start DEBUG [bisenet-fp] Starting thread: 'process'
04/25/2026 21:51:36 MainProcess bisenet-fp.process handler init_model DEBUG [bisenet-fp.load] Loading model
04/25/2026 21:51:36 MainProcess MainThread runner start DEBUG [bisenet-fp] Starting thread: 'post_process'
04/25/2026 21:51:36 MainProcess bisenet-fp.process utils _get DEBUG [GetModel] Model exists: 'C:\Users\test\faceswap\.fs_cache\bisenet_face_parsing_v6.pth'
04/25/2026 21:51:36 MainProcess bisenet-fp.post_process runner _process_batches DEBUG [bisenet-fp.post_process] Starting process
04/25/2026 21:51:36 MainProcess bisenet-fp.post_process iterator init DEBUG Initializing InterimIterator(queue=<queue.Queue object at 0x0000021457528D60>, name='bisenet-fp_post_process', plugin_type='mask', batch_size=8, error_state=<lib.multithreading.ErrorState object at 0x000002142F9817F0>)
04/25/2026 21:51:36 MainProcess MainThread mask_generate _set_loader_thread DEBUG Starting load thread: (loader: <tools.mask.loader.Loader object at 0x000002142C763380>)
04/25/2026 21:51:36 MainProcess MainThread mask_generate _set_loader_thread DEBUG Started load thread: <FSThread(Thread-2 (_feed_extractor), started 13760)>
04/25/2026 21:51:36 MainProcess MainThread mask_generate init DEBUG Initialized MaskGenerator
04/25/2026 21:51:36 MainProcess MainThread mask init DEBUG Initialized _Mask
04/25/2026 21:51:36 MainProcess MainThread mask process DEBUG Starting masker process
04/25/2026 21:51:36 MainProcess Thread-2 (_feed_extractor) image load DEBUG [ImagesLoader] Initializing Load Generator
04/25/2026 21:51:36 MainProcess Thread-2 (_feed_extractor) image _set_thread DEBUG [ImagesLoader] Set thread: <FSThread(ImagesLoader, initial)>
04/25/2026 21:51:36 MainProcess MainThread mask _generate_masks INFO Generating masks
04/25/2026 21:51:36 MainProcess ImagesLoader image _process DEBUG [ImagesLoader] Load iterator: <bound method ImagesLoader._from_video of <lib.image.ImagesLoader object at 0x000002142C7634D0>>
04/25/2026 21:51:36 MainProcess ImagesLoader image _from_video DEBUG [ImagesLoader] Loading frames from video: 'F:\fc\workspace\B-video.mp4'
04/25/2026 21:51:36 MainProcess bisenet-fp.process bisenet_fp init DEBUG Initialized: BiSeNet
04/25/2026 21:51:36 MainProcess bisenet-fp.process base load_torch_model DEBUG [TorchInfer.BiSeNetFP] Setting return indices: [0]
04/25/2026 21:51:37 MainProcess bisenet-fp.process base load_torch_model DEBUG [TorchInfer.BiSeNetFP] Loaded model
04/25/2026 21:51:37 MainProcess bisenet-fp.process plugin_utils get_torch_modules DEBUG Torch module found in BiSeNet(<class 'plugins.extract.mask.bisenet_fp.BiSeNet'>)
04/25/2026 21:51:37 MainProcess bisenet-fp.process handler init_model DEBUG [BiSeNetFP.load] Plugin does not need compiling
04/25/2026 21:51:37 MainProcess Thread-2 (_feed_extractor) runner _put_to_input DEBUG [bisenet-fp] Waiting on queue
04/25/2026 21:51:37 MainProcess bisenet-fp.process plugin_utils warmup_plugin DEBUG [BiSeNetFP] Warmed up. channels_last: False
04/25/2026 21:51:37 MainProcess bisenet-fp.process runner _process_batches DEBUG [bisenet-fp.process] Starting process
04/25/2026 21:51:37 MainProcess bisenet-fp.process iterator init DEBUG Initializing InterimIterator(queue=<queue.Queue object at 0x00000214574EEFD0>, name='bisenet-fp_process', plugin_type='mask', batch_size=8, error_state=<lib.multithreading.ErrorState object at 0x000002142F9817F0>)
04/25/2026 21:51:37 MainProcess MainThread alignments update_face DEBUG Updating face 0 for frame_name 'B-video_000001.mp4'
04/25/2026 21:51:37 MainProcess MainThread alignments update_face DEBUG Updating face 0 for frame_name 'B-video_000002.mp4'
04/25/2026 21:51:37 MainProcess MainThread alignments update_face DEBUG Updating face 0 for frame_name 'B-video_000003.mp4'
04/25/2026 21:51:37 MainProcess MainThread alignments update_face DEBUG Updating face 0 for frame_name 'B-video_000004.mp4'
04/25/2026 21:51:37 MainProcess MainThread alignments update_face DEBUG Updating face 0 for frame_name 'B-video_000005.mp4'
04/25/2026 21:51:37 MainProcess MainThread alignments update_face DEBUG Updating face 0 for frame_name 'B-video_000006.mp4'
04/25/2026 21:51:37 MainProcess MainThread alignments update_face DEBUG Updating face 0 for frame_name 'B-video_000007.mp4'
04/25/2026 21:51:37 MainProcess MainThread alignments update_face DEBUG Updating face 0 for frame_name 'B-video_000008.mp4'
04/25/2026 21:51:37 MainProcess MainThread alignments update_face DEBUG Updating face 0 for frame_name 'B-video_000009.mp4'
04/25/2026 21:51:37 MainProcess MainThread alignments update_face DEBUG Updating face 0 for frame_name 'B-video_000010.mp4'
Traceback (most recent call last):
File "C:\Users\test\faceswap\lib\cli\launcher.py", line 191, in execute_script
process.process()
~~~~~~~~~~~~~~~^^
File "C:\Users\test\faceswap\tools\mask\mask.py", line 131, in process
self._run_mask_process(arguments)
~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^
File "C:\Users\test\faceswap\tools\mask\mask.py", line 104, in _run_mask_process
mask.process()
~~~~~~~~~~~~^^
File "C:\Users\test\faceswap\tools\mask\mask.py", line 305, in process
self._generate_masks()
~~~~~~~~~~~~~~~~~~~~^^
File "C:\Users\test\faceswap\tools\mask\mask.py", line 270, in _generate_masks
for media in self._mask_gen.process():
~~~~~~~~~~~~~~~~~~~~~~^^
File "C:\Users\test\faceswap\tools\mask\mask_generate.py", line 222, in process
self._update_from_frame(media)
~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^
File "C:\Users\test\faceswap\tools\mask\mask_generate.py", line 184, in _update_from_frame
for idx, face in enumerate(media.detected_faces):
^^^^^^^^^^^^^^^^^^^^
File "C:\Users\test\faceswap\lib\infer\objects.py", line 851, in detected_faces
m.masks[idx],
~~~~~~~^^^^^
IndexError: index 0 is out of bounds for axis 0 with size 0

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions