diff --git a/Training/Karusel_dataset-COCO/images/train/frame_00200_04.png b/Training/Karusel_dataset-COCO/images/train/frame_00200_04.png deleted file mode 100644 index d7c7a6c..0000000 Binary files a/Training/Karusel_dataset-COCO/images/train/frame_00200_04.png and /dev/null differ diff --git a/Training/Karusel_dataset-COCO/images/train/frame_00200_06.png b/Training/Karusel_dataset-COCO/images/train/frame_00200_06.png deleted file mode 100644 index d555ca6..0000000 Binary files a/Training/Karusel_dataset-COCO/images/train/frame_00200_06.png and /dev/null differ diff --git a/Training/Karusel_dataset-COCO/images/train/frame_00200_07.png b/Training/Karusel_dataset-COCO/images/train/frame_00200_07.png deleted file mode 100644 index 951d7bc..0000000 Binary files a/Training/Karusel_dataset-COCO/images/train/frame_00200_07.png and /dev/null differ diff --git a/Training/Karusel_dataset-COCO/images/train/frame_00200_09.png b/Training/Karusel_dataset-COCO/images/train/frame_00200_09.png deleted file mode 100644 index e9d96f8..0000000 Binary files a/Training/Karusel_dataset-COCO/images/train/frame_00200_09.png and /dev/null differ diff --git a/Training/Karusel_dataset-COCO/images/train/frame_00200_12.png b/Training/Karusel_dataset-COCO/images/train/frame_00200_12.png deleted file mode 100644 index acc15f4..0000000 Binary files a/Training/Karusel_dataset-COCO/images/train/frame_00200_12.png and /dev/null differ diff --git a/Training/Karusel_dataset-COCO/images/train/frame_00225.png b/Training/Karusel_dataset-COCO/images/train/frame_00225.png deleted file mode 100644 index 659628a..0000000 Binary files a/Training/Karusel_dataset-COCO/images/train/frame_00225.png and /dev/null differ diff --git a/Training/Karusel_dataset-COCO/images/train/frame_00225_03.png b/Training/Karusel_dataset-COCO/images/train/frame_00225_03.png deleted file mode 100644 index 0b43106..0000000 Binary files a/Training/Karusel_dataset-COCO/images/train/frame_00225_03.png and /dev/null differ diff --git a/Training/Karusel_dataset-COCO/images/train/frame_00225_05.png b/Training/Karusel_dataset-COCO/images/train/frame_00225_05.png deleted file mode 100644 index 8cec632..0000000 Binary files a/Training/Karusel_dataset-COCO/images/train/frame_00225_05.png and /dev/null differ diff --git a/Training/Karusel_dataset-COCO/images/train/frame_00250.png b/Training/Karusel_dataset-COCO/images/train/frame_00250.png deleted file mode 100644 index d8f39fd..0000000 Binary files a/Training/Karusel_dataset-COCO/images/train/frame_00250.png and /dev/null differ diff --git a/Training/Karusel_dataset-COCO/images/train/frame_00250_06.png b/Training/Karusel_dataset-COCO/images/train/frame_00250_06.png deleted file mode 100644 index d139b1a..0000000 Binary files a/Training/Karusel_dataset-COCO/images/train/frame_00250_06.png and /dev/null differ diff --git a/Training/Karusel_dataset-COCO/images/train/frame_00250_07.png b/Training/Karusel_dataset-COCO/images/train/frame_00250_07.png deleted file mode 100644 index a46a145..0000000 Binary files a/Training/Karusel_dataset-COCO/images/train/frame_00250_07.png and /dev/null differ diff --git a/Training/Karusel_dataset-COCO/images/train/frame_00275_06.png b/Training/Karusel_dataset-COCO/images/train/frame_00275_06.png deleted file mode 100644 index 038139d..0000000 Binary files a/Training/Karusel_dataset-COCO/images/train/frame_00275_06.png and /dev/null differ diff --git a/Training/Karusel_dataset-COCO/images/train/frame_00275_09.png b/Training/Karusel_dataset-COCO/images/train/frame_00275_09.png deleted file mode 100644 index 92aa0c5..0000000 Binary files a/Training/Karusel_dataset-COCO/images/train/frame_00275_09.png and /dev/null differ diff --git a/Training/Karusel_dataset-COCO/images/train/frame_00300_02.png b/Training/Karusel_dataset-COCO/images/train/frame_00300_02.png deleted file mode 100644 index 7ce5cd4..0000000 Binary files a/Training/Karusel_dataset-COCO/images/train/frame_00300_02.png and /dev/null differ diff --git a/Training/Karusel_dataset-COCO/images/train/frame_00300_05.png b/Training/Karusel_dataset-COCO/images/train/frame_00300_05.png deleted file mode 100644 index 8681df7..0000000 Binary files a/Training/Karusel_dataset-COCO/images/train/frame_00300_05.png and /dev/null differ diff --git a/Training/Karusel_dataset-COCO/images/train/frame_00325_01.png b/Training/Karusel_dataset-COCO/images/train/frame_00325_01.png deleted file mode 100644 index dc877fb..0000000 Binary files a/Training/Karusel_dataset-COCO/images/train/frame_00325_01.png and /dev/null differ diff --git a/Training/Karusel_dataset-COCO/images/train/frame_00325_07.png b/Training/Karusel_dataset-COCO/images/train/frame_00325_07.png deleted file mode 100644 index a37191a..0000000 Binary files a/Training/Karusel_dataset-COCO/images/train/frame_00325_07.png and /dev/null differ diff --git a/Training/Karusel_dataset-COCO/images/train/frame_00350_05.png b/Training/Karusel_dataset-COCO/images/train/frame_00350_05.png deleted file mode 100644 index c63ff63..0000000 Binary files a/Training/Karusel_dataset-COCO/images/train/frame_00350_05.png and /dev/null differ diff --git a/Training/Karusel_dataset-COCO/images/train/frame_00350_07.png b/Training/Karusel_dataset-COCO/images/train/frame_00350_07.png deleted file mode 100644 index 7238ac6..0000000 Binary files a/Training/Karusel_dataset-COCO/images/train/frame_00350_07.png and /dev/null differ diff --git a/Training/Karusel_dataset-COCO/images/train/frame_00375_01.png b/Training/Karusel_dataset-COCO/images/train/frame_00375_01.png deleted file mode 100644 index 6583cc8..0000000 Binary files a/Training/Karusel_dataset-COCO/images/train/frame_00375_01.png and /dev/null differ diff --git a/Training/Karusel_dataset-COCO/images/train/frame_00375_03.png b/Training/Karusel_dataset-COCO/images/train/frame_00375_03.png deleted file mode 100644 index a0d94f4..0000000 Binary files a/Training/Karusel_dataset-COCO/images/train/frame_00375_03.png and /dev/null differ diff --git a/Training/Karusel_dataset-COCO/images/train/frame_00400_02.png b/Training/Karusel_dataset-COCO/images/train/frame_00400_02.png deleted file mode 100644 index 1d650f9..0000000 Binary files a/Training/Karusel_dataset-COCO/images/train/frame_00400_02.png and /dev/null differ diff --git a/Training/Karusel_dataset-COCO/images/train/frame_00400_06.png b/Training/Karusel_dataset-COCO/images/train/frame_00400_06.png deleted file mode 100644 index 6c9b5a1..0000000 Binary files a/Training/Karusel_dataset-COCO/images/train/frame_00400_06.png and /dev/null differ diff --git a/Training/Karusel_dataset-COCO/images/train/frame_00425_05.png b/Training/Karusel_dataset-COCO/images/train/frame_00425_05.png deleted file mode 100644 index e7cb75e..0000000 Binary files a/Training/Karusel_dataset-COCO/images/train/frame_00425_05.png and /dev/null differ diff --git a/Training/Karusel_dataset-COCO/images/train/frame_00425_06.png b/Training/Karusel_dataset-COCO/images/train/frame_00425_06.png deleted file mode 100644 index 03ec9d9..0000000 Binary files a/Training/Karusel_dataset-COCO/images/train/frame_00425_06.png and /dev/null differ diff --git a/Training/Karusel_dataset-COCO/images/train/frame_00450_05.png b/Training/Karusel_dataset-COCO/images/train/frame_00450_05.png deleted file mode 100644 index a852ae1..0000000 Binary files a/Training/Karusel_dataset-COCO/images/train/frame_00450_05.png and /dev/null differ diff --git a/Training/Karusel_dataset-COCO/images/train/frame_00450_06.png b/Training/Karusel_dataset-COCO/images/train/frame_00450_06.png deleted file mode 100644 index 50ce817..0000000 Binary files a/Training/Karusel_dataset-COCO/images/train/frame_00450_06.png and /dev/null differ diff --git a/Training/Karusel_dataset-COCO/images/train/frame_00475_05.png b/Training/Karusel_dataset-COCO/images/train/frame_00475_05.png deleted file mode 100644 index 20f644f..0000000 Binary files a/Training/Karusel_dataset-COCO/images/train/frame_00475_05.png and /dev/null differ diff --git a/Training/Karusel_dataset-COCO/images/train/frame_00500_03.png b/Training/Karusel_dataset-COCO/images/train/frame_00500_03.png deleted file mode 100644 index 3a12f3e..0000000 Binary files a/Training/Karusel_dataset-COCO/images/train/frame_00500_03.png and /dev/null differ diff --git a/Training/Karusel_dataset-COCO/images/train/frame_00525_02.png b/Training/Karusel_dataset-COCO/images/train/frame_00525_02.png deleted file mode 100644 index 1e8a68c..0000000 Binary files a/Training/Karusel_dataset-COCO/images/train/frame_00525_02.png and /dev/null differ diff --git a/Training/Karusel_dataset-COCO/images/train/frame_00525_03.png b/Training/Karusel_dataset-COCO/images/train/frame_00525_03.png deleted file mode 100644 index cfeaed0..0000000 Binary files a/Training/Karusel_dataset-COCO/images/train/frame_00525_03.png and /dev/null differ diff --git a/Training/Karusel_dataset-COCO/images/train/frame_00525_04.png b/Training/Karusel_dataset-COCO/images/train/frame_00525_04.png deleted file mode 100644 index 93980b3..0000000 Binary files a/Training/Karusel_dataset-COCO/images/train/frame_00525_04.png and /dev/null differ diff --git a/Training/Karusel_dataset-COCO/images/train/frame_00550_02.png b/Training/Karusel_dataset-COCO/images/train/frame_00550_02.png deleted file mode 100644 index 0398040..0000000 Binary files a/Training/Karusel_dataset-COCO/images/train/frame_00550_02.png and /dev/null differ diff --git a/Training/Karusel_dataset-COCO/images/train/frame_00550_03.png b/Training/Karusel_dataset-COCO/images/train/frame_00550_03.png deleted file mode 100644 index 1166efb..0000000 Binary files a/Training/Karusel_dataset-COCO/images/train/frame_00550_03.png and /dev/null differ diff --git a/Training/Karusel_dataset-COCO/images/train/frame_00575.png b/Training/Karusel_dataset-COCO/images/train/frame_00575.png deleted file mode 100644 index 9e74f8f..0000000 Binary files a/Training/Karusel_dataset-COCO/images/train/frame_00575.png and /dev/null differ diff --git a/Training/Karusel_dataset-COCO/images/train/frame_00575_02.png b/Training/Karusel_dataset-COCO/images/train/frame_00575_02.png deleted file mode 100644 index f3df126..0000000 Binary files a/Training/Karusel_dataset-COCO/images/train/frame_00575_02.png and /dev/null differ diff --git a/Training/Karusel_dataset-COCO/images/train/frame_00575_03.png b/Training/Karusel_dataset-COCO/images/train/frame_00575_03.png deleted file mode 100644 index c99a0a3..0000000 Binary files a/Training/Karusel_dataset-COCO/images/train/frame_00575_03.png and /dev/null differ diff --git a/Training/Karusel_dataset-COCO/images/train/frame_00575_04.png b/Training/Karusel_dataset-COCO/images/train/frame_00575_04.png deleted file mode 100644 index c379363..0000000 Binary files a/Training/Karusel_dataset-COCO/images/train/frame_00575_04.png and /dev/null differ diff --git a/Training/Karusel_dataset-COCO/images/train/frame_00600_02.png b/Training/Karusel_dataset-COCO/images/train/frame_00600_02.png deleted file mode 100644 index 258848d..0000000 Binary files a/Training/Karusel_dataset-COCO/images/train/frame_00600_02.png and /dev/null differ diff --git a/Training/Karusel_dataset-COCO/images/train/frame_00600_03.png b/Training/Karusel_dataset-COCO/images/train/frame_00600_03.png deleted file mode 100644 index 2cc569f..0000000 Binary files a/Training/Karusel_dataset-COCO/images/train/frame_00600_03.png and /dev/null differ diff --git a/Training/Karusel_dataset-COCO/images/train/frame_00625_01.png b/Training/Karusel_dataset-COCO/images/train/frame_00625_01.png deleted file mode 100644 index a70c2cc..0000000 Binary files a/Training/Karusel_dataset-COCO/images/train/frame_00625_01.png and /dev/null differ diff --git a/Training/Karusel_dataset-COCO/images/train/frame_00625_02.png b/Training/Karusel_dataset-COCO/images/train/frame_00625_02.png deleted file mode 100644 index b478620..0000000 Binary files a/Training/Karusel_dataset-COCO/images/train/frame_00625_02.png and /dev/null differ diff --git a/Training/Karusel_dataset-COCO/images/train/frame_00875_01.png b/Training/Karusel_dataset-COCO/images/train/frame_00875_01.png deleted file mode 100644 index e8c794b..0000000 Binary files a/Training/Karusel_dataset-COCO/images/train/frame_00875_01.png and /dev/null differ diff --git a/Training/Karusel_dataset-COCO/images/train/frame_00900_01.png b/Training/Karusel_dataset-COCO/images/train/frame_00900_01.png deleted file mode 100644 index 0f349ea..0000000 Binary files a/Training/Karusel_dataset-COCO/images/train/frame_00900_01.png and /dev/null differ diff --git a/Training/Karusel_dataset-COCO/images/train/frame_00925.png b/Training/Karusel_dataset-COCO/images/train/frame_00925.png deleted file mode 100644 index f96538c..0000000 Binary files a/Training/Karusel_dataset-COCO/images/train/frame_00925.png and /dev/null differ diff --git a/Training/Karusel_dataset-COCO/images/train/frame_00925_01.png b/Training/Karusel_dataset-COCO/images/train/frame_00925_01.png deleted file mode 100644 index 3ef457b..0000000 Binary files a/Training/Karusel_dataset-COCO/images/train/frame_00925_01.png and /dev/null differ diff --git a/Training/Karusel_dataset-COCO/images/train/frame_00975.png b/Training/Karusel_dataset-COCO/images/train/frame_00975.png deleted file mode 100644 index 64ba6ac..0000000 Binary files a/Training/Karusel_dataset-COCO/images/train/frame_00975.png and /dev/null differ diff --git a/Training/Karusel_dataset-COCO/images/train/frame_01000.png b/Training/Karusel_dataset-COCO/images/train/frame_01000.png deleted file mode 100644 index 916f39d..0000000 Binary files a/Training/Karusel_dataset-COCO/images/train/frame_01000.png and /dev/null differ diff --git a/Training/Karusel_dataset-COCO/images/train/frame_01025.png b/Training/Karusel_dataset-COCO/images/train/frame_01025.png deleted file mode 100644 index 2836f46..0000000 Binary files a/Training/Karusel_dataset-COCO/images/train/frame_01025.png and /dev/null differ diff --git a/Training/Karusel_dataset-COCO/images/train/frame_01050.png b/Training/Karusel_dataset-COCO/images/train/frame_01050.png deleted file mode 100644 index dc3b044..0000000 Binary files a/Training/Karusel_dataset-COCO/images/train/frame_01050.png and /dev/null differ diff --git a/Training/Karusel_dataset-COCO/images/train/frame_01100.png b/Training/Karusel_dataset-COCO/images/train/frame_01100.png deleted file mode 100644 index 0530835..0000000 Binary files a/Training/Karusel_dataset-COCO/images/train/frame_01100.png and /dev/null differ diff --git a/Training/Karusel_dataset-COCO/images/train/frame_01150.png b/Training/Karusel_dataset-COCO/images/train/frame_01150.png deleted file mode 100644 index 2b10822..0000000 Binary files a/Training/Karusel_dataset-COCO/images/train/frame_01150.png and /dev/null differ diff --git a/Training/Karusel_dataset-COCO/images/train/frame_01175.png b/Training/Karusel_dataset-COCO/images/train/frame_01175.png deleted file mode 100644 index 546d0c9..0000000 Binary files a/Training/Karusel_dataset-COCO/images/train/frame_01175.png and /dev/null differ diff --git a/Training/Karusel_dataset-COCO/images/train/frame_01200.png b/Training/Karusel_dataset-COCO/images/train/frame_01200.png deleted file mode 100644 index 545af15..0000000 Binary files a/Training/Karusel_dataset-COCO/images/train/frame_01200.png and /dev/null differ diff --git a/Training/Karusel_dataset-COCO/images/train/frame_01225.png b/Training/Karusel_dataset-COCO/images/train/frame_01225.png deleted file mode 100644 index 557c4eb..0000000 Binary files a/Training/Karusel_dataset-COCO/images/train/frame_01225.png and /dev/null differ diff --git a/Training/Karusel_dataset-COCO/images/train/frame_01250.png b/Training/Karusel_dataset-COCO/images/train/frame_01250.png deleted file mode 100644 index ce8a927..0000000 Binary files a/Training/Karusel_dataset-COCO/images/train/frame_01250.png and /dev/null differ diff --git a/Training/Karusel_dataset-COCO/images/train/frame_01275.png b/Training/Karusel_dataset-COCO/images/train/frame_01275.png deleted file mode 100644 index 1b7713f..0000000 Binary files a/Training/Karusel_dataset-COCO/images/train/frame_01275.png and /dev/null differ diff --git a/Training/Karusel_dataset-COCO/images/train/frame_01300.png b/Training/Karusel_dataset-COCO/images/train/frame_01300.png deleted file mode 100644 index 8018d23..0000000 Binary files a/Training/Karusel_dataset-COCO/images/train/frame_01300.png and /dev/null differ diff --git a/Training/Karusel_dataset-COCO/images/train/frame_01325.png b/Training/Karusel_dataset-COCO/images/train/frame_01325.png deleted file mode 100644 index 7f24178..0000000 Binary files a/Training/Karusel_dataset-COCO/images/train/frame_01325.png and /dev/null differ diff --git a/Training/Karusel_dataset-COCO/images/train/frame_01350.png b/Training/Karusel_dataset-COCO/images/train/frame_01350.png deleted file mode 100644 index c670f0b..0000000 Binary files a/Training/Karusel_dataset-COCO/images/train/frame_01350.png and /dev/null differ diff --git a/Training/Karusel_dataset-COCO/images/train/frame_01400.png b/Training/Karusel_dataset-COCO/images/train/frame_01400.png deleted file mode 100644 index bc5fced..0000000 Binary files a/Training/Karusel_dataset-COCO/images/train/frame_01400.png and /dev/null differ diff --git a/Training/Karusel_dataset-COCO/images/train/frame_01425.png b/Training/Karusel_dataset-COCO/images/train/frame_01425.png deleted file mode 100644 index eb8b892..0000000 Binary files a/Training/Karusel_dataset-COCO/images/train/frame_01425.png and /dev/null differ diff --git a/Training/Karusel_dataset-COCO/images/train/frame_01450.png b/Training/Karusel_dataset-COCO/images/train/frame_01450.png deleted file mode 100644 index aa1eab2..0000000 Binary files a/Training/Karusel_dataset-COCO/images/train/frame_01450.png and /dev/null differ diff --git a/Training/Karusel_dataset-COCO/images/train/frame_01475.png b/Training/Karusel_dataset-COCO/images/train/frame_01475.png deleted file mode 100644 index c18b0b2..0000000 Binary files a/Training/Karusel_dataset-COCO/images/train/frame_01475.png and /dev/null differ diff --git a/Training/Karusel_dataset-COCO/images/train/frame_01500.png b/Training/Karusel_dataset-COCO/images/train/frame_01500.png deleted file mode 100644 index 0593edd..0000000 Binary files a/Training/Karusel_dataset-COCO/images/train/frame_01500.png and /dev/null differ diff --git a/Training/Karusel_dataset-COCO/images/train/frame_01525.png b/Training/Karusel_dataset-COCO/images/train/frame_01525.png deleted file mode 100644 index 23e469c..0000000 Binary files a/Training/Karusel_dataset-COCO/images/train/frame_01525.png and /dev/null differ diff --git a/Training/Karusel_dataset-COCO/images/train/frame_01550.png b/Training/Karusel_dataset-COCO/images/train/frame_01550.png deleted file mode 100644 index 0c5a3d3..0000000 Binary files a/Training/Karusel_dataset-COCO/images/train/frame_01550.png and /dev/null differ diff --git a/Training/Karusel_dataset-COCO/images/train/frame_01575.png b/Training/Karusel_dataset-COCO/images/train/frame_01575.png deleted file mode 100644 index 73f72ed..0000000 Binary files a/Training/Karusel_dataset-COCO/images/train/frame_01575.png and /dev/null differ diff --git a/Training/Karusel_dataset-COCO/images/train/frame_01625.png b/Training/Karusel_dataset-COCO/images/train/frame_01625.png deleted file mode 100644 index 5779049..0000000 Binary files a/Training/Karusel_dataset-COCO/images/train/frame_01625.png and /dev/null differ diff --git a/Training/Karusel_dataset-COCO/images/train/frame_01650.png b/Training/Karusel_dataset-COCO/images/train/frame_01650.png deleted file mode 100644 index 3dd3a01..0000000 Binary files a/Training/Karusel_dataset-COCO/images/train/frame_01650.png and /dev/null differ diff --git a/Training/Karusel_dataset-COCO/images/train/frame_01700.png b/Training/Karusel_dataset-COCO/images/train/frame_01700.png deleted file mode 100644 index dbe59c3..0000000 Binary files a/Training/Karusel_dataset-COCO/images/train/frame_01700.png and /dev/null differ diff --git a/Training/Karusel_dataset-COCO/images/val/frame_00025_05.png b/Training/Karusel_dataset-COCO/images/val/frame_00025_05.png deleted file mode 100644 index e7bc58a..0000000 Binary files a/Training/Karusel_dataset-COCO/images/val/frame_00025_05.png and /dev/null differ diff --git a/Training/Karusel_dataset-COCO/images/val/frame_00025_12.png b/Training/Karusel_dataset-COCO/images/val/frame_00025_12.png deleted file mode 100644 index 77eb0a0..0000000 Binary files a/Training/Karusel_dataset-COCO/images/val/frame_00025_12.png and /dev/null differ diff --git a/Training/Karusel_dataset-COCO/images/val/frame_00075_07.png b/Training/Karusel_dataset-COCO/images/val/frame_00075_07.png deleted file mode 100644 index c67c928..0000000 Binary files a/Training/Karusel_dataset-COCO/images/val/frame_00075_07.png and /dev/null differ diff --git a/Training/Karusel_dataset-COCO/images/val/frame_00075_11.png b/Training/Karusel_dataset-COCO/images/val/frame_00075_11.png deleted file mode 100644 index ee572b0..0000000 Binary files a/Training/Karusel_dataset-COCO/images/val/frame_00075_11.png and /dev/null differ diff --git a/Training/Karusel_dataset-COCO/images/val/frame_00175_12.png b/Training/Karusel_dataset-COCO/images/val/frame_00175_12.png deleted file mode 100644 index 36865a7..0000000 Binary files a/Training/Karusel_dataset-COCO/images/val/frame_00175_12.png and /dev/null differ diff --git a/Training/Karusel_dataset-COCO/images/val/frame_00200_11.png b/Training/Karusel_dataset-COCO/images/val/frame_00200_11.png deleted file mode 100644 index d503e50..0000000 Binary files a/Training/Karusel_dataset-COCO/images/val/frame_00200_11.png and /dev/null differ diff --git a/Training/Karusel_dataset-COCO/images/val/frame_00550_04.png b/Training/Karusel_dataset-COCO/images/val/frame_00550_04.png deleted file mode 100644 index 92011a8..0000000 Binary files a/Training/Karusel_dataset-COCO/images/val/frame_00550_04.png and /dev/null differ diff --git a/Training/Karusel_dataset-COCO/images/val/frame_01075.png b/Training/Karusel_dataset-COCO/images/val/frame_01075.png deleted file mode 100644 index 19485b8..0000000 Binary files a/Training/Karusel_dataset-COCO/images/val/frame_01075.png and /dev/null differ diff --git a/Training/Karusel_dataset-COCO/images/val/frame_01125.png b/Training/Karusel_dataset-COCO/images/val/frame_01125.png deleted file mode 100644 index 4d15411..0000000 Binary files a/Training/Karusel_dataset-COCO/images/val/frame_01125.png and /dev/null differ diff --git a/Training/Karusel_dataset-COCO/images/val/frame_01375.png b/Training/Karusel_dataset-COCO/images/val/frame_01375.png deleted file mode 100644 index 17d8377..0000000 Binary files a/Training/Karusel_dataset-COCO/images/val/frame_01375.png and /dev/null differ diff --git a/Training/Karusel_dataset-COCO/images/val/frame_01600.png b/Training/Karusel_dataset-COCO/images/val/frame_01600.png deleted file mode 100644 index ac516ac..0000000 Binary files a/Training/Karusel_dataset-COCO/images/val/frame_01600.png and /dev/null differ diff --git a/Training/Karusel_dataset-COCO/images/val/frame_01675.png b/Training/Karusel_dataset-COCO/images/val/frame_01675.png deleted file mode 100644 index 51d897f..0000000 Binary files a/Training/Karusel_dataset-COCO/images/val/frame_01675.png and /dev/null differ diff --git a/Training/openpifpaf_karussel/__init__.py b/Training/openpifpaf_karussel/__init__.py deleted file mode 100644 index 386796c..0000000 --- a/Training/openpifpaf_karussel/__init__.py +++ /dev/null @@ -1,16 +0,0 @@ -import openpifpaf - -from . import karusel_kp - - -def register(): - openpifpaf.DATAMODULES['karusel'] = karusel_kp.karusel_Kp - openpifpaf.CHECKPOINT_URLS['shufflenetv2k16-apollo-24'] = \ - "http://github.com/DuncanZauss/openpifpaf_assets/releases/" \ - "download/v0.1.0/shufflenetv2k16-201113-135121-apollo.pkl.epoch290" - openpifpaf.CHECKPOINT_URLS['shufflenetv2k16-apollo-66'] = \ - "http://github.com/DuncanZauss/openpifpaf_assets/releases/" \ - "download/v0.1.0/sk16_apollo_66kp.pkl" - openpifpaf.CHECKPOINT_URLS['shufflenetv2k30-apollo-66'] = \ - "http://github.com/DuncanZauss/openpifpaf_assets/releases/" \ - "download/v0.1.0/sk30_apollo_66kp.pkl" diff --git a/Training/openpifpaf_karussel/__pycache__/__init__.cpython-38.pyc b/Training/openpifpaf_karussel/__pycache__/__init__.cpython-38.pyc deleted file mode 100644 index 2096b53..0000000 Binary files a/Training/openpifpaf_karussel/__pycache__/__init__.cpython-38.pyc and /dev/null differ diff --git a/Training/openpifpaf_karussel/__pycache__/__init__.cpython-39.pyc b/Training/openpifpaf_karussel/__pycache__/__init__.cpython-39.pyc deleted file mode 100644 index 62c62f1..0000000 Binary files a/Training/openpifpaf_karussel/__pycache__/__init__.cpython-39.pyc and /dev/null differ diff --git a/Training/openpifpaf_karussel/__pycache__/constants.cpython-38.pyc b/Training/openpifpaf_karussel/__pycache__/constants.cpython-38.pyc deleted file mode 100644 index 64ea8b3..0000000 Binary files a/Training/openpifpaf_karussel/__pycache__/constants.cpython-38.pyc and /dev/null differ diff --git a/Training/openpifpaf_karussel/__pycache__/constants.cpython-39.pyc b/Training/openpifpaf_karussel/__pycache__/constants.cpython-39.pyc deleted file mode 100644 index 8771417..0000000 Binary files a/Training/openpifpaf_karussel/__pycache__/constants.cpython-39.pyc and /dev/null differ diff --git a/Training/openpifpaf_karussel/__pycache__/formulaE_kp.cpython-39.pyc b/Training/openpifpaf_karussel/__pycache__/formulaE_kp.cpython-39.pyc deleted file mode 100644 index f7089fc..0000000 Binary files a/Training/openpifpaf_karussel/__pycache__/formulaE_kp.cpython-39.pyc and /dev/null differ diff --git a/Training/openpifpaf_karussel/__pycache__/karusel_kp.cpython-38.pyc b/Training/openpifpaf_karussel/__pycache__/karusel_kp.cpython-38.pyc deleted file mode 100644 index 8267b65..0000000 Binary files a/Training/openpifpaf_karussel/__pycache__/karusel_kp.cpython-38.pyc and /dev/null differ diff --git a/Training/openpifpaf_karussel/__pycache__/karusel_kp.cpython-39.pyc b/Training/openpifpaf_karussel/__pycache__/karusel_kp.cpython-39.pyc deleted file mode 100644 index 023e38d..0000000 Binary files a/Training/openpifpaf_karussel/__pycache__/karusel_kp.cpython-39.pyc and /dev/null differ diff --git a/Training/openpifpaf_karussel/__pycache__/metrics.cpython-38.pyc b/Training/openpifpaf_karussel/__pycache__/metrics.cpython-38.pyc deleted file mode 100644 index 265d110..0000000 Binary files a/Training/openpifpaf_karussel/__pycache__/metrics.cpython-38.pyc and /dev/null differ diff --git a/Training/openpifpaf_karussel/__pycache__/metrics.cpython-39.pyc b/Training/openpifpaf_karussel/__pycache__/metrics.cpython-39.pyc deleted file mode 100644 index 3d77347..0000000 Binary files a/Training/openpifpaf_karussel/__pycache__/metrics.cpython-39.pyc and /dev/null differ diff --git a/Training/openpifpaf_karussel/constants.py b/Training/openpifpaf_karussel/constants.py deleted file mode 100644 index 1fc48b6..0000000 --- a/Training/openpifpaf_karussel/constants.py +++ /dev/null @@ -1,267 +0,0 @@ -import os - -import numpy as np -try: - import matplotlib.cm as mplcm - from matplotlib.animation import FuncAnimation - from mpl_toolkits.mplot3d import Axes3D -except ImportError: - pass - -import openpifpaf - -CAR_KEYPOINTS_24 = ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12', - '13', '14', '15', '16', '17', '18', '19', '20', '21', '22', '23', '24'] - -CAR_SKELETON_24 = [ - [1, 2],[2, 3],[3, 4],[4, 5],[5, 6],[6, 7],[7, 8],[8, 9],[9, 10],[10, 11], - [11, 12],[12, 13],[13, 14],[14, 15],[15, 16],[16, 17],[17, 18],[18, 19],[19, 20], - [20, 21],[21, 22],[22, 23],[23, 24],[24, 1],[24, 3],[1, 5] - ] - -CAR_CATEGORIES_24 = ['karusel'] - - -CAR_SCORE_WEIGHTS_24 = [5,5,5,0.5,2,2,5,1,1,1,1,4,3,2,3,3,3,1,5,5,2,4,0.5,2] - -CAR_SIGMAS_24 = [0.05] * len(CAR_KEYPOINTS_24) - -CAR_POSE_24 = np.array([[ 129., -137., 0.], - [ -41., 33., 0.], - [ -65., 46., 0.], - [ 22., -134., 0.], - [ 70., -253., 0.], - [ 69., -329., 0.], - [ -37., -224., 0.], - [ -88., -199., 0.], - [-143., -171., 0.], - [-173., -119., 0.], - [-219., -30., 0.], - [-307., -26., 0.], - [-207., 123., 0.], - [-138., 258., 0.], - [ -43., 240., 0.], - [ 10., 242., 0.], - [ 62., 229., 0.], - [ 146., 174., 0.], - [ 213., 138., 0.], - [ 230., 59., 0.], - [ 302., -11., 0.], - [ 288., -93., 0.], - [ 172., -65., 0.], - [ 103., -14., 0.]]) - -HFLIP_24 = { - '1': '1', - '2': '2', - '3': '3', - '4': '4', - '5': '5', - '6': '6', - '7': '7', - '8': '8', - '9': '9', - '10': '10', - '11': '11', - '12': '12', - '13': '13', - '14': '14', - '15': '15', - '16': '16', - '17': '17', - '18': '18', - '19': '19', - '20': '20', - '21': '21', - '22': '22', - '23': '23', - '24': '24' -} - -training_weights_local_centrality = [ - 0.890968488270775, - 0.716506138617812, - 1.05674590410869, - 0.764774195768455, - 0.637682585483328, - 0.686680807728366, - 0.955422595797394, - 0.936714585642375, - 1.34823795445326, - 1.38308992581967, - 1.32689945125819, - 1.38838655605483, - 1.18980184904613, - 1.02584355494795, - 0.90969156732068, - 1.24732068576104, - 1.11338768064342, - 0.933815217550391, - 0.852297518872114, - 1.04167641424727, - 1.01668968075247, - 1.34625964088011, - 0.911796331039028, - 0.866206536337413, - 1.55957820407853, - 0.730844382675724, - 0.651138644197359, - 0.758018559633786, - 1.31842501396691, - 1.32186116654782, - 0.744347016851606, - 0.636390683664723, - 0.715244950821949, - 1.63122349407032, - 0.849835699185461, - 0.910488007220499, - 1.44244151650561, - 1.14150437331681, - 1.19808610191343, - 0.960186788642886, - 1.05023623286937, - 1.19761709710598, - 1.3872216313401, - 1.01256700741214, - 1.1167909667759, - 1.27893496336199, - 1.54475684725655, - 1.40343733870633, - 1.45552060866114, - 1.47264222155031, - 0.970060423999993, - 0.944450314768933, - 0.623987071240172, - 0.5745237907704, - 0.66890646050993, - 0.978411632994504, - 0.587396395188292, - 0.76307999741129, - 0.609793563449648, - 0.67983566494545, - 0.685883538168462, - 0.753587600664775, - 0.770335133588157, - 0.764713638033368, - 0.792364155965385, - 0.796435233566833 -] - - -def get_constants(num_kps): - if num_kps == 24: - CAR_POSE_24[:, 2] = 2.0 - return [CAR_KEYPOINTS_24, CAR_SKELETON_24, HFLIP_24, CAR_SIGMAS_24, - CAR_POSE_24, CAR_CATEGORIES_24, CAR_SCORE_WEIGHTS_24] - if num_kps == 66: - CAR_POSE_66[:, 2] = 2.0 - return [CAR_KEYPOINTS_66, CAR_SKELETON_66, HFLIP_66, CAR_SIGMAS_66, - CAR_POSE_66, CAR_CATEGORIES_66, CAR_SCORE_WEIGHTS_66] - # using no if-elif-else construction due to pylint no-else-return error - raise Exception("Only poses with 24 or 66 keypoints are available.") - - -def draw_ann(ann, *, keypoint_painter, filename=None, margin=0.5, aspect=None, **kwargs): - from openpifpaf import show # pylint: disable=import-outside-toplevel - - bbox = ann.bbox() - xlim = bbox[0] - margin, bbox[0] + bbox[2] + margin - ylim = bbox[1] - margin, bbox[1] + bbox[3] + margin - if aspect == 'equal': - fig_w = 5.0 - else: - fig_w = 5.0 / (ylim[1] - ylim[0]) * (xlim[1] - xlim[0]) - - with show.canvas(filename, figsize=(fig_w, 5), nomargin=True, **kwargs) as ax: - ax.set_axis_off() - ax.set_xlim(*xlim) - ax.set_ylim(*ylim) - - if aspect is not None: - ax.set_aspect(aspect) - - keypoint_painter.annotation(ax, ann) - - -def draw_skeletons(pose, sigmas, skel, kps, scr_weights): - from openpifpaf.annotation import Annotation # pylint: disable=import-outside-toplevel - from openpifpaf import show # pylint: disable=import-outside-toplevel - - scale = np.sqrt( - (np.max(pose[:, 0]) - np.min(pose[:, 0])) - * (np.max(pose[:, 1]) - np.min(pose[:, 1])) - ) - - show.KeypointPainter.show_joint_scales = True - keypoint_painter = show.KeypointPainter() - ann = Annotation(keypoints=kps, skeleton=skel, score_weights=scr_weights) - ann.set(pose, np.array(sigmas) * scale) - os.makedirs('docs', exist_ok=True) - draw_ann(ann, filename='docs/skeleton_car.png', keypoint_painter=keypoint_painter) - - -def plot3d_red(ax_2D, p3d, skeleton): - skeleton = [(bone[0] - 1, bone[1] - 1) for bone in skeleton] - - rot_p90_x = np.array([[1, 0, 0], [0, 0, 1], [0, 1, 0]]) - p3d = p3d @ rot_p90_x - - fig = ax_2D.get_figure() - ax = Axes3D(fig, auto_add_to_figure=False) - fig.add_axes(ax) - ax.set_axis_off() - ax_2D.set_axis_off() - - ax.view_init(azim=-90, elev=20) - ax.set_xlabel('X') - ax.set_ylabel('Y') - ax.set_zlabel('Z') - max_range = np.array([p3d[:, 0].max() - p3d[:, 0].min(), - p3d[:, 1].max() - p3d[:, 1].min(), - p3d[:, 2].max() - p3d[:, 2].min()]).max() / 2.0 - mid_x = (p3d[:, 0].max() + p3d[:, 0].min()) * 0.5 - mid_y = (p3d[:, 1].max() + p3d[:, 1].min()) * 0.5 - mid_z = (p3d[:, 2].max() + p3d[:, 2].min()) * 0.5 - - ax.set_xlim(mid_x - max_range, mid_x + max_range) - ax.set_ylim(mid_y - max_range, mid_y + max_range) - ax.set_zlim(mid_z - max_range, mid_z + max_range) # pylint: disable=no-member - - for ci, bone in enumerate(skeleton): - c = mplcm.get_cmap('tab20')((ci % 20 + 0.05) / 20) # Same coloring as Pifpaf preds - ax.plot(p3d[bone, 0], p3d[bone, 1], p3d[bone, 2], color=c) - - def animate(i): - ax.view_init(elev=10., azim=i) - return fig - - return FuncAnimation(fig, animate, frames=360, interval=100) - - -def print_associations(): - print("\nAssociations of the car skeleton with 24 keypoints") - for j1, j2 in CAR_SKELETON_24: - print(CAR_KEYPOINTS_24[j1 - 1], '-', CAR_KEYPOINTS_24[j2 - 1]) - print("\nAssociations of the car skeleton with 66 keypoints") - for j1, j2 in CAR_SKELETON_66: - print(CAR_KEYPOINTS_66[j1 - 1], '-', CAR_KEYPOINTS_66[j2 - 1]) - - -def main(): -# print_associations() -# ============================================================================= -# draw_skeletons(CAR_POSE_24, sigmas = CAR_SIGMAS_24, skel = CAR_SKELETON_24, -# kps = CAR_KEYPOINTS_24, scr_weights = CAR_SCORE_WEIGHTS_24) -# draw_skeletons(CAR_POSE_66, sigmas = CAR_SIGMAS_66, skel = CAR_SKELETON_66, -# kps = CAR_KEYPOINTS_66, scr_weights = CAR_SCORE_WEIGHTS_66) -# ============================================================================= -# with openpifpaf.show.Canvas.blank(nomargin=True) as ax_2D: -# anim_66 = plot3d_red(ax_2D, CAR_POSE_66, CAR_SKELETON_66) -# anim_66.save('./CAR_66_Pose.gif', fps=30) - with openpifpaf.show.Canvas.blank(nomargin=True) as ax_2D: - anim_24 = plot3d_red(ax_2D, CAR_POSE_24, CAR_SKELETON_24) - anim_24.save('./CAR_24_Pose.gif', fps=30) - - -if __name__ == '__main__': - main() \ No newline at end of file diff --git a/Training/openpifpaf_karussel/karusel_kp.py b/Training/openpifpaf_karussel/karusel_kp.py deleted file mode 100644 index aa637bc..0000000 --- a/Training/openpifpaf_karussel/karusel_kp.py +++ /dev/null @@ -1,332 +0,0 @@ -""" -Interface for custom data. - -This module handles datasets and is the class that you need to inherit from for your custom dataset. -This class gives you all the handles so that you can train with a new –dataset=mydataset. -The particular configuration of keypoints and skeleton is specified in the headmeta instances -""" - - -import argparse -import torch -import numpy as np -try: - from pycocotools.coco import COCO -except ImportError: - COCO = None - -from openpifpaf.datasets import DataModule -from openpifpaf import encoder, headmeta, metric, transforms -from openpifpaf.datasets import collate_images_anns_meta, collate_images_targets_meta -from openpifpaf.plugins.coco import CocoDataset as CocoLoader - -from .constants import get_constants, training_weights_local_centrality -from .metrics import MeanPixelError - - -class karusel_Kp(DataModule): - """ - DataModule for the karusel Dataset. - """ - - train_annotations = 'Karusel_dataset-COCO/annotations/train.json' - val_annotations = 'Karusel_dataset-COCO/annotations/val.json' - eval_annotations = val_annotations - train_image_dir = 'Karusel_dataset-COCO/images/train/' - val_image_dir = 'Karusel_dataset-COCO/images/val/' - eval_image_dir = val_image_dir - - n_images = None - square_edge = 513 - extended_scale = False - orientation_invariant = 0.0 - blur = 0.0 - augmentation = True - rescale_images = 1.0 - upsample_stride = 1 - min_kp_anns = 1 - b_min = 1 # 1 pixel - - eval_annotation_filter = True - eval_long_edge = 0 # set to zero to deactivate rescaling - eval_orientation_invariant = 0.0 - eval_extended_scale = False - - def __init__(self): - super().__init__() - if self.weights is not None: - caf_weights = [] - for bone in self.CAR_SKELETON: - caf_weights.append(max(self.weights[bone[0] - 1], - self.weights[bone[1] - 1])) - w_np = np.array(caf_weights) - caf_weights = list(w_np / np.sum(w_np) * len(caf_weights)) - else: - caf_weights = None - cif = headmeta.Cif('cif', 'apollo', - keypoints=self.CAR_KEYPOINTS, - sigmas=self.CAR_SIGMAS, - pose=self.CAR_POSE, - draw_skeleton=self.CAR_SKELETON, - score_weights=self.CAR_SCORE_WEIGHTS, - training_weights=self.weights) - caf = headmeta.Caf('caf', 'apollo', - keypoints=self.CAR_KEYPOINTS, - sigmas=self.CAR_SIGMAS, - pose=self.CAR_POSE, - skeleton=self.CAR_SKELETON, - training_weights=caf_weights) - - cif.upsample_stride = self.upsample_stride - caf.upsample_stride = self.upsample_stride - self.head_metas = [cif, caf] - - @classmethod - def cli(cls, parser: argparse.ArgumentParser): - group = parser.add_argument_group('data module Apollo') - - group.add_argument('--karusel-train-annotations', - default=cls.train_annotations) - group.add_argument('--karusel-val-annotations', - default=cls.val_annotations) - group.add_argument('--karusel-train-image-dir', - default=cls.train_image_dir) - group.add_argument('--karusel-val-image-dir', - default=cls.val_image_dir) - - group.add_argument('--karusel-square-edge', - default=cls.square_edge, type=int, - help='square edge of input images') - assert not cls.extended_scale - group.add_argument('--karusel-extended-scale', - default=False, action='store_true', - help='augment with an extended scale range') - group.add_argument('--karusel-orientation-invariant', - default=cls.orientation_invariant, type=float, - help='augment with random orientations') - group.add_argument('--karusel-blur', - default=cls.blur, type=float, - help='augment with blur') - assert cls.augmentation - group.add_argument('--karusel-no-augmentation', - dest='karusel_augmentation', - default=True, action='store_false', - help='do not apply data augmentation') - group.add_argument('--karusel-rescale-images', - default=cls.rescale_images, type=float, - help='overall rescale factor for images') - group.add_argument('--karusel-upsample', - default=cls.upsample_stride, type=int, - help='head upsample stride') - group.add_argument('--karusel-min-kp-anns', - default=cls.min_kp_anns, type=int, - help='filter images with fewer keypoint annotations') - group.add_argument('--karusel-bmin', - default=cls.b_min, type=int, - help='b minimum in pixels') - group.add_argument('--karusel-apply-local-centrality-weights', - dest='karusel_apply_local_centrality', - default=False, action='store_true', - help='Weigh the CIF and CAF head during training.') - - # evaluation - assert cls.eval_annotation_filter - group.add_argument('--karusel-no-eval-annotation-filter', - dest='karusel_eval_annotation_filter', - default=True, action='store_false') - group.add_argument('--karusel-eval-long-edge', default=cls.eval_long_edge, type=int, - help='set to zero to deactivate rescaling') - assert not cls.eval_extended_scale - group.add_argument('--karusel-eval-extended-scale', default=False, action='store_true') - group.add_argument('--karusel-eval-orientation-invariant', - default=cls.eval_orientation_invariant, type=float) - group.add_argument('--karusel-use-24-kps', default=False, action='store_true', - help=('The ApolloCar3D dataset can ' - 'be trained with 24 or 66 kps. If you want to train a model ' - 'with 24 kps activate this flag. Change the annotations ' - 'path to the json files with 24 kps.')) - - @classmethod - def configure(cls, args: argparse.Namespace): - # extract global information - cls.debug = args.debug - cls.pin_memory = args.pin_memory - - # Apollo specific - cls.train_annotations = args.karusel_train_annotations - cls.val_annotations = args.karusel_val_annotations - cls.eval_annotations = cls.val_annotations - cls.train_image_dir = args.karusel_train_image_dir - cls.val_image_dir = args.karusel_val_image_dir - cls.eval_image_dir = cls.val_image_dir - - cls.square_edge = args.karusel_square_edge - cls.extended_scale = args.karusel_extended_scale - cls.orientation_invariant = args.karusel_orientation_invariant - cls.blur = args.karusel_blur - cls.augmentation = args.karusel_augmentation # loaded by the dest name - cls.rescale_images = args.karusel_rescale_images - cls.upsample_stride = args.karusel_upsample - cls.min_kp_anns = args.karusel_min_kp_anns - cls.b_min = args.karusel_bmin - if args.karusel_use_24_kps: - (cls.CAR_KEYPOINTS, cls.CAR_SKELETON, cls.HFLIP, cls.CAR_SIGMAS, cls.CAR_POSE, - cls.CAR_CATEGORIES, cls.CAR_SCORE_WEIGHTS) = get_constants(24) - else: - (cls.CAR_KEYPOINTS, cls.CAR_SKELETON, cls.HFLIP, cls.CAR_SIGMAS, cls.CAR_POSE, - cls.CAR_CATEGORIES, cls.CAR_SCORE_WEIGHTS) = get_constants(66) - # evaluation - cls.eval_annotation_filter = args.karusel_eval_annotation_filter - cls.eval_long_edge = args.karusel_eval_long_edge - cls.eval_orientation_invariant = args.karusel_eval_orientation_invariant - cls.eval_extended_scale = args.karusel_eval_extended_scale - if args.karusel_apply_local_centrality: - if args.karusel_use_24_kps: - raise Exception("Applying local centrality weights only works with 66 kps.") - cls.weights = training_weights_local_centrality - else: - cls.weights = None - - def _preprocess(self): - encoders = (encoder.Cif(self.head_metas[0], bmin=self.b_min), - encoder.Caf(self.head_metas[1], bmin=self.b_min)) - - if not self.augmentation: - return transforms.Compose([ - transforms.NormalizeAnnotations(), - transforms.RescaleAbsolute(self.square_edge), - transforms.CenterPad(self.square_edge), - transforms.EVAL_TRANSFORM, - transforms.Encoders(encoders), - ]) - - if self.extended_scale: - rescale_t = transforms.RescaleRelative( - scale_range=(0.2 * self.rescale_images, - 2.0 * self.rescale_images), - power_law=True, stretch_range=(0.75, 1.33)) - else: - rescale_t = transforms.RescaleRelative( - scale_range=(0.33 * self.rescale_images, - 1.33 * self.rescale_images), - power_law=True, stretch_range=(0.75, 1.33)) - - return transforms.Compose([ - transforms.NormalizeAnnotations(), - # transforms.AnnotationJitter(), - transforms.RandomApply(transforms.HFlip(self.CAR_KEYPOINTS, self.HFLIP), 0.5), - rescale_t, - transforms.RandomApply(transforms.Blur(), self.blur), - transforms.RandomChoice( - [transforms.RotateBy90(), - transforms.RotateUniform(30.0)], - [self.orientation_invariant, 0.2], - ), - transforms.Crop(self.square_edge, use_area_of_interest=True), - transforms.CenterPad(self.square_edge), - transforms.MinSize(min_side=32.0), - transforms.TRAIN_TRANSFORM, - transforms.Encoders(encoders), - ]) - - def train_loader(self): - train_data = CocoLoader( - image_dir=self.train_image_dir, - ann_file=self.train_annotations, - preprocess=self._preprocess(), - annotation_filter=True, - min_kp_anns=self.min_kp_anns, - category_ids=[1], - ) - return torch.utils.data.DataLoader( - train_data, batch_size=self.batch_size, shuffle=not self.debug, - pin_memory=self.pin_memory, num_workers=self.loader_workers, drop_last=True, - collate_fn=collate_images_targets_meta) - - def val_loader(self): - val_data = CocoLoader( - image_dir=self.val_image_dir, - ann_file=self.val_annotations, - preprocess=self._preprocess(), - annotation_filter=True, - min_kp_anns=self.min_kp_anns, - category_ids=[1], - ) - return torch.utils.data.DataLoader( - val_data, batch_size=self.batch_size, shuffle=False, - pin_memory=self.pin_memory, num_workers=self.loader_workers, drop_last=True, - collate_fn=collate_images_targets_meta) - - @classmethod - def common_eval_preprocess(cls): - rescale_t = None - if cls.eval_extended_scale: - assert cls.eval_long_edge - rescale_t = [ - transforms.DeterministicEqualChoice([ - transforms.RescaleAbsolute(cls.eval_long_edge), - transforms.RescaleAbsolute((cls.eval_long_edge - 1) // 2 + 1), - ], salt=1) - ] - elif cls.eval_long_edge: - rescale_t = transforms.RescaleAbsolute(cls.eval_long_edge) - - if cls.batch_size == 1: - padding_t = transforms.CenterPadTight(16) - else: - assert cls.eval_long_edge - padding_t = transforms.CenterPad(cls.eval_long_edge) - - orientation_t = None - if cls.eval_orientation_invariant: - orientation_t = transforms.DeterministicEqualChoice([ - None, - transforms.RotateBy90(fixed_angle=90), - transforms.RotateBy90(fixed_angle=180), - transforms.RotateBy90(fixed_angle=270), - ], salt=3) - - return [ - transforms.NormalizeAnnotations(), - rescale_t, - padding_t, - orientation_t, - ] - - def _eval_preprocess(self): - return transforms.Compose([ - *self.common_eval_preprocess(), - transforms.ToAnnotations([ - transforms.ToKpAnnotations( - self.CAR_CATEGORIES, - keypoints_by_category={1: self.head_metas[0].keypoints}, - skeleton_by_category={1: self.head_metas[1].skeleton}, - ), - transforms.ToCrowdAnnotations(self.CAR_CATEGORIES), - ]), - transforms.EVAL_TRANSFORM, - ]) - - def eval_loader(self): - eval_data = CocoLoader( - image_dir=self.eval_image_dir, - ann_file=self.eval_annotations, - preprocess=self._eval_preprocess(), - annotation_filter=self.eval_annotation_filter, - min_kp_anns=self.min_kp_anns if self.eval_annotation_filter else 0, - category_ids=[1] if self.eval_annotation_filter else [], - ) - return torch.utils.data.DataLoader( - eval_data, batch_size=self.batch_size, shuffle=False, - pin_memory=self.pin_memory, num_workers=self.loader_workers, drop_last=False, - collate_fn=collate_images_anns_meta) - -# TODO: make sure that 24kp flag is activated when evaluating a 24kp model - def metrics(self): - return [metric.Coco( - COCO(self.eval_annotations), - max_per_image=20, - category_ids=[1], - iou_type='keypoints', - keypoint_oks_sigmas=self.CAR_SIGMAS - ), MeanPixelError()] diff --git a/Training/openpifpaf_karussel/metrics.py b/Training/openpifpaf_karussel/metrics.py deleted file mode 100644 index e797b85..0000000 --- a/Training/openpifpaf_karussel/metrics.py +++ /dev/null @@ -1,131 +0,0 @@ -import logging - -import numpy as np - -from openpifpaf.metric.base import Base -from openpifpaf.annotation import Annotation - -try: - import scipy -except ImportError: - scipy = None - -LOG = logging.getLogger(__name__) - - -class MeanPixelError(Base): - """ - Calculate mean pixel error and detection rate for a given image - and category in an "all-vs-all setting" - """ - predictions = [] - image_ids = [] - errors = [] # mean pixel errors - detections = [] # detection rate - errors_scaled = [] # mean pixel errors - detections_scaled = [] # detection rate - px_ref = 368 # CPM crop size in pixels - - def accumulate(self, predictions, image_meta, *, ground_truth=None): - errors = [] - detections = [] - errors_scaled = [] - detections_scaled = [] - - # Filter ground-truth - for annotation in ground_truth: - if not isinstance(annotation, Annotation): - continue - indices_gt = np.nonzero(annotation.data[:, 2] > 1.0) - if indices_gt[0].size <= 3: - continue - gts = annotation.data[indices_gt, 0:2].squeeze() - width = float(annotation.fixed_bbox[2]) - height = float(annotation.fixed_bbox[3]) - scale = np.array([self.px_ref / width, self.px_ref / height]).reshape(1, 2) - - # Evaluate each keypoint - for idx, gt in zip(indices_gt[0], gts): - preds = np.array([p.data[idx] for p in predictions]).reshape(-1, 3)[:, 0:2] - if preds.size <= 0: - continue - i = np.argmin(np.linalg.norm(preds - gt, axis=1)) - dist = preds[i:i + 1] - gt - dist_scaled = dist * scale - d = float(np.linalg.norm(dist, axis=1)) - d_scaled = float(np.linalg.norm(dist_scaled, axis=1)) - - # Prediction correct if error less than 10 pixels - if d < 10: - errors.append(d) - detections.append(1) - else: - detections.append(0) - if d_scaled < 10: - errors_scaled.append(d) - detections_scaled.append(1) - else: - detections_scaled.append(0) - - # Stats for a single image - mpe = average(errors) - mpe_scaled = average(errors_scaled) - det_rate = 100 * average(detections) - det_rate_scaled = 100 * average(detections_scaled) - LOG.info('Mean Pixel Error (scaled): %s (%s) Det. Rate (scaled): %s (%s)', - str(mpe)[:4], str(mpe_scaled)[:4], str(det_rate)[:4], str(det_rate_scaled)[:4]) - - # Accumulate stats - self.errors.extend(errors) - self.detections.extend(detections) - self.errors_scaled.extend(errors_scaled) - self.detections_scaled.extend(detections_scaled) - - def write_predictions(self, filename, *, additional_data=None): - raise NotImplementedError - - def stats(self): - mpe = average(self.errors) - mpe_scaled = average(self.errors_scaled) - det_rate = 100 * average(self.detections) - det_rate_scaled = 100 * average(self.detections_scaled) - LOG.info('Final Results: \nMean Pixel Error [scaled] : %f [%f] ' - '\nDetection Rate [scaled]: %f [%f]', - mpe, mpe_scaled, det_rate, det_rate_scaled) - data = { - 'stats': [mpe, mpe_scaled, det_rate, det_rate_scaled], - 'text_labels': ['Mean Pixel Error', - 'Mean Pixel Error Scaled', - 'Detection Rate [%]', - 'Detection Rate Scaled[%]'], - } - return data - - -def hungarian_matching(gts, predictions, thresh=0.5): - cost = np.zeros((len(gts), len(predictions))) - - for i, (dg, vg) in enumerate(gts): - for j, pred in enumerate(predictions): - p = np.array(pred.data) - dp = p[:, 0:2][vg > 1.0] - vp = p[:, 2][vg > 1.0] - - dp[vp < thresh] = -100 - dp[vp < thresh] = -100 - - # measure the per-keypoint distance - distances = np.clip(np.linalg.norm(dp - dg, axis=1), 0, 10) - cost[i, j] = float(np.mean(distances)) - - assert np.max(cost) < 11 - row, cols = scipy.optimize.linear_sum_assignment(cost) - return row, cols, cost - - -def average(my_list, *, empty_value=0.0): - """calculate mean of a list""" - if not my_list: - return empty_value - - return sum(my_list) / float(len(my_list)) diff --git a/Training/training.ipynb b/Training/training.ipynb deleted file mode 100644 index 3d30c86..0000000 --- a/Training/training.ipynb +++ /dev/null @@ -1,84 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 1, - "id": "39a59328", - "metadata": { - "collapsed": true - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "INFO:__main__:neural network device: cuda (CUDA available: True, count: 1)\n", - "INFO:openpifpaf.network.factory:filtering for dataset heads and extending existing heads\n", - "INFO:openpifpaf.network.losses.multi_head:multihead loss: ['apollo.cif.c', 'apollo.cif.vec', 'apollo.cif.scales', 'apollo.caf.c', 'apollo.caf.vec', 'apollo.caf.scales'], [1.0, 1.0, 1.0, 1.0, 1.0, 1.0]\n", - "INFO:__main__:Single GPU training\n", - "INFO:openpifpaf.logger:{'type': 'process', 'argv': ['C:\\\\Anaconda\\\\lib\\\\site-packages\\\\openpifpaf\\\\train.py', '--dataset', 'karusel', '--checkpoint=mobilenetv2', '--lr=0.00002', '--momentum=0.95', '--b-scale=5.0', '--epochs=151', '--lr-decay', '160', '260', '--lr-decay-epochs=10', '--weight-decay=1e-5', '--weight-decay=1e-5', '--val-interval', '10', '--loader-workers', '3', '--batch-size', '1', '--karusel-use-24-kps', '--karusel-square-edge=769', '--karusel-bmin', '2'], 'args': {'output': 'outputs/mobilenetv2-220516-170827-karusel.pkl', 'disable_cuda': False, 'ddp': False, 'local_rank': None, 'sync_batchnorm': True, 'quiet': False, 'debug': False, 'log_stats': False, 'shufflenetv2k_input_conv2_stride': 0, 'shufflenetv2k_input_conv2_outchannels': None, 'shufflenetv2k_stage4_dilation': 1, 'shufflenetv2k_kernel': 5, 'shufflenetv2k_conv5_as_stage': False, 'shufflenetv2k_instance_norm': False, 'shufflenetv2k_group_norm': False, 'shufflenetv2k_leaky_relu': False, 'squeezenet_pretrained': True, 'swin_drop_path_rate': 0.2, 'swin_input_upsample': False, 'swin_use_fpn': False, 'swin_fpn_out_channels': None, 'swin_fpn_level': 3, 'swin_pretrained': True, 'xcit_out_channels': None, 'xcit_out_maxpool': False, 'xcit_pretrained': True, 'mobilenetv3_pretrained': True, 'mobilenetv2_pretrained': True, 'resnet_pretrained': True, 'resnet_pool0_stride': 0, 'resnet_input_conv_stride': 2, 'resnet_input_conv2_stride': 0, 'resnet_block5_dilation': 1, 'resnet_remove_last_block': False, 'shufflenetv2_pretrained': True, 'cf4_dropout': 0.0, 'cf4_inplace_ops': True, 'checkpoint': 'mobilenetv2', 'basenet': None, 'cross_talk': 0.0, 'download_progress': True, 'head_consolidation': 'filter_and_extend', 'lambdas': None, 'component_lambdas': None, 'auto_tune_mtl': False, 'auto_tune_mtl_variance': False, 'task_sparsity_weight': 0.0, 'soft_clamp': 5.0, 'loss_prescale': 1.0, 'regression_loss': 'laplace', 'bce_total_soft_clamp': None, 'laplace_soft_clamp': 5.0, 'r_smooth': 0.0, 'b_scale': 5.0, 'scale_log': False, 'scale_soft_clamp': 5.0, 'background_weight': 1.0, 'focal_alpha': 0.5, 'focal_gamma': 1.0, 'focal_detach': False, 'focal_clamp': True, 'bce_min': 0.0, 'bce_soft_clamp': 5.0, 'bce_background_clamp': -15.0, 'epochs': 151, 'train_batches': None, 'val_batches': None, 'clip_grad_norm': 0.0, 'clip_grad_value': 0.0, 'log_interval': 11, 'val_interval': 10, 'stride_apply': 1, 'fix_batch_norm': False, 'ema': 0.01, 'profile': None, 'cif_side_length': 4, 'caf_min_size': 3, 'caf_fixed_size': False, 'caf_aspect_ratio': 0.0, 'encoder_suppress_selfhidden': True, 'encoder_suppress_invisible': False, 'encoder_suppress_collision': False, 'momentum': 0.95, 'beta2': 0.999, 'adam_eps': 1e-06, 'nesterov': True, 'weight_decay': 1e-05, 'adam': False, 'amsgrad': False, 'lr': 2e-05, 'lr_decay': [160.0, 260.0], 'lr_decay_factor': 0.1, 'lr_decay_epochs': 10.0, 'lr_warm_up_start_epoch': 0, 'lr_warm_up_epochs': 1, 'lr_warm_up_factor': 0.001, 'lr_warm_restarts': [], 'lr_warm_restart_duration': 0.5, 'dataset': 'karusel', 'loader_workers': 3, 'batch_size': 1, 'dataset_weights': None, 'animal_train_annotations': 'data-animalpose/annotations/animal_keypoints_20_train.json', 'animal_val_annotations': 'data-animalpose/annotations/animal_keypoints_20_val.json', 'animal_train_image_dir': 'data-animalpose/images/train/', 'animal_val_image_dir': 'data-animalpose/images/val/', 'animal_square_edge': 513, 'animal_extended_scale': False, 'animal_orientation_invariant': 0.0, 'animal_blur': 0.0, 'animal_augmentation': True, 'animal_rescale_images': 1.0, 'animal_upsample': 1, 'animal_min_kp_anns': 1, 'animal_bmin': 1, 'animal_eval_test2017': False, 'animal_eval_testdev2017': False, 'animal_eval_annotation_filter': True, 'animal_eval_long_edge': 0, 'animal_eval_extended_scale': False, 'animal_eval_orientation_invariant': 0.0, 'apollo_train_annotations': 'data-apollocar3d/annotations/apollo_keypoints_66_train.json', 'apollo_val_annotations': 'data-apollocar3d/annotations/apollo_keypoints_66_val.json', 'apollo_train_image_dir': 'data-apollocar3d/images/train/', 'apollo_val_image_dir': 'data-apollocar3d/images/val/', 'apollo_square_edge': 513, 'apollo_extended_scale': False, 'apollo_orientation_invariant': 0.0, 'apollo_blur': 0.0, 'apollo_augmentation': True, 'apollo_rescale_images': 1.0, 'apollo_upsample': 1, 'apollo_min_kp_anns': 1, 'apollo_bmin': 1, 'apollo_apply_local_centrality': False, 'apollo_eval_annotation_filter': True, 'apollo_eval_long_edge': 0, 'apollo_eval_extended_scale': False, 'apollo_eval_orientation_invariant': 0.0, 'apollo_use_24_kps': False, 'cifar10_root_dir': 'data-cifar10/', 'cifar10_download': False, 'cocodet_train_annotations': 'data-mscoco/annotations/instances_train2017.json', 'cocodet_val_annotations': 'data-mscoco/annotations/instances_val2017.json', 'cocodet_train_image_dir': 'data-mscoco/images/train2017/', 'cocodet_val_image_dir': 'data-mscoco/images/val2017/', 'cocodet_square_edge': 513, 'cocodet_extended_scale': False, 'cocodet_orientation_invariant': 0.0, 'cocodet_blur': 0.0, 'cocodet_augmentation': True, 'cocodet_rescale_images': 1.0, 'cocodet_upsample': 1, 'cocokp_train_annotations': 'data-mscoco/annotations/person_keypoints_train2017.json', 'cocokp_val_annotations': 'data-mscoco/annotations/person_keypoints_val2017.json', 'cocokp_train_image_dir': 'data-mscoco/images/train2017/', 'cocokp_val_image_dir': 'data-mscoco/images/val2017/', 'cocokp_square_edge': 385, 'cocokp_with_dense': False, 'cocokp_extended_scale': False, 'cocokp_orientation_invariant': 0.0, 'cocokp_blur': 0.0, 'cocokp_augmentation': True, 'cocokp_rescale_images': 1.0, 'cocokp_upsample': 1, 'cocokp_min_kp_anns': 1, 'cocokp_bmin': 0.1, 'cocokp_eval_test2017': False, 'cocokp_eval_testdev2017': False, 'coco_eval_annotation_filter': True, 'coco_eval_long_edge': 641, 'coco_eval_extended_scale': False, 'coco_eval_orientation_invariant': 0.0, 'crowdpose_train_annotations': 'data-crowdpose/json/crowdpose_train.json', 'crowdpose_val_annotations': 'data-crowdpose/json/crowdpose_val.json', 'crowdpose_image_dir': 'data-crowdpose/images/', 'crowdpose_square_edge': 385, 'crowdpose_extended_scale': False, 'crowdpose_orientation_invariant': 0.0, 'crowdpose_augmentation': True, 'crowdpose_rescale_images': 1.0, 'crowdpose_upsample': 1, 'crowdpose_min_kp_anns': 1, 'crowdpose_eval_test': False, 'crowdpose_eval_long_edge': 641, 'crowdpose_eval_extended_scale': False, 'crowdpose_eval_orientation_invariant': 0.0, 'crowdpose_index': None, 'nuscenes_train_annotations': '../../../NuScenes/mscoco_style_annotations/nuimages_v1.0-train.json', 'nuscenes_val_annotations': '../../../NuScenes/mscoco_style_annotations/nuimages_v1.0-val.json', 'nuscenes_train_image_dir': '../../../NuScenes/nuimages-v1.0-all-samples', 'nuscenes_val_image_dir': '../../../NuScenes/nuimages-v1.0-all-samples', 'nuscenes_square_edge': 513, 'nuscenes_extended_scale': False, 'nuscenes_orientation_invariant': 0.0, 'nuscenes_blur': 0.0, 'nuscenes_augmentation': True, 'nuscenes_rescale_images': 1.0, 'nuscenes_upsample': 1, 'karusel_train_annotations': 'Karusel_dataset-COCO/annotations/train.json', 'karusel_val_annotations': 'Karusel_dataset-COCO/annotations/val.json', 'karusel_train_image_dir': 'Karusel_dataset-COCO/images/train/', 'karusel_val_image_dir': 'Karusel_dataset-COCO/images/val/', 'karusel_square_edge': 769, 'karusel_extended_scale': False, 'karusel_orientation_invariant': 0.0, 'karusel_blur': 0.0, 'karusel_augmentation': True, 'karusel_rescale_images': 1.0, 'karusel_upsample': 1, 'karusel_min_kp_anns': 1, 'karusel_bmin': 2, 'karusel_apply_local_centrality': False, 'karusel_eval_annotation_filter': True, 'karusel_eval_long_edge': 0, 'karusel_eval_extended_scale': False, 'karusel_eval_orientation_invariant': 0.0, 'karusel_use_24_kps': True, 'posetrack2018_train_annotations': 'data-posetrack2018/annotations/train/*.json', 'posetrack2018_val_annotations': 'data-posetrack2018/annotations/val/*.json', 'posetrack2018_eval_annotations': 'data-posetrack2018/annotations/val/*.json', 'posetrack2018_data_root': 'data-posetrack2018', 'posetrack_square_edge': 385, 'posetrack_with_dense': False, 'posetrack_augmentation': True, 'posetrack_rescale_images': 1.0, 'posetrack_upsample': 1, 'posetrack_min_kp_anns': 1, 'posetrack_bmin': 0.1, 'posetrack_sample_pairing': 0.0, 'posetrack_image_augmentations': 0.0, 'posetrack_max_shift': 30.0, 'posetrack_eval_long_edge': 801, 'posetrack_eval_extended_scale': False, 'posetrack_eval_orientation_invariant': 0.0, 'posetrack_ablation_without_tcaf': False, 'posetrack2017_eval_annotations': 'data-posetrack2017/annotations/val/*.json', 'posetrack2017_data_root': 'data-posetrack2017', 'cocokpst_max_shift': 30.0, 'wholebody_train_annotations': 'data-mscoco/annotations/person_keypoints_train2017_wholebody_pifpaf_style.json', 'wholebody_val_annotations': 'data-mscoco/annotations/coco_wholebody_val_v1.0.json', 'wholebody_train_image_dir': 'data-mscoco/images/train2017/', 'wholebody_val_image_dir': 'data-mscoco/images/val2017', 'wholebody_square_edge': 385, 'wholebody_extended_scale': False, 'wholebody_orientation_invariant': 0.0, 'wholebody_blur': 0.0, 'wholebody_augmentation': True, 'wholebody_rescale_images': 1.0, 'wholebody_upsample': 1, 'wholebody_min_kp_anns': 1, 'wholebody_bmin': 1.0, 'wholebody_apply_local_centrality': False, 'wholebody_eval_test2017': False, 'wholebody_eval_testdev2017': False, 'wholebody_eval_annotation_filter': True, 'wholebody_eval_long_edge': 641, 'wholebody_eval_extended_scale': False, 'wholebody_eval_orientation_invariant': 0.0, 'save_all': None, 'show': False, 'image_width': None, 'image_height': None, 'image_dpi_factor': 2.0, 'image_min_dpi': 50.0, 'show_file_extension': 'jpeg', 'textbox_alpha': 0.5, 'text_color': 'white', 'font_size': 8, 'monocolor_connections': False, 'line_width': None, 'skeleton_solid_threshold': 0.5, 'show_box': False, 'white_overlay': False, 'show_joint_scales': False, 'show_joint_confidences': False, 'show_decoding_order': False, 'show_frontier_order': False, 'show_only_decoded_connections': False, 'video_fps': 10, 'video_dpi': 100, 'debug_indices': [], 'device': device(type='cuda'), 'pin_memory': True}, 'version': '0.13.3', 'plugin_versions': {'openpifpaf_karussel': 'unknown'}, 'hostname': 'DESKTOP-9FV4E0P'}\n", - "loading annotations into memory...\n", - "Done (t=0.00s)\n", - "creating index...\n", - "index created!\n", - "INFO:openpifpaf.plugins.coco.dataset:filter for annotations (min kp=1) ...\n", - "INFO:openpifpaf.plugins.coco.dataset:... done.\n", - "INFO:openpifpaf.plugins.coco.dataset:Images: 104\n", - "loading annotations into memory...\n", - "Done (t=0.00s)\n", - "creating index...\n", - "index created!\n", - "INFO:openpifpaf.plugins.coco.dataset:filter for annotations (min kp=1) ...\n", - "INFO:openpifpaf.plugins.coco.dataset:... done.\n", - "INFO:openpifpaf.plugins.coco.dataset:Images: 12\n", - "INFO:openpifpaf.optimize:SGD optimizer\n", - "INFO:openpifpaf.optimize:training batches per epoch = 104\n", - "INFO:openpifpaf.network.trainer:{'type': 'config', 'field_names': ['apollo.cif.c', 'apollo.cif.vec', 'apollo.cif.scales', 'apollo.caf.c', 'apollo.caf.vec', 'apollo.caf.scales']}\n", - "INFO:openpifpaf.network.trainer:{'type': 'train', 'epoch': 150, 'batch': 0, 'n_batches': 104, 'time': 3.312, 'data_time': 9.933, 'lr': 2e-05, 'loss': 3996.015, 'head_losses': [381.82, 1338.938, 2.815, 422.177, 1845.92, 4.346]}\n", - "INFO:openpifpaf.network.trainer:{'type': 'train', 'epoch': 150, 'batch': 11, 'n_batches': 104, 'time': 0.11, 'data_time': 0.0, 'lr': 2e-05, 'loss': 2537.655, 'head_losses': [108.509, 748.191, 1.287, 225.264, 1452.322, 2.082]}\n", - "INFO:openpifpaf.network.trainer:{'type': 'train', 'epoch': 150, 'batch': 22, 'n_batches': 104, 'time': 0.145, 'data_time': 0.0, 'lr': 2e-05, 'loss': 3143.217, 'head_losses': [110.165, 1304.007, 3.605, 168.33, 1549.557, 7.551]}\n", - "INFO:openpifpaf.network.trainer:{'type': 'train', 'epoch': 150, 'batch': 33, 'n_batches': 104, 'time': 0.114, 'data_time': 0.838, 'lr': 2e-05, 'loss': 2561.634, 'head_losses': [104.38, 760.872, 0.937, 145.966, 1548.282, 1.197]}\n", - "INFO:openpifpaf.network.trainer:{'type': 'train', 'epoch': 150, 'batch': 44, 'n_batches': 104, 'time': 0.158, 'data_time': 0.598, 'lr': 2e-05, 'loss': 3077.632, 'head_losses': [94.998, 1271.543, 1.153, 115.789, 1591.439, 2.709]}\n", - "INFO:openpifpaf.network.trainer:{'type': 'train', 'epoch': 150, 'batch': 55, 'n_batches': 104, 'time': 0.147, 'data_time': 0.548, 'lr': 2e-05, 'loss': 3387.694, 'head_losses': [117.256, 1455.369, 14.965, 120.495, 1657.198, 22.411]}\n", - "INFO:openpifpaf.network.trainer:{'type': 'train', 'epoch': 150, 'batch': 66, 'n_batches': 104, 'time': 0.136, 'data_time': 0.0, 'lr': 2e-05, 'loss': 2697.875, 'head_losses': [141.474, 840.148, 1.025, 203.103, 1510.888, 1.238]}\n", - "INFO:openpifpaf.network.trainer:{'type': 'train', 'epoch': 150, 'batch': 77, 'n_batches': 104, 'time': 0.124, 'data_time': 0.0, 'lr': 2e-05, 'loss': 2917.647, 'head_losses': [117.105, 1214.693, 1.097, 128.015, 1454.447, 2.292]}\n", - "INFO:openpifpaf.network.trainer:{'type': 'train', 'epoch': 150, 'batch': 88, 'n_batches': 104, 'time': 0.112, 'data_time': 0.0, 'lr': 2e-05, 'loss': 2877.594, 'head_losses': [117.213, 1145.017, 0.308, 142.698, 1471.487, 0.872]}\n", - "INFO:openpifpaf.network.trainer:{'type': 'train', 'epoch': 150, 'batch': 99, 'n_batches': 104, 'time': 0.134, 'data_time': 0.0, 'lr': 2e-05, 'loss': 537.43, 'head_losses': [29.236, 148.922, 0.908, 44.595, 312.376, 1.394]}\n", - "INFO:openpifpaf.network.trainer:applying ema\n", - "INFO:openpifpaf.network.trainer:{'type': 'train-epoch', 'epoch': 151, 'loss': 2661.64299, 'head_losses': [103.41938, 976.64185, 3.44785, 147.09363, 1425.81744, 5.22282], 'time': 58.1, 'n_clipped_grad': 0, 'max_norm': 0.0}\n", - "INFO:openpifpaf.network.trainer:model written: outputs/mobilenetv2-220516-170827-karusel.pkl.epoch151\n", - "INFO:openpifpaf.network.trainer:{'type': 'val-epoch', 'epoch': 151, 'loss': 2293.58988, 'head_losses': [75.23923, 780.86423, 1.6363, 120.32408, 1312.80143, 2.72463], 'time': 13.4}\n" - ] - } - ], - "source": [ - "!python -m openpifpaf.train --dataset karusel \\\n", - "--checkpoint=mobilenetv2 --lr=0.00002 --momentum=0.95 --b-scale=5.0 \\\n", - "--epochs=151 --lr-decay 160 260 --lr-decay-epochs=10 --weight-decay=1e-5 \\\n", - "--weight-decay=1e-5 --val-interval 10 --loader-workers 3 \\\n", - "--batch-size 1 --karusel-use-24-kps --karusel-square-edge=769 --karusel-bmin 2" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.9.7" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/readme.md b/readme.md new file mode 100644 index 0000000..e69de29 diff --git a/utils/coca-cola.png b/utils/coca-cola.png deleted file mode 100644 index 4a95b1a..0000000 Binary files a/utils/coca-cola.png and /dev/null differ diff --git a/utils/functions_shield.py b/utils/functions_shield.py deleted file mode 100644 index 16d169f..0000000 --- a/utils/functions_shield.py +++ /dev/null @@ -1,133 +0,0 @@ -import cv2 -import numpy as np -import os - -# Read shield with alpha channel -def readAlpha(path): - src = cv2.imread(path, cv2.IMREAD_UNCHANGED) - src = cv2.cvtColor(src, cv2.COLOR_BGRA2RGBA) - # b, g, r, alpha = cv2.split(src) - # dst1 = cv2.merge((b, g, r)) - # alpha = cv2.cvtColor(alpha, cv2.COLOR_GRAY2BGR) - # dst1_64 = dst1.astype(np.float64) - # alpha_64 = alpha.astype(np.float64) - # alpha_64 *= 1./255. - # dst2_64 = np.multiply(dst1_64, alpha_64) - # dst2 = dst2_64.astype(np.uint8) - return src - -# Read shield with alpha channel and points -def readShield(path, step_board=0): - pict = readAlpha(path) - h_pict = pict.shape[0] - w_pict = pict.shape[1] - pts_pict = np.array( - [[step_board, step_board], [w_pict - step_board, step_board], [w_pict - step_board, h_pict - step_board], - [step_board, h_pict - step_board]]) - return pict, pts_pict - -def ReadShields(shield_album): - picts_paths = [] - f = open(shield_album) - for g in f: - if g[-1] == '\n': - picts_paths.append(g[:-1]) - else: - picts_paths.append(g) - f.close() - # print(picts_paths) - picts = [] - pts_picts = [] - for shield_path in picts_paths: - pict, pts_pict = readShield(shield_path) - picts.append(pict) - pts_picts.append(pts_pict) - return picts, pts_picts - -def ReadShieldsAni(shield_album): - picts_paths = [] - # filelist = os.listdir(shield_album) - # for g in filelist: - # picts_paths.append(shield_album + "/" + g) - # # print(picts_paths) - picts = [] - pts_picts = [] - for i in range(0,55): - str_i = str(i).zfill(4) - pict, pts_pict = readShield(shield_album + "/frame_"+str_i+".png") - picts.append(pict) - pts_picts.append(pts_pict) - return picts, pts_picts - -# Overaling transformed shield on frame -def overlaying(pict, img, pts_pict, pts_frame, part=1.0): - # Homography - # h, status = cv2.findHomography(pts_pict, pts_frame) - - - -# x1 = int(pts_frame[0][1]) -# if x1 < 0: -# x1 = 0 -# x2 = int(pts_frame[2][1]) -# y1 = int(pts_frame[0][0]) -# if y1 < 0: -# y1 = 0 -# y2 = int(pts_frame[2][0]) - - (y1, x1), (y2, x2) = pts_frame.min(axis=0), pts_frame.max(axis=0) - if (x2 - x1) > 50 and (y2 - y1) > 50: - try: - area = img[x1:x2, y1:y2] - # rows, cols, channels = area.shape - - b, g, r, alpha = cv2.split(pict) - pict_rgb = cv2.merge((r, g, b)) - - h, status = cv2.findHomography(pts_pict, pts_frame) - imgWarp = cv2.warpPerspective(pict_rgb, h, (img.shape[1], img.shape[0])) - alphaWarp = cv2.warpPerspective(alpha, h, (img.shape[1], img.shape[0])) - pict_area = imgWarp[x1:x2, y1:y2] - alpha_area = alphaWarp[x1:x2, y1:y2] - - # pict = cv2.resize(pict, (cols, rows)) - - znam = 1./255. - alpha_area = cv2.cvtColor(alpha_area, cv2.COLOR_GRAY2BGR) - pict_32 = pict_area.astype(np.float32) - area_32 = area.astype(np.float32) - alpha_32 = alpha_area.astype(np.float32) - alpha_32 *= znam - if part != 1.: - alpha_32 *= part - alpha_nega_32 = 1. - alpha_32 - dst1_32 = np.multiply(pict_32, alpha_32) - dst2_32 = np.multiply(area_32, alpha_nega_32) - dst_32 = dst1_32 + dst2_32 - img[x1:x2, y1:y2] = dst_32.astype(np.uint8) - - # Warp transform shield - # imgWarp = cv2.warpPerspective(pict_rgb, h, (img.shape[1], img.shape[0])) - # alphaWarp = cv2.warpPerspective(alpha, h, (img.shape[1], img.shape[0])) - - # Placing sheild on frame - # imgAug = cv2.addWeighted(img, 1.0, imgWarp, 0.5, 0.0) - except: - pass - - return img - -def applistShields(album_paths): - picts_paths = [] - picts_names = [] - f = open(album_paths) - for g in f: - if g[-1] == '\n': - picts_paths.append(g[:-1]) - else: - picts_paths.append(g) - f.close() - for path in picts_paths: - name = path.split('.')[0].split("/")[1] - picts_names.append(name) - return picts_paths, picts_names diff --git a/utils/karussel_24kps.csv b/utils/karussel_24kps.csv deleted file mode 100644 index bf437e3..0000000 --- a/utils/karussel_24kps.csv +++ /dev/null @@ -1,25 +0,0 @@ -,x,y,z -1,-11.728358247427778,-219.4412122023117,0.0 -2,-15.92420132696894,20.938476833288533,0.0 -3,-24.15779771912961,46.96169512870693,0.0 -4,-86.61374177228646,-142.95474716218305,0.0 -5,-134.74977744065188,-261.8997851845144,0.0 -6,-188.2631533958743,-315.8749516397929,0.0 -7,-191.57404333357664,-166.7104853355808,0.0 -8,-210.8939138893729,-113.29941343370568,0.0 -9,-231.00716853514677,-54.9516886489786,0.0 -10,-216.46512728143847,3.293732082401192,0.0 -11,-187.73016312616568,99.26925935365503,0.0 -12,-248.253432074131,163.27655515540138,0.0 -13,-72.81535484187529,200.9923483599607,0.0 -14,70.59797139345626,250.17179384400777,0.0 -15,126.43140175736619,171.23113224430733,0.0 -16,165.9457279162327,135.85291821065778,0.0 -17,194.32083871787557,90.37926554238746,0.0 -18,216.53917157107745,-7.535726594794127,0.0 -19,239.72723685724318,-79.97407022773838,0.0 -20,197.07800219673948,-148.61110675229477,0.0 -21,200.24438188899256,-248.98029544904819,0.0 -22,133.21163830661362,-298.2409418903916,0.0 -23,69.21865584018204,-197.5190565076657,0.0 -24,55.01178651022396,-112.90129912872368,0.0 diff --git a/utils/keypoints2pose_video.ipynb b/utils/keypoints2pose_video.ipynb deleted file mode 100644 index 0fecc0b..0000000 --- a/utils/keypoints2pose_video.ipynb +++ /dev/null @@ -1,8034 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 1, - "id": "f9a03d7c", - "metadata": {}, - "outputs": [], - "source": [ - "import json\n", - "import os\n", - "import pandas as pd\n", - "import numpy as np\n", - "import plotly.express as px\n", - "import cv2\n", - "from tqdm.notebook import tqdm \n", - "from utils import *" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "7e671b5a", - "metadata": {}, - "outputs": [], - "source": [ - "path_video_OpenPifPaf_detection = r'..\\Inference\\test\\videos\\turn180_1d.mp4.openpifpaf.json'\n", - "\n", - "video_json = []\n", - "for line in open(path_video_OpenPifPaf_detection, 'r'):\n", - " video_json.append(json.loads(line))\n", - "\n", - "keypoints_3d_path = r'karussel_24kps.csv'\n", - "keypoints_3d = pd.read_csv(keypoints_3d_path, index_col=0).astype(float)\n", - "\n", - "axes_3d = np.float32([[0,0,0],\n", - " [1,0,0],\n", - " [0,1,0],\n", - " [0,0,1]])" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "id": "1beeef98", - "metadata": {}, - "outputs": [], - "source": [ - "def pict_points(size=100):\n", - " s = size//2\n", - " return np.float32([[0,0,0],\n", - " [-s,-s, 0],\n", - " [s, -s, 0],\n", - " [s, s, 0],\n", - " [-s, s, 0]])\n", - "\n", - "from functions_shield import *\n", - "logo, pts_pict = readShield(\"coca-cola.png\")" - ] - }, - { - "cell_type": "markdown", - "id": "99354896", - "metadata": {}, - "source": [ - "### video" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "id": "3164afcb", - "metadata": { - "scrolled": true - }, - "outputs": [ - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "d11eec7ddd3a434082a3c453f81bc877", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - " 0%| | 0/375 [00:00score:\n", - " score = i['score']\n", - " ann = i\n", - " rvec = []\n", - " if ann != []:\n", - " keypoints_2d, bbox, score = encode(ann)\n", - " conf_keypoints_2d = keypoints_2d[keypoints_2d['conf']>0.35]\n", - " if len(conf_keypoints_2d)>5:\n", - " rvec, tvec, camMatrx, dist = fit((1920, 1080), conf_keypoints_2d, keypoints_3d, focus=1)\n", - "\n", - " imgpts = cv.projectPoints(box_pict, rvec, tvec, camMatrx, dist)[0][:, 0].astype(int)\n", - " imgpts_list.append(imgpts)\n", - " \n", - " imgpts = imgpts_filt_list[number]\n", - " img = overlaying(logo, img, pts_pict, imgpts[1:])\n", - " \n", - " for p in imgpts[1:]:\n", - " img = cv.circle(img, p.astype(int), 5, (0,0,0), -1)\n", - "# for p in conf_keypoints_2d[['x', 'y']].values:\n", - "# img = cv.circle(img, p.astype(int), 5, (0,0,0), -1)\n", - " number += 1\n", - " \n", - " out.write(img)\n", - " \n", - "video.release()\n", - "out.release()" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "id": "ada19ded", - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - " \n", - " " - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.plotly.v1+json": { - "config": { - "plotlyServerURL": "https://plot.ly" - }, - "data": [ - { - "hovertemplate": "variable=x0
index=%{x}
value=%{y}", - "legendgroup": "x0", - "line": { - "color": "#636efa", - "dash": "solid" - }, - "marker": { - "symbol": "circle" - }, - "mode": "lines", - "name": "x0", - "showlegend": true, - "type": "scattergl", - "x": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332 - ], - "xaxis": "x", - "y": [ - 1112.7616798049653, - 1110.7291916863508, - 1108.6951042052044, - 1106.6591287797173, - 1104.6209768280803, - 1102.5803597684844, - 1100.5369890191203, - 1098.4905759981789, - 1096.4408321238514, - 1094.387468814328, - 1092.3301974878004, - 1090.268729562459, - 1088.2027764564948, - 1086.1320495880987, - 1084.0562603754615, - 1081.975120236774, - 1079.8883405902275, - 1077.7956328540124, - 1075.69670844632, - 1073.591278785341, - 1071.4790552892662, - 1069.3597493762866, - 1067.2330724645929, - 1065.0987359723763, - 1062.9564513178275, - 1060.8059299190136, - 1058.688509365887, - 1056.5842487937339, - 1054.4044032706192, - 1052.1454619582455, - 1049.8625110420303, - 1047.5573625675465, - 1045.2376044756304, - 1042.905048811856, - 1040.5939205869813, - 1038.2587601076957, - 1035.9337923847577, - 1033.6532424289264, - 1031.333461686441, - 1029.0408616275497, - 1026.7237536522846, - 1024.3566332192058, - 1022.0047792700793, - 1019.6417812406793, - 1017.299825590495, - 1014.9575981334746, - 1012.6523817072818, - 1010.350630818247, - 1008.0831728916805, - 1005.9512106728309, - 1003.8144238826435, - 1001.7031869350345, - 999.7446601280853, - 997.7712065957295, - 995.897981834127, - 994.0687671293773, - 992.2268907561867, - 990.5185621417223, - 988.8540170784142, - 987.2611384175159, - 985.7675825045849, - 984.3419556500697, - 982.9584135539862, - 981.6115200796155, - 980.3277990440317, - 979.1126865839533, - 977.9007905047671, - 976.7499150602498, - 975.6967768238233, - 974.6808534733511, - 973.6944438151484, - 972.7293936441367, - 971.7828716391082, - 970.8840064326486, - 969.9968742212734, - 969.1499241204785, - 968.279915739768, - 967.4618904164312, - 966.5995152776965, - 965.752066864369, - 964.9195451764487, - 964.0959478129752, - 963.2750458672913, - 962.4561598223072, - 961.6059706900506, - 960.749756506264, - 959.9183446962572, - 959.0510996850452, - 958.1726199912811, - 957.2540034880763, - 956.3573580374432, - 955.4533285011003, - 954.5771591654416, - 953.7316813516748, - 952.8606763458989, - 952.0255724930371, - 951.2287481029038, - 950.4459444153912, - 949.6735373393533, - 948.9134521732116, - 948.140750639768, - 947.4157285554626, - 946.7129946317045, - 946.0335681441285, - 945.4106548278586, - 944.7859974177248, - 944.2456227773027, - 943.7634601009113, - 943.2810256176841, - 942.8517067203139, - 942.4698407663851, - 942.0973521482966, - 941.7017146480136, - 941.3738250015889, - 940.9952433802613, - 940.65641350869, - 940.3296790413181, - 939.987157126892, - 939.6919749030593, - 939.4157965071726, - 939.1566966408111, - 938.9657976397011, - 938.7230741352051, - 938.5497972772921, - 938.3845387210395, - 938.1980565810136, - 938.0787560306048, - 937.964755713497, - 937.7939477676769, - 937.6806949193677, - 937.5948492603494, - 937.5062628824021, - 937.4111984415315, - 937.3056920880467, - 937.191329361824, - 937.0694692970434, - 936.9678814921101, - 936.8819225802437, - 936.8069491946628, - 936.7116808986655, - 936.6560737501454, - 936.5822102424784, - 936.5442705382947, - 936.5109742008918, - 936.4510407935668, - 936.4510634441364, - 936.3943011165638, - 936.3673469386661, - 936.3389204737407, - 936.2777412850838, - 936.2704025005135, - 936.2592131191007, - 936.2721692449472, - 936.2784434527437, - 936.3062583522883, - 936.3250130239682, - 936.3631565832787, - 936.3579016511172, - 936.3909714828236, - 936.3998052049917, - 936.380891979324, - 936.3249450722592, - 936.2226777502361, - 936.102992140143, - 935.9359668394569, - 935.8040046206069, - 935.6454506329742, - 935.4579265667439, - 935.2450565130623, - 934.984053998849, - 934.6787696209469, - 934.3330539761984, - 933.885931731074, - 933.485537611162, - 933.0178486487848, - 932.5133525107069, - 932.0083127589571, - 931.4211193910438, - 930.8410836031439, - 930.2454189221774, - 929.5847018051419, - 928.9213798725954, - 928.258850709987, - 927.6271489726885, - 926.9974857866592, - 926.3792611383096, - 925.728600874204, - 925.0868649345452, - 924.4569978933893, - 923.8417178190954, - 923.2492921695905, - 922.7143989670265, - 922.2126661984472, - 921.6928582752781, - 921.2211601620706, - 920.7778432126494, - 920.3427257694458, - 920.0396837979401, - 919.729982558954, - 919.5368185008781, - 919.4062379667774, - 919.3162472535112, - 919.3564973158001, - 919.4661260729636, - 919.6486443632984, - 919.9337470836318, - 920.3184896599076, - 920.7730639424508, - 921.3528958752238, - 921.9628983667864, - 922.6311807740889, - 923.358762372766, - 924.1670706017179, - 925.0182563590396, - 925.938843461805, - 926.8960791862834, - 927.8243448321642, - 928.7752157465677, - 929.740764230112, - 930.7450225372082, - 931.7851593466488, - 932.8847539014517, - 934.0616095493713, - 935.2214319689049, - 936.3609368274518, - 937.529660920863, - 938.7180910098793, - 939.8900767853213, - 941.127341502529, - 942.2758612878015, - 943.4495458559682, - 944.6177942874161, - 945.7500056625321, - 946.788715486084, - 947.7614668507806, - 948.6629368727516, - 949.5521755871054, - 950.4615959590275, - 951.3647874242927, - 952.2029264534891, - 953.0881107158732, - 953.9024666469248, - 954.7048177760556, - 955.4358875624607, - 956.165598314686, - 956.8990464109056, - 957.6413282292931, - 958.4299531132089, - 959.2586921559958, - 960.0207705722678, - 960.844934199983, - 961.7247276267875, - 962.6921108064746, - 963.6289836688268, - 964.4873949578707, - 965.3481392555897, - 966.3008675167054, - 967.2525312010468, - 968.2925547576391, - 969.247751930848, - 970.2714670772837, - 971.3931685880766, - 972.5568642550224, - 973.7329724341431, - 974.9505085051751, - 976.1317130624695, - 977.4816190626053, - 978.9315499783678, - 980.3713334389215, - 981.9471788714342, - 983.6170468186126, - 985.3182631542034, - 987.0469772813634, - 988.8141973769486, - 990.5035221634668, - 992.2720333415227, - 994.0767854310375, - 995.7949217421657, - 997.6245668077389, - 999.3187614667343, - 999.9089220592731, - 1001.8062470269958, - 1003.7018732019939, - 1005.5359577792208, - 1007.4311309428257, - 1009.3808240276065, - 1011.3465084145687, - 1013.2956578856778, - 1015.115835013132, - 1016.9565335567004, - 1019.050918480481, - 1021.0381435591913, - 1023.0260028538523, - 1024.8126344876378, - 1026.7151690863827, - 1028.6806949193572, - 1030.545335115058, - 1033.4795352101899, - 1034.946975016301, - 1036.6372737773145, - 1038.2496545786914, - 1039.8294638608947, - 1041.250016987806, - 1042.4619130669919, - 1043.56116786325, - 1044.3315137374489, - 1045.3600534552224, - 1046.1823597362252, - 1046.953714780542, - 1047.5621868873334, - 1047.9969836797804, - 1048.247312780942, - 1048.3023818138768, - 1048.151398401644, - 1047.7835701673023, - 1047.188104733911, - 1046.3542097245283, - 1045.2710927622136, - 1043.9279614700258, - 1042.3140234710236, - 1040.4184863882658, - 1038.2305578448118, - 1035.73944546372, - 1032.9343568680495, - 1029.8044996808592, - 1026.339081525208, - 1022.5273100241549, - 1018.3583928007585, - 1013.821537478078, - 1008.9059516791721, - 1003.6008430270998, - 997.89541914492, - 991.7788876556915 - ], - "yaxis": "y" - }, - { - "hovertemplate": "variable=y0
index=%{x}
value=%{y}", - "legendgroup": "y0", - "line": { - "color": "#EF553B", - "dash": "solid" - }, - "marker": { - "symbol": "circle" - }, - "mode": "lines", - "name": "y0", - "showlegend": true, - "type": "scattergl", - "x": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332 - ], - "xaxis": "x", - "y": [ - 792.4565645642228, - 793.8881382193259, - 795.2980486760098, - 796.6862422924339, - 798.0526654267578, - 799.397264437141, - 800.7199856817426, - 802.0207755187224, - 803.2995803062397, - 804.556346402454, - 805.7910201655247, - 807.0035479536115, - 808.1938761248736, - 809.3619510374704, - 810.5077190495615, - 811.6311265193063, - 812.7321198048644, - 813.810645264395, - 814.8666492560578, - 815.9000781380121, - 816.9108782684175, - 817.8989960054332, - 818.8643777072189, - 819.8069697319339, - 820.7267184377378, - 821.623570182694, - 822.4754581076756, - 823.3017735395083, - 824.1365149832557, - 824.9493080250005, - 825.7690547916318, - 826.5660603863222, - 827.3374934878648, - 828.0807492807477, - 828.7934494551571, - 829.4676663117109, - 830.1014745519881, - 830.693175383264, - 831.2945706583549, - 831.9048676073232, - 832.4649029422119, - 833.0072028810552, - 833.5056966181727, - 833.9935898886885, - 834.4721284739337, - 834.9372352713697, - 835.3262361547418, - 835.7269700331989, - 836.1098552627623, - 836.4399873155835, - 836.7093252394321, - 837.0072934833333, - 837.1822464834015, - 837.3451493804091, - 837.4362726221588, - 837.5408503022875, - 837.5736483271578, - 837.5677591790455, - 837.4652653513258, - 837.3263494075898, - 837.1468209924503, - 836.8963056919905, - 836.6094815283628, - 836.2890665699266, - 835.9382318964347, - 835.5872386689553, - 835.1165145302431, - 834.5834107226823, - 833.9598178893226, - 833.3357267434303, - 832.6570703752228, - 831.9881084508305, - 831.3023171531794, - 830.5412127114027, - 829.7644114248504, - 828.9462954992351, - 828.1205236810739, - 827.2355206232472, - 826.3578110488513, - 825.516183831927, - 824.6220072933872, - 823.7371627895479, - 822.8325216878244, - 821.911594826514, - 820.9514824796886, - 819.9883349565285, - 818.9937031415385, - 818.0572379894401, - 817.065482796797, - 816.0494914946158, - 815.0079050487169, - 813.9717773901064, - 812.9457518855651, - 811.9346984075702, - 810.970350404218, - 810.0200684046259, - 809.0248023736854, - 808.0491517360718, - 807.0931164917855, - 806.124510181337, - 805.1435593104228, - 804.1504903847393, - 803.1455299099835, - 802.1289043918518, - 801.100840336041, - 800.0615642482474, - 799.0055267389042, - 797.932954313708, - 796.8764864435412, - 795.8099390698746, - 794.7395410993661, - 793.6333325782217, - 792.5505900472473, - 791.4917665178356, - 790.3984914719683, - 789.3036308862247, - 788.2018618767341, - 787.0936374548901, - 785.9851865273496, - 784.9093750706915, - 783.7811954969753, - 782.7189743821143, - 781.605291172982, - 780.4994224103825, - 779.4015946000133, - 778.2853971776482, - 777.1566060385513, - 776.0474076422117, - 774.9899884481191, - 773.9310743164287, - 772.8113887063357, - 771.7481256652704, - 770.6549185711121, - 769.5896849304862, - 768.5246551449872, - 767.4966590408854, - 766.5101134792645, - 765.5636594259453, - 764.5968878116391, - 763.6728125211458, - 762.7687603342333, - 761.8884685948963, - 761.035448141432, - 760.2396203763639, - 759.4984937370289, - 758.750526625656, - 757.9927744681894, - 757.3133026794741, - 756.6556660399127, - 755.9898298941335, - 755.3709936804028, - 754.795306801878, - 754.232281591794, - 753.6836168428756, - 753.1241477722285, - 752.5873066206738, - 752.1005232280713, - 751.5997644339877, - 751.1444200320763, - 750.6757797457728, - 750.2527803573383, - 749.8220344740795, - 749.4153887969408, - 749.0586876259065, - 748.686312260666, - 748.3560669549963, - 748.0400688576447, - 747.7044327163956, - 747.4329203378594, - 747.1914199641249, - 746.9458198372818, - 746.7266076240945, - 746.4994450609562, - 746.3154544835933, - 746.113660558476, - 745.9185485514091, - 745.781240798119, - 745.640988470773, - 745.4960927766463, - 745.3390790277505, - 745.1682484313611, - 745.0409522298615, - 744.8911187115485, - 744.7707762349354, - 744.5876690297891, - 744.4264649255059, - 744.2808217625804, - 744.0858003577922, - 743.8621486329513, - 743.6308410155647, - 743.3866678746103, - 743.124872590459, - 742.8677886247972, - 742.5793789212934, - 742.2240594350081, - 741.8197467665447, - 741.3581734579759, - 740.863938027955, - 740.2708555119298, - 739.6310675212617, - 738.911708079372, - 738.080364221074, - 737.131486556801, - 736.092165167868, - 734.9899431469844, - 733.7997689641038, - 732.5294570657599, - 731.1490860494289, - 729.7146481233152, - 728.1971279076819, - 726.6270130692939, - 724.9497836869751, - 723.2083852408045, - 721.4138032570678, - 719.5126503430722, - 717.5696391763415, - 715.6175224806068, - 713.6040453916581, - 711.5686425512773, - 709.4597386123432, - 707.2048970530784, - 704.9405649051251, - 702.7061768102648, - 700.4767944912995, - 698.2010691068065, - 695.9513012751459, - 693.7085551200804, - 691.4747559400312, - 689.2576049286835, - 687.1238533148306, - 684.9901923032564, - 682.9293755237148, - 680.9171442160975, - 678.9825137601418, - 677.0690389362503, - 675.2705610545318, - 673.5042243311634, - 671.7459965117339, - 670.0628553307333, - 668.4036784524352, - 666.8558517745943, - 665.4363858750271, - 663.9971460281452, - 662.5189698520144, - 661.12075018679, - 659.7975039071463, - 658.5384719924938, - 657.1997100726317, - 655.9313914244178, - 654.7748986386243, - 653.574056037433, - 652.3873473917107, - 651.1607057916747, - 649.9841219505912, - 648.8769847560909, - 647.7408095312842, - 646.6595845884768, - 645.5994246754552, - 644.5530816099273, - 643.374345964726, - 642.1045776800537, - 640.8317289179075, - 639.5520623342929, - 638.2731658700471, - 636.9167138552793, - 635.5539876327148, - 634.2176266732369, - 632.8161679765509, - 631.4135314502424, - 630.0407710253178, - 628.5897528822118, - 627.2637885342083, - 625.9653899294838, - 624.7029377788123, - 623.2386237513147, - 621.7683752745655, - 620.6765272145869, - 619.4954359101409, - 618.5876690298039, - 617.8797934267326, - 617.22424063958, - 616.3680038052238, - 615.7366418264701, - 615.3223402567857, - 615.11105574298, - 614.9342453961999, - 614.7627579332903, - 614.8430995038808, - 615.2801195949361, - 615.9695576343025, - 616.8775283697665, - 617.9106435026121, - 618.9686063103765, - 620.4159324106278, - 622.012684318938, - 623.8134952093316, - 625.7373439941284, - 627.5484835442878, - 629.3767695756814, - 631.4128292825827, - 633.3988312305315, - 636.2569707127392, - 639.0843280707763, - 641.8371424040566, - 644.4494326031548, - 647.4866927902481, - 650.3094973837833, - 652.7175473962409, - 655.5286813709516, - 658.3226742269233, - 661.0870174097697, - 663.809202365029, - 666.4767205382393, - 669.0770633749386, - 671.597722320665, - 674.0261888209563, - 676.349954321351, - 678.556510267387, - 680.6333481046022, - 682.5679592785348, - 684.3478352347228, - 685.9604674187042, - 687.3933472760173, - 688.6339662521999, - 689.6698157927902, - 690.4883873433264, - 691.0771723493463, - 691.423662256388, - 691.5153485099895, - 691.3397225556891, - 690.8842758390248, - 690.1364998055345, - 689.0838859007564 - ], - "yaxis": "y" - }, - { - "hovertemplate": "variable=x1
index=%{x}
value=%{y}", - "legendgroup": "x1", - "line": { - "color": "#00cc96", - "dash": "solid" - }, - "marker": { - "symbol": "circle" - }, - "mode": "lines", - "name": "x1", - "showlegend": true, - "type": "scattergl", - "x": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332 - ], - "xaxis": "x", - "y": [ - 978.3584399733129, - 976.4120916613707, - 974.4761920378542, - 972.550171753914, - 970.6334614607014, - 968.7254918093671, - 966.8256934510623, - 964.9334970369379, - 963.0483332181446, - 961.1696326458338, - 959.2968259711561, - 957.4293438452627, - 955.5666169193044, - 953.7080758444322, - 951.8531512717971, - 950.0012738525501, - 948.1518742378421, - 946.304383078824, - 944.4582310266469, - 942.6128487324617, - 940.7676668474193, - 938.9221160226707, - 937.075626909367, - 935.2276301586589, - 933.3775564216976, - 931.5248363495255, - 929.5865138507148, - 927.6654284354169, - 925.7335839995295, - 923.7953974041369, - 921.8228725451371, - 919.885025708289, - 917.932999614833, - 916.0033975853424, - 914.0298081495682, - 912.0692427913498, - 910.0721647148364, - 908.1333212529235, - 906.1705361388782, - 904.2841060951627, - 902.4031801398752, - 900.6278284897815, - 898.8487847968328, - 896.9272237195719, - 894.9913474822847, - 893.04727173878, - 891.0948832362093, - 889.1660286755174, - 887.2599152867658, - 885.5375886202505, - 883.9039389339611, - 882.0786880789022, - 880.4730344967148, - 878.9585494574163, - 877.4809395455272, - 876.0711454392055, - 874.6741942058823, - 873.4115835012232, - 872.1746132414213, - 870.9986409657186, - 869.933656481359, - 868.9173254206329, - 867.919273369624, - 866.9941335023565, - 866.1048494868636, - 865.3111508753436, - 864.4956171146696, - 863.770345874098, - 863.102697682746, - 862.4655824592982, - 861.8314571110459, - 861.2253731680348, - 860.6128791138092, - 860.0121180546687, - 859.4789689459687, - 858.9245736029259, - 858.4365444289921, - 857.9577566874806, - 857.4781308748913, - 856.9929103715958, - 856.5026614418354, - 856.0341344083805, - 855.6138530883054, - 855.2092912635754, - 854.7934721057237, - 854.359826949548, - 853.9870212234842, - 853.5883485468663, - 853.1947495978527, - 852.804525583719, - 852.4215271013071, - 852.0817912069493, - 851.7298919566833, - 851.4280504653698, - 851.1412489523118, - 850.8666560963015, - 850.6127658609623, - 850.4087068788788, - 850.2511948174506, - 850.0778953089678, - 849.9174839746228, - 849.745135790066, - 849.5946227546631, - 849.4670773968974, - 849.3043557044468, - 849.2247842532248, - 849.1373530543302, - 849.1335251080574, - 849.0687897799638, - 849.1253935535487, - 849.2174228180847, - 849.3062357017288, - 849.4175632516167, - 849.5826859044514, - 849.7414210966415, - 849.9188203582328, - 850.1130716436527, - 850.3545493668174, - 850.5821649413492, - 850.7934268045849, - 851.1034904526857, - 851.4241772179578, - 851.7851819972278, - 852.1305125822919, - 852.4627737886611, - 852.8373915602982, - 853.2507418060568, - 853.6992004347912, - 854.1791433553557, - 854.6278964414959, - 855.1062085210446, - 855.6157783867266, - 856.1258918660806, - 856.6322453508706, - 857.1569457970869, - 857.7278760559827, - 858.2550454142921, - 858.760334322308, - 859.2711726198912, - 859.7883530769794, - 860.2802554983255, - 860.8331332532009, - 861.3831796868686, - 861.9047770050411, - 862.4311309428426, - 862.9248454097612, - 863.4397608098836, - 863.9500328432251, - 864.4240413145383, - 864.8832136627227, - 865.3489773266789, - 865.8163491810808, - 866.2863485015638, - 866.7335839995364, - 867.1593014563305, - 867.6770708282302, - 868.1327549886867, - 868.5815533759661, - 869.0198418989223, - 869.4766359372923, - 869.8690797072533, - 870.2530521641604, - 870.6198328386943, - 870.9667036624955, - 871.2911730729011, - 871.6176130828674, - 871.8851616117129, - 872.1776937188952, - 872.375976805715, - 872.5168406984417, - 872.6371152233461, - 872.6766178168364, - 872.7196765497634, - 872.6796982943104, - 872.6261523476296, - 872.5430474075405, - 872.43525334652, - 872.3018641417814, - 872.0886996306939, - 871.8858637793721, - 871.665586989411, - 871.4116514529323, - 871.1608869962064, - 870.9443475502393, - 870.7609005865481, - 870.5239529773157, - 870.2703345488123, - 870.0632856915335, - 869.8215361615331, - 869.587238668951, - 869.3166323132011, - 869.110013816746, - 868.9380280413039, - 868.771093342896, - 868.735463996818, - 868.7216471493244, - 868.7377970054933, - 868.8182518289321, - 868.9704863076292, - 869.1751115539541, - 869.4655598087277, - 869.8102108767021, - 870.2626786562665, - 870.7376158009358, - 871.358558517645, - 872.0663435184377, - 872.7691680444744, - 873.578110489377, - 874.4595121066275, - 875.3794876440121, - 876.3627488730318, - 877.439556954755, - 878.522072980033, - 879.6074656276579, - 880.7779111643629, - 881.9650728214784, - 883.1325737841277, - 884.3348207206379, - 885.582029037927, - 886.85777707299, - 888.1363337786909, - 889.4450157420422, - 890.7196765497612, - 891.9814038822035, - 893.3043330538721, - 894.5708170059432, - 895.8190445988673, - 897.1020634667915, - 898.3759088540029, - 899.6938549003459, - 900.8792045118885, - 902.0496047474542, - 903.2103784909137, - 904.387709800796, - 905.5374074156908, - 906.615280074188, - 907.6475118348168, - 908.5861514416026, - 909.4627058369456, - 910.3084554575487, - 911.1870937053004, - 912.1569910982196, - 913.1002740717863, - 913.9314820266663, - 914.774037916947, - 915.5420281319007, - 916.3528732246546, - 917.2063466895121, - 918.0169879271392, - 918.9028970077525, - 919.8057034133334, - 920.6464019569017, - 921.4902715802226, - 922.3053523295035, - 923.1833337107352, - 924.0658452058991, - 924.8412421571325, - 925.7246370245132, - 926.5659697840321, - 927.5042016805642, - 928.4161362657187, - 929.2547283063084, - 930.1969014019617, - 931.125008493855, - 932.1098779133207, - 933.1728238464107, - 934.0843280707419, - 935.1507395409902, - 936.2219982331462, - 937.2601417924568, - 938.3657160976503, - 939.5065346892378, - 940.5973634735815, - 941.8095766607432, - 942.9877913428422, - 944.1211352464413, - 945.3490226278087, - 946.5604883461713, - 947.6978414006007, - 948.8627601983083, - 949.9535889826521, - 951.1428344921765, - 952.2822487484449, - 953.4864209833763, - 954.6497315906381, - 955.6992004347794, - 956.6854968401339, - 957.6861537066538, - 958.6996987473117, - 959.6931527326792, - 960.7141271601859, - 961.6874900902637, - 962.4797390653252, - 963.2790323675518, - 964.1776484177453, - 964.9540193434738, - 965.8214682098127, - 966.2778998390683, - 967.0252553850601, - 967.5714512218854, - 968.1720990281775, - 968.436431176131, - 968.625925841922, - 968.6861990077919, - 968.825726516909, - 968.6459262949332, - 968.079707354527, - 967.2023148881067, - 966.4011732995083, - 965.36179065724, - 964.0689699004903, - 962.5075139683352, - 960.6622257998505, - 958.5179083341125, - 956.0593645101968, - 953.2713972671796, - 950.1388095441368, - 946.6464042801446, - 942.7789844142785, - 938.5213528856149, - 933.8583126332295, - 928.7746665961984, - 923.2552177135975, - 917.2847689245028, - 910.8481231679903, - 903.930083383136, - 896.5154525090157, - 888.5890334847055, - 880.1356292492815, - 871.1400427418193, - 861.5870769013952, - 851.4615346670851, - 840.7482189779648 - ], - "yaxis": "y" - }, - { - "hovertemplate": "variable=y1
index=%{x}
value=%{y}", - "legendgroup": "y1", - "line": { - "color": "#ab63fa", - "dash": "solid" - }, - "marker": { - "symbol": "circle" - }, - "mode": "lines", - "name": "y1", - "showlegend": true, - "type": "scattergl", - "x": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332 - ], - "xaxis": "x", - "y": [ - 750.360738780273, - 752.2714192208091, - 754.0859316150267, - 755.8070858241704, - 757.4376917094853, - 758.9805591322164, - 760.4384979536085, - 761.8143180349066, - 763.1108292373557, - 764.3308414222005, - 765.4771644506862, - 766.5526081840576, - 767.5599824835597, - 768.5020972104373, - 769.3817622259356, - 770.2017873912993, - 770.9649825677733, - 771.6741576166027, - 772.3321223990323, - 772.9416867763072, - 773.5056606096721, - 774.0268537603721, - 774.5080760896521, - 774.9521374587571, - 775.3618477289319, - 775.7400167613312, - 776.1498561687922, - 776.5293891140457, - 776.9160116876033, - 777.262112392036, - 777.5678044801921, - 777.8658406758022, - 778.1627896440688, - 778.4598971663228, - 778.7854991052117, - 779.0180978050688, - 779.2779451402293, - 779.5412353619785, - 779.8321139775755, - 780.116355976262, - 780.3335522887492, - 780.5413939159657, - 780.7331989398621, - 780.9085143490447, - 781.0731160387771, - 781.2274570204528, - 781.3724433168583, - 781.4712451017231, - 781.5138961243964, - 781.4964325351871, - 781.4151169901012, - 781.3579016511354, - 781.2364945977481, - 781.0485175201246, - 780.8184556840694, - 780.5121973316718, - 780.1340460711677, - 779.7742191215199, - 779.3409137238891, - 778.7749665903191, - 778.2265509976669, - 777.6105461051437, - 776.9219687874245, - 776.1826994948017, - 775.3942105143042, - 774.5317900744301, - 773.6566400144062, - 772.7125416203315, - 771.7025527191109, - 770.6890076784533, - 769.6758703480496, - 768.6087340595719, - 767.4924686854979, - 766.3645835691874, - 765.1449409951767, - 763.897913882445, - 762.6232757252956, - 761.3210265237283, - 759.9114815736729, - 758.5507033000996, - 757.1858705745566, - 755.8234388093977, - 754.4967269925959, - 753.20709415833, - 751.9239393869879, - 750.6168882646523, - 749.3203923077791, - 748.0691295385205, - 746.8600421299725, - 745.5724251964067, - 744.2946839112134, - 743.0563999183713, - 741.8019207682208, - 740.4755940111029, - 739.1718272213684, - 737.8937914787696, - 736.6124714035699, - 735.3579016511408, - 734.0688803822561, - 732.8020793222095, - 731.5287095969611, - 730.2790323675788, - 729.0187093704556, - 727.74581530717, - 726.4908378444869, - 725.1930281545734, - 723.856236834272, - 722.6288251148674, - 721.3266212144396, - 720.0336134452941, - 718.7807424855896, - 717.4813019546604, - 716.1664590363611, - 714.8349679493605, - 713.4798070170632, - 712.0730933882156, - 710.6781807061619, - 709.20813608454, - 707.7260866609969, - 706.2627466079948, - 704.7309565334746, - 703.1612041042011, - 701.5837504812429, - 700.0288568256675, - 698.4945978390541, - 696.9584135540196, - 695.4301569683666, - 693.8548551495261, - 692.2685451538299, - 690.7985005322078, - 689.3306983169823, - 687.895626174918, - 686.4704976329353, - 685.0855738521025, - 683.679652993193, - 682.2559061359598, - 680.8761013838703, - 679.516319735362, - 678.1790527530976, - 676.8283766335934, - 675.551790527453, - 674.2922829508375, - 673.019252984134, - 671.7931096966305, - 670.6476250876926, - 669.5577476272747, - 668.4660128201444, - 667.4059661599711, - 666.378513669541, - 665.4376090057888, - 664.4660581212842, - 663.5555505220182, - 662.647262678579, - 661.7942422251148, - 660.9638496907424, - 660.1556320640694, - 659.3689098280054, - 658.6409658202136, - 657.8794310176133, - 657.1626310900954, - 656.4299304626746, - 655.6792905840816, - 654.94063285684, - 654.2436521777759, - 653.5532175133441, - 652.8073342543803, - 652.126254275219, - 651.42089288538, - 650.7788624883156, - 650.1699019229575, - 649.5579741329736, - 648.9982785566301, - 648.4339169629359, - 647.9200887901575, - 647.4149810866987, - 646.8767809009643, - 646.3606876712195, - 645.8364402363966, - 645.3594645404579, - 644.8733153638061, - 644.4014586966111, - 643.929398174289, - 643.4220027632945, - 642.9089673604541, - 642.3287503679967, - 641.7643208225938, - 641.2134136672789, - 640.6418038912932, - 640.1011800946047, - 639.525810324055, - 638.9358762372128, - 638.2929624679316, - 637.6179301908699, - 636.9587306620018, - 636.1662098801041, - 635.3271874786909, - 634.4849713469555, - 633.5714512219242, - 632.6162087475761, - 631.5846791546072, - 630.41033771992, - 629.2095857210073, - 627.9492174227449, - 626.5967066070981, - 625.1199800674258, - 623.5728782078143, - 621.8975967744864, - 620.1280210196563, - 618.2718521370091, - 616.3581055062816, - 614.3250130240059, - 612.2082719879692, - 610.0173956374291, - 607.7889872929595, - 605.4688667919293, - 603.0887675824343, - 600.6866520192282, - 598.2154748691231, - 595.6874674397367, - 593.1417246143047, - 590.5529683570853, - 587.928560103218, - 585.3027248634621, - 582.6568665201249, - 579.9726154612113, - 577.2258261794611, - 574.5368638020576, - 571.822985798026, - 569.1519626717949, - 566.4415049037822, - 563.8985707489885, - 561.2857142856487, - 558.6926997213328, - 556.1504677341986, - 553.6371378739528, - 551.1901062311074, - 548.7823959771947, - 546.4138938593668, - 544.0580760605494, - 541.6884187636687, - 539.3638587509847, - 536.9988221703148, - 534.6844322634091, - 532.3881628122326, - 530.0983487734098, - 527.8739269292006, - 525.6885999682279, - 523.4665564338333, - 521.2556343291426, - 518.9440757434444, - 516.5965933542625, - 514.3251715780051, - 512.0329112776589, - 509.62868921147424, - 507.23026569112295, - 504.7784774286484, - 502.27298466550565, - 499.798908242484, - 497.3237219415489, - 494.7942648757039, - 492.21042379210087, - 489.6251330720396, - 486.95836825290473, - 484.3334390359352, - 481.65876916798834, - 478.9131577158607, - 476.08072663021926, - 473.2039683797495, - 470.29828535182173, - 467.46431402744327, - 464.56671725288464, - 461.732089061986, - 458.909873383262, - 456.0814740990204, - 453.31907857477336, - 450.6622347051502, - 448.0115291399056, - 445.4380167160683, - 442.97411039882485, - 440.54544836797504, - 438.3071870257025, - 436.0222202087874, - 433.81770821531103, - 431.65453351146743, - 429.51908310489, - 427.59439624901574, - 425.8690344061656, - 424.2991460734743, - 422.6599696481873, - 421.20288115241186, - 419.8988652064109, - 418.71845341905464, - 417.8295091621066, - 417.04627511377043, - 416.4717887154376, - 415.9140637386545, - 415.5933316722429, - 415.81748170961646, - 415.5860834899512, - 415.4230899906647, - 415.37781150191086, - 415.2278647307495, - 415.139754014765, - 415.0797300051612, - 415.0371469341969, - 414.92144782436435, - 414.7861333212046, - 414.7852499489878, - 414.7743327229294, - 414.72082793123684, - 414.6143738450063, - 414.4446087352856, - 414.2011708731225, - 413.8736985295648, - 413.4518299756604, - 412.9252034824571, - 412.2834573210027, - 411.51622976234495, - 410.61315907753175, - 409.56388353761093, - 408.3580414136302, - 406.9852709766375, - 405.43521049768054, - 403.6974982478072, - 401.7617724980653, - 399.6176715195026, - 397.25483358316694, - 394.6628969601062, - 391.8314999213681, - 388.7502807380005, - 385.40887768105125, - 381.7969290215681, - 377.9040730305989 - ], - "yaxis": "y" - }, - { - "hovertemplate": "variable=x2
index=%{x}
value=%{y}", - "legendgroup": "x2", - "line": { - "color": "#FFA15A", - "dash": "solid" - }, - "marker": { - "symbol": "circle" - }, - "mode": "lines", - "name": "x2", - "showlegend": true, - "type": "scattergl", - "x": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332 - ], - "xaxis": "x", - "y": [ - 1207.725019051324, - 1206.636130162435, - 1205.514103451412, - 1204.3597770635433, - 1203.1739891441182, - 1201.957577838425, - 1200.7113812917528, - 1199.4362376493903, - 1198.132985056626, - 1196.8024616587488, - 1195.4455056010474, - 1194.0629550288108, - 1192.6556480873276, - 1191.2244229218863, - 1189.7701176777762, - 1188.2935705002856, - 1186.7956195347033, - 1185.2771029263183, - 1183.7388588204192, - 1182.1817253622946, - 1180.6065406972336, - 1179.0141429705247, - 1177.405370327457, - 1175.7810609133187, - 1174.1420528733988, - 1172.4891843528494, - 1170.8218759200427, - 1169.110489478674, - 1167.4204172233572, - 1165.6991777841854, - 1164.006387460509, - 1162.2837889871575, - 1160.5377245236364, - 1158.8009467936765, - 1157.0680196605595, - 1155.253595777799, - 1153.4221613172226, - 1151.5789259098524, - 1149.7879227161222, - 1147.8980724363878, - 1145.9669528187294, - 1144.0574644950987, - 1142.1410450971507, - 1140.5130354027071, - 1139.003963849558, - 1137.5662189402733, - 1136.1785997416507, - 1134.8785023442015, - 1133.6649074722907, - 1132.2448526579124, - 1130.8603365873332, - 1129.8375274636837, - 1128.5633649684976, - 1127.3322159050986, - 1126.1718498718928, - 1125.0509864321775, - 1123.9438945388163, - 1122.8892160636528, - 1121.8605404424613, - 1120.8900541347307, - 1120.0363541641766, - 1119.2343880947296, - 1118.4246528798894, - 1117.6650660262803, - 1117.007542639567, - 1116.3594871909727, - 1115.7575030010703, - 1115.2113298148147, - 1114.654103150564, - 1114.1306031845402, - 1113.6378853426863, - 1113.1403655800646, - 1112.6934698406367, - 1112.2078869282263, - 1111.7650003396288, - 1111.3014564314994, - 1110.8124985842096, - 1110.331106027187, - 1109.8900314841624, - 1109.4305646785722, - 1109.0116423926768, - 1108.5683254432556, - 1108.1266846359895, - 1107.7449772360483, - 1107.3311739788962, - 1106.878479693635, - 1106.5035221634532, - 1106.092957937763, - 1105.736777729831, - 1105.3156356881086, - 1104.9190695144694, - 1104.5509298057557, - 1104.182654193624, - 1103.7854538040344, - 1103.3949126819252, - 1103.0406124712752, - 1102.6930847809535, - 1102.3874606445065, - 1102.1264581302933, - 1101.8479693763013, - 1101.607533579341, - 1101.3483657612705, - 1101.1313280027707, - 1100.958232349415, - 1100.771840811668, - 1100.6267865635539, - 1100.4596027088799, - 1100.3626582707268, - 1100.3104487076564, - 1100.3041065481516, - 1100.3447643206944, - 1100.395365693319, - 1100.365353688517, - 1100.4376543068774, - 1100.494620489577, - 1100.557113411274, - 1100.619130671008, - 1100.718408117836, - 1100.8602686356278, - 1100.95857210796, - 1101.071236041458, - 1101.2501755417863, - 1101.4294321500902, - 1101.6342839021113, - 1101.8367346937491, - 1102.0351989851258, - 1102.2545018005917, - 1102.4928310945734, - 1102.7541507167618, - 1102.9833744817395, - 1103.2697003328346, - 1103.5520396836691, - 1103.8547645471997, - 1104.1223357266147, - 1104.3844481187414, - 1104.6647942194456, - 1104.9337923847495, - 1105.1882715349, - 1105.4572470496341, - 1105.7106842735805, - 1106.0306462206233, - 1106.3282747059798, - 1106.6325851093864, - 1106.8869057055492, - 1107.237898933029, - 1107.6233436769642, - 1107.9812453281909, - 1108.3142087022195, - 1108.6836621439736, - 1109.0540216085142, - 1109.4487530860106, - 1109.8324990372214, - 1110.2080907833538, - 1110.5783596456154, - 1110.966998119873, - 1111.3979252076892, - 1111.804049921726, - 1112.2097442749389, - 1112.586332646136, - 1112.931776484049, - 1113.2440372374067, - 1113.5477134248626, - 1113.802804140394, - 1114.0723232688001, - 1114.3282747059789, - 1114.5637500281832, - 1114.745430247441, - 1114.9256834808095, - 1115.0774196469742, - 1115.2004122402377, - 1115.2738000859422, - 1115.3091349746144, - 1115.274003941069, - 1115.1948175495315, - 1115.0713492943046, - 1114.9091485649562, - 1114.7404018209756, - 1114.5326960971768, - 1114.2860313935596, - 1113.9795465354655, - 1113.6836168428335, - 1113.371605245742, - 1113.0435117441905, - 1112.6993363381794, - 1112.3772678881578, - 1112.0300346552417, - 1111.5835013249286, - 1111.198826700362, - 1110.8486941945293, - 1110.538200185605, - 1110.2458039818407, - 1109.9439624905272, - 1109.6695055379348, - 1109.4323993747148, - 1109.3014337809302, - 1109.1094249019068, - 1108.9242564949213, - 1108.7864957302384, - 1108.7420326619922, - 1108.771704908249, - 1108.8501211804185, - 1108.9836236380052, - 1109.284423203114, - 1109.6935830934854, - 1110.1901288816118, - 1110.7734943032522, - 1111.4368841875075, - 1112.1464132821643, - 1112.9589798182124, - 1113.8455684159155, - 1114.8091236493296, - 1115.8521370811175, - 1116.9442342973623, - 1118.054361367058, - 1119.2744343018921, - 1120.5398536771893, - 1121.8443905862925, - 1123.1336383608739, - 1124.51765611892, - 1125.9291263673967, - 1127.4181521663954, - 1129.0079730003893, - 1130.6951912839288, - 1132.3849464312705, - 1134.1322113749836, - 1135.9002695416461, - 1137.6901402068934, - 1139.4699766697804, - 1141.2871639220396, - 1143.1298104145985, - 1144.9707128132936, - 1146.7879906678315, - 1148.633219325332, - 1150.4130104870794, - 1152.1303087271301, - 1153.8462026318616, - 1155.5090036013057, - 1157.3080930484052, - 1159.0998663615037, - 1160.9322747965757, - 1162.7407189289454, - 1164.5571587124057, - 1166.3806881241703, - 1168.1890869554006, - 1170.0451425851998, - 1171.8342657816477, - 1173.6618496453818, - 1175.6004213004585, - 1177.6519060452995, - 1179.6051326189477, - 1181.7936533102427, - 1184.0886090283789, - 1186.5229790027834, - 1188.9410405670315, - 1191.1881809326112, - 1193.5055607147128, - 1195.980679063939, - 1198.5711567644528, - 1201.378898729163, - 1204.1635144622483, - 1206.9691952251192, - 1209.8922738905471, - 1212.851480214586, - 1215.9948356699754, - 1219.2341615890216, - 1222.4446533328887, - 1225.8633038119478, - 1229.473578110346, - 1233.2229948581767, - 1237.159392058566, - 1241.2600058890032, - 1245.4221613172117, - 1249.607329724197, - 1253.9683118528967, - 1258.016829373112, - 1262.0310992319985, - 1266.3689551290738, - 1270.8732247614544, - 1275.4369294886278, - 1280.0651883393373, - 1282.460780538481, - 1287.3149561709974, - 1292.1691997552227, - 1296.8774151168386, - 1301.566309542533, - 1306.4360461164074, - 1311.241930734405, - 1316.189902375891, - 1320.8543568369205, - 1325.7344447211299, - 1330.773652857214, - 1335.8158282179238, - 1340.6331513736006, - 1345.4362046703905, - 1350.3267797683536, - 1355.218872454484, - 1360.177444562572, - 1366.946725859996, - 1371.374617771477, - 1375.9770323222021, - 1380.9384131009285, - 1385.4190355385822, - 1389.7903236764785, - 1393.999479036735, - 1398.506036376652, - 1402.4550499443426, - 1406.905547124346, - 1411.1115767059898, - 1415.1551626746489, - 1419.0510943322658, - 1422.7886749087636, - 1426.3572076339, - 1429.7459957374335, - 1432.9443424491226, - 1435.9415509987252, - 1438.726924616, - 1441.2897665307048, - 1443.6193799725984, - 1445.7050681714386, - 1447.536134356984, - 1449.1018817589925, - 1450.3916136072228, - 1451.394633131433, - 1452.1002435613814, - 1452.4977481268265, - 1452.576450057526, - 1452.325652583239, - 1451.734658933723, - 1450.7927723387365, - 1449.489296028038, - 1447.813533231386, - 1445.754787178538, - 1443.3023610992527 - ], - "yaxis": "y" - }, - { - "hovertemplate": "variable=y2
index=%{x}
value=%{y}", - "legendgroup": "y2", - "line": { - "color": "#19d3f3", - "dash": "solid" - }, - "marker": { - "symbol": "circle" - }, - "mode": "lines", - "name": "y2", - "showlegend": true, - "type": "scattergl", - "x": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332 - ], - "xaxis": "x", - "y": [ - 744.2818836936489, - 745.2163079326236, - 746.1588219871085, - 747.1086325902725, - 748.0649464752846, - 749.0269703753138, - 749.9939110235292, - 750.9649751530998, - 751.9393694971944, - 752.9163007889822, - 753.894975761632, - 754.8746011483131, - 755.8543836821942, - 756.8335300964444, - 757.8112471242328, - 758.7867414987282, - 759.7592199530998, - 760.7278892205164, - 761.6919560341472, - 762.6506271271611, - 763.6031092327271, - 764.5486090840141, - 765.4863334141912, - 766.4154889564275, - 767.3352824438917, - 768.2449206096637, - 769.1215656072854, - 769.9591383722403, - 770.7920904209842, - 771.6493238804056, - 772.5220050283364, - 773.4133049445289, - 774.2411606150991, - 775.0888808352627, - 775.8954902714897, - 776.685700695282, - 777.4254003487282, - 778.1453034042897, - 778.9029876100474, - 779.6061971957686, - 780.2483634962509, - 780.8611067067425, - 781.4762735281881, - 782.0555618472894, - 782.6199460915527, - 783.1375795600346, - 783.6034791274086, - 784.0071122787823, - 784.4620489704399, - 784.8849804071656, - 785.2139119797946, - 785.59063625441, - 785.8952411152221, - 786.1527780922772, - 786.3621146570919, - 786.5167953973124, - 786.6223697025061, - 786.6906158688973, - 786.6898004483895, - 786.5617794286608, - 786.4843824321264, - 786.3089084689565, - 786.0962196198317, - 785.7895309066107, - 785.4767944912898, - 785.1285419827393, - 784.6891209312998, - 784.1619289224208, - 783.577000611474, - 782.9970101247133, - 782.3996240004524, - 781.6981358580256, - 781.0418129515045, - 780.3179913473914, - 779.5321071824047, - 778.7752836982941, - 778.0212235836825, - 777.1850325034768, - 776.332102652291, - 775.5280527304357, - 774.682892024644, - 773.7923169266803, - 772.890212688759, - 772.0164669640542, - 771.1141815215755, - 770.2445582005488, - 769.3511517813776, - 768.4956171146807, - 767.6543749574406, - 766.798296677072, - 765.957303676098, - 765.1082697228942, - 764.3195315861303, - 763.5360030803885, - 762.7825092300183, - 761.9984144600348, - 761.2467326552375, - 760.4992412058276, - 759.754354571929, - 759.0047113184011, - 758.2220888354458, - 757.4695010078619, - 756.6805363654012, - 755.8800199324131, - 755.0395025934021, - 754.189358762285, - 753.321773992528, - 752.4937597679705, - 751.650456408891, - 750.7636413054911, - 749.9287413077564, - 749.0262973112899, - 748.1135473056273, - 747.2210922103818, - 746.2940723458324, - 745.3630886315921, - 744.393916056902, - 743.4493420008646, - 742.5066932432484, - 741.5432965638221, - 740.6161634464243, - 739.6644318103737, - 738.7508890347732, - 737.7613988990963, - 736.817345806161, - 735.8956035243427, - 734.9672699267528, - 734.056490520651, - 733.1665496386379, - 732.3331445785007, - 731.4949602481651, - 730.6495050849676, - 729.7998369158133, - 728.9812000270956, - 728.1431516001779, - 727.3471199799826, - 726.5630705111384, - 725.7931549977635, - 725.0392987382786, - 724.329837595331, - 723.6074203265368, - 722.9057056784136, - 722.2847629617042, - 721.6867879226321, - 721.139436906754, - 720.5789032593328, - 720.0648032797184, - 719.5977032321523, - 719.1457564156899, - 718.682665518954, - 718.208317289096, - 717.8136084621691, - 717.4125121745975, - 717.0575097962876, - 716.7153955921156, - 716.417563251632, - 716.1363564292806, - 715.8647534484656, - 715.5688690569734, - 715.3058279914907, - 715.047067883674, - 714.7962128246692, - 714.5242474347397, - 714.2931663230497, - 714.014451063361, - 713.8084667828563, - 713.5862420439041, - 713.4030895376187, - 713.2019977801609, - 713.0968764863603, - 712.9983012071922, - 712.9023080929653, - 712.8579809281371, - 712.8289428978308, - 712.8436431175412, - 712.8717071733522, - 712.9093977212694, - 712.9263403473765, - 712.9452082719047, - 712.9620376451636, - 712.9995016873842, - 713.0156741941228, - 713.0334548913073, - 713.022695870718, - 713.0389363291655, - 713.0791184397456, - 713.108224421761, - 713.1181000701336, - 713.1065935807453, - 713.0984167250973, - 713.0539083557119, - 713.0250968311021, - 713.0056399917625, - 712.925049264906, - 712.8045255837352, - 712.5800357878168, - 712.3322838568558, - 712.0245532174304, - 711.647217377434, - 711.2177399260761, - 710.7334027949973, - 710.1655303630058, - 709.4859000203027, - 708.7255656978946, - 707.8778454777312, - 706.8832363133107, - 705.8327481935347, - 704.7208317288357, - 703.4835670116282, - 702.2344107453483, - 700.7718408117146, - 699.2805952568892, - 697.6510679742782, - 695.9832159277994, - 694.2271625630574, - 692.3980837617258, - 690.5113819111745, - 688.6301841490509, - 686.7268341297984, - 684.8389544496245, - 682.9076083262698, - 680.9389114135425, - 678.8384334865228, - 676.7090760831845, - 674.583138915865, - 672.4398740627541, - 670.3175836371503, - 668.2223832928619, - 666.2196652245027, - 664.198351038451, - 662.2566989059003, - 660.3104940088473, - 658.3401209539652, - 656.4436114067503, - 654.6810346779457, - 653.0159006998265, - 651.3056241363711, - 649.6222791002435, - 647.9995243379615, - 646.4976556659645, - 645.0002718067606, - 643.5676685767896, - 642.195315862119, - 640.819633513708, - 639.4946884413396, - 638.2421345896104, - 637.0039411990468, - 635.8075381095093, - 634.5356180207191, - 633.3061677500451, - 632.0751092889249, - 630.8096899136278, - 629.6480780990906, - 628.3863734172181, - 627.2597567328087, - 626.0736370018976, - 624.9189109605375, - 623.7361888150758, - 622.5399895806653, - 621.158372783003, - 619.7399261590706, - 618.5280074293147, - 617.215474869121, - 615.8397245690011, - 614.3580149040032, - 612.8126118371162, - 611.1179188655882, - 609.5830030124548, - 607.8300980768958, - 606.1347255882779, - 604.619651634168, - 602.8147409906657, - 601.0172597340122, - 599.3410949284676, - 597.5842487937875, - 595.7260640104403, - 594.5070103512409, - 592.5234546648157, - 591.0390948831673, - 589.7718634622972, - 589.1045550294904, - 587.7178645042238, - 586.5966613059634, - 585.7918412647394, - 585.3110149719583, - 584.5211669572808, - 583.673197580851, - 583.2969716187681, - 583.2512854197603, - 583.3747536749868, - 583.735962309384, - 584.2589866134452, - 584.9649142675255, - 585.8308681962668, - 586.8663842894964, - 587.9689007677857, - 589.3075494347995, - 589.8516840697855, - 590.7216244987873, - 591.8566445445413, - 592.9094656729926, - 595.0420168066534, - 597.0352895874635, - 598.7771863461667, - 600.3806881242363, - 602.7869260911209, - 604.534326938252, - 605.6564814604382, - 607.259829563175, - 608.7835517274157, - 610.2125433821327, - 611.5316999562282, - 612.7259168786043, - 613.780089578163, - 614.6791134838066, - 615.407884024437, - 615.9512966289562, - 616.2942467262666, - 616.42162974527, - 616.3183411148686, - 615.9692762639646, - 615.3593306214599, - 614.4733996162566, - 613.2963786772569, - 611.8131632333628, - 610.0086487134765, - 607.8677305465, - 605.3753041613354, - 602.5162649868847, - 599.2755084520502, - 595.6379299857339, - 591.5884250168377, - 587.1118889742639 - ], - "yaxis": "y" - }, - { - "hovertemplate": "variable=x3
index=%{x}
value=%{y}", - "legendgroup": "x3", - "line": { - "color": "#FF6692", - "dash": "solid" - }, - "marker": { - "symbol": "circle" - }, - "mode": "lines", - "name": "x3", - "showlegend": true, - "type": "scattergl", - "x": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332 - ], - "xaxis": "x", - "y": [ - 1267.9088572051958, - 1263.8267205479203, - 1259.8862073324744, - 1256.0823598331456, - 1252.4102203242214, - 1248.8648310799897, - 1245.4412343747376, - 1242.134472482753, - 1238.939587678323, - 1235.8516222357357, - 1232.8656184292784, - 1229.9766185332385, - 1227.179664821904, - 1224.469799569562, - 1221.8420650505004, - 1219.2915035390065, - 1216.813157309368, - 1214.4020686358724, - 1212.0532797928074, - 1209.7618330544603, - 1207.5227706951189, - 1205.3311349890705, - 1203.181968210603, - 1201.0703126340036, - 1198.9912105335602, - 1196.9397041834204, - 1194.83861469102, - 1192.7564384242874, - 1190.6611021765807, - 1188.428843235269, - 1186.235792430041, - 1184.0371922352467, - 1181.7998369157604, - 1179.5875331263203, - 1177.508278783074, - 1175.4081406145992, - 1173.4048789325682, - 1171.4453328499844, - 1169.53539151496, - 1167.5570681101267, - 1165.5952569705769, - 1163.4660128200867, - 1161.4411198440284, - 1158.8018075153236, - 1156.053047634013, - 1153.2256676254062, - 1150.3826813743024, - 1147.3662144101586, - 1144.2976511357926, - 1141.8991370131625, - 1139.4956850663464, - 1136.499898072304, - 1134.1928469499685, - 1131.8191805022573, - 1129.5775895262448, - 1127.3508799744998, - 1125.1335024574553, - 1123.0106910687493, - 1120.9704410064605, - 1118.9683345034823, - 1117.0742938683602, - 1115.2345919498575, - 1113.4485492308834, - 1111.6504337582794, - 1109.9625359576498, - 1108.335998550234, - 1106.6453600306756, - 1105.0766042264672, - 1103.5855172256295, - 1102.1636050645388, - 1100.823008448534, - 1099.463543908001, - 1098.2321003871966, - 1096.9923214567568, - 1095.7079435546527, - 1094.5779972365028, - 1093.3240163988849, - 1092.1003873246138, - 1090.848399737126, - 1089.5679403835736, - 1088.3499060000088, - 1087.134906792779, - 1085.8193617068202, - 1084.573172665166, - 1083.271444426701, - 1081.9717547395053, - 1080.6251330719706, - 1079.229654125675, - 1077.8628508005718, - 1076.4044712223256, - 1074.9755600352096, - 1073.5144623886038, - 1072.083172891673, - 1070.6315884843254, - 1069.0885184261138, - 1067.6655643388185, - 1066.2682053952412, - 1064.840109628633, - 1063.4101791658818, - 1061.9920043487857, - 1060.5931731181804, - 1059.2152710139424, - 1057.9187071053602, - 1056.672653967124, - 1055.5435230694818, - 1054.356202858379, - 1053.2623388977004, - 1052.2575143263625, - 1051.305125823792, - 1050.330381208965, - 1049.402772429604, - 1048.4912455547033, - 1047.5381095833338, - 1046.6033205733904, - 1045.6553715824732, - 1044.7007180229364, - 1043.7455888014367, - 1042.769349249012, - 1041.90142472071, - 1041.056354617197, - 1040.148451833442, - 1039.3099956962706, - 1038.4164307231115, - 1037.5844979500023, - 1036.8663389883045, - 1036.036852476719, - 1035.271602980694, - 1034.418718430648, - 1033.540759699986, - 1032.7531087905656, - 1031.9944506103125, - 1031.2358830323378, - 1030.4749144939794, - 1029.6821898569547, - 1028.807039796931, - 1027.9368502116629, - 1027.1530045979457, - 1026.4250152890147, - 1025.7226211238017, - 1024.9773720807882, - 1024.27665405773, - 1023.5633423179398, - 1022.8599968288008, - 1022.162540487774, - 1021.499309157506, - 1020.9694670319766, - 1020.3396452919599, - 1019.7183175155664, - 1019.1606831410621, - 1018.5776574779666, - 1018.0686312259566, - 1017.550522095512, - 1017.1113955014782, - 1016.6302067995824, - 1016.2425196492505, - 1015.741828806876, - 1015.3398491470875, - 1014.9479489907986, - 1014.4983578335812, - 1014.0409522298303, - 1013.534145733647, - 1013.0160366032023, - 1012.4450383925974, - 1011.8235294116467, - 1011.1272509002421, - 1010.4382658722689, - 1009.7800403178961, - 1009.0377584995085, - 1008.364991279413, - 1007.5619153320531, - 1006.7765521301687, - 1005.9593648779094, - 1004.9959908490524, - 1004.1196856099759, - 1003.2045346439292, - 1002.1778975740071, - 1001.1727105935546, - 1000.0537498016909, - 999.0544972704897, - 997.9278579355106, - 996.7743550249127, - 995.6445446101807, - 994.5092980587302, - 993.3718997031617, - 992.2680468412623, - 991.2185779971211, - 990.1530952002286, - 988.9683345034974, - 987.9024213457816, - 986.8604951413375, - 985.8979818341281, - 984.9848467687813, - 984.0701941152671, - 983.0818138575039, - 982.096876486329, - 981.1536841150411, - 980.2576728803587, - 979.4462388727934, - 978.6442275022075, - 977.9678135403965, - 977.3293845839081, - 976.7760764682092, - 976.2897460870001, - 975.9581190965814, - 975.6917710479281, - 975.5129221498782, - 975.5081655302492, - 975.5130354027265, - 975.6722689074492, - 975.9210401140449, - 976.2056218712762, - 976.5837051800713, - 977.0627873789886, - 977.623502230967, - 978.2369476091183, - 978.9119572356103, - 979.5596729256598, - 980.2557022807981, - 980.915377471629, - 981.6300482455988, - 982.4790595482331, - 983.3381956555058, - 984.4253097464252, - 985.4985390381419, - 986.5306801964919, - 987.5886203536868, - 988.706607171055, - 989.797481256538, - 991.0040544518537, - 992.0182790096013, - 993.2506738543316, - 994.4580171690158, - 995.5682348409902, - 996.4726267864476, - 997.3028834174016, - 998.03372669811, - 998.7894856054463, - 999.6505243605711, - 1000.5913384220446, - 1001.4097261544958, - 1002.2659629888523, - 1002.8654782666613, - 1003.5021631292858, - 1004.0834220479475, - 1004.7430972387782, - 1005.4383338239783, - 1006.1205010304835, - 1006.799565108945, - 1007.6981358579992, - 1008.2863258509774, - 1009.0293777887335, - 1010.0133411854131, - 1011.112528029962, - 1012.2190310085118, - 1013.0970803414525, - 1013.906679652875, - 1015.1027882850069, - 1016.1918276743475, - 1017.5666266505416, - 1018.6024372011769, - 1019.7986137850177, - 1021.345466488363, - 1022.8026682369868, - 1024.318580262174, - 1025.9054565221118, - 1027.2727808103175, - 1029.267661781574, - 1031.294751862889, - 1033.2557702325007, - 1035.570749054218, - 1037.994427959742, - 1040.4318331104814, - 1042.9966477155683, - 1045.5698883325695, - 1047.9275861286687, - 1050.4835217104485, - 1053.0684953225345, - 1055.5774536228355, - 1058.4030215858693, - 1060.8616503203816, - 1060.6736052910492, - 1063.609028516943, - 1066.6058347866206, - 1069.373077532775, - 1072.3017508889097, - 1075.4800335227176, - 1078.7761217693367, - 1082.0491290854704, - 1084.9117533804708, - 1087.8850030577, - 1091.4678475162375, - 1094.944143695086, - 1098.5519037802517, - 1101.7646379305154, - 1105.044757525523, - 1108.5989037122988, - 1111.9442569479327, - 1119.2493148201372, - 1121.626605358994, - 1124.8028267909626, - 1127.8019207681757, - 1131.0626061744133, - 1134.009286733429, - 1136.7452263923112, - 1139.2036512716966, - 1141.1781920313965, - 1144.388774377542, - 1147.609979840859, - 1150.489841916447, - 1153.3181603523522, - 1156.0924610063341, - 1158.8102697360184, - 1161.469112399031, - 1164.0665148529977, - 1166.600002955544, - 1169.0671025642957, - 1171.4653395368787, - 1173.7922397309185, - 1176.0453290040412, - 1178.2221332138722, - 1180.3201782180374, - 1182.3369898741626, - 1184.2700940398734, - 1186.1170165727958, - 1187.8752833305552, - 1189.5424201707774, - 1191.1159529510885, - 1192.593407529114, - 1193.9723097624797, - 1195.250185508811, - 1196.4245606257343, - 1197.4929609708747, - 1198.4529124018586 - ], - "yaxis": "y" - }, - { - "hovertemplate": "variable=y3
index=%{x}
value=%{y}", - "legendgroup": "y3", - "line": { - "color": "#B6E880", - "dash": "solid" - }, - "marker": { - "symbol": "circle" - }, - "mode": "lines", - "name": "y3", - "showlegend": true, - "type": "scattergl", - "x": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332 - ], - "xaxis": "x", - "y": [ - 841.3242234807167, - 841.585854906388, - 841.9580935163941, - 842.4362073776458, - 843.0154645570535, - 843.6911331215282, - 844.4584811379804, - 845.3127766733207, - 846.24928779446, - 847.2632825683089, - 848.3500290617781, - 849.5047953417782, - 850.7228494752198, - 851.999459529014, - 853.3298935700711, - 854.709419665302, - 856.1333058816172, - 857.5968202859275, - 859.0952309451436, - 860.6238059261761, - 862.1778132959358, - 863.7525211213334, - 865.3431974692794, - 866.9451104066846, - 868.5535280004598, - 870.1637183174141, - 871.5872613195204, - 873.0043489092732, - 874.4449024891957, - 875.92751817698, - 877.4827968922394, - 878.9857301410105, - 880.4234070985858, - 881.8799293301198, - 883.2893383767571, - 884.6713628846733, - 885.9926838658959, - 887.2142064371883, - 888.4204851750984, - 889.6698905976447, - 890.8654103149656, - 892.045686198904, - 893.1965389928514, - 894.1512605040973, - 895.031710797422, - 895.805929919033, - 896.4628190897955, - 897.1151554960561, - 897.6786110669635, - 898.4673492037277, - 899.169335658687, - 899.6949421276896, - 900.245803981865, - 900.8115925614479, - 901.2740945433726, - 901.8427597453024, - 902.34191034894, - 902.7732451470101, - 903.1120523680116, - 903.4783573805826, - 903.724478470528, - 903.9062945932036, - 904.0324129650807, - 904.1973544133579, - 904.3726698225405, - 904.5305895942229, - 904.5199211759121, - 904.5164556387538, - 904.374776325519, - 904.1852137080192, - 903.9526376587315, - 903.7678316608608, - 903.571972184995, - 903.2627239574023, - 902.9795012343508, - 902.702801875362, - 902.4462162222326, - 902.1001381683698, - 901.870846451683, - 901.6325398082711, - 901.3189200207332, - 900.9875648371506, - 900.5784049467794, - 900.1552470043572, - 899.5843393960309, - 898.9940882012133, - 898.3568370743477, - 897.7630297400932, - 897.07336519503, - 896.4433395998865, - 895.6956895964887, - 894.9210854151938, - 894.2426102515434, - 893.633740288464, - 893.0570794354436, - 892.4756846133638, - 891.8701669345944, - 891.2211375115045, - 890.6155292304561, - 890.0226279189883, - 889.4119459103358, - 888.7529955377341, - 888.0150626287216, - 887.2908559649239, - 886.5285736935249, - 885.7885116309642, - 885.0872273436644, - 884.2437201294581, - 883.4477111598327, - 882.6473985819714, - 881.81761761298, - 880.9920269993762, - 880.177648417755, - 879.4671906497422, - 878.6854288884341, - 877.9459330901146, - 877.238623751285, - 876.5651996646693, - 875.8743119888442, - 875.2591225168292, - 874.6685089128971, - 874.1370359463521, - 873.6022559966364, - 873.0339079026819, - 872.4336904572133, - 871.8561235814062, - 871.2434030214843, - 870.6877845476798, - 870.1902874356274, - 869.601644431256, - 868.9164193978465, - 868.2521461413743, - 867.5758454324115, - 866.9133615709424, - 866.2372647171065, - 865.6761874560134, - 865.1232417494291, - 864.6369113682202, - 864.1253935535469, - 863.6851344310301, - 863.2090194567387, - 862.8196788148215, - 862.4685949850633, - 862.1545221861325, - 861.837799270551, - 861.4516750095258, - 861.1056422568023, - 860.8559197262807, - 860.6202178983798, - 860.3426578177437, - 860.158916396647, - 859.9689234183236, - 859.775396951133, - 859.5866044530017, - 859.3839498062372, - 859.2340709867851, - 859.1063670750317, - 858.9260458899538, - 858.8121135245549, - 858.6915671928147, - 858.6241364469314, - 858.5838637340728, - 858.5769779608956, - 858.6361185982826, - 858.7233232914805, - 858.8918661803342, - 859.0238737003233, - 859.1397540147133, - 859.2918752405619, - 859.5059684250054, - 859.6898910506598, - 859.9015606241494, - 860.1340687217279, - 860.3480939544627, - 860.548053183437, - 860.7971867991475, - 861.1092210468088, - 861.4450610431848, - 861.7183401661546, - 862.0344741669246, - 862.2746834581884, - 862.5674873722068, - 862.8797934267038, - 863.1995968197593, - 863.5151192551485, - 863.8205848376078, - 864.1104441775702, - 864.3793743911651, - 864.56322906511, - 864.7423724205656, - 864.9119345850538, - 865.1265487325996, - 865.3178780945331, - 865.4828648439499, - 865.6397653399972, - 865.769326598463, - 865.7579786630624, - 865.7223493169845, - 865.5586309994686, - 865.3783551155301, - 865.1225848829088, - 864.6413735304436, - 864.0469319802385, - 863.4250605901732, - 862.7443656706959, - 861.9590477699508, - 861.1092210468089, - 860.1914879158207, - 859.2237649775889, - 858.2037871751472, - 857.1415207591472, - 855.9827855669571, - 854.7118168020928, - 853.4043126683641, - 852.0125484154933, - 850.5687105029697, - 849.0994360007165, - 847.6109538153896, - 846.0566717251951, - 844.4224104735247, - 842.6138530883068, - 840.8041631746057, - 839.0368524767418, - 837.2850574190965, - 835.5543273912363, - 833.9740877482096, - 832.3261455524635, - 830.6751002286737, - 828.9994110850921, - 827.5721080884218, - 825.958979818246, - 824.5678044801864, - 823.2376271262261, - 822.0316881468609, - 820.8893519671061, - 819.8676300708006, - 818.8845726969078, - 817.901515323015, - 817.0233980383653, - 816.2632449205145, - 815.707762350128, - 815.4740537723571, - 815.1398219664273, - 814.7289632833314, - 814.4349362385512, - 814.2447167545315, - 814.106638881873, - 813.9022401412445, - 813.8539944278649, - 814.0731160387734, - 814.302339803751, - 814.5161611813586, - 814.7643208225735, - 815.1964257400122, - 815.703005730499, - 816.2123264399148, - 816.9261364922376, - 817.6601508526986, - 818.4864662845315, - 819.075381095739, - 819.5369317537378, - 820.053477994876, - 820.5858116830682, - 821.1437858161173, - 821.6033885251255, - 822.0749960360542, - 822.7246596750949, - 823.3261682030343, - 823.9112550679688, - 824.6494824343869, - 825.3412534824289, - 826.1687920450237, - 827.0454823437846, - 828.0109855261893, - 828.5007134928477, - 828.7906860856583, - 829.9379374390298, - 830.8094181067686, - 832.2242179889854, - 834.1012253957213, - 835.4376996080478, - 836.8555799677385, - 838.6803551608344, - 840.8842782394997, - 843.4926498900462, - 845.9542911503237, - 848.1966069445656, - 850.87478765081, - 854.3380597521032, - 858.2179890823252, - 862.3845840221874, - 866.7335839995363, - 870.7782056217698, - 875.5235679176309, - 880.3587623727709, - 885.6214183785689, - 890.9272237195727, - 899.7355999002325, - 903.9037577294014, - 908.4719019682284, - 913.0485854718181, - 919.4350268408177, - 925.7256336495782, - 931.894516296976, - 937.9485605561887, - 944.8270855510914, - 951.5634782213663, - 957.4096355522223, - 963.8699676096852, - 970.37352059353, - 976.91299803908, - 983.4811034815473, - 990.0705404561435, - 996.6740124980807, - 1003.2842231425707, - 1009.8938759248254, - 1016.4956743800565, - 1023.0823220434759, - 1029.6465224502956, - 1036.1809791357275, - 1042.6783956349832, - 1049.1314754832747, - 1055.5329222158139, - 1061.8754393678125, - 1068.1517304744825, - 1074.3544990710357, - 1080.476448692684, - 1086.5102828746394, - 1092.4487051521135, - 1098.2844190603182, - 1104.0101281344655, - 1109.6185359097672, - 1115.1023459214352 - ], - "yaxis": "y" - }, - { - "hovertemplate": "variable=x4
index=%{x}
value=%{y}", - "legendgroup": "x4", - "line": { - "color": "#FF97FF", - "dash": "solid" - }, - "marker": { - "symbol": "circle" - }, - "mode": "lines", - "name": "x4", - "showlegend": true, - "type": "scattergl", - "x": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332 - ], - "xaxis": "x", - "y": [ - 998.4600902447743, - 997.5646331553105, - 996.5265071743909, - 995.3500273194268, - 994.0395086078298, - 992.5992660570117, - 991.033614684384, - 989.3468695073582, - 987.5433455433458, - 985.6273578097586, - 983.603221324008, - 981.4752511035056, - 979.2477621656631, - 976.9250695278919, - 974.5114882076037, - 972.01133322221, - 969.4289195891225, - 966.7685623257527, - 964.0345764495122, - 961.2312769778125, - 958.3629789280652, - 955.4339973176819, - 952.4486471640743, - 949.4112434846537, - 946.326101296832, - 943.1975356179107, - 940.32084531915, - 937.4711771499958, - 934.4325126275836, - 931.2565403518811, - 927.9736347368051, - 924.6405807604982, - 921.2553398716902, - 917.7628258849638, - 914.3022039003214, - 910.8361684295298, - 907.3959999092917, - 903.9601576478593, - 900.3892273889638, - 896.9029649594642, - 893.4056943531087, - 889.7899612674221, - 886.1567419419566, - 882.9306892567317, - 879.7331083375719, - 876.6015085278373, - 873.5787220547577, - 870.6043398490458, - 867.7793381502534, - 864.735826405933, - 861.6763686605713, - 859.1139097147292, - 856.4456952591358, - 853.708464517783, - 851.0461618608715, - 848.4899544722562, - 845.9202699946916, - 843.5058778227288, - 841.1853496114445, - 838.950304650064, - 836.7712745474572, - 834.6565267615505, - 832.6671498787223, - 830.7079435546835, - 828.8126797888001, - 827.0795034994165, - 825.1911934584193, - 823.4039049581136, - 821.7988855918768, - 820.2633581733623, - 818.8172778544426, - 817.3680491063398, - 815.9402704477064, - 814.6226868104783, - 813.2620670908925, - 812.0907608325401, - 810.8369838500493, - 809.6826655189433, - 808.4081632652118, - 807.158327481842, - 805.9330449159855, - 804.7319758090977, - 803.5163650364868, - 802.2736415319908, - 801.028970078504, - 799.7864277785653, - 798.5174522638312, - 797.1548392941154, - 795.8076287117692, - 794.4458991142701, - 793.0719155585836, - 791.68771659598, - 790.3599402024039, - 789.0964008243886, - 787.7546263787615, - 786.4807130398412, - 785.2171963123956, - 783.9978481957907, - 782.7592017938338, - 781.5403519897615, - 780.3211171260047, - 779.1607737433687, - 778.0329112776277, - 776.8784796936736, - 775.8530884050829, - 774.8441867312058, - 773.9367822599837, - 773.0713719449142, - 772.2148633037219, - 771.3869849825824, - 770.5481890868657, - 769.7823506760296, - 769.0878842101982, - 768.3719676548968, - 767.6061518946306, - 766.9175972274807, - 766.1650773516059, - 765.436884187548, - 764.7944460802296, - 764.2345919498982, - 763.6362771522813, - 763.0815647012632, - 762.4869192959313, - 761.9776891887941, - 761.5173843121266, - 761.0486534235449, - 760.5993793743025, - 760.1381684748485, - 759.6273981289743, - 759.2059163287072, - 758.8150127974833, - 758.4226143286619, - 758.0288341750911, - 757.6011461187366, - 757.1389838953567, - 756.6737411945029, - 756.2632222699518, - 755.8739948808831, - 755.5316768215839, - 755.170649391744, - 754.7898933157288, - 754.4205757773929, - 754.0880880653269, - 753.7589979387102, - 753.399873156722, - 753.1009309383252, - 752.7166413734426, - 752.3902693151854, - 752.0559695575466, - 751.6536727897831, - 751.3381956555331, - 751.0230582798281, - 750.7341049626523, - 750.4117194046553, - 750.1732089061165, - 749.8737230740477, - 749.6041586445024, - 749.2993499285633, - 749.0386418717557, - 748.7570952908592, - 748.4488210377617, - 748.1345670342735, - 747.7762576727933, - 747.3624544156414, - 746.8608575504802, - 746.4218668598644, - 745.9548121134376, - 745.4931255520206, - 744.9850053227968, - 744.3786495729497, - 743.7549887878812, - 743.0562187138139, - 742.3424086614912, - 741.6738544473528, - 740.9135201249447, - 740.1161521211396, - 739.2623615483068, - 738.3649459783053, - 737.5163876870643, - 736.6058347866589, - 735.6667195179101, - 734.6731975808334, - 733.7170717342685, - 732.7989082424568, - 731.9194998753366, - 731.0590047338837, - 730.229993884261, - 729.3535753923361, - 728.494914947026, - 727.6274887312566, - 726.7567328817472, - 725.952456454195, - 725.193005504004, - 724.4240866156939, - 723.6821898569904, - 723.0033522842257, - 722.3909714828485, - 721.9072685677203, - 721.4375410540733, - 721.0377811501118, - 720.7162563137623, - 720.4810074972545, - 720.2483861468274, - 720.1376248611813, - 720.1174432036125, - 720.156334231722, - 720.3138009920109, - 720.5636594259504, - 720.8737230740512, - 721.2912636751973, - 721.7188158281339, - 722.2411606151053, - 722.8134272576111, - 723.4229314366412, - 724.0567623274881, - 724.7133343902756, - 725.3051484743995, - 726.0159460009572, - 726.6549865228262, - 727.3642891117862, - 728.0292645359182, - 728.6471947268625, - 729.3538698497416, - 729.9905094112265, - 730.6016670818418, - 731.211035357454, - 731.8043443791757, - 732.405739654267, - 733.0398197013801, - 733.5222994857465, - 734.0549276313443, - 734.5393327141319, - 734.947971641401, - 735.2533013204425, - 735.5016874673539, - 735.5949851637911, - 735.7032095856352, - 735.7020317560127, - 735.6558245939027, - 735.4314027496932, - 735.2909239166506, - 735.0521416112758, - 734.8338354208751, - 734.46044078, - 734.0361050079553, - 733.6536501392153, - 733.3037894402189, - 732.8658180252379, - 732.422818183792, - 731.967088722196, - 731.4116967540881, - 730.852635393695, - 730.2360642369304, - 729.6588824208078, - 729.0626061744603, - 728.4158418083365, - 727.7788851388763, - 727.041337289548, - 726.2488618087898, - 725.4147092798537, - 724.5672155653868, - 723.7615801036552, - 722.9679947449836, - 722.0390042808734, - 721.180774196387, - 720.2935740333029, - 719.493238804872, - 718.6987247728442, - 717.7588393847268, - 716.8493737116652, - 715.8573240616167, - 714.9380733424612, - 714.0383474143541, - 713.0671362883945, - 712.2435389249208, - 711.561349067846, - 710.6108405625572, - 709.5297062220287, - 708.4644952319726, - 707.1015878048507, - 706.1595732631852, - 704.8580035787079, - 703.5328093500731, - 702.266846361104, - 701.0526399238123, - 699.7599719132121, - 698.5541008855557, - 697.1352465513694, - 695.8143106298311, - 694.2984212552135, - 692.981992797038, - 691.5453124645278, - 690.1945683933146, - 688.5705905002707, - 687.0811796415878, - 685.6526761647254, - 684.0363088630879, - 681.4472581484631, - 680.0494461934924, - 678.6275340324016, - 676.8043443791822, - 675.0615868988316, - 673.2061654849834, - 671.1238533148326, - 668.6929262270166, - 665.990577362943, - 663.0840336133681, - 659.9189109605336, - 656.932528134621, - 653.7169648604481, - 650.2558668363329, - 646.5328797605156, - 642.531649331237, - 638.2358212467375, - 633.629041205258, - 628.6949549050388, - 623.4172080443207, - 617.779446321344, - 611.7653154343496, - 605.3584610815781, - 598.5425289612698, - 591.3011647716656, - 583.618014211006, - 575.4767229775314, - 566.8609367694826, - 557.7543012851002, - 548.1404622226248, - 538.0030652802968, - 527.3257561563569, - 516.0921805490458, - 504.28598415660406, - 491.89081267727204, - 478.89031180929067 - ], - "yaxis": "y" - }, - { - "hovertemplate": "variable=y4
index=%{x}
value=%{y}", - "legendgroup": "y4", - "line": { - "color": "#FECB52", - "dash": "solid" - }, - "marker": { - "symbol": "circle" - }, - "mode": "lines", - "name": "y4", - "showlegend": true, - "type": "scattergl", - "x": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332 - ], - "xaxis": "x", - "y": [ - 850.5801499441902, - 851.5544425155971, - 852.5505004646595, - 853.5666948411362, - 854.6013966947852, - 855.652977075365, - 856.7198070326342, - 857.8002576163509, - 858.8926998762737, - 859.9955048621609, - 861.107043623771, - 862.2256872108624, - 863.3498066731934, - 864.4777730605223, - 865.6079574226077, - 866.7387308092079, - 867.8684642700814, - 868.9955288549864, - 870.1182956136815, - 871.235135595925, - 872.3444198514753, - 873.4445194300908, - 874.5338053815299, - 875.610648755551, - 876.6734206019125, - 877.7204919702705, - 878.610138394878, - 879.5626174997274, - 880.5204647895868, - 881.4266687806171, - 882.3805069196462, - 883.2608213095529, - 884.1442388275035, - 885.0279281522899, - 885.9361480440199, - 886.7699608144111, - 887.5924936011104, - 888.3700876576011, - 889.1225848829059, - 889.9675190830012, - 890.7551699924213, - 891.5189698519878, - 892.2395297740698, - 892.6916577950893, - 893.0830143377063, - 893.3819792066729, - 893.5837957823596, - 893.742983985943, - 893.7433690456272, - 894.0231035809508, - 894.2498584338352, - 894.125234999556, - 894.1779655257287, - 894.2002763368456, - 894.1007044326122, - 894.0885863778431, - 893.9821287004324, - 893.8357380687081, - 893.624362952624, - 893.4355025027837, - 893.1213617521439, - 892.7434822984758, - 892.3045822101386, - 891.9199302361412, - 891.5021404787291, - 891.0823801217562, - 890.5419828307643, - 890.0306688712183, - 889.377177285905, - 888.6668554213102, - 887.9320029897715, - 887.2968357153147, - 886.6125393552613, - 885.8104373823969, - 884.9779156944765, - 884.1286778861456, - 883.2711046681794, - 882.4082538674818, - 881.5112233571647, - 880.6312487258027, - 879.7136967993717, - 878.828036875025, - 877.9414029761823, - 877.0213821376584, - 876.014926725305, - 874.9011755644634, - 873.771138644035, - 872.6894153886952, - 871.5117216696983, - 870.3295204873386, - 869.0515753470186, - 867.763346848072, - 866.5238850256073, - 865.307232326792, - 864.087884210187, - 862.8614238147082, - 861.6027996103096, - 860.3726471719759, - 859.0815420506824, - 857.8551722574822, - 856.6045663547437, - 855.3264400098662, - 853.9966477155904, - 852.682280459254, - 851.4124668734426, - 850.1311014971034, - 848.8411289042929, - 847.4806677386947, - 846.1703096331886, - 844.853949126722, - 843.5287548980873, - 842.1976715213405, - 840.9018324309875, - 839.6710457767034, - 838.3792837888894, - 837.056354617221, - 835.7851140455207, - 834.5041337288659, - 833.2168112527058, - 832.0122313075202, - 830.6964597158649, - 829.4822306280034, - 828.1580556750037, - 826.8658406757966, - 825.5439307797628, - 824.2543205960668, - 822.9469070646167, - 821.630410654732, - 820.3075494347727, - 818.9808149674009, - 817.5343722393665, - 816.1789168496636, - 814.824571337874, - 813.4611429476502, - 812.0839883122114, - 810.7322023147935, - 809.4772928038196, - 808.2615687783605, - 807.05397630741, - 805.861423814715, - 804.749643253434, - 803.6607171169417, - 802.5480531834439, - 801.4709279937455, - 800.450202722505, - 799.4001902646918, - 798.3792611383245, - 797.4189222858024, - 796.459217649231, - 795.5844752994609, - 794.7611497428232, - 793.9499195903851, - 793.1494258079665, - 792.4229087860635, - 791.662461210807, - 790.8718204261916, - 790.1397313641515, - 789.4368388864059, - 788.7926113840841, - 788.1241930733638, - 787.5194228633932, - 786.9156266279181, - 786.3735531947711, - 785.8949013566773, - 785.4374051506478, - 784.990985073183, - 784.5626628008778, - 784.0886316789952, - 783.7024168156914, - 783.2809350154241, - 782.8453872113971, - 782.4873496567525, - 782.0626514755934, - 781.6568665201017, - 781.2374685722434, - 780.824979048132, - 780.4931935037255, - 780.1452128020111, - 779.8404267366413, - 779.5414392171052, - 779.1902194839291, - 778.884799202609, - 778.5940111892907, - 778.3020000452102, - 777.939862737457, - 777.5889827628257, - 777.2188724545515, - 776.8259077214885, - 776.3685021177376, - 775.8965321976943, - 775.4336904572247, - 774.9128859089902, - 774.3529411763803, - 773.8170966498906, - 773.1865727422143, - 772.5614623206872, - 771.8771659606339, - 771.134363179144, - 770.3284106094371, - 769.4551178961253, - 768.4783347300288, - 767.3355002377416, - 766.1085641802997, - 764.8475163649473, - 763.4318784116529, - 761.9889238713464, - 760.4696822124189, - 758.8522729845771, - 757.1949534529911, - 755.4385603297042, - 753.7337199029674, - 751.9047543544842, - 750.0179619016544, - 748.0544066682405, - 746.0220163536242, - 743.9440304422789, - 741.8707784999928, - 739.6994495910709, - 737.4511087452989, - 735.1028562367485, - 732.5365693446337, - 729.9604294547156, - 727.547962581174, - 725.1788035968258, - 722.809418106781, - 720.5085958911026, - 718.1684296359216, - 715.7662461210064, - 713.3701556093304, - 711.1013159980143, - 708.7805386304638, - 706.5729461595135, - 704.4878253187246, - 702.4643140274159, - 700.441550204906, - 698.4612335499422, - 696.5856984302342, - 694.7594056489709, - 692.9381412941726, - 691.136061971878, - 689.5531042604916, - 688.1308070397167, - 686.6040680422311, - 684.9981426532078, - 683.5025255384375, - 682.0855965026726, - 680.757231194285, - 679.260934562425, - 678.0409975310088, - 676.9179143354665, - 675.767922263166, - 674.622868015052, - 673.3867358263274, - 672.3523975627203, - 671.2324401457913, - 670.1481347255101, - 669.2089741556221, - 668.2565177013422, - 667.3796235474542, - 666.3987632788187, - 665.3011166730067, - 663.9925932636431, - 662.7462230174315, - 661.5337833245734, - 660.3323744591405, - 659.1508301433013, - 658.1664363857983, - 656.8927495525746, - 655.8409250491884, - 654.8297356677756, - 653.4877347164518, - 652.6534915852372, - 651.8935876236526, - 651.0576230491438, - 649.9365784048709, - 648.8248657952989, - 647.8565539422561, - 647.4404856281379, - 647.1404335318277, - 646.9999093976458, - 646.3138915942982, - 645.9862284535702, - 645.8442999840693, - 645.8857278759806, - 646.0213141859764, - 646.455299100697, - 646.9690366711968, - 647.5571813630356, - 648.5641803890611, - 649.9424449024135, - 651.443067793079, - 653.0399782553769, - 654.5372262111626, - 656.6003533488101, - 658.830279281447, - 661.3580149039975, - 663.8892160637066, - 667.286008743042, - 670.0979637137091, - 673.0780538629762, - 676.0354481414419, - 679.656572062708, - 683.411606151815, - 687.2642641961644, - 690.9351514189775, - 694.5756868784439, - 698.5863099956148, - 702.4537362113838, - 706.5970526381816, - 710.8014229139487, - 715.0582430682321, - 719.3589091304963, - 723.6948171302064, - 728.0573630968272, - 732.4379430598235, - 736.8279530486602, - 741.2187890928021, - 745.601847221714, - 749.9685234648609, - 754.3102138517074, - 758.6183144117186, - 762.8842211743591, - 767.099330169094, - 771.2550374253879, - 775.3427389727058, - 779.3538308405124, - 783.2797090582726, - 787.1117696554513, - 790.8414086615135, - 794.4600221059236, - 797.9590060181469, - 801.3297564276479, - 804.5636693638916 - ], - "yaxis": "y" - } - ], - "layout": { - "legend": { - "title": { - "text": "variable" - }, - "tracegroupgap": 0 - }, - "margin": { - "t": 60 - }, - "template": { - "data": { - "bar": [ - { - "error_x": { - "color": "#2a3f5f" - }, - "error_y": { - "color": "#2a3f5f" - }, - "marker": { - "line": { - "color": "#E5ECF6", - "width": 0.5 - }, - "pattern": { - "fillmode": "overlay", - "size": 10, - "solidity": 0.2 - } - }, - "type": "bar" - } - ], - "barpolar": [ - { - "marker": { - "line": { - "color": "#E5ECF6", - "width": 0.5 - }, - "pattern": { - "fillmode": "overlay", - "size": 10, - "solidity": 0.2 - } - }, - "type": "barpolar" - } - ], - "carpet": [ - { - "aaxis": { - "endlinecolor": "#2a3f5f", - "gridcolor": "white", - "linecolor": "white", - "minorgridcolor": "white", - "startlinecolor": "#2a3f5f" - }, - "baxis": { - "endlinecolor": "#2a3f5f", - "gridcolor": "white", - "linecolor": "white", - "minorgridcolor": "white", - "startlinecolor": "#2a3f5f" - }, - "type": "carpet" - } - ], - "choropleth": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "type": "choropleth" - } - ], - "contour": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "colorscale": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ], - "type": "contour" - } - ], - "contourcarpet": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "type": "contourcarpet" - } - ], - "heatmap": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "colorscale": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ], - "type": "heatmap" - } - ], - "heatmapgl": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "colorscale": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ], - "type": "heatmapgl" - } - ], - "histogram": [ - { - "marker": { - "pattern": { - "fillmode": "overlay", - "size": 10, - "solidity": 0.2 - } - }, - "type": "histogram" - } - ], - "histogram2d": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "colorscale": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ], - "type": "histogram2d" - } - ], - "histogram2dcontour": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "colorscale": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ], - "type": "histogram2dcontour" - } - ], - "mesh3d": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "type": "mesh3d" - } - ], - "parcoords": [ - { - "line": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "parcoords" - } - ], - "pie": [ - { - "automargin": true, - "type": "pie" - } - ], - "scatter": [ - { - "fillpattern": { - "fillmode": "overlay", - "size": 10, - "solidity": 0.2 - }, - "type": "scatter" - } - ], - "scatter3d": [ - { - "line": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scatter3d" - } - ], - "scattercarpet": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scattercarpet" - } - ], - "scattergeo": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scattergeo" - } - ], - "scattergl": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scattergl" - } - ], - "scattermapbox": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scattermapbox" - } - ], - "scatterpolar": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scatterpolar" - } - ], - "scatterpolargl": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scatterpolargl" - } - ], - "scatterternary": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scatterternary" - } - ], - "surface": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "colorscale": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ], - "type": "surface" - } - ], - "table": [ - { - "cells": { - "fill": { - "color": "#EBF0F8" - }, - "line": { - "color": "white" - } - }, - "header": { - "fill": { - "color": "#C8D4E3" - }, - "line": { - "color": "white" - } - }, - "type": "table" - } - ] - }, - "layout": { - "annotationdefaults": { - "arrowcolor": "#2a3f5f", - "arrowhead": 0, - "arrowwidth": 1 - }, - "autotypenumbers": "strict", - "coloraxis": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "colorscale": { - "diverging": [ - [ - 0, - "#8e0152" - ], - [ - 0.1, - "#c51b7d" - ], - [ - 0.2, - "#de77ae" - ], - [ - 0.3, - "#f1b6da" - ], - [ - 0.4, - "#fde0ef" - ], - [ - 0.5, - "#f7f7f7" - ], - [ - 0.6, - "#e6f5d0" - ], - [ - 0.7, - "#b8e186" - ], - [ - 0.8, - "#7fbc41" - ], - [ - 0.9, - "#4d9221" - ], - [ - 1, - "#276419" - ] - ], - "sequential": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ], - "sequentialminus": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ] - }, - "colorway": [ - "#636efa", - "#EF553B", - "#00cc96", - "#ab63fa", - "#FFA15A", - "#19d3f3", - "#FF6692", - "#B6E880", - "#FF97FF", - "#FECB52" - ], - "font": { - "color": "#2a3f5f" - }, - "geo": { - "bgcolor": "white", - "lakecolor": "white", - "landcolor": "#E5ECF6", - "showlakes": true, - "showland": true, - "subunitcolor": "white" - }, - "hoverlabel": { - "align": "left" - }, - "hovermode": "closest", - "mapbox": { - "style": "light" - }, - "paper_bgcolor": "white", - "plot_bgcolor": "#E5ECF6", - "polar": { - "angularaxis": { - "gridcolor": "white", - "linecolor": "white", - "ticks": "" - }, - "bgcolor": "#E5ECF6", - "radialaxis": { - "gridcolor": "white", - "linecolor": "white", - "ticks": "" - } - }, - "scene": { - "xaxis": { - "backgroundcolor": "#E5ECF6", - "gridcolor": "white", - "gridwidth": 2, - "linecolor": "white", - "showbackground": true, - "ticks": "", - "zerolinecolor": "white" - }, - "yaxis": { - "backgroundcolor": "#E5ECF6", - "gridcolor": "white", - "gridwidth": 2, - "linecolor": "white", - "showbackground": true, - "ticks": "", - "zerolinecolor": "white" - }, - "zaxis": { - "backgroundcolor": "#E5ECF6", - "gridcolor": "white", - "gridwidth": 2, - "linecolor": "white", - "showbackground": true, - "ticks": "", - "zerolinecolor": "white" - } - }, - "shapedefaults": { - "line": { - "color": "#2a3f5f" - } - }, - "ternary": { - "aaxis": { - "gridcolor": "white", - "linecolor": "white", - "ticks": "" - }, - "baxis": { - "gridcolor": "white", - "linecolor": "white", - "ticks": "" - }, - "bgcolor": "#E5ECF6", - "caxis": { - "gridcolor": "white", - "linecolor": "white", - "ticks": "" - } - }, - "title": { - "x": 0.05 - }, - "xaxis": { - "automargin": true, - "gridcolor": "white", - "linecolor": "white", - "ticks": "", - "title": { - "standoff": 15 - }, - "zerolinecolor": "white", - "zerolinewidth": 2 - }, - "yaxis": { - "automargin": true, - "gridcolor": "white", - "linecolor": "white", - "ticks": "", - "title": { - "standoff": 15 - }, - "zerolinecolor": "white", - "zerolinewidth": 2 - } - } - }, - "xaxis": { - "anchor": "y", - "domain": [ - 0, - 1 - ], - "title": { - "text": "index" - } - }, - "yaxis": { - "anchor": "x", - "domain": [ - 0, - 1 - ], - "title": { - "text": "value" - } - } - } - }, - "text/html": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "from scipy.signal import savgol_filter\n", - "def filt(df, window_length=101, polyorder=2):\n", - " df = df.copy()\n", - " for column in df.columns:\n", - " df[column] = savgol_filter(df[column].values, window_length, polyorder)\n", - " return df\n", - "\n", - "df = pd.DataFrame(np.array(imgpts_list).reshape(-1, 10),\n", - " columns=['x0', 'y0', 'x1', 'y1', 'x2', 'y2', 'x3', 'y3', 'x4', 'y4'])\n", - "df[df==0] = None\n", - "df_filt = filt(df.dropna(), 51, 3)\n", - "imgpts_filt_list = df_filt.astype(int).values.reshape(-1, 5, 2)\n", - "\n", - "px.line(df-df_filt)\n", - "\n", - "px.line(df)\n", - "\n", - "px.line(df_filt)" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.9.7" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/utils/utils.py b/utils/utils.py deleted file mode 100644 index d3952c7..0000000 --- a/utils/utils.py +++ /dev/null @@ -1,111 +0,0 @@ -import cv2 as cv -import pandas as pd -import math -import numpy as np -from tqdm.notebook import tqdm - - -def encode(ann): - keypoints_2d = pd.DataFrame(np.array(ann['keypoints']).reshape(-1, 3), - columns=['x','y','conf'], index=range(1, 25)) - bbox = np.array(ann['bbox']) - score = ann['score'] - return keypoints_2d, bbox, score - - -def fit(imageSize, keypoints_2d, keypoints_3d, focus=1): - - objectPoints = keypoints_3d.loc[keypoints_2d.index].values - imagePoints = keypoints_2d[['x', 'y']].values.astype('float') - - n = len(imagePoints) - fx = fy = focus*np.hypot(*imageSize) - cx = imageSize[0]/2 - cy = imageSize[1]/2 - distCoeffs = np.zeros(4, np.float32) - if n < 6: - raise ValueError('Number of keypoints must be > 5') - - cameraMatrix = np.float32([[fx,0, cx], - [0, fy,cy], - [0, 0, 1]]) - - _, rvecs, tvecs = cv.solvePnP(objectPoints, imagePoints, cameraMatrix, distCoeffs, flags=cv.SOLVEPNP_ITERATIVE ) - return rvecs, tvecs, cameraMatrix, distCoeffs - - -def rvec2euler(rvec): - rvec_matrix = cv.Rodrigues(rvec)[0] - proj_matrix = np.hstack((rvec_matrix, np.zeros_like(rvec))) - euler_angles = cv.decomposeProjectionMatrix(proj_matrix)[6] - return euler_angles.flatten() - -# Checks if a matrix is a valid rotation matrix. -def isRotationMatrix(R) : - Rt = np.transpose(R) - shouldBeIdentity = np.dot(Rt, R) - I = np.identity(3, dtype = R.dtype) - n = np.linalg.norm(I - shouldBeIdentity) - return n < 1e-6 - -# Calculates rotation matrix to euler angles -# The result is the same as MATLAB except the order -# of the euler angles ( x and z are swapped ). -def rotationMatrixToEulerAngles(R) : - - assert(isRotationMatrix(R)) - - sy = math.sqrt(R[0,0] * R[0,0] + R[1,0] * R[1,0]) - - singular = sy < 1e-6 - - if not singular : - x = math.atan2(R[2,1] , R[2,2]) - y = math.atan2(-R[2,0], sy) - z = math.atan2(R[1,0], R[0,0]) - else : - x = math.atan2(-R[1,2], R[1,1]) - y = math.atan2(-R[2,0], sy) - z = 0 - - return np.array([x, y, z]) - -def rvec2euler_Fridman(rvec): - R = cv.Rodrigues(rvec)[0] - euler_angles = np.rad2deg(rotationMatrixToEulerAngles(R)) - return euler_angles - - -def pose_estimation(img_json, keypoints_3d, ImageSize=(1920, 1080), treshhold=0.01, focus=1, fridman=False): - poses = [] - for i, ann in enumerate(img_json): - keypoints_2d, bbox, score = encode(ann) - - conf_keypoints_2d = keypoints_2d[keypoints_2d['conf']>treshhold] - if len(conf_keypoints_2d)>5: - rvec, tvec, camMatrx, dist = fit(ImageSize, conf_keypoints_2d, keypoints_3d, focus=focus) - if not fridman: - euler_angles = rvec2euler(rvec) - else: - euler_angles = rvec2euler_Fridman(rvec) #alternative - - pose = {'Euler angles':[-euler_angles[2], -euler_angles[0]+90, -euler_angles[1]], - 'xyz coords':[tvec[2][0],tvec[0][0],-tvec[1][0]]} - poses.append(pose) - return poses - - -def image_pose_estimation(img_json, img_name, *args, **kvargs): - poses = pose_estimation(img_json, *args, **kvargs) - UE4_json = {'data':{'filename':img_name, 'poses':poses}} - return UE4_json - - -def video_pose_estimation(video_json, video_name, *args, **kvargs): - video_poses = [] - for frame in tqdm(video_json): - num = frame['frame'] - frame_poses = pose_estimation(frame['predictions'], *args, **kvargs) - video_poses.append({'frame':num, 'poses':frame_poses}) - UE4_json_video = {'filename':video_name, 'data':video_poses} - return UE4_json_video \ No newline at end of file