anipose icon indicating copy to clipboard operation
anipose copied to clipboard

Error with Calibration: TypeError: 'NoneType' object is not subscriptable

Open KenR22 opened this issue 4 years ago • 5 comments

Hi,

I am having a problem with calibration and attached the output of anipose calibrate below: Thank you

D:\workspac_deepcut\local_DLC\FN 10-02-2020 - Short Clip-Chrissy-2020-10-08\videos\anipose_test\test1\calibration\TEST5-20201117T115653-115904_cam5.mp4 100%|████████████████████████████| 3960/3960 [00:35<00:00, 112.75it/s] 841 boards detected defaultdict(<class 'int'>, {}) Traceback (most recent call last): File "c:\users\rahmank\appdata\local\continuum\anaconda3\envs\anipose\lib\runpy.py", line 193, in _run_module_as_main "main", mod_spec) File "c:\users\rahmank\appdata\local\continuum\anaconda3\envs\anipose\lib\runpy.py", line 85, in run_code exec(code, run_globals) File "C:\Users\rahmank\AppData\Local\Continuum\anaconda3\envs\anipose\Scripts\anipose.exe_main.py", line 7, in File "c:\users\rahmank\appdata\local\continuum\anaconda3\envs\anipose\lib\site-packages\click\core.py", line 829, in call return self.main(*args, **kwargs) File "c:\users\rahmank\appdata\local\continuum\anaconda3\envs\anipose\lib\site-packages\click\core.py", line 782, in main rv = self.invoke(ctx) File "c:\users\rahmank\appdata\local\continuum\anaconda3\envs\anipose\lib\site-packages\click\core.py", line 1259, in invoke return _process_result(sub_ctx.command.invoke(sub_ctx)) File "c:\users\rahmank\appdata\local\continuum\anaconda3\envs\anipose\lib\site-packages\click\core.py", line 1066, in invoke return ctx.invoke(self.callback, **ctx.params) File "c:\users\rahmank\appdata\local\continuum\anaconda3\envs\anipose\lib\site-packages\click\core.py", line 610, in invoke return callback(*args, **kwargs) File "c:\users\rahmank\appdata\local\continuum\anaconda3\envs\anipose\lib\site-packages\click\decorators.py", line 73, in new_func return ctx.invoke(f, obj, *args, **kwargs) File "c:\users\rahmank\appdata\local\continuum\anaconda3\envs\anipose\lib\site-packages\click\core.py", line 610, in invoke return callback(*args, **kwargs) File "c:\users\rahmank\appdata\local\continuum\anaconda3\envs\anipose\lib\site-packages\anipose\anipose.py", line 115, in calibrate calibrate_all(config) File "c:\users\rahmank\appdata\local\continuum\anaconda3\envs\anipose\lib\site-packages\anipose\common.py", line 168, in fun return process_all(config, process_session, **args) File "c:\users\rahmank\appdata\local\continuum\anaconda3\envs\anipose\lib\site-packages\anipose\common.py", line 125, in process_all output[()] = process_session(config, pipeline_prefix, **args) File "c:\users\rahmank\appdata\local\continuum\anaconda3\envs\anipose\lib\site-packages\anipose\calibrate.py", line 187, in process_session verbose=True) File "c:\users\rahmank\appdata\local\continuum\anaconda3\envs\anipose\lib\site-packages\aniposelib\cameras.py", line 1560, in calibrate_rows rvecs, tvecs = get_initial_extrinsics(rtvecs) File "c:\users\rahmank\appdata\local\continuum\anaconda3\envs\anipose\lib\site-packages\aniposelib\utils.py", line 173, in get_initial_extrinsics pairs = find_calibration_pairs(graph, source=0) File "c:\users\rahmank\appdata\local\continuum\anaconda3\envs\anipose\lib\site-packages\aniposelib\utils.py", line 156, in find_calibration_pairs for new in graph[item]: TypeError: 'NoneType' object is not subscriptable

KenR22 avatar Dec 04 '20 05:12 KenR22

Hi,

I got same error when I run anipose calibrate.

(Anipose) C:\Users\jjw\Desktop\Anipose3D\hand-demo-unfilled>anipose calibrate Calibrating... C:\Users\jjw\Desktop\Anipose3D\hand-demo-unfilled\summaries C:\Users\jjw\Desktop\Anipose3D\hand-demo-unfilled\2019-08-02 C:\Users\jjw\Desktop\Anipose3D\hand-demo-unfilled\2019-08-02\calibration\calibration.toml C:\Users\jjw\Desktop\Anipose3D\hand-demo-unfilled\2019-08-02\calibration\calib-charuco-camA.MOV 100%|█████████████████████████████| 5274/5274 [04:24<00:00, 19.96it/s] 5274 boards detected C:\Users\jjw\Desktop\Anipose3D\hand-demo-unfilled\2019-08-02\calibration\calib-charuco-camB.MOV 100%|█████████████████████████████| 5264/5264 [04:13<00:00, 20.76it/s] 4986 boards detected C:\Users\jjw\Desktop\Anipose3D\hand-demo-unfilled\2019-08-02\calibration\calib-charuco-camC.MOV 100%|█████████████████████████████| 5265/5265 [03:55<00:00, 22.36it/s] 4724 boards detected defaultdict(<class 'int'>, {('A', 'B'): 4937, ('B', 'A'): 4937}) Traceback (most recent call last): File "c:\users\jjw\anaconda3\envs\anipose\lib\runpy.py", line 193, in _run_module_as_main "main", mod_spec) File "c:\users\jjw\anaconda3\envs\anipose\lib\runpy.py", line 85, in run_code exec(code, run_globals) File "C:\Users\jjw\anaconda3\envs\Anipose\Scripts\anipose.exe_main.py", line 7, in File "c:\users\jjw\anaconda3\envs\anipose\lib\site-packages\click\core.py", line 829, in call return self.main(*args, **kwargs) File "c:\users\jjw\anaconda3\envs\anipose\lib\site-packages\click\core.py", line 782, in main rv = self.invoke(ctx) File "c:\users\jjw\anaconda3\envs\anipose\lib\site-packages\click\core.py", line 1259, in invoke return _process_result(sub_ctx.command.invoke(sub_ctx)) File "c:\users\jjw\anaconda3\envs\anipose\lib\site-packages\click\core.py", line 1066, in invoke return ctx.invoke(self.callback, **ctx.params) File "c:\users\jjw\anaconda3\envs\anipose\lib\site-packages\click\core.py", line 610, in invoke return callback(*args, **kwargs) File "c:\users\jjw\anaconda3\envs\anipose\lib\site-packages\click\decorators.py", line 73, in new_func return ctx.invoke(f, obj, *args, **kwargs) File "c:\users\jjw\anaconda3\envs\anipose\lib\site-packages\click\core.py", line 610, in invoke return callback(*args, **kwargs) File "c:\users\jjw\anaconda3\envs\anipose\lib\site-packages\anipose\anipose.py", line 116, in calibrate calibrate_all(config) File "c:\users\jjw\anaconda3\envs\anipose\lib\site-packages\anipose\common.py", line 168, in fun return process_all(config, process_session, **args) File "c:\users\jjw\anaconda3\envs\anipose\lib\site-packages\anipose\common.py", line 153, in process_all output[past_folders] = process_session(config, path, **args) File "c:\users\jjw\anaconda3\envs\anipose\lib\site-packages\anipose\calibrate.py", line 203, in process_session verbose=True) File "c:\users\jjw\anaconda3\envs\anipose\lib\site-packages\aniposelib\cameras.py", line 1563, in calibrate_rows rvecs, tvecs = get_initial_extrinsics(rtvecs) File "c:\users\jjw\anaconda3\envs\anipose\lib\site-packages\aniposelib\utils.py", line 173, in get_initial_extrinsics pairs = find_calibration_pairs(graph, source=0) File "c:\users\jjw\anaconda3\envs\anipose\lib\site-packages\aniposelib\utils.py", line 156, in find_calibration_pairs for new in graph[item]: TypeError: 'NoneType' object is not subscriptable

yuancye avatar Dec 05 '20 05:12 yuancye

I've been having the same problem (see Issue #49). In the other issue we noted that we are all using Windows 10/Anaconda setups.

omeleavitt avatar Jan 11 '21 19:01 omeleavitt

@omeleavitt Guessing you meant to link to issue #48 ? I will investigate the problem on that issue for now and see if there are any clues

lambdaloop avatar Jan 20 '21 07:01 lambdaloop

Hello, I think I am having the same problem. Is there any update?

(Anipose-GPU) G:\Group2>anipose calibrate Calibrating... G:\Group2\week10 G:\Group2\week10\calibration\calibration.toml G:\Group2\week10\calibration\cal2_20210208001_cam2.avi 100%|███████████████████████████████| 434/434 [00:21<00:00, 19.76it/s] 3 boards detected G:\Group2\week10\calibration\cal2_20210208001_cam3.avi 100%|███████████████████████████████| 434/434 [00:26<00:00, 16.14it/s] 37 boards detected defaultdict(<class 'int'>, {}) Traceback (most recent call last): File "f:\programdata\anaconda\envs\anipose-gpu\lib\runpy.py", line 193, in _run_module_as_main "main", mod_spec) File "f:\programdata\anaconda\envs\anipose-gpu\lib\runpy.py", line 85, in run_code exec(code, run_globals) File "F:\ProgramData\Anaconda\envs\Anipose-GPU_Sawako\Scripts\anipose.exe_main.py", line 7, in File "f:\programdata\anaconda\envs\anipose-gpu\lib\site-packages\click\core.py", line 829, in call return self.main(*args, **kwargs) File "f:\programdata\anaconda\envs\anipose-gpu\lib\site-packages\click\core.py", line 782, in main rv = self.invoke(ctx) File "f:\programdata\anaconda\envs\anipose-gpu\lib\site-packages\click\core.py", line 1259, in invoke return _process_result(sub_ctx.command.invoke(sub_ctx)) File "f:\programdata\anaconda\envs\anipose-gpu\lib\site-packages\click\core.py", line 1066, in invoke return ctx.invoke(self.callback, **ctx.params) File "f:\programdata\anaconda\envs\anipose-gpu\lib\site-packages\click\core.py", line 610, in invoke return callback(*args, **kwargs) File "f:\programdata\anaconda\envs\anipose-gpu\lib\site-packages\click\decorators.py", line 73, in new_func return ctx.invoke(f, obj, *args, **kwargs) File "f:\programdata\anaconda\envs\anipose-gpu\lib\site-packages\click\core.py", line 610, in invoke return callback(*args, **kwargs) File "f:\programdata\anaconda\envs\anipose-gpu\lib\site-packages\anipose\anipose.py", line 116, in calibrate calibrate_all(config) File "f:\programdata\anaconda\envs\anipose-gpu\lib\site-packages\anipose\common.py", line 168, in fun return process_all(config, process_session, **args) File "f:\programdata\anaconda\envs\anipose-gpu\lib\site-packages\anipose\common.py", line 153, in process_all output[past_folders] = process_session(config, path, **args) File "f:\programdata\anaconda\envs\anipose-gpu\lib\site-packages\anipose\calibrate.py", line 203, in process_session verbose=True) File "f:\programdata\anaconda\envs\anipose-gpu\lib\site-packages\aniposelib\cameras.py", line 1563, in calibrate_rows rvecs, tvecs = get_initial_extrinsics(rtvecs) File "f:\programdata\anaconda\envs\anipose-gpu\lib\site-packages\aniposelib\utils.py", line 173, in get_initial_extrinsics pairs = find_calibration_pairs(graph, source=0) File "f:\programdata\anaconda\envs\anipose-gpu\lib\site-packages\aniposelib\utils.py", line 156, in find_calibration_pairs for new in graph[item]: TypeError: 'NoneType' object is not subscriptable

SawakoT88 avatar Feb 23 '21 21:02 SawakoT88

What ended up working for me was making sure there were detections that overlapped between at least enough pairs of cameras such that each was included. To do this, I simply ran the code for calibration in the tutorial for aniposelib (copied into Spyder). Then I edited the list of videos such that it only did two at a time. The subsequent code is looking for a list of frames of the videos where the calibration board is shared between cameras.

omeleavitt avatar Feb 23 '21 21:02 omeleavitt