lambdaloop / anipose

🐜🐀🐒🚶 A toolkit for robust markerless 3D pose estimation
http://anipose.org
BSD 2-Clause "Simplified" License
347 stars 65 forks source link

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

Open KenR22 opened 3 years ago

KenR22 commented 3 years ago

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

yuancye commented 3 years ago

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

omeleavitt commented 3 years ago

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.

lambdaloop commented 3 years ago

@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

SawakoT88 commented 3 years ago

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

omeleavitt commented 3 years ago

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.