{ "cells": [ { "cell_type": "code", "execution_count": 1, "id": "bf522899", "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "2022-10-10 16:02:38.904952: I tensorflow/core/platform/cpu_feature_guard.cc:193] This TensorFlow binary is optimized with oneAPI Deep Neural Network Library (oneDNN) to use the following CPU instructions in performance-critical operations: AVX2 FMA\n", "To enable them in other operations, rebuild TensorFlow with the appropriate compiler flags.\n", "2022-10-10 16:02:39.399716: W tensorflow/stream_executor/platform/default/dso_loader.cc:64] Could not load dynamic library 'libcudart.so.11.0'; dlerror: libcudart.so.11.0: cannot open shared object file: No such file or directory\n", "2022-10-10 16:02:39.399733: I tensorflow/stream_executor/cuda/cudart_stub.cc:29] Ignore above cudart dlerror if you do not have a GPU set up on your machine.\n", "2022-10-10 16:02:39.483069: E tensorflow/stream_executor/cuda/cuda_blas.cc:2981] Unable to register cuBLAS factory: Attempting to register factory for plugin cuBLAS when one has already been registered\n", "2022-10-10 16:02:40.497585: W tensorflow/stream_executor/platform/default/dso_loader.cc:64] Could not load dynamic library 'libnvinfer.so.7'; dlerror: libnvinfer.so.7: cannot open shared object file: No such file or directory\n", "2022-10-10 16:02:40.497653: W tensorflow/stream_executor/platform/default/dso_loader.cc:64] Could not load dynamic library 'libnvinfer_plugin.so.7'; dlerror: libnvinfer_plugin.so.7: cannot open shared object file: No such file or directory\n", "2022-10-10 16:02:40.497660: W tensorflow/compiler/tf2tensorrt/utils/py_utils.cc:38] TF-TRT Warning: Cannot dlopen some TensorRT libraries. If you would like to use Nvidia GPU with TensorRT, please make sure the missing libraries mentioned above are installed properly.\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Loading DLC 2.2.2...\n" ] } ], "source": [ "import deeplabcut\n", "import os" ] }, { "cell_type": "code", "execution_count": 2, "id": "de7947d7", "metadata": {}, "outputs": [], "source": [ "where = '/home/sobolev/projects/sandbox/'\n", "video_folder = os.path.join(where, 'dlc_videos')\n", "config_path = os.path.join(where, 'ppc-sl-test-Andrey-2022-10-07', 'config.yaml')" ] }, { "cell_type": "code", "execution_count": 8, "id": "6a45eac7", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Created \"/home/sobolev/projects/sandbox/ppc-sl-test-Andrey-2022-10-07/videos\"\n", "Created \"/home/sobolev/projects/sandbox/ppc-sl-test-Andrey-2022-10-07/labeled-data\"\n", "Created \"/home/sobolev/projects/sandbox/ppc-sl-test-Andrey-2022-10-07/training-datasets\"\n", "Created \"/home/sobolev/projects/sandbox/ppc-sl-test-Andrey-2022-10-07/dlc-models\"\n", "2 videos from the directory /home/sobolev/projects/sandbox/dlc_videos were added to the project.\n", "Copying the videos\n", "/home/sobolev/projects/sandbox/ppc-sl-test-Andrey-2022-10-07/videos/video1.avi\n", "/home/sobolev/projects/sandbox/ppc-sl-test-Andrey-2022-10-07/videos/video2.avi\n", "Generated \"/home/sobolev/projects/sandbox/ppc-sl-test-Andrey-2022-10-07/config.yaml\"\n", "\n", "A new project with name ppc-sl-test-Andrey-2022-10-07 is created at /home/sobolev/projects/sandbox and a configurable file (config.yaml) is stored there. Change the parameters in this file to adapt to your project's needs.\n", " Once you have changed the configuration file, use the function 'extract_frames' to select frames for labeling.\n", ". [OPTIONAL] Use the function 'add_new_videos' to add new videos to your project (at any stage).\n" ] } ], "source": [ "# create project\n", "config_path = deeplabcut.create_new_project(\n", " project='ppc-sl-test',\n", " experimenter='Andrey',\n", " videos=[video_folder],\n", " videotype='.avi',\n", " copy_videos=True,\n", " working_directory=where\n", ")" ] }, { "cell_type": "code", "execution_count": 11, "id": "1b50cfd0", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Config file read successfully.\n", "Extracting frames based on kmeans ...\n", "Kmeans-quantization based extracting of frames from 0.0 seconds to 599.92 seconds.\n", "Extracting and downsampling... 11999 frames from the video.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "11999it [01:04, 187.24it/s]\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Kmeans clustering ... (this might take a while)\n", "Extracting frames based on kmeans ...\n", "Kmeans-quantization based extracting of frames from 0.0 seconds to 599.98 seconds.\n", "Extracting and downsampling... 12000 frames from the video.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "12000it [01:02, 192.97it/s]\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Kmeans clustering ... (this might take a while)\n", "Frames were successfully extracted, for the videos listed in the config.yaml file.\n", "\n", "You can now label the frames using the function 'label_frames' (Note, you should label frames extracted from diverse videos (and many videos; we do not recommend training on single videos!)).\n" ] } ], "source": [ "deeplabcut.extract_frames(project_path, userfeedback=False)" ] }, { "cell_type": "code", "execution_count": 7, "id": "287fc106", "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "\n", "(ipykernel_launcher.py:637066): Gtk-WARNING **: 13:38:19.243: Negative content height -9 (allocation 1, extents 5x5) while allocating gadget (node button, owner GtkToggleButton)\n", "\n", "(ipykernel_launcher.py:637066): Gtk-WARNING **: 13:49:07.267: Negative content height -9 (allocation 1, extents 5x5) while allocating gadget (node button, owner GtkToggleButton)\n", "\n", "(ipykernel_launcher.py:637066): Gtk-WARNING **: 13:49:07.299: Negative content height -9 (allocation 1, extents 5x5) while allocating gadget (node button, owner GtkToggleButton)\n", "\n", "(ipykernel_launcher.py:637066): Gtk-WARNING **: 13:49:07.315: Negative content height -9 (allocation 1, extents 5x5) while allocating gadget (node button, owner GtkToggleButton)\n", "\n", "(ipykernel_launcher.py:637066): Gtk-WARNING **: 13:49:07.333: Negative content height -9 (allocation 1, extents 5x5) while allocating gadget (node button, owner GtkToggleButton)\n", "\n", "(ipykernel_launcher.py:637066): Gtk-WARNING **: 13:49:07.348: Negative content height -9 (allocation 1, extents 5x5) while allocating gadget (node button, owner GtkToggleButton)\n", "\n", "(ipykernel_launcher.py:637066): Gtk-WARNING **: 13:49:07.363: Negative content height -9 (allocation 1, extents 5x5) while allocating gadget (node button, owner GtkToggleButton)\n", "\n", "(ipykernel_launcher.py:637066): Gtk-WARNING **: 13:49:07.381: Negative content height -9 (allocation 1, extents 5x5) while allocating gadget (node button, owner GtkToggleButton)\n", "\n", "(ipykernel_launcher.py:637066): Gtk-WARNING **: 13:49:07.396: Negative content height -9 (allocation 1, extents 5x5) while allocating gadget (node button, owner GtkToggleButton)\n", "\n", "(ipykernel_launcher.py:637066): Gtk-WARNING **: 13:49:07.414: Negative content height -9 (allocation 1, extents 5x5) while allocating gadget (node button, owner GtkToggleButton)\n", "\n", "(ipykernel_launcher.py:637066): Gtk-WARNING **: 13:49:07.430: Negative content height -9 (allocation 1, extents 5x5) while allocating gadget (node button, owner GtkToggleButton)\n", "\n", "(ipykernel_launcher.py:637066): Gtk-WARNING **: 13:49:07.448: Negative content height -9 (allocation 1, extents 5x5) while allocating gadget (node button, owner GtkToggleButton)\n", "\n", "(ipykernel_launcher.py:637066): Gtk-WARNING **: 13:58:03.072: Negative content height -9 (allocation 1, extents 5x5) while allocating gadget (node button, owner GtkToggleButton)\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "You can now check the labels, using 'check_labels' before proceeding. Then, you can use the function 'create_training_dataset' to create the training dataset.\n" ] } ], "source": [ "deeplabcut.label_frames(config_path)" ] }, { "cell_type": "code", "execution_count": 10, "id": "bede0381", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Creating images with labels by Andrey.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "100%|██████████████████████████████████████████████████████████████████████████████| 50/50 [00:07<00:00, 6.27it/s]\n", "100%|██████████████████████████████████████████████████████████████████████████████| 50/50 [00:08<00:00, 6.06it/s]" ] }, { "name": "stdout", "output_type": "stream", "text": [ "If all the labels are ok, then use the function 'create_training_dataset' to create the training dataset!\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\n" ] }, { "data": { "text/plain": [ "(None,)" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "deeplabcut.check_labels(config_path)," ] }, { "cell_type": "code", "execution_count": 11, "id": "9062dc3f", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Downloading a ImageNet-pretrained model from http://download.tensorflow.org/models/resnet_v1_50_2016_08_28.tar.gz....\n", "The training dataset is successfully created. Use the function 'train_network' to start training. Happy training!\n" ] }, { "data": { "text/plain": [ "[(0.95,\n", " 1,\n", " (array([26, 86, 2, 55, 75, 93, 16, 73, 54, 95, 53, 92, 78, 13, 7, 30, 22,\n", " 24, 33, 8, 43, 62, 3, 71, 45, 48, 6, 99, 82, 76, 60, 80, 90, 68,\n", " 51, 27, 18, 56, 63, 74, 1, 61, 42, 41, 4, 15, 17, 40, 38, 5, 91,\n", " 59, 0, 34, 28, 50, 11, 35, 23, 52, 10, 31, 66, 57, 79, 85, 32, 84,\n", " 14, 89, 19, 29, 49, 97, 98, 69, 20, 94, 72, 77, 25, 37, 81, 46, 39,\n", " 65, 58, 12, 88, 70, 87, 36, 21, 83, 9]),\n", " array([96, 67, 64, 47, 44])))]" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "deeplabcut.create_training_dataset(config_path, num_shuffles=1)" ] }, { "cell_type": "code", "execution_count": 13, "id": "8ea16a17", "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "Config:\n", "{'all_joints': [[0], [1], [2]],\n", " 'all_joints_names': ['bodypart1', 'bodypart2', 'bodypart3'],\n", " 'alpha_r': 0.02,\n", " 'apply_prob': 0.5,\n", " 'batch_size': 1,\n", " 'contrast': {'clahe': True,\n", " 'claheratio': 0.1,\n", " 'histeq': True,\n", " 'histeqratio': 0.1},\n", " 'convolution': {'edge': False,\n", " 'emboss': {'alpha': [0.0, 1.0], 'strength': [0.5, 1.5]},\n", " 'embossratio': 0.1,\n", " 'sharpen': False,\n", " 'sharpenratio': 0.3},\n", " 'crop_pad': 0,\n", " 'cropratio': 0.4,\n", " 'dataset': 'training-datasets/iteration-0/UnaugmentedDataSet_ppc-sl-testOct7/ppc-sl-test_Andrey95shuffle1.mat',\n", " 'dataset_type': 'default',\n", " 'decay_steps': 30000,\n", " 'deterministic': False,\n", " 'display_iters': 1000,\n", " 'fg_fraction': 0.25,\n", " 'global_scale': 0.8,\n", " 'init_weights': '/home/sobolev/projects/pySIT/lib/python3.8/site-packages/deeplabcut/pose_estimation_tensorflow/models/pretrained/resnet_v1_50.ckpt',\n", " 'intermediate_supervision': False,\n", " 'intermediate_supervision_layer': 12,\n", " 'location_refinement': True,\n", " 'locref_huber_loss': True,\n", " 'locref_loss_weight': 0.05,\n", " 'locref_stdev': 7.2801,\n", " 'log_dir': 'log',\n", " 'lr_init': 0.0005,\n", " 'max_input_size': 1500,\n", " 'mean_pixel': [123.68, 116.779, 103.939],\n", " 'metadataset': 'training-datasets/iteration-0/UnaugmentedDataSet_ppc-sl-testOct7/Documentation_data-ppc-sl-test_95shuffle1.pickle',\n", " 'min_input_size': 64,\n", " 'mirror': False,\n", " 'multi_stage': False,\n", " 'multi_step': [[0.005, 10000],\n", " [0.02, 430000],\n", " [0.002, 730000],\n", " [0.001, 1030000]],\n", " 'net_type': 'resnet_50',\n", " 'num_joints': 3,\n", " 'optimizer': 'sgd',\n", " 'pairwise_huber_loss': False,\n", " 'pairwise_predict': False,\n", " 'partaffinityfield_predict': False,\n", " 'pos_dist_thresh': 17,\n", " 'project_path': '/home/sobolev/projects/sandbox/ppc-sl-test-Andrey-2022-10-07',\n", " 'regularize': False,\n", " 'rotation': 25,\n", " 'rotratio': 0.4,\n", " 'save_iters': 50000,\n", " 'scale_jitter_lo': 0.5,\n", " 'scale_jitter_up': 1.25,\n", " 'scoremap_dir': 'test',\n", " 'shuffle': True,\n", " 'snapshot_prefix': '/home/sobolev/projects/sandbox/ppc-sl-test-Andrey-2022-10-07/dlc-models/iteration-0/ppc-sl-testOct7-trainset95shuffle1/train/snapshot',\n", " 'stride': 8.0,\n", " 'weigh_negatives': False,\n", " 'weigh_only_present_joints': False,\n", " 'weigh_part_predictions': False,\n", " 'weight_decay': 0.0001}\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Selecting single-animal trainer\n", "Batch Size is 1\n", "Loading ImageNet-pretrained resnet_50\n", "Max_iters overwritten as 10000\n", "Training parameter:\n", "{'stride': 8.0, 'weigh_part_predictions': False, 'weigh_negatives': False, 'fg_fraction': 0.25, 'mean_pixel': [123.68, 116.779, 103.939], 'shuffle': True, 'snapshot_prefix': '/home/sobolev/projects/sandbox/ppc-sl-test-Andrey-2022-10-07/dlc-models/iteration-0/ppc-sl-testOct7-trainset95shuffle1/train/snapshot', 'log_dir': 'log', 'global_scale': 0.8, 'location_refinement': True, 'locref_stdev': 7.2801, 'locref_loss_weight': 0.05, 'locref_huber_loss': True, 'optimizer': 'sgd', 'intermediate_supervision': False, 'intermediate_supervision_layer': 12, 'regularize': False, 'weight_decay': 0.0001, 'crop_pad': 0, 'scoremap_dir': 'test', 'batch_size': 1, 'dataset_type': 'default', 'deterministic': False, 'mirror': False, 'pairwise_huber_loss': False, 'weigh_only_present_joints': False, 'partaffinityfield_predict': False, 'pairwise_predict': False, 'all_joints': [[0], [1], [2]], 'all_joints_names': ['bodypart1', 'bodypart2', 'bodypart3'], 'alpha_r': 0.02, 'apply_prob': 0.5, 'contrast': {'clahe': True, 'claheratio': 0.1, 'histeq': True, 'histeqratio': 0.1, 'gamma': False, 'sigmoid': False, 'log': False, 'linear': False}, 'convolution': {'edge': False, 'emboss': {'alpha': [0.0, 1.0], 'strength': [0.5, 1.5]}, 'embossratio': 0.1, 'sharpen': False, 'sharpenratio': 0.3}, 'cropratio': 0.4, 'dataset': 'training-datasets/iteration-0/UnaugmentedDataSet_ppc-sl-testOct7/ppc-sl-test_Andrey95shuffle1.mat', 'decay_steps': 30000, 'display_iters': 1000, 'init_weights': '/home/sobolev/projects/pySIT/lib/python3.8/site-packages/deeplabcut/pose_estimation_tensorflow/models/pretrained/resnet_v1_50.ckpt', 'lr_init': 0.0005, 'max_input_size': 1500, 'metadataset': 'training-datasets/iteration-0/UnaugmentedDataSet_ppc-sl-testOct7/Documentation_data-ppc-sl-test_95shuffle1.pickle', 'min_input_size': 64, 'multi_stage': False, 'multi_step': [[0.005, 10000], [0.02, 430000], [0.002, 730000], [0.001, 1030000]], 'net_type': 'resnet_50', 'num_joints': 3, 'pos_dist_thresh': 17, 'project_path': '/home/sobolev/projects/sandbox/ppc-sl-test-Andrey-2022-10-07', 'rotation': 25, 'rotratio': 0.4, 'save_iters': 50000, 'scale_jitter_lo': 0.5, 'scale_jitter_up': 1.25, 'covering': True, 'elastic_transform': True, 'motion_blur': True, 'motion_blur_params': {'k': 7, 'angle': (-90, 90)}}\n", "Starting training....\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "iteration: 1000 loss: 0.0155 lr: 0.005\n", "iteration: 2000 loss: 0.0075 lr: 0.005\n", "iteration: 3000 loss: 0.0061 lr: 0.005\n", "iteration: 4000 loss: 0.0055 lr: 0.005\n", "iteration: 5000 loss: 0.0052 lr: 0.005\n", "iteration: 6000 loss: 0.0048 lr: 0.005\n", "iteration: 7000 loss: 0.0046 lr: 0.005\n", "iteration: 8000 loss: 0.0044 lr: 0.005\n", "iteration: 9000 loss: 0.0043 lr: 0.005\n", "iteration: 10000 loss: 0.0041 lr: 0.005\n", "2022-10-07 19:42:29.986641: W tensorflow/core/kernels/queue_base.cc:277] _1_fifo_queue: Skipping cancelled enqueue attempt with queue not closed\n", "Exception in thread Thread-9:\n", "Traceback (most recent call last):\n", " File \"/home/sobolev/projects/pySIT/lib/python3.8/site-packages/tensorflow/python/client/session.py\", line 1378, in _do_call\n", " return fn(*args)\n", " File \"/home/sobolev/projects/pySIT/lib/python3.8/site-packages/tensorflow/python/client/session.py\", line 1361, in _run_fn\n", " return self._call_tf_sessionrun(options, feed_dict, fetch_list,\n", " File \"/home/sobolev/projects/pySIT/lib/python3.8/site-packages/tensorflow/python/client/session.py\", line 1454, in _call_tf_sessionrun\n", " return tf_session.TF_SessionRun_wrapper(self._session, options, feed_dict,\n", "tensorflow.python.framework.errors_impl.CancelledError: Enqueue operation was cancelled\n", "\t [[{{node fifo_queue_enqueue}}]]\n", "\n", "During handling of the above exception, another exception occurred:\n", "\n", "Traceback (most recent call last):\n", " File \"/usr/lib/python3.8/threading.py\", line 932, in _bootstrap_inner\n", " self.run()\n", " File \"/usr/lib/python3.8/threading.py\", line 870, in run\n", " self._target(*self._args, **self._kwargs)\n", " File \"/home/sobolev/projects/pySIT/lib/python3.8/site-packages/deeplabcut/pose_estimation_tensorflow/core/train.py\", line 83, in load_and_enqueue\n", " sess.run(enqueue_op, feed_dict=food)\n", " File \"/home/sobolev/projects/pySIT/lib/python3.8/site-packages/tensorflow/python/client/session.py\", line 968, in run\n", " result = self._run(None, fetches, feed_dict, options_ptr,\n", " File \"/home/sobolev/projects/pySIT/lib/python3.8/site-packages/tensorflow/python/client/session.py\", line 1191, in _run\n", " results = self._do_run(handle, final_targets, final_fetches,\n", " File \"/home/sobolev/projects/pySIT/lib/python3.8/site-packages/tensorflow/python/client/session.py\", line 1371, in _do_run\n", " return self._do_call(_run_fn, feeds, fetches, targets, options,\n", " File \"/home/sobolev/projects/pySIT/lib/python3.8/site-packages/tensorflow/python/client/session.py\", line 1397, in _do_call\n", " raise type(e)(node_def, op, message) # pylint: disable=no-value-for-parameter\n", "tensorflow.python.framework.errors_impl.CancelledError: Graph execution error:\n", "\n", "Detected at node 'fifo_queue_enqueue' defined at (most recent call last):\n", " File \"/usr/lib/python3.8/runpy.py\", line 194, in _run_module_as_main\n", " return _run_code(code, main_globals, None,\n", " File \"/usr/lib/python3.8/runpy.py\", line 87, in _run_code\n", " exec(code, run_globals)\n", " File \"/home/sobolev/projects/pySIT/lib/python3.8/site-packages/ipykernel_launcher.py\", line 16, in \n", " app.launch_new_instance()\n", " File \"/home/sobolev/projects/pySIT/lib/python3.8/site-packages/traitlets/config/application.py\", line 845, in launch_instance\n", " app.start()\n", " File \"/home/sobolev/projects/pySIT/lib/python3.8/site-packages/ipykernel/kernelapp.py\", line 667, in start\n", " self.io_loop.start()\n", " File \"/home/sobolev/projects/pySIT/lib/python3.8/site-packages/tornado/platform/asyncio.py\", line 199, in start\n", " self.asyncio_loop.run_forever()\n", " File \"/usr/lib/python3.8/asyncio/base_events.py\", line 570, in run_forever\n", " self._run_once()\n", " File \"/usr/lib/python3.8/asyncio/base_events.py\", line 1859, in _run_once\n", " handle._run()\n", " File \"/usr/lib/python3.8/asyncio/events.py\", line 81, in _run\n", " self._context.run(self._callback, *self._args)\n", " File \"/home/sobolev/projects/pySIT/lib/python3.8/site-packages/ipykernel/kernelbase.py\", line 456, in dispatch_queue\n", " await self.process_one()\n", " File \"/home/sobolev/projects/pySIT/lib/python3.8/site-packages/ipykernel/kernelbase.py\", line 445, in process_one\n", " await dispatch(*args)\n", " File \"/home/sobolev/projects/pySIT/lib/python3.8/site-packages/ipykernel/kernelbase.py\", line 352, in dispatch_shell\n", " await result\n", " File \"/home/sobolev/projects/pySIT/lib/python3.8/site-packages/ipykernel/kernelbase.py\", line 647, in execute_request\n", " reply_content = await reply_content\n", " File \"/home/sobolev/projects/pySIT/lib/python3.8/site-packages/ipykernel/ipkernel.py\", line 345, in do_execute\n", " res = shell.run_cell(code, store_history=store_history, silent=silent)\n", " File \"/home/sobolev/projects/pySIT/lib/python3.8/site-packages/ipykernel/zmqshell.py\", line 532, in run_cell\n", " return super(ZMQInteractiveShell, self).run_cell(*args, **kwargs)\n", " File \"/home/sobolev/projects/pySIT/lib/python3.8/site-packages/IPython/core/interactiveshell.py\", line 2898, in run_cell\n", " result = self._run_cell(\n", " File \"/home/sobolev/projects/pySIT/lib/python3.8/site-packages/IPython/core/interactiveshell.py\", line 2944, in _run_cell\n", " return runner(coro)\n", " File \"/home/sobolev/projects/pySIT/lib/python3.8/site-packages/IPython/core/async_helpers.py\", line 68, in _pseudo_sync_runner\n", " coro.send(None)\n", " File \"/home/sobolev/projects/pySIT/lib/python3.8/site-packages/IPython/core/interactiveshell.py\", line 3169, in run_cell_async\n", " has_raised = await self.run_ast_nodes(code_ast.body, cell_name,\n", " File \"/home/sobolev/projects/pySIT/lib/python3.8/site-packages/IPython/core/interactiveshell.py\", line 3361, in run_ast_nodes\n", " if (await self.run_code(code, result, async_=asy)):\n", " File \"/home/sobolev/projects/pySIT/lib/python3.8/site-packages/IPython/core/interactiveshell.py\", line 3441, in run_code\n", " exec(code_obj, self.user_global_ns, self.user_ns)\n", " File \"/tmp/ipykernel_637066/2130161337.py\", line 1, in \n", " deeplabcut.train_network(config_path, maxiters=10000)\n", " File \"/home/sobolev/projects/pySIT/lib/python3.8/site-packages/deeplabcut/pose_estimation_tensorflow/training.py\", line 210, in train_network\n", " train(\n", " File \"/home/sobolev/projects/pySIT/lib/python3.8/site-packages/deeplabcut/pose_estimation_tensorflow/core/train.py\", line 168, in train\n", " batch, enqueue_op, placeholders = setup_preloading(batch_spec)\n", " File \"/home/sobolev/projects/pySIT/lib/python3.8/site-packages/deeplabcut/pose_estimation_tensorflow/core/train.py\", line 69, in setup_preloading\n", " enqueue_op = q.enqueue(placeholders_list)\n", "Node: 'fifo_queue_enqueue'\n", "Enqueue operation was cancelled\n", "\t [[{{node fifo_queue_enqueue}}]]\n", "\n", "Original stack trace for 'fifo_queue_enqueue':\n", " File \"/usr/lib/python3.8/runpy.py\", line 194, in _run_module_as_main\n", " return _run_code(code, main_globals, None,\n", " File \"/usr/lib/python3.8/runpy.py\", line 87, in _run_code\n", " exec(code, run_globals)\n", " File \"/home/sobolev/projects/pySIT/lib/python3.8/site-packages/ipykernel_launcher.py\", line 16, in \n", " app.launch_new_instance()\n", " File \"/home/sobolev/projects/pySIT/lib/python3.8/site-packages/traitlets/config/application.py\", line 845, in launch_instance\n", " app.start()\n", " File \"/home/sobolev/projects/pySIT/lib/python3.8/site-packages/ipykernel/kernelapp.py\", line 667, in start\n", " self.io_loop.start()\n", " File \"/home/sobolev/projects/pySIT/lib/python3.8/site-packages/tornado/platform/asyncio.py\", line 199, in start\n", " self.asyncio_loop.run_forever()\n", " File \"/usr/lib/python3.8/asyncio/base_events.py\", line 570, in run_forever\n", " self._run_once()\n", " File \"/usr/lib/python3.8/asyncio/base_events.py\", line 1859, in _run_once\n", " handle._run()\n", " File \"/usr/lib/python3.8/asyncio/events.py\", line 81, in _run\n", " self._context.run(self._callback, *self._args)\n", " File \"/home/sobolev/projects/pySIT/lib/python3.8/site-packages/ipykernel/kernelbase.py\", line 456, in dispatch_queue\n", " await self.process_one()\n", " File \"/home/sobolev/projects/pySIT/lib/python3.8/site-packages/ipykernel/kernelbase.py\", line 445, in process_one\n", " await dispatch(*args)\n", " File \"/home/sobolev/projects/pySIT/lib/python3.8/site-packages/ipykernel/kernelbase.py\", line 352, in dispatch_shell\n", " await result\n", " File \"/home/sobolev/projects/pySIT/lib/python3.8/site-packages/ipykernel/kernelbase.py\", line 647, in execute_request\n", " reply_content = await reply_content\n", " File \"/home/sobolev/projects/pySIT/lib/python3.8/site-packages/ipykernel/ipkernel.py\", line 345, in do_execute\n", " res = shell.run_cell(code, store_history=store_history, silent=silent)\n", " File \"/home/sobolev/projects/pySIT/lib/python3.8/site-packages/ipykernel/zmqshell.py\", line 532, in run_cell\n", " return super(ZMQInteractiveShell, self).run_cell(*args, **kwargs)\n", " File \"/home/sobolev/projects/pySIT/lib/python3.8/site-packages/IPython/core/interactiveshell.py\", line 2898, in run_cell\n", " result = self._run_cell(\n", " File \"/home/sobolev/projects/pySIT/lib/python3.8/site-packages/IPython/core/interactiveshell.py\", line 2944, in _run_cell\n", " return runner(coro)\n", " File \"/home/sobolev/projects/pySIT/lib/python3.8/site-packages/IPython/core/async_helpers.py\", line 68, in _pseudo_sync_runner\n", " coro.send(None)\n", " File \"/home/sobolev/projects/pySIT/lib/python3.8/site-packages/IPython/core/interactiveshell.py\", line 3169, in run_cell_async\n", " has_raised = await self.run_ast_nodes(code_ast.body, cell_name,\n", " File \"/home/sobolev/projects/pySIT/lib/python3.8/site-packages/IPython/core/interactiveshell.py\", line 3361, in run_ast_nodes\n", " if (await self.run_code(code, result, async_=asy)):\n", " File \"/home/sobolev/projects/pySIT/lib/python3.8/site-packages/IPython/core/interactiveshell.py\", line 3441, in run_code\n", " exec(code_obj, self.user_global_ns, self.user_ns)\n", " File \"/tmp/ipykernel_637066/2130161337.py\", line 1, in \n", " deeplabcut.train_network(config_path, maxiters=10000)\n", " File \"/home/sobolev/projects/pySIT/lib/python3.8/site-packages/deeplabcut/pose_estimation_tensorflow/training.py\", line 210, in train_network\n", " train(\n", " File \"/home/sobolev/projects/pySIT/lib/python3.8/site-packages/deeplabcut/pose_estimation_tensorflow/core/train.py\", line 168, in train\n", " batch, enqueue_op, placeholders = setup_preloading(batch_spec)\n", " File \"/home/sobolev/projects/pySIT/lib/python3.8/site-packages/deeplabcut/pose_estimation_tensorflow/core/train.py\", line 69, in setup_preloading\n", " enqueue_op = q.enqueue(placeholders_list)\n", " File \"/home/sobolev/projects/pySIT/lib/python3.8/site-packages/tensorflow/python/ops/data_flow_ops.py\", line 346, in enqueue\n", " return gen_data_flow_ops.queue_enqueue_v2(\n", " File \"/home/sobolev/projects/pySIT/lib/python3.8/site-packages/tensorflow/python/ops/gen_data_flow_ops.py\", line 4063, in queue_enqueue_v2\n", " _, _, _op, _outputs = _op_def_library._apply_op_helper(\n", " File \"/home/sobolev/projects/pySIT/lib/python3.8/site-packages/tensorflow/python/framework/op_def_library.py\", line 797, in _apply_op_helper\n", " op = g._create_op_internal(op_type_name, inputs, dtypes=None,\n", " File \"/home/sobolev/projects/pySIT/lib/python3.8/site-packages/tensorflow/python/framework/ops.py\", line 3800, in _create_op_internal\n", " ret = Operation(\n", "\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "The network is now trained and ready to evaluate. Use the function 'evaluate_network' to evaluate the network.\n" ] } ], "source": [ "deeplabcut.train_network(config_path, maxiters=10000)" ] }, { "cell_type": "code", "execution_count": 3, "id": "80fed887", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Running DLC_resnet50_ppc-sl-testOct7shuffle1_10000 with # of training iterations: 10000\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/home/sobolev/projects/pySIT/lib/python3.8/site-packages/tensorflow/python/keras/engine/base_layer_v1.py:1694: UserWarning: `layer.apply` is deprecated and will be removed in a future version. Please use `layer.__call__` method instead.\n", " warnings.warn('`layer.apply` is deprecated and '\n", "2022-10-10 16:02:56.728255: W tensorflow/stream_executor/platform/default/dso_loader.cc:64] Could not load dynamic library 'libcuda.so.1'; dlerror: libcuda.so.1: cannot open shared object file: No such file or directory\n", "2022-10-10 16:02:56.728662: W tensorflow/stream_executor/cuda/cuda_driver.cc:263] failed call to cuInit: UNKNOWN ERROR (303)\n", "2022-10-10 16:02:56.728738: I tensorflow/stream_executor/cuda/cuda_diagnostics.cc:156] kernel driver does not appear to be running on this host (agp-linux): /proc/driver/nvidia/version does not exist\n", "2022-10-10 16:02:56.729618: I tensorflow/core/platform/cpu_feature_guard.cc:193] This TensorFlow binary is optimized with oneAPI Deep Neural Network Library (oneDNN) to use the following CPU instructions in performance-critical operations: AVX2 FMA\n", "To enable them in other operations, rebuild TensorFlow with the appropriate compiler flags.\n", "2022-10-10 16:02:56.765723: I tensorflow/compiler/mlir/mlir_graph_optimization_pass.cc:354] MLIR V1 optimization pass is not enabled\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Running evaluation ...\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "100it [01:03, 1.56it/s]\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Analysis is done and the results are stored (see evaluation-results) for snapshot: snapshot-10000\n", "Results for 10000 training iterations: 95 1 train error: 12.64 pixels. Test error: 3.98 pixels.\n", "With pcutoff of 0.6 train error: 12.55 pixels. Test error: 3.28 pixels\n", "Thereby, the errors are given by the average distances between the labels by DLC and the scorer.\n", "Plotting...\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "100%|████████████████████████████████████████████████████████████████████████████| 100/100 [00:18<00:00, 5.33it/s]\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "The network is evaluated and the results are stored in the subdirectory 'evaluation_results'.\n", "Please check the results, then choose the best model (snapshot) for prediction. You can update the config.yaml file with the appropriate index for the 'snapshotindex'.\n", "Use the function 'analyze_video' to make predictions on new videos.\n", "Otherwise, consider adding more labeled-data and retraining the network (see DeepLabCut workflow Fig 2, Nath 2019)\n" ] }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAABBQAAAMTCAYAAAARvUSqAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8rg+JYAAAACXBIWXMAAA9hAAAPYQGoP6dpAAATVUlEQVR4nO3YQQ0AIBDAMMC/50PDXoSkVbD39swsAAAAgOK8DgAAAAD+YygAAAAAmaEAAAAAZIYCAAAAkBkKAAAAQGYoAAAAAJmhAAAAAGSGAgAAAJAZCgAAAEBmKAAAAACZoQAAAABkhgIAAACQGQoAAABAZigAAAAAmaEAAAAAZIYCAAAAkBkKAAAAQGYoAAAAAJmhAAAAAGSGAgAAAJAZCgAAAEBmKAAAAACZoQAAAABkhgIAAACQGQoAAABAZigAAAAAmaEAAAAAZIYCAAAAkBkKAAAAQGYoAAAAAJmhAAAAAGSGAgAAAJAZCgAAAEBmKAAAAACZoQAAAABkhgIAAACQGQoAAABAZigAAAAAmaEAAAAAZIYCAAAAkBkKAAAAQGYoAAAAAJmhAAAAAGSGAgAAAJAZCgAAAEBmKAAAAACZoQAAAABkhgIAAACQGQoAAABAZigAAAAAmaEAAAAAZIYCAAAAkBkKAAAAQGYoAAAAAJmhAAAAAGSGAgAAAJAZCgAAAEBmKAAAAACZoQAAAABkhgIAAACQGQoAAABAZigAAAAAmaEAAAAAZIYCAAAAkBkKAAAAQGYoAAAAAJmhAAAAAGSGAgAAAJAZCgAAAEBmKAAAAACZoQAAAABkhgIAAACQGQoAAABAZigAAAAAmaEAAAAAZIYCAAAAkBkKAAAAQGYoAAAAAJmhAAAAAGSGAgAAAJAZCgAAAEBmKAAAAACZoQAAAABkhgIAAACQGQoAAABAZigAAAAAmaEAAAAAZIYCAAAAkBkKAAAAQGYoAAAAAJmhAAAAAGSGAgAAAJAZCgAAAEBmKAAAAACZoQAAAABkhgIAAACQGQoAAABAZigAAAAAmaEAAAAAZIYCAAAAkBkKAAAAQGYoAAAAAJmhAAAAAGSGAgAAAJAZCgAAAEBmKAAAAACZoQAAAABkhgIAAACQGQoAAABAZigAAAAAmaEAAAAAZIYCAAAAkBkKAAAAQGYoAAAAAJmhAAAAAGSGAgAAAJAZCgAAAEBmKAAAAACZoQAAAABkhgIAAACQGQoAAABAZigAAAAAmaEAAAAAZIYCAAAAkBkKAAAAQGYoAAAAAJmhAAAAAGSGAgAAAJAZCgAAAEBmKAAAAACZoQAAAABkhgIAAACQGQoAAABAZigAAAAAmaEAAAAAZIYCAAAAkBkKAAAAQGYoAAAAAJmhAAAAAGSGAgAAAJAZCgAAAEBmKAAAAACZoQAAAABkhgIAAACQGQoAAABAZigAAAAAmaEAAAAAZIYCAAAAkBkKAAAAQGYoAAAAAJmhAAAAAGSGAgAAAJAZCgAAAEBmKAAAAACZoQAAAABkhgIAAACQGQoAAABAZigAAAAAmaEAAAAAZIYCAAAAkBkKAAAAQGYoAAAAAJmhAAAAAGSGAgAAAJAZCgAAAEBmKAAAAACZoQAAAABkhgIAAACQGQoAAABAZigAAAAAmaEAAAAAZIYCAAAAkBkKAAAAQGYoAAAAAJmhAAAAAGSGAgAAAJAZCgAAAEBmKAAAAACZoQAAAABkhgIAAACQGQoAAABAZigAAAAAmaEAAAAAZIYCAAAAkBkKAAAAQGYoAAAAAJmhAAAAAGSGAgAAAJAZCgAAAEBmKAAAAACZoQAAAABkhgIAAACQGQoAAABAZigAAAAAmaEAAAAAZIYCAAAAkBkKAAAAQGYoAAAAAJmhAAAAAGSGAgAAAJAZCgAAAEBmKAAAAACZoQAAAABkhgIAAACQGQoAAABAZigAAAAAmaEAAAAAZIYCAAAAkBkKAAAAQGYoAAAAAJmhAAAAAGSGAgAAAJAZCgAAAEBmKAAAAACZoQAAAABkhgIAAACQGQoAAABAZigAAAAAmaEAAAAAZIYCAAAAkBkKAAAAQGYoAAAAAJmhAAAAAGSGAgAAAJAZCgAAAEBmKAAAAACZoQAAAABkhgIAAACQGQoAAABAZigAAAAAmaEAAAAAZIYCAAAAkBkKAAAAQGYoAAAAAJmhAAAAAGSGAgAAAJAZCgAAAEBmKAAAAACZoQAAAABkhgIAAACQGQoAAABAZigAAAAAmaEAAAAAZIYCAAAAkBkKAAAAQGYoAAAAAJmhAAAAAGSGAgAAAJAZCgAAAEBmKAAAAACZoQAAAABkhgIAAACQGQoAAABAZigAAAAAmaEAAAAAZIYCAAAAkBkKAAAAQGYoAAAAAJmhAAAAAGSGAgAAAJAZCgAAAEBmKAAAAACZoQAAAABkhgIAAACQGQoAAABAZigAAAAAmaEAAAAAZIYCAAAAkBkKAAAAQGYoAAAAAJmhAAAAAGSGAgAAAJAZCgAAAEBmKAAAAACZoQAAAABkhgIAAACQGQoAAABAZigAAAAAmaEAAAAAZIYCAAAAkBkKAAAAQGYoAAAAAJmhAAAAAGSGAgAAAJAZCgAAAEBmKAAAAACZoQAAAABkhgIAAACQGQoAAABAZigAAAAAmaEAAAAAZIYCAAAAkBkKAAAAQGYoAAAAAJmhAAAAAGSGAgAAAJAZCgAAAEBmKAAAAACZoQAAAABkhgIAAACQGQoAAABAZigAAAAAmaEAAAAAZIYCAAAAkBkKAAAAQGYoAAAAAJmhAAAAAGSGAgAAAJAZCgAAAEBmKAAAAACZoQAAAABkhgIAAACQGQoAAABAZigAAAAAmaEAAAAAZIYCAAAAkBkKAAAAQGYoAAAAAJmhAAAAAGSGAgAAAJAZCgAAAEBmKAAAAACZoQAAAABkhgIAAACQGQoAAABAZigAAAAAmaEAAAAAZIYCAAAAkBkKAAAAQGYoAAAAAJmhAAAAAGSGAgAAAJAZCgAAAEBmKAAAAACZoQAAAABkhgIAAACQGQoAAABAZigAAAAAmaEAAAAAZIYCAAAAkBkKAAAAQGYoAAAAAJmhAAAAAGSGAgAAAJAZCgAAAEBmKAAAAACZoQAAAABkhgIAAACQGQoAAABAZigAAAAAmaEAAAAAZIYCAAAAkBkKAAAAQGYoAAAAAJmhAAAAAGSGAgAAAJAZCgAAAEBmKAAAAACZoQAAAABkhgIAAACQGQoAAABAZigAAAAAmaEAAAAAZIYCAAAAkBkKAAAAQGYoAAAAAJmhAAAAAGSGAgAAAJAZCgAAAEBmKAAAAACZoQAAAABkhgIAAACQGQoAAABAZigAAAAAmaEAAAAAZIYCAAAAkBkKAAAAQGYoAAAAAJmhAAAAAGSGAgAAAJAZCgAAAEBmKAAAAACZoQAAAABkhgIAAACQGQoAAABAZigAAAAAmaEAAAAAZIYCAAAAkBkKAAAAQGYoAAAAAJmhAAAAAGSGAgAAAJAZCgAAAEBmKAAAAACZoQAAAABkhgIAAACQGQoAAABAZigAAAAAmaEAAAAAZIYCAAAAkBkKAAAAQGYoAAAAAJmhAAAAAGSGAgAAAJAZCgAAAEBmKAAAAACZoQAAAABkhgIAAACQGQoAAABAZigAAAAAmaEAAAAAZIYCAAAAkBkKAAAAQGYoAAAAAJmhAAAAAGSGAgAAAJAZCgAAAEBmKAAAAACZoQAAAABkhgIAAACQGQoAAABAZigAAAAAmaEAAAAAZIYCAAAAkBkKAAAAQGYoAAAAAJmhAAAAAGSGAgAAAJAZCgAAAEBmKAAAAACZoQAAAABkhgIAAACQGQoAAABAZigAAAAAmaEAAAAAZIYCAAAAkBkKAAAAQGYoAAAAAJmhAAAAAGSGAgAAAJAZCgAAAEBmKAAAAACZoQAAAABkhgIAAACQGQoAAABAZigAAAAAmaEAAAAAZIYCAAAAkBkKAAAAQGYoAAAAAJmhAAAAAGSGAgAAAJAZCgAAAEBmKAAAAACZoQAAAABkhgIAAACQGQoAAABAZigAAAAAmaEAAAAAZIYCAAAAkBkKAAAAQGYoAAAAAJmhAAAAAGSGAgAAAJAZCgAAAEBmKAAAAACZoQAAAABkhgIAAACQGQoAAABAZigAAAAAmaEAAAAAZIYCAAAAkBkKAAAAQGYoAAAAAJmhAAAAAGSGAgAAAJAZCgAAAEBmKAAAAACZoQAAAABkhgIAAACQGQoAAABAZigAAAAAmaEAAAAAZIYCAAAAkBkKAAAAQGYoAAAAAJmhAAAAAGSGAgAAAJAZCgAAAEBmKAAAAACZoQAAAABkhgIAAACQGQoAAABAZigAAAAAmaEAAAAAZIYCAAAAkBkKAAAAQGYoAAAAAJmhAAAAAGSGAgAAAJAZCgAAAEBmKAAAAACZoQAAAABkhgIAAACQGQoAAABAZigAAAAAmaEAAAAAZIYCAAAAkBkKAAAAQGYoAAAAAJmhAAAAAGSGAgAAAJAZCgAAAEBmKAAAAACZoQAAAABkhgIAAACQGQoAAABAZigAAAAAmaEAAAAAZIYCAAAAkBkKAAAAQGYoAAAAAJmhAAAAAGSGAgAAAJAZCgAAAEBmKAAAAACZoQAAAABkhgIAAACQGQoAAABAZigAAAAAmaEAAAAAZIYCAAAAkBkKAAAAQGYoAAAAAJmhAAAAAGSGAgAAAJAZCgAAAEBmKAAAAACZoQAAAABkhgIAAACQGQoAAABAZigAAAAAmaEAAAAAZIYCAAAAkBkKAAAAQGYoAAAAAJmhAAAAAGSGAgAAAJAZCgAAAEBmKAAAAACZoQAAAABkhgIAAACQGQoAAABAZigAAAAAmaEAAAAAZIYCAAAAkBkKAAAAQGYoAAAAAJmhAAAAAGSGAgAAAJAZCgAAAEBmKAAAAACZoQAAAABkhgIAAACQGQoAAABAZigAAAAAmaEAAAAAZIYCAAAAkBkKAAAAQGYoAAAAAJmhAAAAAGSGAgAAAJAZCgAAAEBmKAAAAACZoQAAAABkhgIAAACQGQoAAABAZigAAAAAmaEAAAAAZIYCAAAAkBkKAAAAQGYoAAAAAJmhAAAAAGSGAgAAAJAZCgAAAEBmKAAAAACZoQAAAABkhgIAAACQGQoAAABAZigAAAAAmaEAAAAAZIYCAAAAkBkKAAAAQGYoAAAAAJmhAAAAAGSGAgAAAJAZCgAAAEBmKAAAAACZoQAAAABkhgIAAACQGQoAAABAZigAAAAAmaEAAAAAZIYCAAAAkBkKAAAAQGYoAAAAAJmhAAAAAGSGAgAAAJAZCgAAAEBmKAAAAACZoQAAAABkhgIAAACQGQoAAABAZigAAAAAmaEAAAAAZIYCAAAAkBkKAAAAQGYoAAAAAJmhAAAAAGSGAgAAAJAZCgAAAEBmKAAAAACZoQAAAABkhgIAAACQGQoAAABAZigAAAAAmaEAAAAAZIYCAAAAkBkKAAAAQGYoAAAAAJmhAAAAAGSGAgAAAJAZCgAAAEBmKAAAAACZoQAAAABkhgIAAACQGQoAAABAZigAAAAAmaEAAAAAZIYCAAAAkBkKAAAAQGYoAAAAAJmhAAAAAGSGAgAAAJAZCgAAAEBmKAAAAACZoQAAAABkhgIAAACQGQoAAABAZigAAAAAmaEAAAAAZIYCAAAAkBkKAAAAQGYoAAAAAJmhAAAAAGSGAgAAAJAZCgAAAEBmKAAAAACZoQAAAABkhgIAAACQGQoAAABAZigAAAAAmaEAAAAAZIYCAAAAkBkKAAAAQGYoAAAAAJmhAAAAAGSGAgAAAJAZCgAAAEBmKAAAAACZoQAAAABkhgIAAACQGQoAAABAZigAAAAAmaEAAAAAZIYCAAAAkBkKAAAAQGYoAAAAAJmhAAAAAGSGAgAAAJAZCgAAAEBmKAAAAACZoQAAAABkhgIAAACQGQoAAABAZigAAAAAmaEAAAAAZIYCAAAAkBkKAAAAQGYoAAAAAJmhAAAAAGSGAgAAAJAZCgAAAEBmKAAAAACZoQAAAABkhgIAAACQGQoAAABAZigAAAAAmaEAAAAAZIYCAAAAkBkKAAAAQGYoAAAAAJmhAAAAAGSGAgAAAJAZCgAAAEBmKAAAAACZoQAAAABkhgIAAACQGQoAAABAZigAAAAAmaEAAAAAZIYCAAAAkBkKAAAAQGYoAAAAAJmhAAAAAGSGAgAAAJAZCgAAAEBmKAAAAACZoQAAAABkhgIAAACQGQoAAABAZigAAAAAmaEAAAAAZIYCAAAAkBkKAAAAQGYoAAAAAJmhAAAAAGSGAgAAAJAZCgAAAEBmKAAAAACZoQAAAABkhgIAAACQGQoAAABAZigAAAAAmaEAAAAAZIYCAAAAkBkKAAAAQGYoAAAAAJmhAAAAAGSGAgAAAJAZCgAAAEBmKAAAAACZoQAAAABkhgIAAACQGQoAAABAZigAAAAAmaEAAAAAZIYCAAAAkBkKAAAAQGYoAAAAAJmhAAAAAGSGAgAAAJAZCgAAAEBmKAAAAACZoQAAAABkhgIAAACQGQoAAABAZigAAAAAmaEAAAAAZIYCAAAAkBkKAAAAQGYoAAAAAJmhAAAAAGSGAgAAAJAZCgAAAEBmKAAAAACZoQAAAABkhgIAAACQGQoAAABAZigAAAAAmaEAAAAAZIYCAAAAkBkKAAAAQGYoAAAAAJmhAAAAAGSGAgAAAJAZCgAAAEBmKAAAAACZoQAAAABkhgIAAACQGQoAAABAZigAAAAAmaEAAAAAZIYCAAAAkBkKAAAAQGYoAAAAANkFmp0JI/odyp8AAAAASUVORK5CYII=\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "deeplabcut.evaluate_network(config_path, plotting=True)" ] }, { "cell_type": "code", "execution_count": 6, "id": "6140a8ba", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Using snapshot-10000 for model /home/sobolev/projects/sandbox/ppc-sl-test-Andrey-2022-10-07/dlc-models/iteration-0/ppc-sl-testOct7-trainset95shuffle1\n", "Starting to analyze % /home/sobolev/projects/sandbox/ppc-sl-test-Andrey-2022-10-07/videos/DLC-test1.avi\n", "Loading /home/sobolev/projects/sandbox/ppc-sl-test-Andrey-2022-10-07/videos/DLC-test1.avi\n", "Duration of video [s]: 600.0 , recorded with 20.0 fps!\n", "Overall # of frames: 12000 found with (before cropping) frame dimensions: 1024 768\n", "Starting to extract posture\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "100%|██████████████████████████████████████████████████████████████████████| 12000/12000 [1:58:28<00:00, 1.69it/s]\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Saving results in /home/sobolev/projects/sandbox/ppc-sl-test-Andrey-2022-10-07/videos...\n", "Saving csv poses!\n", "The videos are analyzed. Now your research can truly start! \n", " You can create labeled videos with 'create_labeled_video'\n", "If the tracking is not satisfactory for some videos, consider expanding the training set. You can use the function 'extract_outlier_frames' to extract a few representative outlier frames.\n" ] }, { "data": { "text/plain": [ "'DLC_resnet50_ppc-sl-testOct7shuffle1_10000'" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "video1_path = '/home/sobolev/projects/sandbox/ppc-sl-test-Andrey-2022-10-07/videos/DLC-test1.avi'\n", "deeplabcut.analyze_videos(config_path,[video1_path], shuffle=1, save_as_csv=True, videotype='.avi')" ] }, { "cell_type": "code", "execution_count": 50, "id": "c365343c", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(12000, 10)" ] }, "execution_count": 50, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# read data from .csv\n", "import numpy as np\n", "import h5py, json\n", "\n", "# this is the video from 008229_hippoSIT_2022-05-17_21-44-43\n", "res_path = '/home/sobolev/projects/sandbox/ppc-sl-test-Andrey-2022-10-07/videos'\n", "f_name = 'DLC-test1DLC_resnet50_ppc-sl-testOct7shuffle1_10000.csv'\n", "\n", "data = np.genfromtxt(os.path.join(res_path, f_name), delimiter=',', skip_header=3)\n", "data.shape # idx, x1, y1, p1, x2, y2, p2, x3, y3, p3 " ] }, { "cell_type": "code", "execution_count": 51, "id": "721f5918", "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# detection probability distributions\n", "import matplotlib.pyplot as plt\n", "\n", "fig, axes = plt.subplots(3, 1, figsize=(5, 6))\n", "\n", "bins = 20\n", "titles = ['Nose', 'Body (red dot)', 'Tail']\n", "for i in range(3):\n", " axes[i].hist(data[:, i*3 + 3], bins=bins, edgecolor='black', label=titles[i])\n", " axes[i].legend(loc='upper left')\n", "axes[2].set_xlabel('Probability', fontsize=14)\n", "fig.tight_layout()" ] }, { "cell_type": "code", "execution_count": 54, "id": "67cb1636", "metadata": {}, "outputs": [], "source": [ "# test quality with actual position tracking\n", "source = '/home/sobolev/nevermind/Andrey/data/008229/008229_hippoSIT_2022-05-17_21-44-43/'\n", "f_name = '008229_hippoSIT_2022-05-17_21-44-43.h5'\n", "h5name = os.path.join(source, f_name)\n", "\n", "with h5py.File(h5name, 'r') as f:\n", " tl = np.array(f['processed']['timeline']) # time, X, Y, speed, etc.\n", " cfg = json.loads(f['processed'].attrs['parameters'])" ] }, { "cell_type": "code", "execution_count": 73, "id": "2fda5cc7", "metadata": {}, "outputs": [], "source": [ "# convert DLC predictions to meters\n", "pos_cfg = cfg['position']\n", "pixel_size = pos_cfg['floor_r_in_meters'] / float(pos_cfg['floor_radius'])\n", "\n", "x1_m = (pos_cfg['arena_x'] - data[:, 1]) * pixel_size * (-1 if pos_cfg['flip_x'] else 1)\n", "y1_m = (pos_cfg['arena_y'] - data[:, 2]) * pixel_size * (-1 if pos_cfg['flip_y'] else 1)\n", "x2_m = (pos_cfg['arena_x'] - data[:, 4]) * pixel_size * (-1 if pos_cfg['flip_x'] else 1)\n", "y2_m = (pos_cfg['arena_y'] - data[:, 5]) * pixel_size * (-1 if pos_cfg['flip_y'] else 1)" ] }, { "cell_type": "code", "execution_count": 123, "id": "0e7be248", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Text(0.5, 1.0, 'Trajectory of animal center, example')" ] }, "execution_count": 123, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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XMNVRERSUI0xAwtXNjB+zhKGT3ua8XOWsHBlQ7e/xsUXX8yVV17Jcccdx9SpU3nppZf4zGc+w5gxY/jsZz/L2rVrAWhpaeH73/8+Rx11FKNGjeLOO+9MOE84HObUU0/lF7/4BQD9+/cH9qRmOuusszj88MM5//zzia+s8swzz3D44YdzzDHHcM011/DlL3+5238/EZFCoRpjOxaubGD6gjWEIy0ANDSGmb5gDQCTx1R362vV19fz17/+ldLSUj7++GP+8pe/UFZWxnPPPccPfvADfvvb33Lvvfeyfv16Vq1aRVlZGZs3b259/vbt2/n617/OhRdeyIUXXtjm/CtXruTVV1+lqqqK8ePH88ILLzB27FiuuOIKnn/+eYYPH865557brb+TiEihUWBsx7xFa1uDYlw40sK8RWu7PTCeffbZlJaWArB161Yuuugi3nzzTcyMSCQCwHPPPceVV17Z2tQ6aNCg1ud/5StfYerUqZx//vmB5x83bhzDhg0DYPTo0axfv57+/ftzyCGHtM4nPPfcc7n33nu79fcSESkkakptx4bGcIe2d4V/eZb//M//5IQTTuCVV17hySefzGjO3/jx4/nDH/5AqsWn+/Tp0/pzaWkpzc3NXS+0iEgvo8DYjqrKUIe2d5etW7dSXe3VSB944IHW7SeffDL33HNPa1DzN6XOnj2bffbZh29/+9sZv86IESN4++23Wb9+PQCPPfZY1wsvIlLAFBjbMWXSCELlpQnbQuWlTJk0okdfd+rUqUyfPp0xY8Yk1OwuvfRSDjroIEaNGsXRRx/NI488kvC8n/3sZ4TDYaZOnZrR64RCIe6++25OOeUUjjnmGAYMGMDAgQO79XcRESkklqrZrbcYO3asS16o+PXXX+dTn/pUxudYuLKBeYvWsqExTFVliCmTRnRb/2I+5Erdvn07/fv3xznHt7/9bQ477DCuu+66Hn/djv4d/PJ5AdR8puvWObpunZPP183MXnbOjQ3ap8E3GZg8prrbB9rkk1/84hc8+OCDNDU1MWbMGK644opcF0lEJGcUGIXrrrsuKzVEEZFCoD5GERERHwVGERERHwVGERERHwVGERERHwXGHCktLWX06NGMGzeOo48+mp/85CdEo9Fuf50JEyaQPF0llaVLl6ZMIL59+3auuOIKDj30UI455hgmTJjAiy++mPZ8DzzwABs2bOhwmUVEckmjUnMkFAqxatUqtm3bRjgc5rzzzuPjjz9m1qxZuS5aoEsvvZThw4fz5ptvUlJSwrp163jttdfSPueBBx7gqKOOoqqqKkulFBHpOtUYM7F6Ptx2FMys9L6vnt+tp99vv/249957ueuuu3DO0dLSwpQpUzj22GMZNWoU99xzT+ux8+bNa91+0003AbB+/frWpaQ+9alPcdZZZ7Fz586Ur7d+/Xo+97nP8elPf5pPf/rTCWs2fvzxx5x22mmMGDGCK6+8kmg0yr/+9S9efPFFbr75ZkpKvLfM8OHDOe2001i/fj1HHXVU6/P/67/+i5kzZ/L444+zYsUKzj//fEaPHk043P25ZUVEeoICY3tWz4cnr4Gt7wLO+/7kNd0eHA855BBaWlr48MMPuf/++xk4cCDLly9n+fLl/OIXv2DdunX88Y9/5M033+Sll15i1apVvPzyyzz//PMArF27lquuuorXX3+dvffem7vvvjvla+233348++yz/OMf/+Cxxx7jmmuuad330ksvceedd/Laa6/xr3/9iwULFvDqq68yevTo1pU/MnHWWWcxduxYHn74YVatWkUo1LO5ZUVEuosCY3sWz4ZIUm0nEva295A//vGPPPTQQ4wePZrjjjuOTZs28eabb/LHP/6RP/7xj4wZM4ZPf/rTvPHGG7z55psAHHjggYwfPx6ACy64gGXLlqU8fyQS4bLLLmPkyJGcffbZCU2i48aN45BDDqG0tJRzzz037XlERHoj9TG2Z2t9x7Z30ttvv01paSn77bcfzjnuvPNOJk2alHDMokWLmD59epuUbevXr8fMErYlP/a77bbbGDp0KP/85z+JRqP07ds35fPMjCOPPJJ//vOftLS0tKk1lpWVJQwaymR5LBGRfKYaY3sGDuvY9k746KOPuPLKK7n66qsxMyZNmsR///d/ty5O/L//+7/s2LGDSZMm8ctf/pLt27cD0NDQwIcffgjAO++8w9/+9jcAHnnkEWpqalK+3tatWznggAMoKSnhV7/6FS0texZifumll1i3bh3RaJTHHnuMmpoaDj30UMaOHctNN93Uutbj+vXrefrppxk6dCgffvghmzZtYvfu3Tz11FOt5xowYADbtm3rtuskIpINqjG2Z+IMr0/R35xaHvK2d0E4HGb06NHs3r2biooKvvGNb3D99dcD3gjQ9evX8+lPfxrnHPvuuy8LFy7ki1/8Iq+//jqf+cxnAOjfvz+//vWvKS0tZcSIEfz85z/nm9/8JkcccQTf+ta3Wl/rtNNOo7y8HIDPfOYz/PjHP+bMM8/koYce4pRTTklYIPnYY4/l6quv5q233uKEE07gq1/9KgD33Xcf3/ve9/jkJz9JKBRiyJAhzJs3j/LycmbMmMG4ceOorq7m8MMPbz3XxRdfzJVXXkkoFOJvf/ub+hlFpCBo2alMrJ7v9SlurfdqihNnwKjabilfdyw7tX79er785S/zyiuvdEuZskXLTmWfrlvn6Lp1Tj5fNy071VWjarstEIqISH7Lqz5GMzvFzNaa2VtmNi1g//Vm9pqZrTazxWb2iVyUM98cfPDBBVdbFBHJV3kTGM2sFPg5cCpwBHCumR2RdNhKYKxzbhTwODC3s6/X25uQ852uv4jkq7wJjMA44C3n3NvOuSbgUeAr/gOcc39yzsVTuvwd6NTQ0L59+7Jp0yZ9OOeIc45NmzYlTBMREckX+dTHWA2863tcDxyX5vhLgN8H7TCzy4HLAYYOHcrSpUuT97PXXnvx7rvvBjw7u5xzaecc9lYtLS3s2LGDf//73516/vbt29v8XaV9um6do+vWOYV63fIpMGbMzC4AxgJfCNrvnLsXuBe8Uan5OioK8nvUVj7TdescXbfO0XXrnEK9bvkUGBuAA32Ph8W2JTCzk4AbgS8453ZnqWwiIlIk8qmPcTlwmJkNN7MK4OtAnf8AMxsD3AOc4Zz7MAdlFBGRXi5vAqNzrhm4GlgEvA7Md869amazzeyM2GHzgP7Ab8xslZnVpTidiIhIp+RTUyrOuWeAZ5K2zfD9fFLWCyUiIkUlb2qMIiIi+UCBUURExEeBUURExEeBUURExEeBUURExEeBUURExEeBUURExEeBUURExEeBUURExEeBUURExEeBUURExEeBUURExEeBUURExEeBUURExEeBUURExEeBUURExEeBUURExEeBUURExEeBUURExEeBUURExEeBUURExEeBUURExEeBUURExEeBUURExEeBUURExEeBUURExEeBUURExEeBUURExEeBUURExEeBUURExEeBUURExEeBUURExEeBUURExEeBUURExEeBUURExEeBUURExEeBUURExEeBUURExEeBUURExKcs1wUQEZECtXo+PHktRHbs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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# example original / reconstructed trajectories\n", "idx_start, idx_end = 1000, 1500\n", "\n", "fig = plt.figure(figsize=(7,7))\n", "ax = fig.add_subplot(111)\n", "ax.scatter(traj[:, 1][idx_start:idx_end], traj[:, 2][idx_start:idx_end], label='Tracking')\n", "ax.scatter(x2_m[idx_start:idx_end], y2_m[idx_start:idx_end], label='DeepLabCut')\n", "#ax.scatter(x1_m[idx_start:idx_end], y1_m[idx_start:idx_end], label='DeepLabCut - Nose')\n", "ax.set_xlim(-0.25, 0.25)\n", "ax.set_ylim(-0.25, 0.25)\n", "ax.legend(loc='upper left')\n", "ax.grid()\n", "ax.set_xlabel('X, m', fontsize=14)\n", "ax.set_ylabel('Y, m', fontsize=14)\n", "ax.set_title('Trajectory of animal center, example')" ] }, { "cell_type": "code", "execution_count": 115, "id": "4fa39a2e", "metadata": {}, "outputs": [], "source": [ "from scipy import signal\n", "\n", "# head direction as an angle between bodypart1 and bodypart2\n", "x_hd = x1_m - x2_m\n", "y_hd = y1_m - y2_m\n", "phi = np.arctan2(y_hd, x_hd)\n", "\n", "# smooth it a bit\n", "#width = 40 # 100 points ~= 1 sec with at 100Hz\n", "#kernel = signal.gaussian(width, std=(width) / 7.2)\n", "#phi_smooth = np.convolve(phi, kernel, 'same') / kernel.sum()" ] }, { "cell_type": "code", "execution_count": 125, "id": "870eb9e6", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Text(0.5, 0, 'Time, sec')" ] }, "execution_count": 125, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# tl is sampled 100Hz, we need 20, so take every 5th\n", "idxs = np.arange(0, 5*len(data), 5)\n", "xlim_l, xlim_r = 0, 50\n", "\n", "fig = plt.figure(figsize=(16, 6))\n", "ax = fig.add_subplot(211)\n", "ax.plot(tl[:, 0], np.rad2deg(-tl[:, 4]))\n", "ax.set_xlim(xlim_l, xlim_r)\n", "ax.axhline(0, color='black', ls='--')\n", "ax.set_title('Head direction, example', fontsize=14)\n", "ax.set_ylabel('Tracking, deg', fontsize=14)\n", "\n", "ax = fig.add_subplot(212)\n", "ax.plot(tl[idxs][:, 0], np.rad2deg(phi), color='tab:orange')\n", "ax.set_xlim(xlim_l, xlim_r)\n", "ax.axhline(0, color='black', ls='--')\n", "ax.set_ylabel('DeepLabCut, deg', fontsize=14)\n", "ax.set_xlabel('Time, sec', fontsize=14)" ] }, { "cell_type": "code", "execution_count": 71, "id": "59de93eb", "metadata": {}, "outputs": [], "source": [ "\n", "\n", "# distance between points\n", "diffs = np.sqrt(((traj[:, 1] - x_m)**2 + (traj[:, 2] - y_m)**2))\n", "\n", "#plt.hist(diffs, bins=20)" ] }, { "cell_type": "code", "execution_count": null, "id": "30e7f9ba", "metadata": {}, "outputs": [], "source": [] } ], "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.8.10" } }, "nbformat": 4, "nbformat_minor": 5 }