From 9e6c376266e16c3a90265d370dee7ff486010173 Mon Sep 17 00:00:00 2001 From: Jessy Lauer <30733203+jeylau@users.noreply.github.com> Date: Thu, 17 Jun 2021 16:27:37 +0200 Subject: [PATCH 01/58] Implement custom imgaug augmenter for smart cropping --- .../dataset/augmentation.py | 128 ++++++++++++++++++ 1 file changed, 128 insertions(+) create mode 100644 deeplabcut/pose_estimation_tensorflow/dataset/augmentation.py diff --git a/deeplabcut/pose_estimation_tensorflow/dataset/augmentation.py b/deeplabcut/pose_estimation_tensorflow/dataset/augmentation.py new file mode 100644 index 0000000000..a83bf51bc7 --- /dev/null +++ b/deeplabcut/pose_estimation_tensorflow/dataset/augmentation.py @@ -0,0 +1,128 @@ +import imgaug.augmenters as iaa +import numpy as np +from scipy.spatial.distance import pdist, squareform + + +class KeypointAwareCropsToFixedSize(iaa.CropToFixedSize): + def __init__(self, width, height, n_crops=10, max_shift=0.40): + """ + Parameters + ---------- + width : int + Crop images down to this maximum width. + + height : int + Crop images down to this maximum height. + + n_crops : int, optional (default=10) + Number of crops to produce. + + max_shift : float, optional (default=0.25) + Maximum allowed shift of the cropping center position + as a fraction of the crop size. + """ + super(KeypointAwareCropsToFixedSize, self).__init__(width, height) + self.n_crops = n_crops + # Clamp to 40% of crop size to ensure that at least + # the center keypoint remains visible after the offset is applied. + self.max_shift = max(0., min(max_shift, 0.4)) + + def augment_batch_(self, batch, parents=None, hooks=None): + try: + batch = SizeVaryingUnnormalizedBatch( + images=batch.images_unaug, + keypoints=batch.keypoints_unaug, + ) + except AttributeError: + pass + return super(KeypointAwareCropsToFixedSize, self).augment_batch_( + batch, parents, hooks, + ) + + @staticmethod + def calc_n_neighbors(xy, radius): + d = pdist(xy, 'sqeuclidean') + mat = squareform(d <= radius * radius, checks=False) + return np.sum(mat, axis=0) + + def _draw_samples(self, batch, random_state): + rngs = random_state.duplicate(2) + offsets = [] + max_shift_x = self.max_shift * self.size[0] + max_shift_y = self.max_shift * self.size[1] + for n in range(batch.nb_rows): + h, w = batch.images[n].shape[:2] + kpts = batch.keypoints[n].to_xy_array() + inds = np.arange(kpts.shape[0]) + # Points with a higher number of neighbors are sampled preferentially + # to favor the augmentation of denser (harder) scene regions. + radius = 0.1 * min(h, w) + n_neighbors = self.calc_n_neighbors(kpts, radius) + p = n_neighbors / n_neighbors.sum() + centers = kpts[random_state.choice(inds, self.n_crops, p=p)] + centers[:, 0] += max_shift_x * rngs[0].uniform(-1, 1, self.n_crops) + centers[:, 0] /= w + centers[:, 1] += max_shift_y * rngs[1].uniform(-1, 1, self.n_crops) + centers[:, 1] /= h + offsets.append(centers) + offsets = np.clip(np.stack(offsets), 0, 1) + return [self.size] * batch.nb_rows, offsets + + def _augment_batch_(self, batch, random_state, parents, hooks): + images = [] + keypoints = [] + sizes, offsets = self._draw_samples(batch, random_state) + for i, (image, kpts, (w, h)) in enumerate( + zip(batch.images, batch.keypoints, sizes) + ): + height_image, width_image = image.shape[:2] + for x, y in offsets[i].tolist(): + croppings = self._calculate_crop_amounts( + height_image, width_image, h, w, y, x, + ) + image_cropped = iaa.size._crop_and_pad_arr( + image, + croppings, + paddings=(0, 0, 0, 0), + keep_size=False, + ) + # Deepcopy to avoid shifting points in place + kpts_cropped = iaa.size._crop_and_pad_kpsoi_( + kpts.deepcopy(), + croppings, + paddings_img=(0, 0, 0, 0), + keep_size=False, + ) + images.append(image_cropped) + keypoints.append(kpts_cropped) + batch.images = images + batch.keypoints = keypoints + return batch + + +class Sequential(iaa.Sequential): + def augment_batch_(self, batch, parents=None, hooks=None): + try: + batch = SizeVaryingUnnormalizedBatch( + images=batch.images_unaug, + keypoints=batch.keypoints_unaug, + heatmaps=batch.heatmaps_unaug, + segmentation_maps=batch.segmentation_maps_unaug, + bounding_boxes=batch.bounding_boxes_unaug, + polygons=batch.polygons_unaug, + line_strings=batch.line_strings_unaug, + ) + except AttributeError: + pass + return super(Sequential, self).augment_batch_( + batch, parents, hooks, + ) + + +class SizeVaryingUnnormalizedBatch(iaa.UnnormalizedBatch): + def fill_from_augmented_normalized_batch_(self, batch_aug_norm): + super(SizeVaryingUnnormalizedBatch, self).fill_from_augmented_normalized_batch_( + batch_aug_norm, + ) + self.images_aug = batch_aug_norm.images_aug + return self From c90b2d78681e87dc468bbe2ca9d2043c455f144a Mon Sep 17 00:00:00 2001 From: Jessy Lauer <30733203+jeylau@users.noreply.github.com> Date: Thu, 17 Jun 2021 16:30:58 +0200 Subject: [PATCH 02/58] Add augmentation unit tests --- tests/conftest.py | 13 +++++ tests/data/image.png | Bin 197973 -> 233083 bytes tests/test_dataset_augmentation.py | 74 +++++++++++++++++++++++++++++ 3 files changed, 87 insertions(+) create mode 100644 tests/test_dataset_augmentation.py diff --git a/tests/conftest.py b/tests/conftest.py index 8354e75360..dae2a44c22 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -3,11 +3,24 @@ import pickle import pytest from deeplabcut.pose_estimation_tensorflow.lib import inferenceutils, crossvalutils +from PIL import Image TEST_DATA_DIR = os.path.join(os.path.dirname(os.path.realpath(__file__)), "data") +@pytest.fixture(scope="session") +def sample_image(): + return np.asarray(Image.open(os.path.join(TEST_DATA_DIR, "image.png"))) + + +@pytest.fixture(scope="session") +def sample_keypoints(): + with open(os.path.join(TEST_DATA_DIR, "trimouse_assemblies.pickle"), "rb") as file: + temp = pickle.load(file) + return np.concatenate(temp[0])[:, :2] + + @pytest.fixture(scope="session") def real_assemblies(): with open(os.path.join(TEST_DATA_DIR, "trimouse_assemblies.pickle"), "rb") as file: diff --git a/tests/data/image.png b/tests/data/image.png index f08bf8719c5cf146b6d1233c6e6729c9d3817db2..3e45ff7840241afc48a1cb02059b89a830f20b02 100644 GIT binary patch literal 233083 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

hP-H3v=$t$u99ahN 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]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 Date: Thu, 17 Jun 2021 16:49:08 +0200 Subject: [PATCH 03/58] Add cropping to the augmentation pipeline --- deeplabcut/pose_cfg.yaml | 4 ++++ .../dataset/pose_multianimal_imgaug.py | 16 ++++++++++++++-- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/deeplabcut/pose_cfg.yaml b/deeplabcut/pose_cfg.yaml index 66df9dc014..937ed46f86 100644 --- a/deeplabcut/pose_cfg.yaml +++ b/deeplabcut/pose_cfg.yaml @@ -26,6 +26,10 @@ global_scale: 0.8 dataset_type: imgaug batch_size: 1 +# Smart, on-the-fly image cropping, replacing deeplabcut.cropimagesandlabels +crop_size: 400, 400 +n_crops: 10 + #Data loaders, i.e. with additional data augmentation options (as of 2.0.9+): #default with be with no extra dataloaders. Other options: 'tensorpack, deterministic' #types of datasets, see factory: deeplabcut/pose_estimation_tensorflow/dataset/factory.py diff --git a/deeplabcut/pose_estimation_tensorflow/dataset/pose_multianimal_imgaug.py b/deeplabcut/pose_estimation_tensorflow/dataset/pose_multianimal_imgaug.py index 26a4ba2ab3..4a341dd936 100644 --- a/deeplabcut/pose_estimation_tensorflow/dataset/pose_multianimal_imgaug.py +++ b/deeplabcut/pose_estimation_tensorflow/dataset/pose_multianimal_imgaug.py @@ -20,6 +20,7 @@ from numpy import array as arr from numpy import concatenate as cat +from deeplabcut.pose_estimation_tensorflow.dataset import augmentation from deeplabcut.pose_estimation_tensorflow.dataset.pose_dataset import ( Batch, DataItem, @@ -76,9 +77,20 @@ def load_dataset(self): return data def build_augmentation_pipeline(self, height=None, width=None, apply_prob=0.5): - sometimes = lambda aug: iaa.Sometimes(apply_prob, aug) - pipeline = iaa.Sequential(random_order=False) cfg = self.cfg + + sometimes = lambda aug: iaa.Sometimes(apply_prob, aug) + pipeline = augmentation.Sequential(random_order=False) + + # Add smart, keypoint-aware image cropping + w, h = cfg.get("crop_size", (400, 400)) + pipeline.add(iaa.PadToFixedSize(w, h)) + pipeline.add( + augmentation.KeypointAwareCropsToFixedSize( + w, h, cfg.get('n_crops', 10), + ), + ) + if cfg.get("fliplr", False): opt = cfg.get("fliplr", False) if type(opt) == int: From 7f8fcc22208495d17c883410e0f3974fea3b4b21 Mon Sep 17 00:00:00 2001 From: Jessy Lauer <30733203+jeylau@users.noreply.github.com> Date: Thu, 17 Jun 2021 17:23:58 +0200 Subject: [PATCH 04/58] First sweep and documentation edits --- deeplabcut/__init__.py | 1 - .../trainingsetmanipulation.py | 235 +----------------- deeplabcut/gui/create_training_dataset.py | 48 ---- docs/maDLC_UserGuide.md | 25 +- ...LAB_maDLC_TrainNetwork_VideoAnalysis.ipynb | 5 - examples/testscript_multianimal.py | 3 - 6 files changed, 12 insertions(+), 305 deletions(-) diff --git a/deeplabcut/__init__.py b/deeplabcut/__init__.py index 7307e01f30..88910a7655 100644 --- a/deeplabcut/__init__.py +++ b/deeplabcut/__init__.py @@ -72,7 +72,6 @@ from deeplabcut.generate_training_dataset import ( create_training_model_comparison, create_multianimaltraining_dataset, - cropimagesandlabels, ) from deeplabcut.utils import ( create_labeled_video, diff --git a/deeplabcut/generate_training_dataset/trainingsetmanipulation.py b/deeplabcut/generate_training_dataset/trainingsetmanipulation.py index 110f994911..0312ad88d2 100755 --- a/deeplabcut/generate_training_dataset/trainingsetmanipulation.py +++ b/deeplabcut/generate_training_dataset/trainingsetmanipulation.py @@ -18,7 +18,6 @@ import numpy as np import pandas as pd import yaml -from skimage import io from deeplabcut.pose_estimation_tensorflow import training from deeplabcut.utils import ( @@ -236,237 +235,6 @@ def dropimagesduetolackofannotation(config): ) -def cropimagesandlabels( - config, - numcrops=10, - size=(400, 400), - userfeedback=True, - cropdata=True, - excludealreadycropped=False, - updatevideoentries=True, -): - """ - Crop images into multiple random crops (defined by numcrops) of size dimensions. If cropdata=True then the - annotation data is loaded and labels for cropped images are inherited. - If false, then one can make crops for unlabeled folders. - - This can be helpul for large frames with multiple animals. Then a smaller set of equally sized images is created. - - Parameters - ---------- - config : string - String containing the full path of the config file in the project. - - numcrops: number of random crops (around random bodypart) - - size: height x width in pixels - - userfeedback: bool, optional - If this is set to false, then all requested train/test splits are created (no matter if they already exist). If you - want to assure that previous splits etc. are not overwritten, then set this to True and you will be asked for each split. - - cropdata: bool, default True: - If true creates corresponding annotation data (from ground truth) - - excludealreadycropped: bool, default False: - If true, ignore original videos whose frames are already cropped. - This is only useful after adding new videos post dataset creation, - as folders containing no new frames are otherwise automatically ignored. - - updatevideoentries, bool, default true - If true updates video_list entries to refer to cropped frames instead. This makes sense for subsequent processing. - - Example - -------- - for labeling the frames - >>> deeplabcut.cropimagesandlabels('/analysis/project/reaching-task/config.yaml') - - -------- - """ - from tqdm import trange - - indexlength = int(np.ceil(np.log10(numcrops))) - project_path = os.path.dirname(config) - cfg = auxiliaryfunctions.read_config(config) - videos = list(cfg.get("video_sets_original", [])) - if not videos: - videos = list(cfg["video_sets"]) - elif excludealreadycropped: - for video in videos: - _, ext = os.path.splitext(video) - s = video.replace(ext, f"_cropped{ext}") - if s in cfg["video_sets"]: - videos.remove(video) - if not videos: - return - - if ( - "video_sets_original" not in cfg.keys() and updatevideoentries - ): # this dict is kept for storing links to original full-sized videos - cfg["video_sets_original"] = {} - - for video in videos: - vidpath, vidname, videotype = _robust_path_split(video) - folder = os.path.join(project_path, "labeled-data", vidname) - if userfeedback: - print("Do you want to crop frames for folder: ", folder, "?") - askuser = input("(yes/no):") - else: - askuser = "y" - if askuser == "y" or askuser == "yes" or askuser == "Y" or askuser == "Yes": - new_vidname = vidname + "_cropped" - new_folder = os.path.join(project_path, "labeled-data", new_vidname) - auxiliaryfunctions.attempttomakefolder(new_folder) - - AnnotationData = [] - pd_index = [] - - fn = os.path.join(folder, f"CollectedData_{cfg['scorer']}.h5") - df = pd.read_hdf(fn) - data = df.values.reshape((df.shape[0], -1, 2)) - sep = "/" if "/" in df.index[0] else "\\" - if sep != os.path.sep: - df.index = df.index.str.replace(sep, os.path.sep) - video_new = sep.join((vidpath, new_vidname + videotype)) - if video_new in cfg["video_sets"]: - _, w, _, h = map(int, cfg["video_sets"][video_new]["crop"].split(",")) - temp_size = (h, w) - else: - temp_size = size - images = project_path + os.path.sep + df.index - # Avoid cropping already cropped images - cropped_images = auxiliaryfunctions.grab_files_in_folder(new_folder, "png") - cropped_names = set(map(lambda x: x.split("c")[0], cropped_images)) - imnames = [ - im for im in images.to_list() if Path(im).stem not in cropped_names - ] - if not imnames: - continue - ic = io.imread_collection(imnames) - for i in trange(len(ic)): - frame = ic[i] - h, w = np.shape(frame)[:2] - - - imagename = os.path.relpath(ic.files[i], project_path) - ind = np.flatnonzero(df.index == imagename)[0] - cropindex = 0 - attempts = -1 - while cropindex < numcrops: - - dd = np.array(data[ind].copy(), dtype=float) - - if temp_size[0] >= h or temp_size[1] >= w: - # initialize a all zero image container with target crop size - - padded_img = np.zeros((temp_size[0],temp_size[1],3),dtype=np.uint8) - - # new upper left, border protection - # be careful crop side can be smaller than one side of the image - - y0, x0 = ( - np.random.randint(max(temp_size[0]-h,1)), - np.random.randint(max(temp_size[1]-w,1)), - ) - # new bottom right, border protection - # avoid to exceed the container's border - - y1 = min(y0 + h, temp_size[0]) - x1 = min(x0 + w, temp_size[1]) - - # fill original image to the container image - # use safe upper left and bottom right to crop original image and fill it to the container - padded_img[y0:y1,x0:x1,:] = frame[:y1-y0,:x1-x0,:3] - - # all keypoints are shifted by +x0 and +y0 - # possibly out of border again - dd += [x0,y0] - - # some keypoints are out of the borders - with np.errstate(invalid="ignore"): - within = np.all((dd >= [x0, y0]) & (dd < [x1, y1]), axis=1) - - if cropdata: - dd[~within] = np.nan - attempts += 1 - if within.any() or attempts > 10: - newimname = str( - Path(imagename).stem - + "c" - + str(cropindex).zfill(indexlength) - + ".png" - ) - cropppedimgname = os.path.join(new_folder, newimname) - # save the padded img - io.imsave(cropppedimgname, padded_img) - cropindex += 1 - pd_index.append( - os.path.join("labeled-data", new_vidname, newimname) - ) - AnnotationData.append(dd.flatten()) - - - else: - y0, x0 = ( - np.random.randint(h - temp_size[0]), - np.random.randint(w - temp_size[1]), - ) - y1 = y0 + temp_size[0] - x1 = x0 + temp_size[1] - - with np.errstate(invalid="ignore"): - within = np.all((dd >= [x0, y0]) & (dd < [x1, y1]), axis=1) - if cropdata: - dd[within] -= [x0, y0] - dd[~within] = np.nan - attempts += 1 - if within.any() or attempts > 10: - newimname = str( - Path(imagename).stem - + "c" - + str(cropindex).zfill(indexlength) - + ".png" - ) - cropppedimgname = os.path.join(new_folder, newimname) - io.imsave(cropppedimgname, frame[y0:y1, x0:x1]) - cropindex += 1 - pd_index.append( - os.path.join("labeled-data", new_vidname, newimname) - ) - AnnotationData.append(dd.flatten()) - - if cropdata: - df = pd.DataFrame(AnnotationData, index=pd_index, columns=df.columns) - fn_new = fn.replace(folder, new_folder) - try: - df_old = pd.read_hdf(fn_new) - df = pd.concat((df_old, df)) - except FileNotFoundError: - pass - df.to_hdf(fn_new, key="df_with_missing", mode="w") - df.to_csv(fn_new.replace(".h5", ".csv")) - - if updatevideoentries and cropdata: - # moving old entry to _original, dropping it from video_set and update crop parameters - video_orig = sep.join((vidpath, vidname + videotype)) - video_new = sep.join((vidpath, new_vidname + videotype)) - if video_orig not in cfg["video_sets_original"]: - cfg["video_sets_original"][video_orig] = cfg["video_sets"][ - video_orig - ] - cfg["video_sets"].pop(video_orig) - cfg["video_sets"][video_new] = { - "crop": ", ".join(map(str, [0, temp_size[1], 0, temp_size[0]])) - } - elif video_new not in cfg["video_sets"]: - cfg["video_sets"][video_new] = { - "crop": ", ".join(map(str, [0, temp_size[1], 0, temp_size[0]])) - } - - cfg["croppedtraining"] = True - auxiliaryfunctions.write_config(config, cfg) - - def check_labels( config, Labels=["+", ".", "x"], @@ -646,8 +414,7 @@ def merge_annotateddatasets(cfg, trainingsetfolder_full, windows2linux): except FileNotFoundError: print( file_path, - " not found (perhaps not annotated). If training on cropped data, " - "make sure to call `cropimagesandlabels` prior to creating the dataset.", + " not found (perhaps not annotated)." ) if not len(AnnotationData): diff --git a/deeplabcut/gui/create_training_dataset.py b/deeplabcut/gui/create_training_dataset.py index 23714d553e..5b8a7087cc 100644 --- a/deeplabcut/gui/create_training_dataset.py +++ b/deeplabcut/gui/create_training_dataset.py @@ -136,38 +136,6 @@ def __init__(self, parent, gui_size, cfg): ) self.userfeedback.SetSelection(1) - if config_file.get("multianimalproject", False): - - self.cropandlabel = wx.RadioBox( - self, - label="Crop and Label Data (Yes is required, set crop values)", - choices=["Yes", "No"], - majorDimension=1, - style=wx.RA_SPECIFY_COLS, - ) - self.cropandlabel.Bind(wx.EVT_RADIOBOX, self.input_crop_size) - self.cropandlabel.SetSelection(0) - self.crop_text = wx.StaticBox( - self, label="Crop settings (set to smaller than your input images)" - ) - self.crop_sizer = wx.StaticBoxSizer(self.crop_text, wx.VERTICAL) - self.crop_widgets = [] - for name, val in [ - ("# of crops", "10"), - ("height", "400"), - ("width", "400"), - ]: - temp_sizer = wx.BoxSizer(wx.HORIZONTAL) - label = wx.StaticText(self, label=name) - text = wx.TextCtrl(self, value=val) - self.crop_widgets.append([label, text]) - temp_sizer.Add(label, wx.EXPAND | wx.TOP | wx.BOTTOM, 10) - temp_sizer.Add(text, wx.EXPAND | wx.TOP | wx.BOTTOM, 10) - self.crop_sizer.Add(temp_sizer) - self.crop_sizer.ShowItems(True) - self.hbox3.Add(self.cropandlabel, 10, wx.EXPAND | wx.TOP | wx.BOTTOM, 5) - self.hbox3.Add(self.crop_sizer, 10, wx.EXPAND | wx.TOP | wx.BOTTOM, 5) - self.hbox2.Add(shuffle_text_boxsizer, 10, wx.EXPAND | wx.TOP | wx.BOTTOM, 5) self.hbox2.Add(trainingindex_boxsizer, 10, wx.EXPAND | wx.TOP | wx.BOTTOM, 5) @@ -291,13 +259,6 @@ def __init__(self, parent, gui_size, cfg): self.sizer.Fit(self) self.Layout() - def input_crop_size(self, event): - if self.cropandlabel.GetStringSelection() == "No": - self.crop_sizer.ShowItems(False) - else: - self.crop_sizer.ShowItems(True) - self.SetSizer(self.sizer) - def on_focus(self, event): pass @@ -368,15 +329,6 @@ def create_training_dataset(self, event): userfeedback = False if config_file.get("multianimalproject", False): - if self.cropandlabel.GetStringSelection() == "Yes": - n_crops, height, width = [ - int(text.GetValue()) for _, text in self.crop_widgets - ] - deeplabcut.cropimagesandlabels( - self.config, n_crops, (height, width), userfeedback - ) - else: - random = False deeplabcut.create_multianimaltraining_dataset( self.config, num_shuffles, diff --git a/docs/maDLC_UserGuide.md b/docs/maDLC_UserGuide.md index c630be21fa..7bd2df09ee 100644 --- a/docs/maDLC_UserGuide.md +++ b/docs/maDLC_UserGuide.md @@ -221,21 +221,8 @@ deeplabcut.check_labels(config_path, visualizeindividuals=True/False) For each video directory in labeled-data this function creates a subdirectory with **labeled** as a suffix. Those directories contain the frames plotted with the annotated body parts. The user can double check if the body parts are labeled correctly. If they are not correct, the user can reload the frames (i.e. `deeplabcut.label_frames`), move them around, and click save again. -**CROP+LABEL:** When you are done checking the label quality and adjusting if needed, please then use this new function to crop frames /labels for more efficient training. PLEASE call this before you create a training dataset by running: -```python -deeplabcut.cropimagesandlabels(path_config_file, userfeedback=False) -``` ### Create Training Dataset: -Ideally for training DNNs, one uses large batch sizes. Thus, for mutli-animal training batch processing is preferred. This means that we'd like the images to be similarly sized. You can of course have differing size of images you label (but we suggest cropping out useless pixels!). So, we have a new function that can pre-process your data to be compatible with batch training. As noted above, please run this function before you `create_multianmialtraining_dataset`. This function assures that each crop is "small", by default 400 x 400, which allows larger batchsizes and that there are multiple crops so that different parts of larger images are covered. - -You **should also first run** `deeplabcut.cropimagesandlabels(config_path)` before creating a training set, as we use batch processing and many users have smaller GPUs that cannot accommodate larger images + larger batchsizes. This is also a type of data augmentation. - -NOTE: you can edit the crop size. If your images are very large (2k, 4k pixels), consider increasing this size, but be aware unless you have a lagre GPU (24 GB or more), you will hit memory errors. _You can lower the batchsize, but this may affect performance._ - -```python -deeplabcut.cropimagesandlabels(path_config_file, size=(400, 400), userfeedback=False) -``` At this point you also select your neural network type. Please see Lauer et al. 2021 for options. For **create_multianimaltraining_dataset** we already changed this such that by default you will use imgaug, ADAM optimization, our new DLCRNet, and batch training. We suggest these defaults at this time. Then run: ```python @@ -262,7 +249,7 @@ are listed in Box 2. **OPTIONAL POINTS:** With the data-driven skeleton selection introduced in 2.2rc1, DLC networks are trained by default -on complete skeletons (i.e., they learn all possible redundant connections), before being optimially pruned +on complete skeletons (i.e., they learn all possible redundant connections), before being optimally pruned at model evaluation. Although this procedure is by far superior to manually defining a graph, we leave manually-defining a skeleton as an option for the advanced user: @@ -286,6 +273,16 @@ Our recent [A Primer on Motion Capture with Deep Learning: Principles, Pitfalls, Alternatively, you can set the loader (as well as other training parameters) in the **pose_cfg.yaml** file of the model that you want to train. Note, to get details on the options, look at the default file: [**pose_cfg.yaml**](https://github.com/AlexEMG/DeepLabCut/blob/master/deeplabcut/pose_cfg.yaml). +Importantly, image cropping as previously done with `deeplabcut.cropimagesandlabels` in multi-animal projects +is now part of the augmentation pipeline. In other words, image crops are no longer stored in labeled-data/..._cropped +folders. Crop number and size still default to 10 and (400, 400), +but they can be easily edited prior to training in the **pose_cfg.yaml** configuration file. +If your images are very large (2k, 4k pixels), consider increasing this size, but be aware unless you have a lagre GPU (24 GB or more), you will hit memory errors. _You can lower the batchsize, but this may affect performance._ + +As a reminder, cropping images into smaller patches is a form of data augmentation that simultaneously +allows the use of batch processing even on small GPUs that could not otherwise accommodate larger images + larger batchsizes.. + + ### Train The Network: ```python diff --git a/examples/COLAB_maDLC_TrainNetwork_VideoAnalysis.ipynb b/examples/COLAB_maDLC_TrainNetwork_VideoAnalysis.ipynb index 5470768477..748579757b 100644 --- a/examples/COLAB_maDLC_TrainNetwork_VideoAnalysis.ipynb +++ b/examples/COLAB_maDLC_TrainNetwork_VideoAnalysis.ipynb @@ -203,11 +203,6 @@ "id": "eMeUwgxPoEJP" }, "source": [ - "# ATTENTION:\n", - "\n", - "#Note, you must run this. If your images are smaller than 400 by 400, please make these numbers smaller.\n", - "deeplabcut.cropimagesandlabels(path_config_file, size=(400, 400), userfeedback=False)\n", - "\n", "#if you labeled on Windows, please set the windows2linux=True:\n", "deeplabcut.create_multianimaltraining_dataset(path_config_file, windows2linux=False)" ], diff --git a/examples/testscript_multianimal.py b/examples/testscript_multianimal.py index e9ccfcaa26..20bd8467e8 100644 --- a/examples/testscript_multianimal.py +++ b/examples/testscript_multianimal.py @@ -78,9 +78,6 @@ ) print("Artificial data created.") - print("Cropping and exchanging") - deeplabcut.cropimagesandlabels(config_path, userfeedback=False) - print("Checking labels...") deeplabcut.check_labels(config_path, draw_skeleton=False) print("Labels checked.") From 992e45ea3e9fe2d33c1945c7e8d90a9b2e64e9d3 Mon Sep 17 00:00:00 2001 From: Jessy Lauer <30733203+jeylau@users.noreply.github.com> Date: Thu, 17 Jun 2021 19:04:36 +0200 Subject: [PATCH 05/58] Some minor fixes --- deeplabcut/create_project/new.py | 1 - ...ple_individuals_trainingsetmanipulation.py | 27 +++++-------------- deeplabcut/pose_cfg.yaml | 2 +- .../dataset/augmentation.py | 2 ++ deeplabcut/utils/auxiliaryfunctions.py | 2 -- deeplabcut/utils/conversioncode.py | 6 +---- examples/testscript_multianimal.py | 6 +++-- 7 files changed, 14 insertions(+), 32 deletions(-) diff --git a/deeplabcut/create_project/new.py b/deeplabcut/create_project/new.py index 86f0c91f42..a6571236cf 100644 --- a/deeplabcut/create_project/new.py +++ b/deeplabcut/create_project/new.py @@ -220,7 +220,6 @@ def create_new_project( cfg_file["skeleton"] = [["bodypart1", "bodypart2"], ["objectA", "bodypart3"]] cfg_file["default_augmenter"] = "default" cfg_file["default_net_type"] = "resnet_50" - cfg_file["croppedtraining"] = False # common parameters: cfg_file["Task"] = project diff --git a/deeplabcut/generate_training_dataset/multiple_individuals_trainingsetmanipulation.py b/deeplabcut/generate_training_dataset/multiple_individuals_trainingsetmanipulation.py index 2d31dcf6d6..9e6d6610ab 100755 --- a/deeplabcut/generate_training_dataset/multiple_individuals_trainingsetmanipulation.py +++ b/deeplabcut/generate_training_dataset/multiple_individuals_trainingsetmanipulation.py @@ -159,15 +159,6 @@ def create_multianimaltraining_dataset( return Data = Data[scorer] - def strip_cropped_image_name(path): - # utility function to split different crops from same image into either train or test! - head, filename = os.path.split(path) - if cfg["croppedtraining"]: - filename = filename.split("c")[0] - return os.path.join(head, filename) - - img_names = Data.index.map(strip_cropped_image_name).unique() - if net_type is None: # loading & linking pretrained models net_type = cfg.get("default_net_type", "dlcrnet_ms5") elif not any(net in net_type for net in ("resnet", "eff", "dlc")): @@ -219,15 +210,9 @@ def strip_cropped_image_name(path): TrainingFraction = cfg["TrainingFraction"] for shuffle in Shuffles: # Creating shuffles starting from 1 for trainFraction in TrainingFraction: - train_inds_temp, test_inds_temp = SplitTrials( - range(len(img_names)), trainFraction + train_inds, test_inds = SplitTrials( + range(len(Data)), trainFraction ) - # Map back to the original indices. - temp = [re.escape(name) for i, name in enumerate(img_names) - if i in test_inds_temp] - mask = Data.index.str.contains("|".join(temp)) - testIndices = np.flatnonzero(mask) - trainIndices = np.flatnonzero(~mask) #################################################### # Generating data structure with labeled information & frame metadata (for deep cut) @@ -242,12 +227,12 @@ def strip_cropped_image_name(path): # Make training file! data = format_multianimal_training_data( Data, - trainIndices, + train_inds, cfg["project_path"], numdigits, ) - if len(trainIndices) > 0: + if len(train_inds) > 0: ( datafilename, metadatafilename, @@ -260,8 +245,8 @@ def strip_cropped_image_name(path): auxiliaryfunctions.SaveMetadata( os.path.join(project_path, metadatafilename), data, - trainIndices, - testIndices, + train_inds, + test_inds, trainFraction, ) diff --git a/deeplabcut/pose_cfg.yaml b/deeplabcut/pose_cfg.yaml index 937ed46f86..7a5c706e80 100644 --- a/deeplabcut/pose_cfg.yaml +++ b/deeplabcut/pose_cfg.yaml @@ -27,7 +27,7 @@ dataset_type: imgaug batch_size: 1 # Smart, on-the-fly image cropping, replacing deeplabcut.cropimagesandlabels -crop_size: 400, 400 +crop_size: [400, 400] n_crops: 10 #Data loaders, i.e. with additional data augmentation options (as of 2.0.9+): diff --git a/deeplabcut/pose_estimation_tensorflow/dataset/augmentation.py b/deeplabcut/pose_estimation_tensorflow/dataset/augmentation.py index a83bf51bc7..b0af08b24c 100644 --- a/deeplabcut/pose_estimation_tensorflow/dataset/augmentation.py +++ b/deeplabcut/pose_estimation_tensorflow/dataset/augmentation.py @@ -58,6 +58,8 @@ def _draw_samples(self, batch, random_state): # to favor the augmentation of denser (harder) scene regions. radius = 0.1 * min(h, w) n_neighbors = self.calc_n_neighbors(kpts, radius) + # Include keypoints in the count to avoid null probabilities + n_neighbors += 1 p = n_neighbors / n_neighbors.sum() centers = kpts[random_state.choice(inds, self.n_crops, p=p)] centers[:, 0] += max_shift_x * rngs[0].uniform(-1, 1, self.n_crops) diff --git a/deeplabcut/utils/auxiliaryfunctions.py b/deeplabcut/utils/auxiliaryfunctions.py index 8fcad750f0..e155e7d5ef 100755 --- a/deeplabcut/utils/auxiliaryfunctions.py +++ b/deeplabcut/utils/auxiliaryfunctions.py @@ -62,7 +62,6 @@ def create_config_template(multianimal=False): \n # Cropping Parameters (for analysis and outlier frame detection) cropping: - croppedtraining: #if cropping is true for analysis, then set the values here: x1: x2: @@ -110,7 +109,6 @@ def create_config_template(multianimal=False): \n # Cropping Parameters (for analysis and outlier frame detection) cropping: - croppedtraining: #if cropping is true for analysis, then set the values here: x1: x2: diff --git a/deeplabcut/utils/conversioncode.py b/deeplabcut/utils/conversioncode.py index d29b6eaac8..fd47bc7064 100644 --- a/deeplabcut/utils/conversioncode.py +++ b/deeplabcut/utils/conversioncode.py @@ -199,13 +199,9 @@ def merge_windowsannotationdataONlinuxsystem(cfg): AnnotationData = [] data_path = Path(cfg["project_path"], "labeled-data") - use_cropped = cfg.get("croppedtraining", False) annotationfolders = [] for elem in auxiliaryfunctions.grab_files_in_folder(data_path, relative=False): - if os.path.isdir(elem) and ( - (use_cropped and elem.endswith("_cropped")) - or not (use_cropped or "_cropped" in elem) - ): + if os.path.isdir(elem): annotationfolders.append(elem) print("The following folders were found:", annotationfolders) for folder in annotationfolders: diff --git a/examples/testscript_multianimal.py b/examples/testscript_multianimal.py index 20bd8467e8..12c71cb314 100644 --- a/examples/testscript_multianimal.py +++ b/examples/testscript_multianimal.py @@ -68,7 +68,7 @@ for image in auxiliaryfunctions.grab_files_in_folder(image_folder, "png") ] fake_data = np.tile( - np.repeat(50 * np.arange(len(animals_id)) + 100, 2), (len(index), 1) + np.repeat(50 * np.arange(len(animals_id)) + 50, 2), (len(index), 1) ) df = pd.DataFrame(fake_data, index=index, columns=columns) output_path = os.path.join(image_folder, f"CollectedData_{SCORER}.csv") @@ -90,12 +90,14 @@ model_folder = auxiliaryfunctions.GetModelFolder( TRAIN_SIZE, 1, cfg, cfg["project_path"] ) - pose_config_path = os.path.join(model_folder, "train/pose_cfg.yaml") + pose_config_path = os.path.join(model_folder, "train", "pose_cfg.yaml") edits = { "global_scale": 0.5, "batch_size": 1, "save_iters": N_ITER, "display_iters": N_ITER // 2, + "n_crops": 2, + "crop_size": [200, 200], # "multi_step": [[0.001, N_ITER]], } deeplabcut.auxiliaryfunctions.edit_config(pose_config_path, edits) From 162b349a06064a4219b8f729f09f186d0bcef7df Mon Sep 17 00:00:00 2001 From: Jessy Lauer <30733203+jeylau@users.noreply.github.com> Date: Wed, 23 Jun 2021 13:29:55 +0200 Subject: [PATCH 06/58] Revert implementation to single crop output --- deeplabcut/pose_cfg.yaml | 2 +- .../dataset/augmentation.py | 112 +++--------------- .../dataset/pose_multianimal_imgaug.py | 6 +- tests/test_dataset_augmentation.py | 41 ++++--- 4 files changed, 44 insertions(+), 117 deletions(-) diff --git a/deeplabcut/pose_cfg.yaml b/deeplabcut/pose_cfg.yaml index 7a5c706e80..eff1b26908 100644 --- a/deeplabcut/pose_cfg.yaml +++ b/deeplabcut/pose_cfg.yaml @@ -28,7 +28,7 @@ batch_size: 1 # Smart, on-the-fly image cropping, replacing deeplabcut.cropimagesandlabels crop_size: [400, 400] -n_crops: 10 +max_shift: 0.4 # Maximum relative shift of the position of the crop center #Data loaders, i.e. with additional data augmentation options (as of 2.0.9+): #default with be with no extra dataloaders. Other options: 'tensorpack, deterministic' diff --git a/deeplabcut/pose_estimation_tensorflow/dataset/augmentation.py b/deeplabcut/pose_estimation_tensorflow/dataset/augmentation.py index b0af08b24c..9514a3b488 100644 --- a/deeplabcut/pose_estimation_tensorflow/dataset/augmentation.py +++ b/deeplabcut/pose_estimation_tensorflow/dataset/augmentation.py @@ -3,8 +3,8 @@ from scipy.spatial.distance import pdist, squareform -class KeypointAwareCropsToFixedSize(iaa.CropToFixedSize): - def __init__(self, width, height, n_crops=10, max_shift=0.40): +class KeypointAwareCropToFixedSize(iaa.CropToFixedSize): + def __init__(self, width, height, max_shift=0.4): """ Parameters ---------- @@ -14,31 +14,15 @@ def __init__(self, width, height, n_crops=10, max_shift=0.40): height : int Crop images down to this maximum height. - n_crops : int, optional (default=10) - Number of crops to produce. - max_shift : float, optional (default=0.25) Maximum allowed shift of the cropping center position as a fraction of the crop size. """ - super(KeypointAwareCropsToFixedSize, self).__init__(width, height) - self.n_crops = n_crops + super(KeypointAwareCropToFixedSize, self).__init__(width, height) # Clamp to 40% of crop size to ensure that at least # the center keypoint remains visible after the offset is applied. self.max_shift = max(0., min(max_shift, 0.4)) - def augment_batch_(self, batch, parents=None, hooks=None): - try: - batch = SizeVaryingUnnormalizedBatch( - images=batch.images_unaug, - keypoints=batch.keypoints_unaug, - ) - except AttributeError: - pass - return super(KeypointAwareCropsToFixedSize, self).augment_batch_( - batch, parents, hooks, - ) - @staticmethod def calc_n_neighbors(xy, radius): d = pdist(xy, 'sqeuclidean') @@ -46,85 +30,27 @@ def calc_n_neighbors(xy, radius): return np.sum(mat, axis=0) def _draw_samples(self, batch, random_state): + n_samples = batch.nb_rows + offsets = np.empty((n_samples, 2), dtype=np.float32) rngs = random_state.duplicate(2) - offsets = [] - max_shift_x = self.max_shift * self.size[0] - max_shift_y = self.max_shift * self.size[1] + shift_x = self.max_shift * self.size[0] * rngs[0].uniform(-1, 1, n_samples) + shift_y = self.max_shift * self.size[1] * rngs[1].uniform(-1, 1, n_samples) for n in range(batch.nb_rows): h, w = batch.images[n].shape[:2] kpts = batch.keypoints[n].to_xy_array() inds = np.arange(kpts.shape[0]) - # Points with a higher number of neighbors are sampled preferentially - # to favor the augmentation of denser (harder) scene regions. + # Points located close to one another are sampled preferentially + # in order to augment crowded regions. radius = 0.1 * min(h, w) n_neighbors = self.calc_n_neighbors(kpts, radius) - # Include keypoints in the count to avoid null probabilities - n_neighbors += 1 p = n_neighbors / n_neighbors.sum() - centers = kpts[random_state.choice(inds, self.n_crops, p=p)] - centers[:, 0] += max_shift_x * rngs[0].uniform(-1, 1, self.n_crops) - centers[:, 0] /= w - centers[:, 1] += max_shift_y * rngs[1].uniform(-1, 1, self.n_crops) - centers[:, 1] /= h - offsets.append(centers) - offsets = np.clip(np.stack(offsets), 0, 1) - return [self.size] * batch.nb_rows, offsets - - def _augment_batch_(self, batch, random_state, parents, hooks): - images = [] - keypoints = [] - sizes, offsets = self._draw_samples(batch, random_state) - for i, (image, kpts, (w, h)) in enumerate( - zip(batch.images, batch.keypoints, sizes) - ): - height_image, width_image = image.shape[:2] - for x, y in offsets[i].tolist(): - croppings = self._calculate_crop_amounts( - height_image, width_image, h, w, y, x, - ) - image_cropped = iaa.size._crop_and_pad_arr( - image, - croppings, - paddings=(0, 0, 0, 0), - keep_size=False, - ) - # Deepcopy to avoid shifting points in place - kpts_cropped = iaa.size._crop_and_pad_kpsoi_( - kpts.deepcopy(), - croppings, - paddings_img=(0, 0, 0, 0), - keep_size=False, - ) - images.append(image_cropped) - keypoints.append(kpts_cropped) - batch.images = images - batch.keypoints = keypoints - return batch - - -class Sequential(iaa.Sequential): - def augment_batch_(self, batch, parents=None, hooks=None): - try: - batch = SizeVaryingUnnormalizedBatch( - images=batch.images_unaug, - keypoints=batch.keypoints_unaug, - heatmaps=batch.heatmaps_unaug, - segmentation_maps=batch.segmentation_maps_unaug, - bounding_boxes=batch.bounding_boxes_unaug, - polygons=batch.polygons_unaug, - line_strings=batch.line_strings_unaug, - ) - except AttributeError: - pass - return super(Sequential, self).augment_batch_( - batch, parents, hooks, - ) - - -class SizeVaryingUnnormalizedBatch(iaa.UnnormalizedBatch): - def fill_from_augmented_normalized_batch_(self, batch_aug_norm): - super(SizeVaryingUnnormalizedBatch, self).fill_from_augmented_normalized_batch_( - batch_aug_norm, - ) - self.images_aug = batch_aug_norm.images_aug - return self + center = kpts[random_state.choice(inds, p=p)] + # Shift the crop center in both dimensions by random amounts + # and normalize to the original image dimensions. + center[0] += shift_x[n] + center[0] /= w + center[1] += shift_y[n] + center[1] /= h + offsets[n] = center + offsets = np.clip(offsets, 0, 1) + return [self.size] * n_samples, offsets[:, 0], offsets[:, 1] diff --git a/deeplabcut/pose_estimation_tensorflow/dataset/pose_multianimal_imgaug.py b/deeplabcut/pose_estimation_tensorflow/dataset/pose_multianimal_imgaug.py index 4a341dd936..ad81f99361 100644 --- a/deeplabcut/pose_estimation_tensorflow/dataset/pose_multianimal_imgaug.py +++ b/deeplabcut/pose_estimation_tensorflow/dataset/pose_multianimal_imgaug.py @@ -80,15 +80,13 @@ def build_augmentation_pipeline(self, height=None, width=None, apply_prob=0.5): cfg = self.cfg sometimes = lambda aug: iaa.Sometimes(apply_prob, aug) - pipeline = augmentation.Sequential(random_order=False) + pipeline = iaa.Sequential(random_order=False) # Add smart, keypoint-aware image cropping w, h = cfg.get("crop_size", (400, 400)) pipeline.add(iaa.PadToFixedSize(w, h)) pipeline.add( - augmentation.KeypointAwareCropsToFixedSize( - w, h, cfg.get('n_crops', 10), - ), + augmentation.KeypointAwareCropToFixedSize(w, h, cfg.get('max_shift', 0.4)) ) if cfg.get("fliplr", False): diff --git a/tests/test_dataset_augmentation.py b/tests/test_dataset_augmentation.py index ef14581fc2..c49d106c26 100644 --- a/tests/test_dataset_augmentation.py +++ b/tests/test_dataset_augmentation.py @@ -4,11 +4,11 @@ @pytest.mark.parametrize( - "width, height, n_crops", + "width, height", [ - (200, 200, 5), - (300, 300, 10), - (400, 400, 20), + (200, 200), + (300, 300), + (400, 400), ] ) def test_keypoint_aware_cropping( @@ -16,18 +16,16 @@ def test_keypoint_aware_cropping( sample_keypoints, width, height, - n_crops, ): - aug = augmentation.KeypointAwareCropsToFixedSize( + aug = augmentation.KeypointAwareCropToFixedSize( width=width, height=height, - n_crops=n_crops, ) images_aug, keypoints_aug = aug( images=[sample_image], keypoints=[sample_keypoints], ) - assert len(images_aug) == len(keypoints_aug) == n_crops + assert len(images_aug) == len(keypoints_aug) == 1 assert all(im.shape[:2] == (height, width) for im in images_aug) # Ensure at least a keypoint is visible in each crop assert all(len(kpts) for kpts in keypoints_aug) @@ -38,15 +36,15 @@ def test_keypoint_aware_cropping( images=[sample_image] * n_samples, keypoints=[sample_keypoints] * n_samples, ) - assert len(images_aug) == len(keypoints_aug) == n_crops * n_samples + assert len(images_aug) == len(keypoints_aug) == n_samples @pytest.mark.parametrize( - "width, height, n_crops", + "width, height", [ - (200, 200, 5), - (300, 300, 10), - (400, 400, 20), + (200, 200), + (300, 300), + (400, 400), ] ) def test_sequential( @@ -54,21 +52,26 @@ def test_sequential( sample_keypoints, width, height, - n_crops, ): # Guarantee that images smaller than crop size are handled fine very_small_image = sample_image[:50, :50] - aug = augmentation.Sequential([ + aug = iaa.Sequential([ iaa.PadToFixedSize(width, height), - augmentation.KeypointAwareCropsToFixedSize( - width, height, n_crops, - ), + augmentation.KeypointAwareCropToFixedSize(width, height), ]) images_aug, keypoints_aug = aug( images=[very_small_image], keypoints=[sample_keypoints], ) - assert len(images_aug) == len(keypoints_aug) == n_crops + assert len(images_aug) == len(keypoints_aug) == 1 assert all(im.shape[:2] == (height, width) for im in images_aug) # Ensure at least a keypoint is visible in each crop assert all(len(kpts) for kpts in keypoints_aug) + + # Test passing in a batch of frames + n_samples = 8 + images_aug, keypoints_aug = aug( + images=[very_small_image] * n_samples, + keypoints=[sample_keypoints] * n_samples, + ) + assert len(images_aug) == len(keypoints_aug) == n_samples From 3ee9cfa18ea3657c0744ac7fe35679dd772d967d Mon Sep 17 00:00:00 2001 From: Jessy Lauer <30733203+jeylau@users.noreply.github.com> Date: Thu, 24 Jun 2021 11:36:38 +0200 Subject: [PATCH 07/58] Update crop size on the fly based on global scale --- deeplabcut/pose_cfg.yaml | 5 +- .../dataset/augmentation.py | 9 ++- .../dataset/pose_multianimal_imgaug.py | 57 ++++++++----------- 3 files changed, 37 insertions(+), 34 deletions(-) diff --git a/deeplabcut/pose_cfg.yaml b/deeplabcut/pose_cfg.yaml index eff1b26908..d0f733044d 100644 --- a/deeplabcut/pose_cfg.yaml +++ b/deeplabcut/pose_cfg.yaml @@ -26,8 +26,11 @@ global_scale: 0.8 dataset_type: imgaug batch_size: 1 +# Probability with which the augmenters will be applied to input images +apply_prob: 0.5 + # Smart, on-the-fly image cropping, replacing deeplabcut.cropimagesandlabels -crop_size: [400, 400] +crop_size: [400, 400] # width, height max_shift: 0.4 # Maximum relative shift of the position of the crop center #Data loaders, i.e. with additional data augmentation options (as of 2.0.9+): diff --git a/deeplabcut/pose_estimation_tensorflow/dataset/augmentation.py b/deeplabcut/pose_estimation_tensorflow/dataset/augmentation.py index 9514a3b488..d66721d336 100644 --- a/deeplabcut/pose_estimation_tensorflow/dataset/augmentation.py +++ b/deeplabcut/pose_estimation_tensorflow/dataset/augmentation.py @@ -18,7 +18,9 @@ def __init__(self, width, height, max_shift=0.4): Maximum allowed shift of the cropping center position as a fraction of the crop size. """ - super(KeypointAwareCropToFixedSize, self).__init__(width, height) + super(KeypointAwareCropToFixedSize, self).__init__( + width, height, name="kptscrop", + ) # Clamp to 40% of crop size to ensure that at least # the center keypoint remains visible after the offset is applied. self.max_shift = max(0., min(max_shift, 0.4)) @@ -54,3 +56,8 @@ def _draw_samples(self, batch, random_state): offsets[n] = center offsets = np.clip(offsets, 0, 1) return [self.size] * n_samples, offsets[:, 0], offsets[:, 1] + + +def update_crop_size(pipeline, width, height): + aug = pipeline.find_augmenters_by_name("kptscrop")[0] + aug.size = width, height diff --git a/deeplabcut/pose_estimation_tensorflow/dataset/pose_multianimal_imgaug.py b/deeplabcut/pose_estimation_tensorflow/dataset/pose_multianimal_imgaug.py index ad81f99361..132f1ba461 100644 --- a/deeplabcut/pose_estimation_tensorflow/dataset/pose_multianimal_imgaug.py +++ b/deeplabcut/pose_estimation_tensorflow/dataset/pose_multianimal_imgaug.py @@ -36,6 +36,13 @@ def __init__(self, cfg): self.num_images = len(self.data) self.batch_size = cfg["batch_size"] print("Batch Size is %d" % self.batch_size) + self.pipeline = self.build_augmentation_pipeline( + apply_prob=cfg.get('apply_prob', 0.5), + ) + + @property + def default_crop_size(self): + return self.cfg.get("crop_size", (400, 400)) # width, height def load_dataset(self): cfg = self.cfg @@ -83,10 +90,12 @@ def build_augmentation_pipeline(self, height=None, width=None, apply_prob=0.5): pipeline = iaa.Sequential(random_order=False) # Add smart, keypoint-aware image cropping - w, h = cfg.get("crop_size", (400, 400)) + w, h = self.default_crop_size pipeline.add(iaa.PadToFixedSize(w, h)) pipeline.add( - augmentation.KeypointAwareCropToFixedSize(w, h, cfg.get('max_shift', 0.4)) + augmentation.KeypointAwareCropToFixedSize( + w, h, cfg.get('max_shift', 0.4), + ) ) if cfg.get("fliplr", False): @@ -150,18 +159,6 @@ def get_batch(self): batch_joints = [] joint_ids = [] data_items = [] - - # Scale is sampled only once (per batch) to transform all of the images into same size. - scale = self.get_scale() - while True: - idx = np.random.choice(self.num_images) - scale = self.get_scale() - size = self.data[idx].im_size - target_size = np.ceil(size[1:3] * scale).astype(int) - if self.is_valid_size(target_size): - break - - stride = self.cfg["stride"] for i in range(self.batch_size): data_item = self.data[img_idx[i]] @@ -182,17 +179,7 @@ def get_batch(self): batch_joints.append(arr(joint_points)) batch_images.append(image) - - sm_size = np.ceil(target_size / (stride * self.cfg.get("smfactor", 2))).astype( - int - ) * self.cfg.get("smfactor", 2) - - if stride == 2: - sm_size = np.ceil(target_size / 16).astype(int) - sm_size *= 8 - - # assert len(batch_images) == self.batch_size - return batch_images, joint_ids, batch_joints, data_items, sm_size, target_size + return batch_images, joint_ids, batch_joints, data_items def get_targetmaps_update( self, joint_ids, joints, data_items, sm_size, target_size @@ -255,18 +242,24 @@ def next_batch(self, plotting=False): joint_ids, batch_joints, data_items, - sm_size, - target_size, ) = self.get_batch() - pipeline = self.build_augmentation_pipeline( - height=target_size[0], width=target_size[1], apply_prob=0.5 - ) - - batch_images, batch_joints = pipeline( + # Scale is sampled only once (per batch) to transform all of the images into same size. + target_size = np.asarray(self.default_crop_size) * self.get_scale() + target_size = np.ceil(target_size).astype(int) + augmentation.update_crop_size(self.pipeline, *target_size) + batch_images, batch_joints = self.pipeline( images=batch_images, keypoints=batch_joints ) + stride = self.cfg["stride"] + sm_size = np.ceil(target_size / (stride * self.cfg.get("smfactor", 2))).astype( + int + ) * self.cfg.get("smfactor", 2) + if stride == 2: + sm_size = np.ceil(target_size / 16).astype(int) + sm_size *= 8 + # If you would like to check the augmented images, script for saving # the images with joints on: if plotting: From fefa2b6d9820e6763aa3b769e97b4c1bc4a786f2 Mon Sep 17 00:00:00 2001 From: Jessy Lauer <30733203+jeylau@users.noreply.github.com> Date: Tue, 29 Jun 2021 16:21:04 +0200 Subject: [PATCH 08/58] Validate target size --- .../dataset/pose_multianimal_imgaug.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/deeplabcut/pose_estimation_tensorflow/dataset/pose_multianimal_imgaug.py b/deeplabcut/pose_estimation_tensorflow/dataset/pose_multianimal_imgaug.py index 132f1ba461..fd123cdcd1 100644 --- a/deeplabcut/pose_estimation_tensorflow/dataset/pose_multianimal_imgaug.py +++ b/deeplabcut/pose_estimation_tensorflow/dataset/pose_multianimal_imgaug.py @@ -247,6 +247,8 @@ def next_batch(self, plotting=False): # Scale is sampled only once (per batch) to transform all of the images into same size. target_size = np.asarray(self.default_crop_size) * self.get_scale() target_size = np.ceil(target_size).astype(int) + if not self.is_valid_size(target_size): + target_size = self.default_crop_size augmentation.update_crop_size(self.pipeline, *target_size) batch_images, batch_joints = self.pipeline( images=batch_images, keypoints=batch_joints @@ -308,9 +310,8 @@ def get_scale(self): return scale def is_valid_size(self, target_size): - im_width = target_size[1] - im_height = target_size[0] - min_input_size = 100 + im_width, im_height = target_size + min_input_size = self.cfg.get("min_input_size", 100) if im_height < min_input_size or im_width < min_input_size: return False if hasattr(self.cfg, "max_input_size"): From 5139c35c50507bede7d16971ed32340d2fffe6cb Mon Sep 17 00:00:00 2001 From: Jessy Lauer <30733203+jeylau@users.noreply.github.com> Date: Tue, 29 Jun 2021 17:01:42 +0200 Subject: [PATCH 09/58] Fix DeprecationWarnings --- .../dataset/pose_multianimal_imgaug.py | 52 +++++++++---------- 1 file changed, 24 insertions(+), 28 deletions(-) diff --git a/deeplabcut/pose_estimation_tensorflow/dataset/pose_multianimal_imgaug.py b/deeplabcut/pose_estimation_tensorflow/dataset/pose_multianimal_imgaug.py index fd123cdcd1..c187907cea 100644 --- a/deeplabcut/pose_estimation_tensorflow/dataset/pose_multianimal_imgaug.py +++ b/deeplabcut/pose_estimation_tensorflow/dataset/pose_multianimal_imgaug.py @@ -366,9 +366,9 @@ def compute_target_part_scoremap_numpy( # so let's just loop over all bpts. for k, j_id in enumerate(np.concatenate(joint_id)): joint_pt = coords[0][k, :] - j_x = np.asscalar(joint_pt[0]) + j_x = joint_pt[0].item() j_x_sm = round((j_x - half_stride) / stride) - j_y = np.asscalar(joint_pt[1]) + j_y = joint_pt[1].item() j_y_sm = round((j_y - half_stride) / stride) min_x = round(max(j_x_sm - dist_thresh - 1, 0)) @@ -401,9 +401,9 @@ def compute_target_part_scoremap_numpy( if len(joint_ids) > 1: for k, j_id in enumerate(joint_ids): joint_pt = coords[0][k + coordinateoffset, :] - j_x = np.asscalar(joint_pt[0]) + j_x = joint_pt[0].item() j_x_sm = round((j_x - half_stride) / stride) - j_y = np.asscalar(joint_pt[1]) + j_y = joint_pt[1].item() j_y_sm = round((j_y - half_stride) / stride) min_x = round(max(j_x_sm - dist_thresh - 1, 0)) @@ -439,13 +439,13 @@ def compute_target_part_scoremap_numpy( I1 = np.where(np.array(joint_ids) == bp1)[0] I2 = np.where(np.array(joint_ids) == bp2)[0] if (len(I1) > 0) * (len(I2) > 0): - indbp1 = np.asscalar(I1[0]) - indbp2 = np.asscalar(I2[0]) - j_x = np.asscalar(coords[0][indbp1 + coordinateoffset, 0]) - j_y = np.asscalar(coords[0][indbp1 + coordinateoffset, 1]) + indbp1 = I1[0].item() + indbp2 = I2[0].item() + j_x = (coords[0][indbp1 + coordinateoffset, 0]).item() + j_y = (coords[0][indbp1 + coordinateoffset, 1]).item() - linkedj_x = np.asscalar(coords[0][indbp2 + coordinateoffset, 0]) - linkedj_y = np.asscalar(coords[0][indbp2 + coordinateoffset, 1]) + linkedj_x = (coords[0][indbp2 + coordinateoffset, 0]).item() + linkedj_y = (coords[0][indbp2 + coordinateoffset, 1]).item() dist = np.sqrt((linkedj_x - j_x) ** 2 + (linkedj_y - j_y) ** 2) if dist > 0: @@ -453,14 +453,12 @@ def compute_target_part_scoremap_numpy( Dy = (linkedj_y - j_y) * 1.0 / dist d1 = [ - np.asscalar(Dx * j_x + Dy * j_y), - np.asscalar(Dx * linkedj_x + Dy * linkedj_y), + Dx * j_x + Dy * j_y, + Dx * linkedj_x + Dy * linkedj_y, ] # in-line with direct axis d1lowerboundary = min(d1) d1upperboundary = max(d1) - d2mid = np.asscalar( - j_y * Dx - j_x * Dy - ) # orthogonal direction + d2mid = j_y * Dx - j_x * Dy # orthogonal direction distance_along = Dx * (x * stride + half_stride) + Dy * ( y * stride + half_stride @@ -544,9 +542,9 @@ def gaussian_scmap(self, joint_id, coords, data_item, size, scale): # so let's just loop over all bpts. for k, j_id in enumerate(np.concatenate(joint_id)): joint_pt = coords[0][k, :] - j_x = np.asscalar(joint_pt[0]) + j_x = joint_pt[0].item() j_x_sm = round((j_x - half_stride) / stride) - j_y = np.asscalar(joint_pt[1]) + j_y = joint_pt[1].item() j_y_sm = round((j_y - half_stride) / stride) map_j = grid.copy() @@ -576,13 +574,13 @@ def gaussian_scmap(self, joint_id, coords, data_item, size, scale): I1 = np.where(np.array(joint_ids) == bp1)[0] I2 = np.where(np.array(joint_ids) == bp2)[0] if (len(I1) > 0) * (len(I2) > 0): - indbp1 = np.asscalar(I1[0]) - indbp2 = np.asscalar(I2[0]) - j_x = np.asscalar(coords[0][indbp1 + coordinateoffset, 0]) - j_y = np.asscalar(coords[0][indbp1 + coordinateoffset, 1]) + indbp1 = I1[0].item() + indbp2 = I2[0].item() + j_x = (coords[0][indbp1 + coordinateoffset, 0]).item() + j_y = (coords[0][indbp1 + coordinateoffset, 1]).item() - linkedj_x = np.asscalar(coords[0][indbp2 + coordinateoffset, 0]) - linkedj_y = np.asscalar(coords[0][indbp2 + coordinateoffset, 1]) + linkedj_x = (coords[0][indbp2 + coordinateoffset, 0]).item() + linkedj_y = (coords[0][indbp2 + coordinateoffset, 1]).item() dist = np.sqrt((linkedj_x - j_x) ** 2 + (linkedj_y - j_y) ** 2) if dist > 0: @@ -590,14 +588,12 @@ def gaussian_scmap(self, joint_id, coords, data_item, size, scale): Dy = (linkedj_y - j_y) * 1.0 / dist d1 = [ - np.asscalar(Dx * j_x + Dy * j_y), - np.asscalar(Dx * linkedj_x + Dy * linkedj_y), + Dx * j_x + Dy * j_y, + Dx * linkedj_x + Dy * linkedj_y, ] # in-line with direct axis d1lowerboundary = min(d1) d1upperboundary = max(d1) - d2mid = np.asscalar( - j_y * Dx - j_x * Dy - ) # orthogonal direction + d2mid = j_y * Dx - j_x * Dy # orthogonal direction distance_along = Dx * (x * stride + half_stride) + Dy * ( y * stride + half_stride From b4d6662d21c7ac05cebdfea719a0094e7502c1e2 Mon Sep 17 00:00:00 2001 From: Jessy Lauer <30733203+jeylau@users.noreply.github.com> Date: Thu, 17 Jun 2021 19:04:36 +0200 Subject: [PATCH 10/58] Some minor fixes --- deeplabcut/pose_estimation_tensorflow/dataset/augmentation.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/deeplabcut/pose_estimation_tensorflow/dataset/augmentation.py b/deeplabcut/pose_estimation_tensorflow/dataset/augmentation.py index d66721d336..f11f335f9d 100644 --- a/deeplabcut/pose_estimation_tensorflow/dataset/augmentation.py +++ b/deeplabcut/pose_estimation_tensorflow/dataset/augmentation.py @@ -45,6 +45,8 @@ def _draw_samples(self, batch, random_state): # in order to augment crowded regions. radius = 0.1 * min(h, w) n_neighbors = self.calc_n_neighbors(kpts, radius) + # Include keypoints in the count to avoid null probabilities + n_neighbors += 1 p = n_neighbors / n_neighbors.sum() center = kpts[random_state.choice(inds, p=p)] # Shift the crop center in both dimensions by random amounts From aef1d50a24976e1c42ff74f6520a58444489c22d Mon Sep 17 00:00:00 2001 From: Jessy Lauer <30733203+jeylau@users.noreply.github.com> Date: Tue, 29 Jun 2021 17:25:52 +0200 Subject: [PATCH 11/58] Fix failing tests --- tests/test_pose_multianimal_imgaug.py | 4 ---- 1 file changed, 4 deletions(-) diff --git a/tests/test_pose_multianimal_imgaug.py b/tests/test_pose_multianimal_imgaug.py index 208c41fae9..88de9c834e 100644 --- a/tests/test_pose_multianimal_imgaug.py +++ b/tests/test_pose_multianimal_imgaug.py @@ -53,8 +53,6 @@ def test_get_batch( joint_ids, batch_joints, data_items, - sm_size, - target_size, ) = ma_dataset.get_batch() assert len(batch_images) == len(joint_ids) == len(batch_joints) \ == len(data_items) == batch_size @@ -62,8 +60,6 @@ def test_get_batch( assert len(data_item.joints) == len(joint_id) for joints, id_ in zip(data_item.joints.values(), joint_id): np.testing.assert_equal(joints[:, 0], id_) - np.testing.assert_equal(np.asarray([400, 400]) * scale, target_size) - np.testing.assert_equal(target_size / stride, sm_size) @pytest.mark.parametrize( From 020b7aba6048522e6f9a01c33da233083ac7df31 Mon Sep 17 00:00:00 2001 From: Jessy Lauer <30733203+jeylau@users.noreply.github.com> Date: Tue, 29 Jun 2021 18:14:24 +0200 Subject: [PATCH 12/58] Fix failing tests --- .../dataset/pose_multianimal_imgaug.py | 27 +++++---- tests/test_pose_multianimal_imgaug.py | 57 +++++++++++-------- 2 files changed, 47 insertions(+), 37 deletions(-) diff --git a/deeplabcut/pose_estimation_tensorflow/dataset/pose_multianimal_imgaug.py b/deeplabcut/pose_estimation_tensorflow/dataset/pose_multianimal_imgaug.py index c187907cea..5986164616 100644 --- a/deeplabcut/pose_estimation_tensorflow/dataset/pose_multianimal_imgaug.py +++ b/deeplabcut/pose_estimation_tensorflow/dataset/pose_multianimal_imgaug.py @@ -235,6 +235,20 @@ def get_targetmaps_update( Batch.pairwise_mask: partaffinityfield_masks, } + def calc_target_and_scoremap_sizes(self): + target_size = np.asarray(self.default_crop_size) * self.get_scale() + target_size = np.ceil(target_size).astype(int) + if not self.is_valid_size(target_size): + target_size = self.default_crop_size + stride = self.cfg["stride"] + sm_size = np.ceil(target_size / (stride * self.cfg.get("smfactor", 2))).astype( + int + ) * self.cfg.get("smfactor", 2) + if stride == 2: + sm_size = np.ceil(target_size / 16).astype(int) + sm_size *= 8 + return target_size, sm_size + def next_batch(self, plotting=False): while True: ( @@ -245,23 +259,12 @@ def next_batch(self, plotting=False): ) = self.get_batch() # Scale is sampled only once (per batch) to transform all of the images into same size. - target_size = np.asarray(self.default_crop_size) * self.get_scale() - target_size = np.ceil(target_size).astype(int) - if not self.is_valid_size(target_size): - target_size = self.default_crop_size + target_size, sm_size = self.calc_target_and_scoremap_sizes() augmentation.update_crop_size(self.pipeline, *target_size) batch_images, batch_joints = self.pipeline( images=batch_images, keypoints=batch_joints ) - stride = self.cfg["stride"] - sm_size = np.ceil(target_size / (stride * self.cfg.get("smfactor", 2))).astype( - int - ) * self.cfg.get("smfactor", 2) - if stride == 2: - sm_size = np.ceil(target_size / 16).astype(int) - sm_size *= 8 - # If you would like to check the augmented images, script for saving # the images with joints on: if plotting: diff --git a/tests/test_pose_multianimal_imgaug.py b/tests/test_pose_multianimal_imgaug.py index 88de9c834e..bbe62b36ad 100644 --- a/tests/test_pose_multianimal_imgaug.py +++ b/tests/test_pose_multianimal_imgaug.py @@ -27,39 +27,45 @@ def ma_dataset(): @pytest.mark.parametrize( - "batch_size, scale, stride", + "scale, stride", [ - (1, 0.6, 2), - (1, 0.6, 4), - (1, 0.6, 8), - (8, 0.8, 4), - (8, 1.0, 8), - (8, 1.2, 8), - (16, 0.6, 4), - (16, 0.8, 8), + (0.6, 2), + (0.6, 4), + (0.6, 8), + (0.8, 4), + (1.0, 8), + (1.2, 8), + (0.6, 4), + (0.8, 8), ] ) -def test_get_batch( +def test_calc_target_and_scoremap_sizes( ma_dataset, - batch_size, scale, stride, ): - ma_dataset.batch_size = batch_size ma_dataset.cfg["global_scale"] = scale ma_dataset.cfg["stride"] = stride - ( - batch_images, - joint_ids, - batch_joints, - data_items, - ) = ma_dataset.get_batch() - assert len(batch_images) == len(joint_ids) == len(batch_joints) \ - == len(data_items) == batch_size - for data_item, joint_id in zip(data_items, joint_ids): - assert len(data_item.joints) == len(joint_id) - for joints, id_ in zip(data_item.joints.values(), joint_id): - np.testing.assert_equal(joints[:, 0], id_) + target_size, sm_size = ma_dataset.calc_target_and_scoremap_sizes() + np.testing.assert_equal(np.asarray([400, 400]) * scale, target_size) + np.testing.assert_equal(target_size / stride, sm_size) + + +def test_get_batch(ma_dataset): + for batch_size in 1, 4, 8, 16: + ma_dataset.batch_size = batch_size + ( + batch_images, + joint_ids, + batch_joints, + data_items, + ) = ma_dataset.get_batch() + assert len(batch_images) == len(joint_ids) == len(batch_joints) \ + == len(data_items) == batch_size + for data_item, joint_id in zip(data_items, joint_ids): + assert len(data_item.joints) == len(joint_id) + for joints, id_ in zip(data_item.joints.values(), joint_id): + np.testing.assert_equal(joints[:, 0], id_) @pytest.mark.parametrize( @@ -77,7 +83,8 @@ def test_build_augmentation_pipeline(ma_dataset, height, width, prob): def test_get_targetmaps(ma_dataset, num_idchannel): ma_dataset.cfg["num_idchannel"] = num_idchannel batch = ma_dataset.get_batch()[1:] - maps = ma_dataset.get_targetmaps_update(*batch) + target_size, sm_size = ma_dataset.calc_target_and_scoremap_sizes() + maps = ma_dataset.get_targetmaps_update(*batch, sm_size, target_size) assert all(len(map_) == ma_dataset.batch_size for map_ in maps.values()) assert maps[Batch.part_score_targets][0].shape \ == maps[Batch.part_score_weights][0].shape From 22ee66528a5b396bd9544a08b8b7086f52d58741 Mon Sep 17 00:00:00 2001 From: Jessy Lauer <30733203+jeylau@users.noreply.github.com> Date: Thu, 1 Jul 2021 13:05:09 +0200 Subject: [PATCH 13/58] Add option to resize images prior to data augmentation --- deeplabcut/pose_cfg.yaml | 3 +++ .../dataset/pose_multianimal_imgaug.py | 21 ++++++++----------- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/deeplabcut/pose_cfg.yaml b/deeplabcut/pose_cfg.yaml index d0f733044d..dfe5cb28e2 100644 --- a/deeplabcut/pose_cfg.yaml +++ b/deeplabcut/pose_cfg.yaml @@ -29,6 +29,9 @@ batch_size: 1 # Probability with which the augmenters will be applied to input images apply_prob: 0.5 +# Resize images prior to augmentation +pre_resize: [] # Specify [width, height] if pre-resizing is desired + # Smart, on-the-fly image cropping, replacing deeplabcut.cropimagesandlabels crop_size: [400, 400] # width, height max_shift: 0.4 # Maximum relative shift of the position of the crop center diff --git a/deeplabcut/pose_estimation_tensorflow/dataset/pose_multianimal_imgaug.py b/deeplabcut/pose_estimation_tensorflow/dataset/pose_multianimal_imgaug.py index 5986164616..42c1a4b3b9 100644 --- a/deeplabcut/pose_estimation_tensorflow/dataset/pose_multianimal_imgaug.py +++ b/deeplabcut/pose_estimation_tensorflow/dataset/pose_multianimal_imgaug.py @@ -83,12 +83,17 @@ def load_dataset(self): self.has_gt = has_gt return data - def build_augmentation_pipeline(self, height=None, width=None, apply_prob=0.5): + def build_augmentation_pipeline(self, apply_prob=0.5): cfg = self.cfg sometimes = lambda aug: iaa.Sometimes(apply_prob, aug) pipeline = iaa.Sequential(random_order=False) + pre_resize = cfg.get("pre_resize") + if pre_resize: + width, height = pre_resize + pipeline.add(iaa.Resize({"height": height, "width": width})) + # Add smart, keypoint-aware image cropping w, h = self.default_crop_size pipeline.add(iaa.PadToFixedSize(w, h)) @@ -143,14 +148,6 @@ def build_augmentation_pipeline(self, height=None, width=None, apply_prob=0.5): ) ) ) - if height is not None and width is not None: - pipeline.add( - iaa.Sometimes( - cfg.get("cropratio", 0.4), - iaa.CropAndPad(percent=(-0.3, 0.1), keep_size=False), - ) - ) - pipeline.add(iaa.Resize({"height": height, "width": width})) return pipeline def get_batch(self): @@ -323,7 +320,7 @@ def is_valid_size(self, target_size): return False return True - def compute_scmap_weights(self, scmap_shape, joint_id, data_item): + def compute_scmap_weights(self, scmap_shape, joint_id): cfg = self.cfg if cfg["weigh_only_present_joints"]: weights = np.zeros(scmap_shape) @@ -499,7 +496,7 @@ def compute_target_part_scoremap_numpy( coordinateoffset += len(joint_ids) # keeping track of the blocks - weights = self.compute_scmap_weights(scmap.shape, joint_id, data_item) + weights = self.compute_scmap_weights(scmap.shape, joint_id) return ( scmap, weights, @@ -633,5 +630,5 @@ def gaussian_scmap(self, joint_id, coords, data_item, size, scale): coordinateoffset += len(joint_ids) # keeping track of the blocks - weights = self.compute_scmap_weights(scmap.shape, joint_id, data_item) + weights = self.compute_scmap_weights(scmap.shape, joint_id) return scmap, weights, locref_map, locref_mask From d9200f4d30e1eb23a9b0d6aa3ee3b401dd586c5d Mon Sep 17 00:00:00 2001 From: Jessy Lauer <30733203+jeylau@users.noreply.github.com> Date: Fri, 2 Jul 2021 11:56:34 +0200 Subject: [PATCH 14/58] Add missing import --- .../datasets/pose_multianimal_imgaug.py | 1 + 1 file changed, 1 insertion(+) diff --git a/deeplabcut/pose_estimation_tensorflow/datasets/pose_multianimal_imgaug.py b/deeplabcut/pose_estimation_tensorflow/datasets/pose_multianimal_imgaug.py index 55fb1fe2d3..b165b45c1b 100644 --- a/deeplabcut/pose_estimation_tensorflow/datasets/pose_multianimal_imgaug.py +++ b/deeplabcut/pose_estimation_tensorflow/datasets/pose_multianimal_imgaug.py @@ -17,6 +17,7 @@ import imgaug.augmenters as iaa import numpy as np from imgaug.augmentables import Keypoint, KeypointsOnImage +from . import augmentation from .factory import PoseDatasetFactory from .pose_base import BasePoseDataset from .utils import DataItem, Batch From 18dea6c49b71b3a207a5724068c80c7382b2baf9 Mon Sep 17 00:00:00 2001 From: Jessy Lauer <30733203+jeylau@users.noreply.github.com> Date: Fri, 2 Jul 2021 13:41:34 +0200 Subject: [PATCH 15/58] Minor fix --- .../pose_estimation_tensorflow/datasets/augmentation.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/deeplabcut/pose_estimation_tensorflow/datasets/augmentation.py b/deeplabcut/pose_estimation_tensorflow/datasets/augmentation.py index f11f335f9d..26e0f17273 100644 --- a/deeplabcut/pose_estimation_tensorflow/datasets/augmentation.py +++ b/deeplabcut/pose_estimation_tensorflow/datasets/augmentation.py @@ -61,5 +61,7 @@ def _draw_samples(self, batch, random_state): def update_crop_size(pipeline, width, height): - aug = pipeline.find_augmenters_by_name("kptscrop")[0] - aug.size = width, height + aug = pipeline.find_augmenters_by_name("kptscrop") + if not aug: + return + aug[0].size = width, height From 2436253953e738bf3b8cce8545c8dcbb2959656e Mon Sep 17 00:00:00 2001 From: Jessy Lauer <30733203+jeylau@users.noreply.github.com> Date: Fri, 2 Jul 2021 14:58:01 +0200 Subject: [PATCH 16/58] Slightly faster imread --- deeplabcut/utils/auxfun_videos.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/deeplabcut/utils/auxfun_videos.py b/deeplabcut/utils/auxfun_videos.py index 82b58a43b3..2897613dfa 100644 --- a/deeplabcut/utils/auxfun_videos.py +++ b/deeplabcut/utils/auxfun_videos.py @@ -346,7 +346,7 @@ def check_video_integrity(video_path): # Historically DLC used: from scipy.misc import imread, imresize >> deprecated functions def imread(path, mode=None): - return cv2.cvtColor(cv2.imread(path), cv2.COLOR_BGR2RGB) + return cv2.imread(path)[..., ::-1] # ~10% faster than using cv2.cvtColor # https://docs.opencv.org/3.4.0/da/d54/group__imgproc__transform.html#ga5bb5a1fea74ea38e1a5445ca803ff121 From 8a8b7306c67cf762e9db4301b9f8321f1333bf15 Mon Sep 17 00:00:00 2001 From: Jessy Lauer <30733203+jeylau@users.noreply.github.com> Date: Fri, 2 Jul 2021 23:12:59 +0200 Subject: [PATCH 17/58] Modest attempt to speed up target maps code --- .../datasets/pose_multianimal_imgaug.py | 239 +++++++----------- 1 file changed, 98 insertions(+), 141 deletions(-) diff --git a/deeplabcut/pose_estimation_tensorflow/datasets/pose_multianimal_imgaug.py b/deeplabcut/pose_estimation_tensorflow/datasets/pose_multianimal_imgaug.py index b165b45c1b..c4db3052d5 100644 --- a/deeplabcut/pose_estimation_tensorflow/datasets/pose_multianimal_imgaug.py +++ b/deeplabcut/pose_estimation_tensorflow/datasets/pose_multianimal_imgaug.py @@ -17,11 +17,12 @@ import imgaug.augmenters as iaa import numpy as np from imgaug.augmentables import Keypoint, KeypointsOnImage -from . import augmentation -from .factory import PoseDatasetFactory -from .pose_base import BasePoseDataset -from .utils import DataItem, Batch +from deeplabcut.pose_estimation_tensorflow.datasets import augmentation +from deeplabcut.pose_estimation_tensorflow.datasets.factory import PoseDatasetFactory +from deeplabcut.pose_estimation_tensorflow.datasets.pose_base import BasePoseDataset +from deeplabcut.pose_estimation_tensorflow.datasets.utils import DataItem, Batch from deeplabcut.utils.auxfun_videos import imread +from math import sqrt @PoseDatasetFactory.register("multi-animal-imgaug") @@ -177,15 +178,15 @@ def get_batch(self): def get_targetmaps_update( self, joint_ids, joints, data_items, sm_size, target_size ): - part_score_targets, part_score_weights, locref_targets, locref_masks = ( - [], - [], - [], - [], - ) - partaffinityfield_targets, partaffinityfield_masks = [], [] + part_score_targets = [] + part_score_weights = [] + locref_targets = [] + locref_masks = [] + partaffinityfield_targets = [] + partaffinityfield_masks = [] for i in range(len(data_items)): # Approximating the scale + # FIXME I feel scale calculation is wrong scale = min( target_size[0] / data_items[i].im_size[1], target_size[1] / data_items[i].im_size[2], @@ -209,7 +210,7 @@ def get_targetmaps_update( partaffinityfield_target, partaffinityfield_mask, ) = self.compute_target_part_scoremap_numpy( - joint_ids[i], [joints[i]], data_items[i], sm_size, scale + joint_ids[i], joints[i], data_items[i], sm_size, scale ) part_score_targets.append(part_score_target) @@ -277,13 +278,10 @@ def next_batch(self, plotting=False): batch = {Batch.inputs: np.array(batch_images).astype(np.float64)} if self.has_gt: targetmaps = self.get_targetmaps_update( - joint_ids, batch_joints, data_items, sm_size, image_shape + joint_ids, batch_joints, data_items, (sm_size[1], sm_size[0]), image_shape ) batch.update(targetmaps) - # if returndata: - # return batch_images,batch_joints,targetmaps - batch = {key: np.array(data) for (key, data) in batch.items()} batch[Batch.data_item] = data_items return batch @@ -332,20 +330,19 @@ def compute_target_part_scoremap_numpy( self, joint_id, coords, data_item, size, scale ): stride = self.cfg["stride"] + half_stride = stride // 2 dist_thresh = float(self.cfg["pos_dist_thresh"] * scale) num_idchannel = self.cfg.get("num_idchannel", 0) num_joints = self.cfg["num_joints"] - half_stride = stride / 2 - - scmap = np.zeros(np.concatenate([size, np.array([num_joints + num_idchannel])])) - locref_size = np.concatenate([size, np.array([num_joints * 2])]) + scmap = np.zeros((*size, num_joints + num_idchannel)) + locref_size = *size, num_joints * 2 locref_map = np.zeros(locref_size) locref_scale = 1.0 / self.cfg["locref_stdev"] dist_thresh_sq = dist_thresh ** 2 - partaffinityfield_shape = np.concatenate([size, np.array([self.cfg["num_limbs"] * 2])]) + partaffinityfield_shape = *size, self.cfg["num_limbs"] * 2 partaffinityfield_map = np.zeros(partaffinityfield_shape) if self.cfg["weigh_only_present_joints"]: partaffinityfield_mask = np.zeros(partaffinityfield_shape) @@ -354,38 +351,33 @@ def compute_target_part_scoremap_numpy( partaffinityfield_mask = np.ones(partaffinityfield_shape) locref_mask = np.ones(locref_size) - width = size[1] - height = size[0] + height, width = size grid = np.mgrid[:height, :width].transpose((1, 2, 0)) - - # the animal id plays no role for scoremap + locref! - # so let's just loop over all bpts. - for k, j_id in enumerate(np.concatenate(joint_id)): - joint_pt = coords[0][k, :] - j_x = joint_pt[0].item() - j_x_sm = round((j_x - half_stride) / stride) - j_y = joint_pt[1].item() - j_y_sm = round((j_y - half_stride) / stride) - - min_x = round(max(j_x_sm - dist_thresh - 1, 0)) - max_x = round(min(j_x_sm + dist_thresh + 1, width - 1)) - min_y = round(max(j_y_sm - dist_thresh - 1, 0)) - max_y = round(min(j_y_sm + dist_thresh + 1, height - 1)) - x = grid.copy()[:, :, 1] - y = grid.copy()[:, :, 0] - dx = j_x - x * stride - half_stride - dy = j_y - y * stride - half_stride - dist = dx ** 2 + dy ** 2 - mask1 = dist <= dist_thresh_sq - mask2 = (x >= min_x) & (x <= max_x) - mask3 = (y >= min_y) & (y <= max_y) - mask = mask1 & mask2 & mask3 - scmap[mask, j_id] = 1 + xx = np.expand_dims(grid[..., 1], axis=2) + yy = np.expand_dims(grid[..., 0], axis=2) + + # Produce score maps and location refinement fields + coords_sm = np.round((coords - half_stride) / stride).astype(int) + mins = np.round(np.maximum(coords_sm - dist_thresh - 1, 0)).astype(int) + maxs = np.round( + np.minimum(coords_sm + dist_thresh + 1, [width - 1, height - 1]) + ).astype(int) + dx = coords[:, 0] - xx * stride - half_stride + dx_ = dx * locref_scale + dy = coords[:, 1] - yy * stride - half_stride + dy_ = dy * locref_scale + dist = dx ** 2 + dy ** 2 + mask1 = dist <= dist_thresh_sq + mask2 = (xx >= mins[:, 0]) & (xx <= maxs[:, 0]) + mask3 = (yy >= mins[:, 1]) & (yy <= maxs[:, 1]) + mask = mask1 & mask2 & mask3 + for n, ind in enumerate(np.concatenate(joint_id).tolist()): + mask_ = mask[..., n] + scmap[mask_, ind] = 1 if self.cfg["weigh_only_present_joints"]: - locref_mask[mask, j_id * 2 + 0] = 1.0 - locref_mask[mask, j_id * 2 + 1] = 1.0 - locref_map[mask, j_id * 2 + 0] = (dx * locref_scale)[mask] - locref_map[mask, j_id * 2 + 1] = (dy * locref_scale)[mask] + locref_mask[mask_, [ind * 2 + 0, ind * 2 + 1]] = 1.0 + locref_map[mask_, ind * 2 + 0] = dx_[mask_, n] + locref_map[mask_, ind * 2 + 1] = dy_[mask_, n] if num_idchannel > 0: coordinateoffset = 0 @@ -393,102 +385,67 @@ def compute_target_part_scoremap_numpy( idx = [i for i, id_ in enumerate(data_item.joints) if id_ < num_idchannel] for person_id in idx: - joint_ids = joint_id[person_id].copy() - if len(joint_ids) > 1: - for k, j_id in enumerate(joint_ids): - joint_pt = coords[0][k + coordinateoffset, :] - j_x = joint_pt[0].item() - j_x_sm = round((j_x - half_stride) / stride) - j_y = joint_pt[1].item() - j_y_sm = round((j_y - half_stride) / stride) - - min_x = round(max(j_x_sm - dist_thresh - 1, 0)) - max_x = round(min(j_x_sm + dist_thresh + 1, width - 1)) - min_y = round(max(j_y_sm - dist_thresh - 1, 0)) - max_y = round(min(j_y_sm + dist_thresh + 1, height - 1)) - x = grid.copy()[:, :, 1] - y = grid.copy()[:, :, 0] - dx = j_x - x * stride - half_stride - dy = j_y - y * stride - half_stride - dist = dx ** 2 + dy ** 2 - mask1 = dist <= dist_thresh_sq - mask2 = (x >= min_x) & (x <= max_x) - mask3 = (y >= min_y) & (y <= max_y) - mask = mask1 & mask2 & mask3 - scmap[mask, person_id + num_joints] = 1 + joint_ids = joint_id[person_id] + if joint_ids.size > 1: # FIXME Why > 1?? + inds = joint_ids + coordinateoffset + mask_ = mask[..., inds].sum(axis=2) + scmap[mask_, person_id + num_joints] = 1 coordinateoffset += len(joint_ids) - x = grid.copy()[:, :, 1] - y = grid.copy()[:, :, 0] - - # if self.cfg.partaffinityfield_predict: - # print("hello",joint_id) - # print(np.concatenate(joint_id)) #this is all joint_ids for all individuals! coordinateoffset = 0 # the offset based on + y, x = np.rollaxis(grid * stride + half_stride, 2) for person_id in range(len(joint_id)): - # for k, joint_ids in enumerate(joint_id[person_id]): - joint_ids = joint_id[person_id].copy() - if len(joint_ids) > 1: # otherwise there cannot be a joint! - # CONSIDER SMARTER SEARCHES here... (i.e. calculate the bpts beforehand?) - for l in range(self.cfg["num_limbs"]): - bp1, bp2 = self.cfg["partaffinityfield_graph"][l] - I1 = np.where(np.array(joint_ids) == bp1)[0] - I2 = np.where(np.array(joint_ids) == bp2)[0] - if (len(I1) > 0) * (len(I2) > 0): - indbp1 = I1[0].item() - indbp2 = I2[0].item() - j_x = (coords[0][indbp1 + coordinateoffset, 0]).item() - j_y = (coords[0][indbp1 + coordinateoffset, 1]).item() - - linkedj_x = (coords[0][indbp2 + coordinateoffset, 0]).item() - linkedj_y = (coords[0][indbp2 + coordinateoffset, 1]).item() - - dist = np.sqrt((linkedj_x - j_x) ** 2 + (linkedj_y - j_y) ** 2) - if dist > 0: - Dx = (linkedj_x - j_x) * 1.0 / dist # x-axis UNIT VECTOR - Dy = (linkedj_y - j_y) * 1.0 / dist - - d1 = [ - Dx * j_x + Dy * j_y, - Dx * linkedj_x + Dy * linkedj_y, - ] # in-line with direct axis - d1lowerboundary = min(d1) - d1upperboundary = max(d1) - d2mid = j_y * Dx - j_x * Dy # orthogonal direction - - distance_along = Dx * (x * stride + half_stride) + Dy * ( - y * stride + half_stride - ) - distance_across = ( - ( - ( - (y * stride + half_stride) * Dx - - (x * stride + half_stride) * Dy - ) - - d2mid - ) - * 1.0 - / self.cfg["pafwidth"] - * scale - ) - - mask1 = (distance_along >= d1lowerboundary) & ( - distance_along <= d1upperboundary + joint_ids = joint_id[person_id].tolist() + if len(joint_ids) < 2: # there is no possible edge + continue + for l, (bp1, bp2) in enumerate(self.cfg["partaffinityfield_graph"]): + try: + ind1 = joint_ids.index(bp1) + except ValueError: + continue + try: + ind2 = joint_ids.index(bp2) + except ValueError: + continue + j_x, j_y = coords[ind1 + coordinateoffset] + linkedj_x, linkedj_y = coords[ind2 + coordinateoffset] + dist = sqrt((linkedj_x - j_x) ** 2 + (linkedj_y - j_y) ** 2) + if dist > 0: + Dx = (linkedj_x - j_x) / dist # x-axis UNIT VECTOR + Dy = (linkedj_y - j_y) / dist + d1 = [ + Dx * j_x + Dy * j_y, + Dx * linkedj_x + Dy * linkedj_y, + ] # in-line with direct axis + d1lowerboundary = min(d1) + d1upperboundary = max(d1) + d2mid = j_y * Dx - j_x * Dy # orthogonal direction + + distance_along = Dx * x + Dy * y + distance_across = ( + ( + ( + y * Dx + - x * Dy ) - mask2 = np.abs(distance_across) <= 1 - # mask3 = ((x >= 0) & (x <= width-1)) - # mask4 = ((y >= 0) & (y <= height-1)) - mask = mask1 & mask2 # &mask3 &mask4 - if self.cfg["weigh_only_present_joints"]: - partaffinityfield_mask[mask, l * 2 + 0] = 1.0 - partaffinityfield_mask[mask, l * 2 + 1] = 1.0 + - d2mid + ) + * 1.0 + / self.cfg["pafwidth"] + * scale + ) - partaffinityfield_map[mask, l * 2 + 0] = ( - Dx * (1 - abs(distance_across)) - )[mask] - partaffinityfield_map[mask, l * 2 + 1] = ( - Dy * (1 - abs(distance_across)) - )[mask] + mask1 = (distance_along >= d1lowerboundary) & ( + distance_along <= d1upperboundary + ) + distance_across_abs = np.abs(distance_across) + mask2 = distance_across_abs <= 1 + mask = mask1 & mask2 + temp = 1 - distance_across_abs[mask] + if self.cfg["weigh_only_present_joints"]: + partaffinityfield_mask[mask, [l * 2 + 0, l * 2 + 1]] = 1.0 + partaffinityfield_map[mask, l * 2 + 0] = Dx * temp + partaffinityfield_map[mask, l * 2 + 1] = Dy * temp coordinateoffset += len(joint_ids) # keeping track of the blocks From 407c34b5f1a0a4c25596aa302bd111a07538a57a Mon Sep 17 00:00:00 2001 From: Jessy Lauer <30733203+jeylau@users.noreply.github.com> Date: Sat, 3 Jul 2021 10:04:50 +0200 Subject: [PATCH 18/58] Minor fixes --- .../datasets/pose_multianimal_imgaug.py | 7 ++++--- tests/test_dataset_augmentation.py | 2 +- tests/test_pose_multianimal_imgaug.py | 12 +++--------- 3 files changed, 8 insertions(+), 13 deletions(-) diff --git a/deeplabcut/pose_estimation_tensorflow/datasets/pose_multianimal_imgaug.py b/deeplabcut/pose_estimation_tensorflow/datasets/pose_multianimal_imgaug.py index c4db3052d5..4362ad1d22 100644 --- a/deeplabcut/pose_estimation_tensorflow/datasets/pose_multianimal_imgaug.py +++ b/deeplabcut/pose_estimation_tensorflow/datasets/pose_multianimal_imgaug.py @@ -386,11 +386,12 @@ def compute_target_part_scoremap_numpy( if id_ < num_idchannel] for person_id in idx: joint_ids = joint_id[person_id] - if joint_ids.size > 1: # FIXME Why > 1?? - inds = joint_ids + coordinateoffset + n_joints = joint_ids.size + if n_joints: + inds = np.arange(n_joints) + coordinateoffset mask_ = mask[..., inds].sum(axis=2) scmap[mask_, person_id + num_joints] = 1 - coordinateoffset += len(joint_ids) + coordinateoffset += n_joints coordinateoffset = 0 # the offset based on y, x = np.rollaxis(grid * stride + half_stride, 2) diff --git a/tests/test_dataset_augmentation.py b/tests/test_dataset_augmentation.py index c49d106c26..ff32fda697 100644 --- a/tests/test_dataset_augmentation.py +++ b/tests/test_dataset_augmentation.py @@ -1,6 +1,6 @@ import imgaug.augmenters as iaa import pytest -from deeplabcut.pose_estimation_tensorflow.dataset import augmentation +from deeplabcut.pose_estimation_tensorflow.datasets import augmentation @pytest.mark.parametrize( diff --git a/tests/test_pose_multianimal_imgaug.py b/tests/test_pose_multianimal_imgaug.py index 073e88190c..79e498b0ef 100644 --- a/tests/test_pose_multianimal_imgaug.py +++ b/tests/test_pose_multianimal_imgaug.py @@ -68,15 +68,9 @@ def test_get_batch(ma_dataset): np.testing.assert_equal(joints[:, 0], id_) -@pytest.mark.parametrize( - "height, width, prob", - [ - (None, None, 0.5), - (200, 250, 0.3), - ] -) -def test_build_augmentation_pipeline(ma_dataset, height, width, prob): - _ = ma_dataset.build_augmentation_pipeline(height, width, prob) +def test_build_augmentation_pipeline(ma_dataset): + for prob in (0.3, 0.5): + _ = ma_dataset.build_augmentation_pipeline(prob) @pytest.mark.parametrize("num_idchannel", range(4)) From 79f2f74bed910c2948ddb309d855d515c8204298 Mon Sep 17 00:00:00 2001 From: Jessy Lauer <30733203+jeylau@users.noreply.github.com> Date: Mon, 5 Jul 2021 20:27:31 +0200 Subject: [PATCH 19/58] Some fixes --- .../core/evaluate_multianimal.py | 20 +- .../lib/crossvalutils.py | 237 +----------------- 2 files changed, 22 insertions(+), 235 deletions(-) diff --git a/deeplabcut/pose_estimation_tensorflow/core/evaluate_multianimal.py b/deeplabcut/pose_estimation_tensorflow/core/evaluate_multianimal.py index b7afc50eca..31d9b12b80 100644 --- a/deeplabcut/pose_estimation_tensorflow/core/evaluate_multianimal.py +++ b/deeplabcut/pose_estimation_tensorflow/core/evaluate_multianimal.py @@ -537,18 +537,16 @@ def evaluate_multianimal_full( # the model was trained on the full graph. max_n_edges = dlc_cfg["num_joints"] * (dlc_cfg["num_joints"] - 1) // 2 if len(dlc_cfg["partaffinityfield_graph"]) == max_n_edges: - uncropped_data_path = data_path.replace( - ".pickle", "_uncropped.pickle" + print("Selecting best skeleton...") + _ = crossvalutils.cross_validate_paf_graphs( + config, + str(path_test_config).replace("pose_", "inference_"), + data_path, + data_path.replace("_full", "_meta"), ) - if not os.path.isfile(uncropped_data_path): - print("Selecting best skeleton...") - crossvalutils._rebuild_uncropped_in(evaluationfolder) - _ = crossvalutils.cross_validate_paf_graphs( - config, - str(path_test_config).replace("pose_", "inference_"), - uncropped_data_path, - uncropped_data_path.replace("_full_", "_meta_"), - ) + + # Evaluate mAP and edge separability power + if len(final_result) > 0: # Only append if results were calculated make_results_file(final_result, evaluationfolder, DLCscorer) diff --git a/deeplabcut/pose_estimation_tensorflow/lib/crossvalutils.py b/deeplabcut/pose_estimation_tensorflow/lib/crossvalutils.py index 8cf4574d01..caa231866c 100644 --- a/deeplabcut/pose_estimation_tensorflow/lib/crossvalutils.py +++ b/deeplabcut/pose_estimation_tensorflow/lib/crossvalutils.py @@ -11,16 +11,13 @@ import os import pickle import shutil -import warnings from collections import defaultdict -from itertools import groupby from tqdm import tqdm import networkx as nx import numpy as np import pandas as pd from scipy.spatial import cKDTree -from scipy.spatial.distance import cdist from scipy.optimize import linear_sum_assignment from sklearn.metrics.cluster import contingency_matrix @@ -57,219 +54,6 @@ def _unsorted_unique(array): return np.asarray(array)[np.sort(inds)] -def _rebuild_uncropped_metadata(metadata, image_paths, output_name=""): - train_inds_orig = set(metadata["data"]["trainIndices"]) - train_inds, test_inds = [], [] - for k, (_, group) in tqdm(enumerate(groupby(image_paths, _form_original_path))): - if image_paths.index(next(group)) in train_inds_orig: - train_inds.append(k) - else: - test_inds.append(k) - meta_new = metadata.copy() - meta_new["data"]["trainIndices"] = train_inds - meta_new["data"]["testIndices"] = test_inds - - if output_name: - with open(output_name, "wb") as file: - pickle.dump(meta_new, file) - - return meta_new - - -def _rebuild_uncropped_data(data, params, output_name=""): - """ - Reconstruct predicted data as if they had been obtained on full size images. - This is required to evaluate part affinity fields and cross-validate - and animal assembly. - - Parameters - ---------- - data : dict - Dictionary of predicted data as loaded from - _full.pickle files under evaluation-results. - - params : dict - Evaluation settings. Formed from the metadata using _set_up_evaluation(). - - output_name : str - If passed, dump the uncropped data into a pickle file of the same name. - - Returns - ------- - (uncropped data, list of image paths) - - """ - image_paths = params["imnames"] - bodyparts = params["joint_names"] - idx = ( - data[image_paths[0]]["groundtruth"][2] - .unstack("coords") - .reindex(bodyparts, level="bodyparts") - .index - ) - individuals = idx.get_level_values("individuals").unique() - has_single = "single" in individuals - n_individuals = len(individuals) - has_single - - data_new = dict() - with warnings.catch_warnings(): - warnings.simplefilter("ignore", category=RuntimeWarning) - for basename, group in tqdm(groupby(image_paths, _form_original_path)): - imnames_ = list(group) - n_crops = len(imnames_) - - # Sort crop patches to maximize the probability they overlap with others - all_coords_gt = [ - data[imname]["groundtruth"][2].to_numpy().reshape((-1, 2)) - for imname in imnames_ - ] - overlap = np.zeros((n_crops, n_crops)) - inds = list(zip(*np.triu_indices(n_crops, k=1))) - masks = dict() # Cache boolean masks - for i1, i2 in inds: - if i1 not in masks: - masks[i1] = np.isfinite(all_coords_gt[i1]).any(axis=1) - if i2 not in masks: - masks[i2] = np.isfinite(all_coords_gt[i2]).any(axis=1) - overlap[i1, i2] = overlap[i2, i1] = np.sum(masks[i1] & masks[i2]) - count = np.count_nonzero(overlap, axis=1) - imnames = [imnames_[i] for i in np.argsort(count)[::-1]] - - # Form the ground truth back - ref_gt = None - all_trans = np.zeros( - (len(imnames), 2) - ) # Store translations w.r.t. first ref crop - for i, imname in enumerate(imnames): - coords_gt = data[imname]["groundtruth"][2].to_numpy().reshape((-1, 2)) - if ref_gt is None: - ref_gt = coords_gt - continue - trans = np.nanmean(coords_gt - ref_gt, axis=0) - if np.all(~np.isnan(trans)): - all_trans[i] = trans - empty = np.isnan(ref_gt) - has_value = ~np.isnan(coords_gt) - mask = np.any(empty & has_value, axis=1) - if mask.any(): - coords_gt_trans = coords_gt - all_trans[i] - ref_gt[mask] = coords_gt_trans[mask] - - # Match detections across crops - temp = pd.DataFrame(ref_gt, index=idx, columns=["x", "y"]) - temp.columns.names = ["coords"] - if has_single: - temp.drop("single", level="individuals", inplace=True) - ref_pred = np.full( - (n_individuals, len(temp) // n_individuals, 4 + n_individuals), np.nan - ) # Hold x, y, prob, dist, ids - costs = dict() - shape = n_individuals, n_individuals - for ind in params["paf"]: - costs[ind] = {"m1": np.zeros(shape), "distance": np.full(shape, np.inf)} - if not np.isnan(temp.to_numpy()).all(): - ref_gt_ = dict() - for bpt, df_ in temp.groupby("bodyparts"): - values = df_.to_numpy() - inds = np.flatnonzero(np.all(~np.isnan(values), axis=1)) - ref_gt_[bpt] = values, inds - for i, imname in enumerate(imnames): - coords_pred = data[imname]["prediction"]["coordinates"][0] - probs_pred = data[imname]["prediction"]["confidence"] - costs_pred = data[imname]["prediction"]["costs"] - try: - ids_pred = data[imname]["prediction"]["identity"] - except KeyError: - ids_pred = None - map_ = dict() - for n, bpt in enumerate(ref_gt_): - xy_gt, inds_gt = ref_gt_[bpt] - ind = bodyparts.index(bpt) - xy = coords_pred[ind] - prob = probs_pred[ind] - ids = None if ids_pred is None else ids_pred[ind] - if inds_gt.size and xy.size: - xy_trans = xy - all_trans[i] - d = cdist(xy_gt[inds_gt], xy_trans) - rows, cols = linear_sum_assignment(d) - probs_ = prob[cols] - ids_ = ids[cols] if ids is not None else None - dists_ = d[rows, cols] - inds_rows = inds_gt[rows] - map_[n] = inds_rows, cols - is_free = np.isnan(ref_pred[inds_rows, n]).all(axis=1) - closer = dists_ < ref_pred[inds_rows, n, 3] - mask = np.logical_or(is_free, closer) - if mask.any(): - coords_ = xy_trans[cols] - sl = inds_rows[mask] - ref_pred[sl, n, :2] = coords_[mask] - ref_pred[sl, n, 2] = probs_[mask].squeeze() - ref_pred[sl, n, 3] = dists_[mask] - if ids_ is not None: - ref_pred[sl, n, 4:] = ids_[mask] - # Store the costs associated with the retained candidates - for n, (ind1, ind2) in enumerate(params["paf_graph"]): - if ind1 in map_ and ind2 in map_: - sl1 = np.ix_(map_[ind1][0], map_[ind2][0]) - sl2 = np.ix_(map_[ind1][1], map_[ind2][1]) - mask = costs_pred[n]["m1"][sl2] > costs[n]["m1"][sl1] - if mask.any(): - inds_lin = (sl1[0] * n_individuals + sl1[1])[mask] - costs[n]["m1"].ravel()[inds_lin] = costs_pred[n]["m1"][ - sl2 - ][mask] - costs[n]["distance"].ravel()[inds_lin] = costs_pred[n][ - "distance" - ][sl2][mask] - - ref_pred_ = ref_pred.swapaxes(0, 1) - coordinates = ref_pred_[..., :2] - confidence = ref_pred_[..., 2] - pred_dict = { - "prediction": { - "coordinates": (coordinates,), - "confidence": confidence, - "costs": costs, - }, - "groundtruth": (None, None, temp.stack(dropna=False)), - } - identities = ref_pred_[..., 4:] - if ~np.all(np.isnan(identities)): - pred_dict["prediction"]["identity"] = identities - data_new[basename] = pred_dict - - image_paths = list(data_new) - data_new["metadata"] = data["metadata"] - - if output_name: - with open(output_name, "wb") as file: - pickle.dump(data_new, file) - - return data_new, image_paths - - -def _rebuild_uncropped_in(base_folder,): - for dirpath, dirnames, filenames in os.walk(base_folder): - for file in filenames: - if file.endswith("_full.pickle"): - full_data_file = os.path.join(dirpath, file) - metadata_file = full_data_file.replace("_full.", "_meta.") - with open(full_data_file, "rb") as file: - data = pickle.load(file) - with open(metadata_file, "rb") as file: - metadata = pickle.load(file) - params = _set_up_evaluation(data) - _rebuild_uncropped_data( - data, params, full_data_file.replace(".pickle", "_uncropped.pickle") - ) - _rebuild_uncropped_metadata( - metadata, - params["imnames"], - metadata_file.replace(".pickle", "_uncropped.pickle"), - ) - - def _find_closest_neighbors(query, ref, k=3): n_preds = ref.shape[0] tree = cKDTree(ref) @@ -313,13 +97,17 @@ def _calc_separability( return sep, threshold -def _calc_within_between_pafs(data, metadata, per_bodypart=True, train_set_only=True): +def _calc_within_between_pafs( + data, + metadata, + per_bodypart=True, + train_set_only=True, +): train_inds = set(metadata["data"]["trainIndices"]) within_train = defaultdict(list) within_test = defaultdict(list) between_train = defaultdict(list) between_test = defaultdict(list) - mask_diag = None for i, (key, dict_) in enumerate(data.items()): if key == "metadata": continue @@ -329,11 +117,12 @@ def _calc_within_between_pafs(data, metadata, per_bodypart=True, train_set_only= costs = dict_["prediction"]["costs"] for k, v in costs.items(): paf = v["m1"] - nonzero = paf != 0 - if mask_diag is None: - mask_diag = np.eye(paf.shape[0], dtype=bool) - within_vals = paf[np.logical_and(mask_diag, nonzero)] - between_vals = paf[np.logical_and(~mask_diag, nonzero)] + paf[np.isnan(paf)] = 0 + rows, cols = linear_sum_assignment(paf, maximize=True) + mask_within = np.zeros(paf.shape, dtype=bool) + mask_within[rows, cols] = True + within_vals = paf[mask_within] + between_vals = paf[~mask_within] if is_train: within_train[k].extend(within_vals) between_train[k].extend(between_vals) @@ -485,7 +274,7 @@ def _get_n_best_paf_graphs( dict(zip(existing_edges, [0] * len(existing_edges))) ) - scores, thresholds = zip( + scores, _ = zip( *[ _calc_separability(b_train, w_train, metric=metric) for n, (w_train, b_train) in enumerate( From cbd4b7378bc890ec97dc663bb4552f128f26943f Mon Sep 17 00:00:00 2001 From: Jessy Lauer <30733203+jeylau@users.noreply.github.com> Date: Mon, 5 Jul 2021 21:53:15 +0200 Subject: [PATCH 20/58] Update unit tests and corresponding data --- tests/conftest.py | 7 ++----- tests/data/trimouse_eval.pickle | Bin 712587 -> 299758 bytes tests/data/trimouse_meta.pickle | Bin 3082 -> 2615 bytes tests/test_crossvalutils.py | 14 +++++++------- 4 files changed, 9 insertions(+), 12 deletions(-) diff --git a/tests/conftest.py b/tests/conftest.py index dae2a44c22..44a67b90cb 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -36,14 +36,11 @@ def real_tracklets(): @pytest.fixture(scope="session") -def uncropped_data_and_metadata(): +def evaluation_data_and_metadata(): full_data_file = os.path.join(TEST_DATA_DIR, "trimouse_eval.pickle") metadata_file = full_data_file.replace("eval", "meta") with open(full_data_file, "rb") as file: data = pickle.load(file) with open(metadata_file, "rb") as file: metadata = pickle.load(file) - params = crossvalutils._set_up_evaluation(data) - data_unc, _ = crossvalutils._rebuild_uncropped_data(data, params) - meta_unc = crossvalutils._rebuild_uncropped_metadata(metadata, params["imnames"]) - return data_unc, meta_unc + return data, metadata diff --git a/tests/data/trimouse_eval.pickle b/tests/data/trimouse_eval.pickle index 4d5a346e90cf30732664db7f5c645d162f6177bc..3f90bf4c956c403e787e2860b83ca22cb46f1dc7 100644 GIT binary patch literal 299758 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%0Dd|fZPiWi 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Ν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 R_a9>emDxbEf$o$3{{Zl_srvu` literal 712587 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

fs)rovaKe!O$B)LH#>W|vmLpDjX}xl zBy|#zW_eP}`vGK!{1nG{a#;|Cy=y3WJxuqD=^fJ{FjH{1rzd+4%L+Y)C9fr(wpxC_ zZVi#t=?Bvb__ctfOe{0ZvyXkuYj7_Y);3TAJB_?8O{I7TJgdoaPcl)AOkkv-1ojJ= zzo*@!N&{;tw`Q^(Tw(@9IdHYnD6>-Yh~jaumPxj8Y-^`z1yBO}8Io51nq&uSS>{;8 zzUsJF@J=X!-J5(xZIIsu_Rcl*KiQ#n@f=Yqu*a5bHd=1wR_ai{DRa+vEvy|ED1qHn z_pwQ9UIF%-gYK7^JzRe0@T`U@w76O#GXf4wQW)wftj2r>o?4NXE%W?g_776WToP%lpL^@ zD%(vgL7x-eZ?r&L>rPJ7#3hde`^|9fJdxIsDp&!O#C}b4$TF0S1C!VX*^qOcQ;alF z68mLUs(HTUIq+(*)ZLXSt$icJlGqZ9o~s7JL(HA=D?&+`EOxwmE3?I`W-Enx z2TEjbpi=ZEE&NMLFYbg~j!Qfl4<)jrGtGvx+Hqi8J7ZnWd`^peF_g%T%6#2GYhM6s ziMGGV5$xjmNGOr5O#6l$O07$SM$f0%@wAGr6uc8kWKY*sTR!B@twXiw-Q!$T?H4XA zku9;C&yq>Q{baVfo23eDYb)7)?uVG;-XXP_-l1gnAo7eZM|%qV&Q_VLU?w?5`X5SW zucdV9W!mB3h;zo8#XLldSDiu0Y+8SjG*O>`tw7EWcW52rsXr*0-8Ze2I7C!|BhC)C z!kOh1Zx+eK#b}8Y{2||HxIkRcG$!5!TY<$LX1ix=>`eyzk81^R z-#vms2&uibxN!tJ6~T3>pd2E$yBL&}dsOiwklL8yHy~o?icUeq9wx?ONoA zi0K21A!1DmpN5ES@pXfUl@-Y&07Xa>wgqA%h+WFQUhZy4MTG(C@2M!SFf~F&h`vC9 z3?jC}e-P4J(f&6fVkbQhL&Od+?IB|4T~9|a#`^odLE>M}gI_o8&Bs+fXz~$}4|jYl z;{z2Rh4>J|#}7U@@Se}RHSe>$L-KSs?@#={d3WG#oi}9ON_i9H?Ta@ak>ZB_n}0cN zpuHPt?;DWz-tzn9wD%kQZ`VP4A3b*?(BA%c z^FZh(Sn}=Hn69Bu3g$v;Epj~(9PA@&M6ZSOo?=PT$E3h>Ekx(d<2Y|I3pJGUE~n<| zDwK=x-=ihpIFVoR86;oeCo=lusUGA%W}F?h#FmEXvHtd>-Oa^9~I$%ZEq27q@Y zq8y}q+*NblFA(=@PNWut+w!Ahrh5s!UHGmJ<-7~Yr&F7&&w|ILwexxROviX(*BHuq zzfHWV$W=SRS~|EkyDRMWtK_^lSjv=k1w5a659TJ%!F=~sa^ABP^No{?vUKQv$1snA zy94nZ|keT?mQ4eCqj`UCoNz9hUQ!l!}s1%!o72!ZY3y`7NHI?oxLu z6W;ZL^4$lCr!@VwDzLwl=lsRxiWB#7p?vrA)W_PNm94;9WH~CZT=yE{MSW3f30TW! zTQ%2TVoowB*S(g!pea+22K&o!2X`KVE)o0%%5{$>iEZ!N#Cm_XFxx<`0bbf@!`}?ja1zh&f`RT=zQdFQ$G*6L_v1 z>T$B!>}SHbV7YFIWmaoeSVG1fU@gNur`Ra>6Ub+kA0@X0 zYnkAf!v5$G`5-9Iy^t8HdQ-z6H|Z7rmNt&ce%=H-;$s_ z_bBZyQ?_X$*pk0>zsW3N#8WU>o?GHC23;cIHmw5BV#m1*^uw>3<8DI*G&!k9z~e&o zna5PP#5|Euj(ab4N-Il&pM#9Du4DR(H`d#s9QQD4p5|xy39u!{+CF27XfXpll;h4P zOSKo0CxNvLcTnsxyLgWZl;a++>1}z9m?4M0i+#xDAztSc2`VVZJy_k|vc^0eyoTX9 zZWq&Eh%i`=TVl!M)0Pqe6AQNF3in<{&F&XwWGKH)QfsvqtpPkPQSvlHyBTVN!m_Z?_(&ZnC%$KZR!^!25X74@8S6ExdK@Y<+o>Q48&ow378BW z#qryHX_2CY^4l)$2Fny;4*07=JNF$>ep}Md>(jOo?JaME*JHgoa(hDUtsqct+fR}D z=hfBVXxS_0lKB2%apV7fJio!}^S#0tI- z<+k6|pC$GZT0Jz5@!Yn{DdyV1a@&&8-)cBU47VHykA7>nhG}1WQxlZe&L+v75OM2|P^yi5mi2>jqD`lrS``6CFx(x}5_h5V0MBu@JH3KqP7wQTjpQAxLeNg>ez^5~Ma)Aq^3GwqP7Y>?{AP5V4zl ze?i3VVSj;$z1nwn1hM}umKYh=_vuK~IwIE279Rna`rqoi|EAU=1KhDh0f`n1LJ!x7 zT{judM@~L0@-dGOXneHdLlGZm_#nbZ2;Tj9-{u_`M|kr#%o`|9Ceq*dc8iT_Aj2ET z@Eec}fBWL)WcY6Wx9cFo5B~`y!;#d|vYv~Qi);1^FJC@gBG_Lsw&r8$<${gujV8|? zG>Kb>J=&*nBx3sS6S{;l4}ZeF{HZPx)7I=))+_c*1Q;FZjMvp7q zMIZW?hlbf=AmZIi?k#>b>v-sM?{5*-s>p-Hm1u*Dn8Og!C84Ro#X0||5e4$$P3(0U z9im5&y)`%Me@uSA^C$9~;$KaEJRY-4ft2jucagh@J{XqVM!c<}RUPHDD!6i7K;vjspono$93}=q?@Yv4F zjIo+Q$`0~3al2ednepzgSi4_l{nEQiAdfJ-Ia2c8m@kcQC|aaBWAwPaPNd9Sw$#1B zC(F(Do)dZ%!<{3(_XJs??t|O!LZr)cRPNP6{J=2hNSRHPCTTEkZy1r5=d5M31q~S9 z94VuvzD_R0ky?m!Uu#P?PKZz#)*R{I>D2R@rk%&gcO>jhfqL{go0FZx5tRFBF~brj zr#Pam9c5N^lmDKwS^2ICsx8&=CY#4BuqM+Yvx#BP5p7<=r<&Wfy*!XSSqIhj5d8~V z%w=RBY8Nw^V;FSA7lWNHn%64j%7dMj$}{2zs^jrCE{PwLJT5NZ_(K0Q?iS+>zBT#T zf?r{{bVT#P_8n9oo7Ad>N%v{BF*f}Wd}}3|$9T@M#mqFnENiA?uJ5zjo2@adI?}^; zM^87>y7Q{r>VK*7Ws3VK*kI3=3xdV}nvyWqW zuNY~^u<1yN=gAJZc^Hw+cAOV#$1v$g2|3vqNAe-ED{0ales&Ct-bk{JZSIa8MZAHF z)rfS0XBwAdJgfo3p(ABpY@eX+gdf>D&uiYoljEKs%mx?+9clGXT_@n^9Yl7iyFloF z41120xFu-`?$iMy`#gI}s2#(cBbK}c-!paV?8cSC=?@HNjy%hG3cH#>WC!NA7M>f! zmm?*9rcUD4frxCCZHiDkhAT%(Y#>kIZL)4<+qBBDO{g8ilOq=SMwjo2KDc=nk)GjM zNxv&-z_8>of7#0la; z0<_<&Z0&@e!SLaT-2~&*gbw%SjY!9Mv$;Iq;b@Fu!;vyyCiGK3i;rg#%WUCQvKxi> z3k(;I^iXoj0UJs~Mbok?4wIVWF&dxvc-Sq-%I zdz;zjFzNmY4snHr<-sM|Y)Ll#x1?EnkNz2){UX}3yepaUbbEg*oA|y2<-%JhXo*J^ zF5G$^>A~MUWv=Z$@jfYRUhlft6J<=)l4aUw@x3RJKj0q4XnnhclfY0e{Cgrv?M!+M zH=81DsmwJoW1Sx1)EPFPw`6=a#P1|+`cE}YWB-YJBSFTe!n=UW>OImwmoCoH~PB}zC5fni#K@dDw1i^@?oPwZo z7(wJ(L=cE5pau{;5R^j>0Y%i`bkd!40rRMZ^}GCbvwx^Nc~!5g>b+OhRiAoIZZW6A z?UIetFm{BC@CbwEo{5M_*Y`1G%NL< zCNh0D6wQ&6k$G?OZ*k|@Ic`P4lRVX3`T`lik|S^Kmn>WLEt4*iDV70H%s|RCb)@od zvK7v|dFeJ0z?35;Uor8ThucOFXY{%7zD@nOg^zYU!MA6}yBBfNECR6Qh_(fp>kQL$ zFB+C5f!{kq$|&v8yeGJClFdn9A^{k4q-2%#g6dTRZ?YwwfYua98JF{6el4fSdz0NG z?nZSBeIkLx?Wx2jy&~~#NE0HjD6sLJxtq-Wohf6@O%1I1-^H3Y5UYPTvD(nX|D8R2 z6=r-j6w)AqNofCjx(73~D*`$m zL+r1>7#y)r0>^N~wgku`45jM>Z{mo(8R%S$QQMfnN*uBK0)-_QwcQnHjuXI6m;Hz% z_DGqhCYIbZ1un!@A!rH_Q3!WJEE58i5QT&gBg79OIE13NulKuPRf5R~_8<(lFp|PB z31c91u+V!#*9h&F8r497H&EcWAO*g;X(PqJ3%4m0f$75g_iw@f8n{*X?ItMjpBpz) z4DZ!I&WN@l6c?&|UaS_o0 zf%Fm&JsC$dH*kCD3H$pvq8G|emwwdsVhB-WAvV0M_T}V881dcKi3VlLOKmbT-!|=u z=$dna#W&C$BhC{z2Q<+R?Fb34f4740p#zsc(mO zitA4VA{6;Pu9yE~Hq3qxbC8dsr3^G6J1#3f(3WewPdO<;N5+|V#oN?Ic-L4~vcf)* zo8*6mJ!yZES`w#eGjEn$O2o>pAEo3ejBUY|L-;d)RlK2beqg5w519 zW{^9VXnV#e>`}LWC<&sm4d8!Jw?{+BWvgQzal_AGU=a#lxQSd+j}5iF0;wu#2?Cq z(dGKHgh~BE3aMLIGZW)Pyo`%}$oeT+~hWHgXTcl0KEM~blr zVAB!HdWaaMTbLhy5(_Q{6Dh3>{sZY_!L^o>I|^!h-MdMF+P;o zB6=h_+q@>eqtXvCWJt+5`Lnp8{uS(9_HXGW{2sS7h5*}+l;2^CGMVGn$Gl9fNn4!g z)#kt>Df8g8!j0Uc{%3;`;1c~Pf4f^@uN_Z-dq*_4wpE(~anDCLrV6Y}61D37@Yu>U zTb;4|qkeyoU%W(j;y-jsngJ#r@n)6nLG!4D)#QnUaoDSmtl)~r$}+AnUgA~&Mjp|2 zj2vd(9NUI`Fn$E~dcfzN%U|~OaBt_N)g-{nBiaU&E6v-Y@6C)zd>&rS$$at;PqKfo zPfriw7%|=e>^!1vAMs}LuSu)Y;}R~w>t&fX9aHFE6r}Wzvm%|~09blt3*3fDPK%54uY{D`)G z)KlhvwD~JzRot)G+DbgX@Spo;duDM`?oNQ`N3<;`2PN!M&bH2M{|)vkV-KC+Z|O7A zQJnOy4DkJkAEsqgsAk84_9>f*cQZl8U-UzO@kea(t*kG!UE?;Wnq~Di1!BY1yRhd& zMQ$0_#@{-)7O(bv#sB1%*5UyFk7(|nwad^ac5Bk7)VWl3+&#(&IA+WIu)@AFsCggj zvR8Xv=Eu7v&A{CNWDH$d-MC7~;UbmD%Ug!i(H8wqM~OewgSDz+C}E+a%j& z6P5S{IVk!#+_y4qgPk4uM}o6%I=@rgX#nmGAllxg-ZcN3*p@gDM`3$I2lpD@%v#-F z*4Za;hXB#`Eg7zQTluQBBz`G8Tgci*(BJaoeLuL1g0~ul-XHD&?i3*2@LmQT_h=$G zVlr=_nESk&MQ;G^6(BZw(biqRQ2AK=eN?!mXoOLE}@E| z-@{&)jVo-$&tfASS-kW$IN;6!qAelofVn!p9a$Cq6+G9bcXt_0jU zK(swz>!KMIY0fwr{YV%%dNOS}p4I$HpVfU&@TPw4xB+($5Sz3SkHsE{2KC5nav43# zyG^u7;NAh!p7vSy=v%0^lT%{XVfUUg=Xp-U-IY^s8NmGmL|ccf$;N0^N9x!16!tnZ z&;A*AGWcFpZyCV-14P?VTcO#Q97SG^Zi;P(a~wXtf{k_7TLy6d0MXXe)>n53Z6Wfj@=kIw zb@2_jSAdlI#CETCQ1lS!ZXhBb=4{K)Wu^B`;64G;`oYA5knJL}l)IG}(}4Q}$TK}o zy^>5PghRWphzmd$eacpAy>u-V>17l8WpA#be}2D(y>Z zYroN4^n~nwfVts*z~6O0Kth;9)qfLodtKEBU`n|E|EGVi@0u5zD1uoMga30V9E~PV z_fFS48u$P2q~hxv-O$$HtK5_Q*98B0HO%wB)J>9~|0^lmukNuMsRiRgK&#>=rNSI~ z4TbUx0esP0IAV>9kKu^*ENX*;@V6@RBsweJbh zgzI-%g9Lhk;a2Gn#9Y$KXBT5crrXN>IQIrt20G$IrY?a~HDWh?AwY<$LeLZF!SqO4!G9eh29goMrgOxsD=vx z4Hp7#!3zN!Z@>CNz!u@Ro462gvc-*D2)H8!Gr{=)OK3slH9weWzVo$%*cD>6CstRl z!mbdj&4Yf!V#s#nJd>i!Zy}xz5u9XGbUEMY+RZ=&FLYLP@zfkAU-t?B3ZeLl_Wq71 zw!DTH#JvvCvHUeQytq|q8h;_g5(3#Iww2G}?kjq(bUJ$^ggCM@b+YJm>6ffN#8L+l zeXyu`nU)Q;ctS+m73Gy}W3WUQ`lpl)cmEdRS&^n?l`k*)j;}0RS@=DUI9cARIElYp z)-SgjN8DWgY;g%^36yj_8bTatVv}-L$vW?SIHIcq*3v%CemJ7RTXALky4_JDdLvf> zJ~zCtADEC6=ORybK^@SFnlxi2UD~a#~6k1LFU(l3s&8<$daurBweIv|Wun;rBsp zBkhNo1X?KqXdv=0)0S;Kt16<#rl#r}V{1$2iv4E`NpDNfbnyrr#QbI2rWD>3q(6#T(2U@c^U{*yxOnh(nD15Z`pU|-l;w9bOr9sV;eM)+lcMj((lr-Za z|C`h!EZ+9H8H?I?hcRZ^*na9c%D42XnQokPaE*)nM{7@57PR;={r9+`@RcB$wnhx& z@990jtYue=;|U`FvXWzs3oT<~AIPYV7>$h-|H`=hGnws-kv%J>e+2P=nYMS5%2k8O z4D(OA3)o&VjXlGU%+WE+XbHLlk$;&sm->ArZ}Xbx=r>?%TN{k0zU(ljN8JSj5c8L5 zdrtSJ<{!3?&4cx&*zu-0m+H6Y`-7jzkkSu=XunL`e*JgJyzPF&8@j33ZOh{Z`>P9< zGrirBVsyjB`Nt`D8@|_n9}`V2Gh`^+8@IzcWnMecF_jzV=YrR#)-!kU<*soeU=QN_ zvhvaTr;Uu!6nB`g8OJFTQjTG39_KvC&Gu95W3CfSR1oa%D#ln4?U!j@W!z;fGby6S z6CPt`LZg({_?lhm{A|CPo#Z~joC`w!l4e}Yf1-Y?`Jw1@)?EqF*zu;NXC1%Zmrc*& zT;e>5i}?>Tlv+k6mRUbcP(!I%ky*KdHuxI{FEmAQQi3`V^OxD}gQg!XyOfQIbMfQN zxGRnq7_C3Wdy1aImWa^}K>m^S-VfwtL!3GcnxhbTUv?YjAibzt?VJeU{Ya@cEt7pksY2@=fNO@OxxGKHST0@TRyB#8-VH~<262^DRD>Sdg#IhBJc4H zqE~XO#PI?UeWX-oER``d?f?`g5cw(IE=($SK^!Ll%|}X2R!t}NM!pJpEFwRb$!1<* z1LEoc!1Iw(-w;)%QVj*oo`}36H_(-Ykl+Juk^D(xTO8aQW=y^iCIsst! zh^_e}Q>X)mE= z!8v)BGeWcm0JTT7@$qKzRpTd7bL0KkF+#=O;oi)|@^*)$4M6RY@w(L7l6kJf2nZ}j z5fh?djIlZdCH+F>I|ieQrR zCF~+`)&uZ*M9Xe+n_;9n9=3$~IXP@(&Oy4`6DeNU15kRz3T8+BLVjyl6LCb-8rCGU z@K=KP`~`XuztjDpxJm)=c|_ae?PrlgjeDZPQwCsb8^w-u=$LUl;gT*|0{A?lt#^DU za;d3B+fR~T#kTN1>`teSDd!DNNgIIABja^BenI9hZT<1UdI*t^W`A%u;hTvT4q)?0 zDN5NZV^w@B>=<6^%b_Q5(p3Nemq)Y=O&UVH72$!dRUqvOSf@7*B$xPacqHw}KC zs&<_RVDgBzO&xNm*{N+4sxa)6(%>WjUl(NM3C4NzE#csg7KrRa`Lc&|YX3R5U!F2}9mV5Tbgi`v5R;c_ zwxxfoKcs&%dN(=G@_}Ynj0&<3L~}&`dqK@#25nMF|C7&iNt$tyc~e@f<#N=$H5-(@Y>kauvBxm0K*=9wClyZP&x-FQ09ub| z8<4IsZi|1F9IG-V0I>xrbJ97B@6TqrTJzE;IRV5TDOs8Ng}ze+PfXR$#U8_U!7Edn zeH&d9xp89K0OTIgrX@V4HOU)nOAWtc_vEU)+xVp5#n1Yl1kig#+r63d3?D0-+V0d& z!qyh%9K+9N8E1V@0th~$&1D_0?GpEK=GTdN*ge_R{S=?THk0)vE|Q;1bPFa%sIUPR zf<*XAyCvuWlkK%}6GZZ5>)VGi2dVaSm;l9TM2qk#gg05~O&mn?Wm*;xm({L#656vz zwb*xY>D=Dh)xnJ-`lJlew=^L7p%8kBZ2eFD{eOu?{$FZqon8Hh?oa$L^>ssA{~NBe zVB8n*l||v;@ux}$;)uD+rr?PERyq$yY(Xj3mjT9=>Oz1+2!E_AEyfXBSTYqy%wF;# zj#yc7D8vhSw#*_$2)+yvi{s~pP#LABx^X#CY~-h~7oSUSdY#h^?a) zA;fN#KKkE&j+?#_AVf|fEDAAC2xvmI5<-y>XM`XkLY7N_gYlH{5Qc$1rrqP zOE4b!-*En0cui}#5zufW;1;|Q@JZXNZv<2czum-*fa9$(ZvSMc?- zYtDkMZr>GRHarYJ)FlSwl7OPipPjqc9CTer?Vp|h#8LZK@X~=0%K-WxnU9@#E7+5z zSeH+8%bvtpnw}|LfFrh~bRUk`{iSgs)(XfbR(NSiAl@J93MV4EtYkvq3*H=JQHhAA zmsAEUd_o9OWWO?+{UVT2+^qaCkM(tdx0#0nt%^e3L_i**kZvC6%+IRn1x%_RaoO)6 z#t4y=IQmARPb?7m_n`e!L{dr@3lRE<{M*p^CL*a7PoDuAACa$s&Z-beiI)b*dqjR3 z_A{RnPniMA9&uv}H36bdP+9jnZ|$x$K++>6J|z;dYj5P)DAo?p@<{D1iGA3$XVQno z+5sZIk?d3O&6cT?Ge$#a{D}0JAO|l!KS04F&!4O92koRIvKxJencBVwsCT5q22~ow zx+1b`eLk^w0LmS)$YSWE0g>z{GB*Ixj>yl$_9BUu2k3RA=7rcbOZRX9QXQ%J2zJd9 zYXVT|$jG!O+hg1KEa#V^jR531QhR*n>reuDM7G>@K&&00%aIcAS-W9B`&#!Uv37tU zM?7x0`mgk%(D@xAJtYQGV;uLn89 z#8?Or-bn3HR1s{4^(UxJ+^z_*c7W(cYVSk-0MA0Q+AG~zV(kFIjrhe&hR2BY5D|(< zU-bHE>G=VA8+rcEjl;0*ocB?podeW1Qu}h#Id~?L_0IjikHy*nS{t!5Ew-&o$sYki z8>zVm_WD*zF%MALNROPNRM^%?Ii41KBpF(l%ldF0IT$;p4|BdK)(%kD$g^)CbWn0s zMD~E|eX(|cvPP`erdJRHAubt_e#pDkBRxMrSR>E$t^N%wZk+kdTPe;M09lRHzS;OG zwypo<%@unGAgU3IY>7Q%Nc<&0Q6tYim(0T+Rc%3Y@wowN8mWB&aW(#X_k9)U?wF3k+QoE0O6g!eBaz}}^1H>~@dr#^&xaVb2?=Jfkv37uP zMruDnZosZR!tt(HJ3urecC%am7?}!v+zXL@iW%>co*$r@k>~GZP{DgUvfc^v_Vx%K zINSkH%t-Bx%?v!V%4+ZCEf;$SpqG(dt#(v1{nprTp;ZkcPjx@*`Pseb&e}Erq%u+} zf-11gS8CFM*n`Md*!A=rm&D}*R5C)!_cHgSzDnmZzt(3%GYe9t9piGI^_(rVJES%N zR5J366U~!}4H>7QITDed%lOpbko;$&O>iNN)RZu%V0ELWb zIZpV^>r-BbyabV7lsm-pk!xhvS}g!^jP&&!%jeV}YYws42vW{SnI-hj!q%Rg!UYcL zV+H_mj6CCL)5k;{+)yD}qO3YU~I1t5(PEhVWf$WJo1V2{sCrm1I|yTV@Ea{ytC z^nxS(30s9VnH;Wf36D|z3>dDY!|Wfqv;}sjG)@3vjI`-cY9{qLu>sq%x6^j#FsJke z3y{T#mbX&BB)-YCVE0@W)70Ix?z3Y6QH-1iG$VJbE~Rgxwx|CST2~=us`77hwxDAQ z>a77Fi;90V&hm`5%_|QIsp5Uyvif*CbFOVK=M3$RUt#?9eQAFOJ zZ*Z)YJ{fnTgfS%}j8hv3#4rg|9%r)(@^xk z0f)VsPq@X$6@%YhQr4$bSngciHsn3WQ`QUzL|9O!#t~!7y5fkL$|mE8MVD>H5&NR_ zJdT*ZR2zb&Ksw~tk`f%T@R9{MV&4^2;E0X#cfk?sUaAg3V<1gEv_^jZN0;wzblkjiB9Ryn!3|X*J z!2|{S5{w6j=#|R|F}{KBZJ>K^LArNahpXw{ox*Q7LHC}I#H4$#09!*5t2ZWgux6+8 z>ZR2cwN1srS`}UTHsx#-f=a zYDISG4CPN3clW(f=Ja>05yvEekw$z-Of!G18~~l>Ao4;MZx5{y^FjhNFj8ug?RQfz z&35<%MAiur`749jC&j!24uA|sw9FufSXOH$LFZnGe5HLabIc>{djpg(QffN+xTUdr z2ey{i9Tx8xcZ8#McO4*x5iLIIsQ!0-ABem`b8ZxKy#W+4qU8+viDr?i5PS67c|P+h9FxS%jLk83o(B>>O|iNNyDdt3tGBu! zUOf2(sA8lojdY(|r=)j;PdsFn%mumPH)ts{4L}wnTFlx*=@-&|!fwk(-vQ zppp?S`)vyi@9MW<$AIdBF~Pjq3X!b@2xUaeSJYDdK7A&(mK5iDM(eswj5GkLjA#j? z5)9ikQ?WqGctq!(5s82=;taVIRQE z@kkk)0NNSR@-x}e@{Z=@m&a51x|E^BTy=B!3hQN}kk25c+HcK#Ba2P#Cr0SIWM zE&0@K`YB2ZTg!Nt#XHz3`3*oqBU;kPF?v@LevhqjTf9vj9Yh-gh-gI18~TfxZ>N6= zW#vQU_jm`5JhN zhirzJ`c0{YFIoY~dJYuL~=uwJbh;Pj*jvC~*?@I-t_If|=@ojNI8-L z!Wt>{s=nNspT=POO|^FeT}4-kZ%+Vejrh&oDb=RQ#G5I*(|^SFn>E2N?+jsHW_vIX zi4g}NuaPzpwlTUdG`q1a+Lt|nuJT||*oc-L)MNTNDbd((>S6Ys^mBMQtYsGc3N=7m zp+1DIWl~{thH?4CH77u2BW>wMw$T@=e#Q2iVa}FJtaFcO1pu9mXelu)$oz=lAO;zc z|A3k1*4A-w0HKYPD%U)dG2Z$n_G+-i8%^ib%{Kt4jaal-ecE)E=%eal{S5XU*-S8i z=^4z;zMK7)9xcWKfZRsfWTZYc{H&|QjyQ_kN9j0^v`zyEZbZvEiZikL9BfuhQBX<$ z;F8{=0FoQga-4kA$Z7t-w&)>_4fF!1baxyex)Cj38+H+E$ZxQ1Z7g%ZRpmS zEBc|C``|YzS($S0F~&^CakGQ;dhPh&(%$n)za`F)gFS~Ta!WjC>S%nB_LhxL@APHV z1@dR?@tGFfxr;3vBF;Owl=n9Cbn<0l5xnw{Jyp*j2ii|c8S_Le>4vGj9PoNbv_7}XH>sS%sIjUH(qX_s~*a4Bz3 zYJ$y6GA3LtKhcbHfpd=7b0Fm{>$xS#v(nBJQO4fHH0<~`+n2>mauZxrw-ikQ+8gPK zRB~O)w^lX_w@v5l6CEvRX*U9(ypfnqsf(%aEpMdUnfWXn<7EBtSn$heRKA}bNq;E5 zk${x9tmLyPKNBzNhiJdG+TnRsR%RI&k-xNX9edC%&aF2}d)s8RcUlAO{ohJ^-|AfS z%|72P4$)qHOx^In4K()yS1^c^ruTp3soOZ~bce#xX!3OLbiJc-f2?kj+-IPzkwO9A z7pW7$0K20~CYA^@?bYUsu(ajH799Tj_LBZMVgrg_!x4)r?ht~0MV{?+kq<{~X3-=Z zu?|J6am0rDf5H))$x$K56r>4Hd(AjvUpaQ*C~aJ{5~sF}{4yM|Z}{JE#7=YDal}4l zzr+!H#rGbLn3b81Bi4)_j3Z`uu_447Sn4a{n4|7hr~jI3Mvq&i#}GHmDt{j**lh?5 zt_e>!O?L~yRfwEISQKKO5YU8ZC4?d&&Imz7h!BGN3%)HluHcn|%L)D@IE&y3f|(08 zEEuSq*2evBq1{rW8tCo@y89NSySF4#K3M!rsfpi#BdRWLT6T#21V?mlk-cn#uM$V}!JZ*h#HF4l@)o0 z<&z|LGf`yI0$iQWMoZu}^dD`KN+(w{*6GOLy<0V$*Kd>)_o@ zSz9XYrF$A4>$G=tKI|T&93|eJbyOEF-QC(&YFz4$c=4~i_L1b=+9wmvF8s6o~lWw zP`Grr(bm+c(tL&;&wPcG8H-!u;Be{gx#V~HriM?jWAh%zBBtCmQ9SX)rMvr)ziD4n zhhu9Ia#8PbREhBnm+p=svUTBVHMW*X?snc41v5o|!KJ&ybUib2GRB&5&+9B+3q3~4 zVB`RDQzPefwuAxZr>qf)hV*7|e3r$4#=gtUw{#S@*8RFTKJ77Qg69*fGLI&{1VbVL&tQ+scvq}{QGMpkBu*Xva=5!@M%PV705@|JnqY~@Ep_x9ak zO)~k{nAOZkcAPjv&hh`q*>>X)!BT9IpE)U-nU`U8*`8+l{-gZjiApV9-HcF-0u z%vrZYJK)mYTgY+xPgCY%w`FIL?$)~PV$=k3Wg~5AMZK=PD{(!xckXwtVcvC0-ib?h zZzPPGdCEQ5TJCUPWbBS7MH|DVyWiF=&+L*p2AkiB4$|G@>T-61bhpe0Rwj%x>oR7< z%}#p)wq{wGpS-7-4Rj~&b9aQe9sntCnIFtZ{wGly{~@eNCa>@^%sjTA7;$jvZY9MT zj_RVZExLE^J3+czT65|!WAtNWxS@mI3T2f?Y|~}`mOkemDe|L0u5F}LBsEfbLBAZ^ zZzzWIS7@LB8GMIf^>yon2 zf^@gcIyK6D#!oXoRxVGUZvj_?vNEN<-i(2Mj(gfAk)0srEwj)$iFc4&lrC(G?j6j@ z{X5Huu>hCu9!qUAy{6lM9dW4cF1o8nx{Z%ZclWo&nLBCR*j7+spGofv=7z0Zr{U7w z?^8`I1JwJlwL~}$(zBeBMdQ-lDHc67mh6kY>Sz=6njX#pVp~AETV^+p#|=tbMkFN` zTknSnNLiV+zO!_WXBD^8DOom1dCP3AZF~i}EqWNXt*r>=@lNIzh+c|IciTv(_K;=< z_P)*DTs7U>Exi-q(%nPJUrp;Z&9SY3DY%c;x}-OD5;I0unii88B>2rTB-+lUE1Y`^ zq!<9w-LetQj@g*HfJj#_OAm+NL1ksyvlHna?&I8=LM+N#W(B`TULu~<&4BNe$mHXF zM?9sR+X@u9OFY#sX%6j(IX*7y%eE~&sW&7C~w&_4vANh?Gk2Tx2eL{$ny**z3t-C z-9GDn+kT=ec6^KQgxT-Pc}|Q4Al)tNg&xUAGKSiemKNy)u`PQ(+sG5)%;8t%ofOwP zAmuIVxi{j!CcZGXhBe9LquHkJN=|wc0qJg8o5D25wDIbD65D1L!7D^rnclo2yJ?}C zbGsyMAmuH4#uVe*DZl*-ZzRAdVA2cO!>XO2VdpO#f`s%hBzjH3CxRoIRYc z;uN{@ocO(?8>PFmWOR3W1KoYA(%lU(Fc#(dpXnxvt?eHo+xhkW{-1g32CcWSN&PPk zj^rM7-1#+N@*wy=>dChf@$Xt6ZVuSV>qxpN_M3Sm)*c|t%FqLmPegg7Gv5g|ed z?l1VZ;J6S+F4(YOppZ}sjF+Y2Cpl)R5icm>%~_KUIBuCQnQtHU9p0i)1&K(oec4GS19e- zNjST>Zf*Y(27YyINZ+xkJ&92DA%dqnPu7MKyrLPkJUhUjBO5=*i+?QDcdZNr{I(GJ zwGnYsaemnkcUK0KydFpVqhQ28927V5p}w_(?6^CMhn4l>u#%FWEPB68%VO2Kyy#-t zPH)E$&x<^Ox5yY+OJk)v|HOZPV5K_&r`GoVmjhc0TZRxt`qx&TT6#~nF9LUP$3m=M z5%Ku)W@UN7(aT`=g%C%Yw>&VQEYE&ljVLCM-q=yU^BK{G_=hgRye_#k&aImfdz-2$ zbb5=Ftjb^O^)q`JMVH2IJ#DYcItXMSN6M$#G-}Q`RM|@NNryh#uT^R#aGHyhj0kG( z$#nNBy7=5gP_vZf3gFg}E?z~BGv62AA##c4JhZ=#l&Q48$ZQJc@vQVn-~I&nb)+Om zK5kA^DOGNb1a%nY7d zzwYQ=N0|aVJ5usz@{s0o+*9f|42jTr2vTORYnrz&%@pK072+v5z_lYK{|e?4Z{GGD zrP-i^&Jd6?lxKc0b#g{uus&V1_ZyRdd|DW-8*-( zUCNaXaPEjruSvX3^K8ZrEv1@f(nd!ce}#3*Jb0S-ptlP%o>z3Ka>jB7k8~;nu_I<3)^SgMe0dVk04>xa>p8m9< zQs1jXCahD|!!wy4-mP3rZdX?NLN>s|BTt(|u1dZ~eN-3xtdaJ-uCw+J>>lo&yM-A^ zlU{|Qzx!#rL)~|+0Y)BaXFN4Rdq+}*s;4dsJKp%R7t$-4)h+`qeU}$tValaCvk zt9Hj9Qd4jXWxcAjE10-o9@K+wDY^m7Jfdwg*-SrHS(b8Kz25-FZ<)60f-cO5^fAXp zS2K~v0N8m%+d-1k4NO)hzpblX$A-vzg_LRO{0CD`FDlsY94DSD0}MS;O}xNR$UEn%Jye!=2wp_FwGVCfNU!!onAKg2Xi9vZy>+Z%ejFEJb4zTio0o)}93 zrXKNz<_YUGjWT-ak~9zM&qjAM4}#;jEZ+3=9bxk6(Y&JTe&;>h8P}p*p>KvmoIRph zoxIund-^xV;hHW`ufwgCX;%C8GM8vaFw#}n6S>CjIpTN%%stY>b5w_{MvFq% zD_Vm+e{}Z_Vm5QioT+Ti_1Sww+uP(WeNl=1sMY(ol&V(XyR~YrOuH^EPo-0@!>++Z6I1U6FQn+*5}G7`rcK25`f1+o!S{?> zuaDw3a&eO#diiwEnh)HBi4I z?{9l^x6vha?@qW(|5!52_>gKWWHE@AN_)#-4sC_KHd5m<{k^F&^>kHpXzoL_oGl!{ zl(?k3m$*#-N#YLG@5wJi_JC;F@0`pWb38A`eq5%1A<+l4`UJUm#`|_N5%lBSlP)R$I4;}&M^XpNAZycvJk`69 zWh2^J`8F~8>1=L}OUeg}%l5yidLh#m*A|M2$T%szy_sd~MKMC*vi&WoLAr&iUf7mR zb?1U4v@~1dvi-*?js9Hx2ACGCj|X94_BFJ%?nWUl+rN(7rF~Krz~*^(7Vf9FIwevN zm+c=&-lt1buEB20Fek+faY)})0NH+-WlvHr*X0oz37?sBpnV#|*1q-;LBf9`)cJmLPk=$vz!J&{MgQbve9o8UODR8RE360QMo7HB9k-PXEeY z5NCQ^#=iqqqHC?TU|Yk;92dRO9V4!;aT))a$u7OFIs@tp8xDwMCiS9^2;5*~{r{mruOM2(tb%YnUB>%={tw zmO0J37``(nE5opZ>77oJR}@IuwQ-sMvdGKn+lUV}Yb>v+fVa0RY_Bi9)_sX%3L?d} z*)Tczrm@cvd-YwgS6T+2o*u|aGdM2uUrDOWN0lDz2y|D@5YHT!w7U*6|FS+m6yG83 zermVrwDoT2O%&<5`RoGE&O#?&70gFn8zXSpe{b}3>r3PZrp>7~*ve&3ct1PaGr|?Y z-({EPB{0LgERJo9SWg^K_QoEk&AzUliQMgCn?Uwo_I%axQ_^=*ZFKvr9pTlMtjrPi z6L+P396vHg%1MKJ2jJljkwhn($x@oO8M_CUuv^^EIScsSxl-K2y#t_+iXa9WqTqJP zdOU%h=Kg?__6dPI0La^BR2mhNYkVT5MfXa3`H-gL_Ql?00ij zb*nMpJ^=Ezc_j7s#8i_<^^a%{o74|;7W3P=$h_t3Nin|T-V5kVRBJaGUR3T$J^+2E z0eQl6b`vk`px@0YYUkq{y%*3?b}zu%a4+ERx)<=j#Q8R~wE;N)&n7g#n(ny~_Pn8% zVA}acj;p#3gUPS($KsHz7Je{}*c1MzaKyUti*Up$xSw&vXwDP@-9eb$SJ?oLSZCie zIAR-^O*mqS&Q>9yr3Oa(-_K~@Dt(IB-5ur8yzr8BjUZK@biI3%F9JG0hFD7Z7#y*m z1IKX0ehjQC!ch8Mz*vkSwkxm}N9^?gfs?fT*}!%jv0j16IG2jr2MC;4Qc?D7jo3{S z`$Ak5f~F7=g>WatG9ge2QAh|eLi`YdLnzYzdcO-+C76t055iyzBPk4%Fa|;g3%w_F zjnHnXQ4Pd?1F?S#68k$1R}=fYh2L(1*#Aw3N$g*Neq&`kS9HM=`>QjS7-nt%S7Hb> zFDRvwuO0fY68y4;O}ToSyP}IPg-D-&MSXqEJ8SmGu3ulx^8vIzva#Q?{8R2(f2hw8 zA)sr8FMTCtK#2(ctZ zYW*m%y0{O^hY&^fu9gI-l49S~fW2#|8wH5?l)yVBFECpIOm--7zwDW^ckZrz2uw;JDc_pdVCWe;4?B}5mEVJVl9gCafXGL* zd`-DEQ{$c38SfPNdEEP~v;z##_lOox@Jwn@ydBz+Mdb7B6S*m@l!XkS?vYacZTk!p zVz*;!F*r7J;J|*u5fo0nqix8O(RoF5_>;DCK1G4frHncIxnxdpf_+U+rt>nZXD_dAI|h>k)0s ziI!%Qsc*Q0I0!R2GHosB@A-H9J$*`gxu^}G>yaLbp}Lr-MX$gvabA{ZshOeZyY@Am%0)_-I2znWn`-6 zB%i=OsQ#1b2!2&>=0C4u#p?dO4suMlpWC$PlcI(jkRHGu{xXZ1+0{Y89>+( zM;b@1Fl{!Dh)<>V!_$Mz*0NkQ-^Z^Crmo#8S~h^NBiddhlFdhqOgIldfznnK~Wokup>QqkbJ;=GzvWKM&u*tWPd;3-J%u%S4Y|uMLc8vSTi-LBBMXH zx3**~{yzR`UKcI(Ab_YN<#X$9$FY037sW5h&W*$3K^mwBVxY-;$ZZ3r4qN+nyrN z%N=2*#ILw$`WUj*kQHBoJ^eK+cs}?NA*Id6MblT2TaCX*avnMGftY88;`X=NF>5AudK`&*HHe> zpx3T&4HC71sJhIC){xJco5hTSJys^a(sPvQQIb5L_MEU>&7M}Vq3T}r;IyS z=SR4Ry3V%5&^!J+Y;Ucw&*3(*E)hco5p|jU9J6gV-eri6Uqbx@UMtATEG_(zyUfpG zcNR+40HW%$k`u@wrWXyj#|)*5h8_4CAgrkAu!lPj#Fuq`}_-o{_%d-@i+r5?mZ)gv>f#XO~q zf?v>OeV}D7^ZkPt;A`82i>jX{yJ>xKZLuvpCU*#TiM>mF9RpEynKk%r3S*A`vqXjM zGwgU*VSk_7!B?>r_UFWL0@KpVv~lEG(`G|P)csT&IOfU9Tr6zC@8zem5so#YHV|Ex z_4^82ON$}ag1u(Va!ut~R!UKTi>!Ab|1wnRoRME<#9_C|;CY$f!LRkLa!Eaii>&{Z zu{vpP!UA|El=Zf&stpnJ#i>}*Ze7Rdrj#n}9kn^7A`+NCkdlhr1>BGt+Zg6d;$sVIkHCgI0Gu5;Ls*-Y zXPO=T7&%ivZ$|^s1Sfq`h7HM*>fNm+_japMiy} z6)D-vah^-!=d;ZUVhaawihRj>0NfpU<|f2%Dfh&lF|SQZfv(LVWqxoa@d<2f;Xzi? z24L?<92`gW(RWubj31eLC%i(CMZml4A8>~`b`%6Uolo>G#qo*e0+hv8lH@B8m)$=Dl4t!Z+456MR3XS81TP*@JOW27rDQse*!beN zal}%KFXD)W6=#N^dypn9FA82%xIQ7BRx|@gY_5Mhj@VW%Dg>F2JljccIF8s`&ZQxg z-YQJ`t@0d5?}oXF5WRb=JZ{5t{QIwIASSRQFta9<+%$17#7iL<3Xx6-V?vA)0+0}0 zgwP?x1;ObBj~3kZdW5}To7a;G^>?XJ4a9u|aeoUE_xsbXChiXjzug3Jf6;s?s&QL zdo?>!SJ#J7_QyN^(m4X}`DzCWpzM*Lo>8I;%{4n@@?wVe(ov%mJj6luoOMWum`G*)_iYthWW10HjTMGsQzYyPc)`L0lz z^pP#hGr1kg=W#LR1xzUL9uZF~*O$HGJs&vO73-OI23{@e9;v+dzqEc5eFiDx33G+ThsuM?ns%O4tH9cK!^5-w9I5K4r^TV%4z zoIzskAjK{#ae`b^v-rTO-F{evn?QP9R(p!g8ISwyX@xVy+HtA%-9$h$H0mgvQLTPt z!&02f83nyc%%%oX>#|a7iCE1H)$t^-9Wwba*9xZ8BV}I&X?0mCJ@J_4rIg5puE53+7_4)dE23$PA=} za0^6ILR|qc9g#l+-N!>DE9|w;48Z7!{KMGuaX<0i2mqiXadi@z2=zB2JIEO(##I13 zM@k$Z{|WgvBFnfU#M%MS94T=p*&F-Wd$=uP?EqMg%u;viV~KJI9Yv&PdGDhaijf3BcJ%?RnH0C_gnKtH_-q)($|~ zNQpe#An2wiB72uzTK@wOHd3OS?K}jgA+mwOcg1H1plf8T`kGdf-P6H{DVtwYnI$f@ zr~v@35e*%qMrU@l;%a!y*W1I0wgW)cNUJv`l)iQC4&rm(I4@TSr zt#XhRH`V>Dr?qF%owXJULe(-Y>!^*!+moZAkw&ysrWCDW#2E$-EH1Rs&F z$gkCg3sqMsTM#L+H1;^zgHh@kuD6(9AAqWnexE}9YTBsj2*pA~UdRXD)h$7(06>kr zAHJJvp^jPCXKXU!Uy!+*j&tM&zi@P$Q@Z010Mv-KQ}Nq~lFTjUCk)>}kpL;3E*Xm-4m)&@|E`n&e%X6Ae#8^A#dr;T!Ln#eFEg4Fa$<@_g^49V0U`A~J{Se}gs2 zY;U$lQQ!=IQ6}3dt;GRY8qwA^t_SHMO3h=9ze14?Df2Y@oO83s6x;)lzE=SN(nycA zN;GDkFb;)%N)}sM1T&8>;-vR!0E|X3?u{w;wEs&rD)AK6IKA39SzivVzL1jl^O1#$ zY#o3@>I$eXpM$wQxqt96Q?b>6l`Nnl)6z^+A4#kGaF#(8-!-vC$s-Eiei z^l;tahajH+(|^B-rZp73h3)RYcW{Cvul{Q41bOG`7q|@v<+we-D8q#ruQ4b$v>HIe#LA1^;gi*sa>yo93K_@F~PbA@B)N zO$b>+JQ9M95J`kEA;bW|!3FOP#V8BE3x+IMsbGSFeF??`$zSVlf=xDX&JCRNEyy{4 zM_$c29~FMP3C_7Gfyp^v!2##j?15apG`d2pY0Y87b;Ta6IjOu_3^`E4gsUfpfUB=~ zvQ)e$>szynb@h{7QQOZUK;|pNLNx)wm=#_A?EDR0BmTlsD8gJ2{Gp*%8!(7D|@#Di}~GJ78ZEEq*I9H3sURM zvaGEhVu%G2^1KQDdjr`e zU*U)@;E$Fi6+c%aib*~rsy-&V7&Xz+9fT<|#Q7~E-!E?f6Gi{4dBlIT=?$s6R@nTV zB45iy)6$6yKtm(GIFKxa_BavQk@hj3n!Qa2Ktv-gFCt6z6SYYRxINX&ahkc^-PBR5 zrAcUh1kuu(q_m{rbR4dhna-wOook|~1t6snE#bt8OM80AIE}^c{X|{+q;SBy8wb3 zInQXKA*=>nh4~@VOt?L=6PHfGeBqtER{ErUrr0KcrbgN{NpmhwYCNj)rc0OD$lwowKKMs;Xa>t6O$?W4M2+?cN& z3h`se_}yOEkqMr@+G|H0m$)t@2kPI_4S}s#_Ecfc7Z}1NB}&C5u03R-{cAL(7FVUmu9Fh9PC9P>g6JmYZWr*xSZ0$?$Or{O9 zN{nLwX^qUXO6n`vXJlTf%n1{{5}>V-XF5Q%Fn^|;f$c99b~p2~dt5=SzX0SlqU9gt zo0b&)y%D(aD^PfEu%8syr?3$%Y2>4ZPjw%_y(P1fyPP|jcb(ayB?B}zqGboE(~!xX zAcho?U*Zb$jw@^?jygbPBcM6D}zFBkyf{bES0bAh|88eG_>Yijqj}mG*O@ z&nrW(kC77J5rxpI6_MRp$cn5TF1<~W5l~V-r1t&Jr^VWF>Fpsr`o$g99dj)d!TVKHs|<>cZm4x0J)8L zRtKu7E-CpRP?AtYp6Y%#J;WoCZ2-lMlu9EL^tthepiw~NtMV7nJ=_vw2GHC{siUMJ zrLX!o?74eq;rFz{B@t2p)s1LL3Erk1pgxAp0%kj7nONscadrjhZX}9F8C1mQCO-X7 z^&WV>sJGql4}y&MOuCILBEM2x`vRml(xyk$=1i|;4R#bS@kZ0VJkl*Tfc8eTB$hC8@fp}wa92)e`nkH>h5-GIXqiS%)y1ldv1vR- z!6=$=Nnc0;C~!o}J>)Bf%9M@iKy*Rm*A%XxUCtQM)&LqDv9&e&*+di5BzH2I+MgsMGsUkzz{h22VL zyCl98mlFTU@EMU{UXl5XY7-pWWD(~_y29DpV{lX#NH;=3N?g_xv$bC0C+h>)Gr}88 z5BJ3&rCYle#-+pOn2r!8>p19U71DFtmdoGI^@9yW8 z);b^!Uf-7RmShWcv9+u1nbhIX3LQDqIcJ~fXhBc5hqIkB2Hx zI}goxNSUrqDt`+7p|giuy1@?+;7Gr}P4qDwOMeQwsf);m*_ReJ@`ztoy;1TzLq>iR z4dnNK7rFhPMvkwi|GyVqy_#A0|E{gl;ML_BzPe2fB0aASQBIoPf7FwK>Hp@g3o@J6 zNgCo|+^)8Os?{{wqA@=X+ zhW~%+Kt`fz`SO~L)a$rjRbW?5ri|-|#g&h$NxOC(v7-S!i{YW)1eS0ZV*3Lx@EBqr z1y=hp#AXNBA`G#~fuC^1N&*XuF=`7BJc$$8rkCAS6N_$|pcVqI5KViaYZ`b;_U{!+22=*WhwlI>yFbQKIbgM<+~z`U=Qb(FKzR{uc!Q?0oI`bYrRoaQF;P zje_8vHA&~Lo-3|W-K}P4_-a7}1_|Bf8xy-6q8V4zrmET7yZYI#!Jz{*HL@9Vd%213 z<1Z-b?hCa_Ld3TR=6PfIVIHCgrZx<&yV{jgzePBY#n6Ax2h$0KIXUm+mbNi&}17B^dPy{#o9Kt^a zz8?HPSDP1-Gh#f^!@#Kv+VezvOOu!hF?*qGj!4OVdG~XZ{Liyh`Lmc^d|z5(3L9Z+ zj>^(%2dFnCoVI;nxj*hnZ8Efbk7!op-^sn>f1i!WkMh znD9Gw*78DJGwnCnnm@EpRaUmwgvq?Yx(` ztxkog8KAt8aP^XHym3OpIBHq!N7#GkYu(fN&AxV?Pq}fTHh}gm zjg-8bEHtl=oMGJ`GYvYQM#@w(mvY1Lt+NTcJy9u{>hw74kHg?n-nX{jD_zA9eZbznze;X~G@d7kBqB(-P zPct*wqI!l}VwjMWuG3+AgEB|O75gu-%A5{NW50){x(lnX;SPWlM>Kn~vh)|#%@a0L zF=jSNs~L+O0TlL!xha0(L*_k$k-nY;0O)Z<^XjZ@!#63PCwxR%%ugg0X+Of&+|=NSRnB!Jp#0n@*@}8$h2U(PV@5Io0eq;R!?B*g>TA-W2aRG4=rD zIbxHk!CMYgvMc6Ma)#m6q{Eu~AgTl@Np;T)+T<2?WDdcY{8hA+Ee)X3k@7tGr12qD z^XR9@4=uYQx2d*c`yrJ-i<|GC8T^d=Wac~{MN3};>43S`YnIi*d@y-xtcrRdy+e3~ zYCg8+w8E<3T5lw~rf@d%PrlG2@mtZDnqQ|LHLp|_#U3FSTJs`vHEGzro#$-Jzu+g> zK~9EwnD@CQq7NY25gYuL`puLY`#ROTLke^c04dYPMf2_0@h%si<*M}(fNV!f9wGy# z{OBFzq;`iBLF=tQ6bbL|ev@DA`^nvemu|NJggc_GH&tpbiT4u!i1`Y8J#frp^!M}K zM{nZBiECGYa7VO#M2t7T67S0JMAFz1pe1v+e~NbsO>t7&0MZ@tX*#1vvMvhj!}_}+ z&Gg=J%uF!?0F*o8heN3Ewa1c-v2Ce1^KS_$DdE`Opv>vP-RJ+B-J9E-Y3{$|kvKMh zfJZbR$$HgrRQY@21Ge62w<*tRH)Cs76uihi;@`+t+GCk&zMV%ROO%*?Xtr%Ly&V%5 zJ(C)det-O{nu`#xjXbl#@g-N{AI0u0+(|#fhr1=tEg8}*v+_;Uc;mVR(snfAQ|LP? zh{csVJMbm!1ZQ7f`qB?T(jz60l8+jXM3hrpj1FQFkuob>LwObZgDZ)b-mL(#9w}LF z3p4ZaxkOyTD(HR=QpV;v&7bvc^Bm?Ti!(7m*&`)Qq{E!2bY~_Q0CkV}p)zBw>M87*coU=WzAySAK;9#k)!DXP_hrHls%qOF)64N5)q7ATY@}pl zUSF=ezcoj7?-5+rti+-5k@6W-t}!yEBr(x;XWGt~Sk-YjuGLd<5itb|Ij#TW;I2y~ z{UN`oj${Q0ePj#=QC}OYlbd7>j=d9mR$5wkgqzRC7S7ckQK(~5^l2% zj2;vZMpT)1z0j^L%e z9DvwIN`6Eb%+r%MXXLbh9NQc8^j?0lZ?^kMuBkW&0^~m84Fj#mV$E>JUGL$}*pgdp7w+=)MtBQjz;OcbUJ$-j$Q%*}?C0E3#|XE&$1o z^rSs2+&EqNuI*6Feb{d=VfOXhKGtQQ$FC4=5+M2!ZC$cfn@+~xVYA0oU`Oaxg&p`= zY@DN2`F%`$0Bz@Qg08H6VvB!>9_?O9@uob2~)7 zG;gK9mA@jdCNp7)|I4uvH@C|c-N7X6(?LYb`a(@$54TgT(E=s?cTs&b7do>9CO;rr z;#_?KMZP71zhO!L%T{hU)mnv{5#(&L*fY5r#u?+l68;iP9qMvcyD!Cv`w9&*h7S4P z`7>*u1wqOFjO+w;B(VqXt_9K3-_anj+9$5;Sh8PYsjb#W6R~q4k!|U2D|jx3=tr)p zkQ%RAmAV$k*CX_esRoc&LSBg&S&m zzfoe}Dk1jCI%5B?BKAeL`KJ5-hn54c9p69n`u^*9`ML|PE0TVfgZF|_Q|GcAb5gJR zf5y(J?>EnN$Q<=*e%fF#$V_5**1kdjfd7vd4~4L=RB?xDKITdk2Ek|!7Sj;1Ud0bX z#Eus=k3j?>N1zz`O-f`gN!R(p%Ti za)_8MbPOW4EVvmWHX-l{L~Oi&HAJk?Hw_{-(Ays(){wP9#4L^`F~t6R-a@FmQZ(x# z3B^zns7_Be4f^xRmCu}fTI6#cpV0Vh#it@Z&+tiv&k%h0^RdkbE+3VA$no*S2MZqw zyqohr%sVLWeOH72uk|x=Q2n@9%)<3$va%BH5B^@IFZXwp`@8ywrNR#f@DhXhKZfyt z4CnqBGlg5Bt|B$MR%$FpYFw?jsu$y*`Z4~wrlJNMcv`Ps{rU|XHfq$kag!#^n#IL6ZQ8u~_5S>tie&Zv zoPT*m1IjjW^WiRgqh`vg{icj}i!y%J%lJthQ0+(k9++Epn)^TA0e|6t^?9!=LH{rL zpWOuLUoQs;`Xdi+{%n#x7UKVxDh1UUm-PUO#d`1IMuu>ydn~2MgYm6tl@v(ueE0h` zHP?p${E??YKNOc0pAIdHv4$g}y5d{H#?V}d=!eCQaA7DG)Q|M)DxMHN6x;^s^;psA z@UlQ9M09OYZluJ&0wU@u8XI}qHy!$abGPM$d?NLdo#(z?{L6MRd(p`9{j7&#``OXr=fO{D^dW!2`^I>n@uf z&VI|F&KL@QWZkylJX1o8<;pOiKH_T`lp#|k{{;MyUsZU3Ia-T|VW50O3q=mgWYXo} zN7u_8B+Fsq*9PzrEo;a}w2!B?0*~dmb1eI;>n-89u@S%4T>W(pM9ToOujZu;5_d*}LNQPbP>+m-AqJ|}Dh}X)Jw#qkpJu)G zu!mpE$2c$`J<@8iI^XiX) z3)3SOTuaQ>Cu!_p&o0gD%)9^r=MgQ($%t-{vK;K$^4xPYQTw3=3?z?enMdBPKc<8q zW65p#3BA#HNl3G5mASsz316pno{Ks(a1 ze%fAL2aBR}fw>TeTq12U*c`5?dbw{U{kf2{F>pI#!Jml#Xo{4J!1Gj|+nQNNSM;i} zAO>VdwA@ELXdIG$8+gTDWE;kP8U_HZBU(n1t&D@yx`E?oqkRk0$|D~BV*qtT%TuJ! z&{6dySj!^kZf1{5EZvWR(Ge{{Ql=c5z8Rc7SG$bt_fDsG<`U~>-t?`ftAzZ9fzA2Km3i@gvJSMxXSEubW_Cb3{vDN@n;d{Sw%-D{a}#=Ul1Gnz6`nJ1fb4tSNO; zJEr|3;IU8+H#6TQzCN1<)WVYI6}!^{;IXW5E@Kur#n0Yg;Bmxat;iW_S@KeFl&*Ju z#Mm4U3sH)J#t|(Sv`ehJh(kJP{EXlVvcK&SOMYTtam1qw)As9UTE-{+Y^K2;tzqxt zinD*{i_nQe{9s^lL>rs&oN)xPIX=;RJ6M~HTjeG&i+yj=^@R9Q0llG!nyF6D*ae=a z^4taV1dmrJ&8h}!SxlbO#ie)Z0-dKy+sky0J6}NcFhDrs4Fx2v9GgafgUi3mi)VnXY+UF$Ww!qns3@b(RQTfC0dfvAm{jPy9-jf<5~%Q|Vsl7GHzFfZvF( zX)@l^c&tUqL#++)#a|_NR}0vajFxWYU+x(sSPlbzBidS}K4yG{_*dsDQ#Y_@4`x4M z&eMl|z3E26+KPd|5evRSzM|iv*$bX0S)P&p!CfvCQpNz^h?acn6W#5)onS4CY}4tz zE)jXffZm7}D-|$2rtJgv?2Y!fxOH1xe=vYIqNR<&LB3AC2i}d0=gPLnxlRjFiUGS3 zFBl|GFocL_(<+FDV4pk5?cw`-LjFXz_|hZ>>_)ULNg9@=BR@_1)ifXMbCv8wW)W@j zxAiO%q80;rBNk-H&Dtia`rvHZGxww?k^6jA%{~DGcOzP+Qkj{~jC`=q^|TS(haAd< zdBQ;5h?bF=iPQw@OFU>R*}c?bMmfu!LxepK2IfZQr;mJ(QA@s>_#E*A-tQzCXoOeA z)SG{)%Lcr!;Ti?~ElD z?3p{lbJ8W^u~4u($25&{Qjh4NYwK*f%ARYt3HRPuuv=pD1??tezD?SVEy&Nn&*6@G z-=dwawf^2t@l&Q)z+0kiNr#T+)5MaLWb+f?d3x6S5k1lKu)o;VTv(T&z_;D}1=T1! z8~5TG5*Z4voO`*=CgcVz@GTirqYeosefD_c9C9oEsf?tJ+1H;d=)S|h(Jt4ouQgrT^BFoOvR#CE>y6KuMeU!2H7P1b0(sLF;(o*seQ`Ia zFTYG*|E79EIP))I7r)LDOC`dYf7DIZV{vuyp(_V~2=XQK&ugykYRL7;dK~W#5*r5- zJ6QeP2MV`$Em;~o9<5;JL?$AavV7A>_a@ef@kvQ7Nr_nff+yQIZHZ4+?sQ9mUd zVl>2AMsmQ?r2Qn_`|@UZ4H9{o^KpMWu681yM#eax;CfVXmwto14S1H{aenDP>J{tJ zVZn9D1MSx|Mnio~x71W}Vs$o*iH}LzOmry%(}SOQtK2QwnlWJkc1cT9#;b-ln)V4V zSU&`7``A62(>BN}qeX2{ko|6j+t8vz1s*S#%u@^cNZ=OlHv;U91=%I7?$?esZcn@h zq$ZJukau4Ix)0bFTH@;S&L9ETArl!W}w`zLnaZ?6jW5)oDbI z=H7Ci^Y;(>d@7e(@F`3scBJJ*O>09~^;jpf`2tv5Bey-!KPdNk+@dxpu--}co4#Z6 zQv6}1WS&^hn}PjYZmEezEU+$VwcZeCd|rMCtYs6e4EFZEENH=k>Jly4hHjaa>D$3E zzl6yS_F_L2v|s>rWWS$@^JzpQ&I6p=t#e?EbvGWwNGkvO4SNv69wqnBq zUsO2A#{lR^?=QDmhre=3?@C`!VO__7=k*+yqp$J!#Aaj^SDP4-ZpT%9r(1DrHX>WWHW93Y z0n3pV=j0{e*`zhB2y0k83U4D5|~!fnYB@-ywTjkGCAXiUh#+4v5wmaV7(19>ABYLOBFXJdoUECA3LxEtxcSUwV*jhA`f6Z{?n zb0fXiOREp|%;{`L!S+yiyF&h^vVT%1oc|#EX>V`4{}5NTyT*sG@b={uy~US?PjqL} zvyx_z8^Cw99r7RdH>&=E)Jef&ScqGq?YKc_ux5*# zF<~KYiMB6{=d@|b)`T!ofvaMTXp`ICDw|9cQp~`LwJmKpt z?2xfAw`87HOX=-dSS6ZbaLptTavQ_8(bxYArZm9cfd~vx@tU{+av|}a zHZAQ#@>az$xFz#;`_+D`;Ibt#fH$ITInhHKl$ViK{fk*pOKKg?z-FJ#aoLg>z#Gxl zz|1O@$sbyN&^9tcwXJsz4;XwCoR=*Lt@NEnUeY9_1;FcZxvf15a^ZRIKp|4A70N4*Q7vm08J4aC3ynSK9vN?;zIOzfpLbl)&5B zb?|m9xLTwW|MuVCU}f!_;8bgeeuJw2*W2HOY3rJT=;6QHO!Hdoui>SxyW;lWedX7< z-~rLAl}$x%r!R)vL$Jd9@S6~^)8StsVoW$5!iiigz8xaAyZ9-H*!bcqh}fl~ix9D8 zMV1(}31Z$?LgOG}or0qwVjuh3L&Sb8x&RR?EIJcI?AmxSGROm=wlOFcM2rr}A!18| zmttHN(%X>0UWnM|FpxdnzX;M>OEwG<``L92;zQk>qhp9&djjet{(1uZrr~Hlx$>El zPm6rc;}aU6t@u>L=NUeU@EL*+e?GSPz~!To2ch|(;vs( zMJppfl&r_^u--1f#9~$0{)1BBwf&i5vCD)b*Tz%XHIC=w>g8W`yNf(iIT7w0J{fc0 zgNQo9Yr@8&?_;d@i0B95W|2FKbTM`}h$tQI7&#qk1`%x$4n;Qv1%X`o%T}=bVE|G zwJ(r)+3qZ5?{Qr(I{h%YMQKo+1U~@Y<%+Vio%zB65*D47%u5sU4dtzh;oxJceeUPj z2@Z#FfP_V+C0fQ3FDsKZ3vh4QryKa>8v}4bwA|%w z#nt?tEIcxYqS79X%sj(1*96t_jQ2%m33IWl2SuhW+ILLPn2M4}*86LE9W8=y7I4>BK8qx9rH6&}fd>~j$Bl{d?XYIO=L8=igbEub%Zz~#rwX}6E5iZnU~RSWBAgICK3qy*H8y-59kV9F=Bw(hbz~zNlM9D6Ael)Fa6ihuPa`23FHs z(yFQ97fSP9f|qGZ{T>DSzW_>v#^R`Fl|Ijg*M%?$$SUcllQPMaI08b!D1L(8_{w>*N&81 zE`hZ)^NwIvGNXl641;YWT2^rPVq282faj$&??rm0M||lIgKr~R`cXr*A=PoPk5$?> z&kAl+8`1I~4s)wi_QJogEXjL(&F-154Z{5k2IWSyj3pN-O{$l`W8rIdPjco6 zvyZ{K5iOr-d_+9;BOdORjHLlv>E7T@5Hbt~>qfK`sb*Q;vZjFXrM_%D?XUgH69(@_ zv{?0Ka;ar8ct7?udxY-6R0um*DCVuqKB8ZxYXSD;p1E?my$6JOOYHnq_7LNK9Rv2U zp0@kAYUAR542yS5v~yeXNvyfL=h45~31|bxY=@4YgXg zG2i7Ho8Ty6^nCAv}~tZXZFq*3(hcnO>R|f9e60lO=Zrd%BW{EptCRMYI2v< z)`5p&+|7)g$!)|b9aPKH+}*y%E!KF3V%$?R_mab`F7WKPU|Y~_x!TqIRgH0AFm5D| z`KifVR1Ue0409tjxM!ILWq(V32e#OY+&DJCYH&+@Y`SqH`7!x4IP>Q)U0lU3@x>|( zqK#N=Q`Smy3b6t_FK;rro*Yl9kYO-rHlpQu^N{TP?5W_jGMB5leGFD}TVk=Q%%fC) z$^w3(c!Xx0Torp^Z;3&%k+FQ9SxWv)JP)3idzgvtzP0NM6u~x;c6mR`D13cw$=F@C z9A{Hnd_fzEVDBRzG;Xyl1?RCG&RTELn}wVVMX)E4y;Y0Nd%#hdZ(C!xi{I_JQ3RWk zAlO~%5bVDlv5rxH`ybA7UP-0YT`-6){=50~x@iJUQ=OUqF=hf_hH0~ zO*7$q=H$~NpY!;H#%C)&74dn7Pa=GV;KQGfZ9Z_X#dz~x%DW)%U%c~NOa70)=W`pE z;mX4GWwNpo?hpQmt}pjD2UFJkuvGZr0A6A+|Hm-?kKx=OW2Veyg{Fwq=vt|<7^!i! zQnN5pb8Dp*ic$m07IXi3RoWAPYUB9ttNrfk*&m>&u3$EAx*KQ04|=a;!jJGjy9p+| z0Sjcpks@8O$maiAAq1k9^+>6H9(Lsx=MQ4)ZdZ?mKZwPm%8`27vK|+^|5*K?{~Bs9 zc0Uh+*#RUtvL4Tjq(XLyL}Um=?4Ahd%P?IcD=ls5gww;t(Zj)5 z)vgiI%T};tyB#gt98Aos+vS(e~Zl(GZ2SaQlEiMrE;tR1|e(v3{ z%Dq)fO*d9Y=BQ2&W95|i@k=^9IU$}M*jg5HZWN_pI2yCS1gWxCv6s$&i4uGRb z%qbYs8tM5qaL;1V8w_2I%#4zn2=?&|j^V8F5e!w0^gfwTf}{VqbG^_zhNeb(A4>EE zU%S!0Q|KK-Q6mxevU;bv2RJ?-VLQ;<1PvI18oB;+nq)I?&lvA#AhN%398HbwG2}GT zVu$8yaPRv#YPzO(3^9#(qD)UmxY1C-jaXmyv59M5f{x zDMWU?>vf@b46%%OuT}kxWdL}^n80rHtQ0h0Xl3M@25Kgmp_$;f+7Aa{C}pJg&AK6A zUq8-H5Uw3VCnFyD40y!=5Xs1OH=}L??=mWFhlF($Ln0%+|40l2`^+HwC82jM(BDJk z%IolVm0)uWd5n1E4CP+S7O+SD%1n2+7Bpa}W5hZwl@EeFay&~2*1^!mNbgH@Z-71W zLH4}RJBBhwdOt`#f#b{&*`B!(q4!MS%Y3TP|;yo*t z9KO6iYw?hN5&43tq4gGRLtGpq<)#xDm$NZF!LD^w+*&g)P=c7ydx+!ad%-;H+st5h zzNuv^NE@Ca)_R)TS2#qU!xVi+EHTOOII+!|4d(m%G7r02yTtkz zP?Gq7QAx0t55bn3!#w1Px{nF;EtVvfc=lIW%c!8aExA;ihu0)&)0-~0b>cMHoE5!l zJp0zz*&eZ+CUX9TKk5v|D4#CLt0KFGmTx$#pHvgZMfAKY17{k zXPZW!cTRVUe0i_f+K_qLKxAkg<|erNE<~OijeV1t8*Y>^&Xy3yUF!(rzlt!fLlplp zh~kxJ#&whP51t&6!7j_LCzJK#9!Xz0e*lr2m|{Thbt3%40N7tuh=R}w`vQ+Z#5#v6 zAYvy2??J?zf#xx|0py-c7ASy-dHm%NF_&)@L`?4e1|s&2J60jVzlV6dGF0oXu7+Cz-)qSlF3jWIrMIS7> z3KY!$>?WY#mLVV%jDW6Nh1$bcW@$tWSWkL$w^)$zjr1ncu-CXYpjhl7`~m6ZNaE_# zrYqH6Ay`@cZTBk$|1jD!5cXHrUTg4Jd<^i#C-!7KjfKG1da) zLC!DHNbt+R6o{y{WM8m(C>9Bf^cr7c3LOc&1L?JC$tNLqpka(HCemxuk`YA*{9PcT zXQIc7^tPN>tT7_~YV>IFR`%HIp)UHg718eDE-{`-?x7@)mx?>y-fsbMfDVc6qQZ87F&3VqB?*jnH$XKjoXWiobbZH`LTMtn_9&uyr6?M z&oDyoO!$C&9)~LT_Y{C&EM(?L;rXmnU6orm-w95y*Mx~ zxW&8CEv~H?2ph5BT~>`@NBnd=Kq86OwsdmP=Jg9>!hqO_mOfUuVNU!8GjyNOl_?HR zX5SLDV1R7Ia$QY>3{kZ%WtF7_9IYg43yuy>U>4KjJYfKBWK65b*Hp3J$v7R9D>@`kvfcyBkZ-sM&;0+j{8_~9%(CUBI-_zkK@+0t0_+i)R zfIq1At#>^nXu|;B$UMD6`VE^prh?BP@NA}-sR#IJ#yHQ{Tn^6_#)1LR5zGCb^`Q0+ zjlT0IW;xh$AJQKOP6aC2=5BGGut2(GhCO5xjaAL2EGOrIb3|$00{?4)dj5($@mUuZ zOqXcm?p?HxYqutCp;X|NqujQ~zlHO`(>CrU|LUiNSU_E}7rjIk8Waie`=w^ia9}Ez z`D(O4!Sp=pd95Y>2e4Q4buSCF_lX}e!-DA&%Qdw=s~)3Sne?1_D%dN!({lo^1)6%D zE^(ePfO-SRWo>QukbbpY{a*4bWE&%?crNX(Buoq=EvY_F`tJ`Y{XKK%JNpFA+C_{U z1Fa)Z?d4rE^_C(Vc>PdHcBE@6{j&Z51TJ$wNG!YlZ}H~Rpns=V*<~5+d9jg z{5^uK`fJ8x92lS-x#m^bUhQki4yu**2=0|Jq>ZiMJAZ;d&UVr76|9N@+L4w4YJ~E& zgxiV3+BIOSW;ing%Y1X~5BX)nXYnv#J7U#mE%z&aR4t0nHE%TCr+iyghW8tZm*=?C z0(}Cv_$JuT+E4mq`J%64V0UCa$fs`6tV)^!-tko04*OGUt%-r$k@a8z;Z&BY_jYb( z8UoIl3!HoWXZf$c?0+AB65Y5wt@cf{%?G;93diZ z6n5_-f!({+!R~(*>@MQ4H{JhUJnuU=#_#_G*f&sZttBIb%*fQbDTJ`+RiIyvasVNls^Sy&!}EkaB-zW7p%%Rd{FTb!-oU!>%1fLUdp>5?_a$0Ksk0% zj=v?Ye@Gaz1_k?N{>Y2l=1f44+;~0-mi35La{9(b8fyrDpvfJGZP3&QIJP&VDq<>Wx*ml(@9 z@(ikRbWQkZ_y|O_FnTiFF_IZ$e}nYeB-$bJL^vKIx+~&~v315cxgwNYUF6QALD|l0_?Hh$7E0Geg0sD?BzjyJ$fSal~L>1kOg%i@AH5 ztLA1zv`gUOh_R?cwdjp7={?Ea2DjV}KIuq&%DqNl&7e&B0V>6i zpjZXA*m37r_8!+H;j{@;6dUoL(^OB5RT&R{=Df=_on7Rd0%6i6CudReplX2nd$5*z zo;TSE4u^2kiDl6xTK+}sRH-$4!Dso6>1}M5eV?EO%b-i1XxCHeEb01*rdN%6ye3JT z{#?oIx$GLQ7*bzB8DcXVKW>;QkW(9q{47w{@W*Dv*1CAS6ZYPGIMfw5C zpqEio46_yI!CLZd4>CHB$oD`Q^zGC}ZF_lpu*J^WUu1TS7tAKNR(Llp9;oF6 zwZr(VVktN}hdR$OdtBn@j$b& zU+K27^_@n+$FPjKB+~BDO(CAotY;xLVZ1j>+BEQvpxd$~^eOwR!kD0}`S#&&{8KJ$euO0==DXD`>&8A*7O5(^l}@rtIJ-e7XQ%HD*T>DnOdIk7CcM9VSaqVj<1D0nQRoQcdNr?{uV zGUO8POi>@Ue5e1Ilxf!D=SI?I4_A8p5dD;Uexdm3Dkw`%D?3^KW$h2Xi|Wh9(|&Hn zso8a4S#pWxMjG}LKU&@cd-P;>Gxx61Y9SXu8FEGTUAi5*e0&~|Tou))JDuwh-!{TB zS}BXquNeWCciBa|I)W(X7OiN_7R??CRR;#jSx*pncP3CoU4 zEVn3g6}i&d34G^~!v^UfEk1+7GUF00qe-PsrWpv{FK zMf}`IL7; z5AieD3-}`DiEiRqPT!CWYa^5zDPNbtE4nrhw;X4pYxl>0U470u1wwSk7U}&+cX}qH;6F8L?SM zV!3p#i23_2RbgAFXt`T~mRpdymfA@!&|)=7qV)*PI9E8ul>x(gBbGCpejsikukqHQ zL`y!C=WgH@pA%rXZshFeZt9MtS!QFG=gcprV8(;A;ft8dxF-^qOWI@jZlvWDYHsFU zi-MYO{sxy9kT#T~oLgBZIs3Xd3(r8Xe7D3RyNT{PyQLvGt9tX>IzD#`?+f23*WFdZ zb$74hx^J4h9)At)`euLs|0z8Ecf;ZTyO8gdxKiC%{}*U;0KB~-{1c?e@A2Y!5Gwnr z@D7OBZ^aE`P^$=^yQ0_u5t~pv6(XiCejOsVvgikhn5`%!22FwtArdNshz$z#g@|?b z$sl5n7afI&oeX^o5t9`eV<17uNT-D^LV7z9Yys)*=fIDU-d^{A01?aZFNcWT?VAP> zTT2%}#BR5L1#zUKd3|Gu{gEZUN|tuiZXE}2yeisM*T>B=-ZxEf^BI;;pL}lQ6Ca<| z_>{%xBR<*inS@Uhd=B6PoR3~UH2JvWgNlzBJ{)*o=N*~%Qr-o5|KgoTB(tG^^S4ZO z1ozd*ZSiNkg{};?I)eKzC%C^Fa3#ULkN??C5Zq1g_$LtD`(Vs9u*dL1aOw2}E>dabDzb@K?ySjw~J<`6BQgM6`ABYmt5ak0GKj7X2LgmoFBUjSS0D zloY+wHyP6FM%os=Gc*Vy8gTB8_yeIBqR5lCt|jZj^YZS9H1VCS-c{WQ!Cg-LXtp#=9-%9EL(dTdY3_CAiyUH`5JLXMweB=LqiiT@wVt0ZMS^Q1!UlI!}Sm zO?J5|IdW^Fa30(k_&lB>TPV*fH25Z22(1` z3zpoLoUr`fp^IXWNtxs@8}X-1k~aULH+lQA|KS+!4m58AIKllP5z;@RIRf_R(!5OO z1zN241Fa&ylBzqvg4AH$ZTArCRC7tCoPrBDeM62yXH06iRUS%4RjQl=p$h zl4YOB7~PGoli+Saja1LnEC-LJ8AoudTrwfkKndpabE&(EBe(|&TCfDSBnRB7tun`3f5DxQAvs_=n@GP~%kM+U?bo#<&4)}q z!4|7z&v1;}PJuzhlG~Da&dYc}+tSiJ^-hZxpKT;Y2dgSWZ%Nr zJtMA@;5JZ?=p(9o!CHDdo3dW_^%C4wq+W4r+6u76R&xY*g6pIZH&B8*LcXKkk=!4= z3*6{7vc0);RPr|H@elZk`X-%Eo~fg{+3p2@ZI z0wuS<(oV7rxDIlAJy%)(U3$BaHL>KjBnDP0vJG}3EA@NJ9B|xBWPV_SOgXozy)9%M z70}ln%&xEPr??;N1@hbl^iq%b<^z=AzC^|8ZdWt_lc;gFZ|T`?kqw0s+-J#q6sq)k z;JB%>x8}0i+3O^@my?yMRT=PitVTJTF^NubZ-XVcB_92-E}IxjI&d{Ok$u`>ChE?s zrI?`P_K#}4Rblzw2)!fh#%gITEfRECa$Dlj=hHI`^NCM8e`%=%d-PAtMD}y~b>BI< zLRhJx1ouJe5knL0tza+cnR_osaLWY(6-saq%pPO7UE3L~<+N=*z1LMPP-akqJCv<5 z-l=&Stfj4E9bE+@xFx=Jm}7UxP*pmp7c5~Wy5d|F0!IlYw>7%^h?Nv_Fw+FFXg`;fFrWBajB(C2+a=@r7AA(Y@=O}5ib)ttn8wZzgD zd1iXDTf8TL65PK~!;B*|@ahhyIfDBEm-t;nEWs_gwq}_*l#)sXdx4r6#l4pzzQqA0 zw-@LR6Ymq-z|WwbW)`|B7`ZK((b1_{nJ*J+wVcQTd%;{bj@8g6|1TafS3?Qz4pfS< zvu-@t3wq`zdpfzx1*RHHa7*TAsi`2lE0qq;)wAhD`}{(=;L%WWTW_36{zS;YV@YS6 zt}{-mpyoaYOKwZ%XF!LErgr3T)kxw|@Y6escQKRW3Hvv~2yThxo-)6mJ&x)R-W@9F zINN5MO|Tr4+TW+;C$i3Uu z*Ke-fQDF#fWLMFS%u%J8cZ2tBl^ng@l$HrA1BTp22>Z_ZQnFL#pw4|Qa{NjsvBNk1 z9OojN-?xqy-}c0k+me=fX)_7ACO7#jb2t31SJI|kU`as-`%gZ~BkX-Rf_qHn{{wh< BYbgK# diff --git a/tests/data/trimouse_meta.pickle b/tests/data/trimouse_meta.pickle index c62dc6b89fa0614a08f02d55d60af43e367e3d10..5673195aa4639800e074154265ef2fc915439568 100644 GIT binary patch delta 500 zcmeB@*e>GHz%o^bivbL3r}VI-B$gyjshy(H!xo&JUzA!jrAN!f$2qK4gIMu5(&&a4aqckloC)FU{c%r8!r@Mm!#H5KOeKPI(xv43ciTWTD^|Mlo zi!1e$QuC5CaubWPCkrx)@);TG8kp%C8R?g#C6=a7&SO+&1)Dj!o>g@7YQ_tUj2)Ys zm<<@AqT5+aWcnyDQ(4d000^e^@aAUbCFkd*Wu^d~lRCxSzNPA+`#O>89`0O_=i-Y? z64O(sbWT3Vsw=>oSDG82nUb85n3tEDGsS!J8`c;m84Ci=u!4DQN)JatVp@DsYH`Vw z*eM#`>fRdO3f}VGn%;cgHs0di_TG-(%-(w5iryyPyx#iWmZ_6>aKwsnv`)#G+ryet zQdy8XW%86Brc8?|ogI^PIpvs~9VQ2GI+#u=nUd7QT>>=MGcP4GIkk97#+;1#-V8vE d3)`mz0j*;6W&(0nb~+1iK;ndfb8;y6Rsgmfq*VX_ delta 1046 zcmd7QNpI6Y6bEoS#E{T51V|xlEjuZxadz5rsb~(3OgOMyxLA%osjbF#G#(3qRHZ^f zD3yg&dAPEOBgas2;PY_gGk}x)rJlJlm*1N=nm11~^CQ1sXzwLI{FxJ`W0!|XQ)fEg z<;C#$Q^TW#^03r;w5d_zyM$?tvepUu% z#UZAxE0bD^6DUVpW z%U$9cmZQ_1c-f+w&!}yZy4EwaL8YpgeM5FUlk|PXW`yc2%1JqC+T7R^e~Bl;wrko3@uN}daiRE@ zTc1M7WUmH Date: Tue, 6 Jul 2021 00:35:48 +0200 Subject: [PATCH 21/58] Dump mAP and edge separability scores upon model evaluation --- .../core/evaluate_multianimal.py | 32 ++++++++++++------- .../lib/crossvalutils.py | 13 ++++++-- 2 files changed, 31 insertions(+), 14 deletions(-) diff --git a/deeplabcut/pose_estimation_tensorflow/core/evaluate_multianimal.py b/deeplabcut/pose_estimation_tensorflow/core/evaluate_multianimal.py index 31d9b12b80..f2edf4382f 100644 --- a/deeplabcut/pose_estimation_tensorflow/core/evaluate_multianimal.py +++ b/deeplabcut/pose_estimation_tensorflow/core/evaluate_multianimal.py @@ -10,6 +10,7 @@ import os +import pickle from pathlib import Path import numpy as np @@ -536,20 +537,29 @@ def evaluate_multianimal_full( # Skip data-driven skeleton selection unless # the model was trained on the full graph. max_n_edges = dlc_cfg["num_joints"] * (dlc_cfg["num_joints"] - 1) // 2 - if len(dlc_cfg["partaffinityfield_graph"]) == max_n_edges: + n_edges = len(dlc_cfg["partaffinityfield_graph"]) + if n_edges == max_n_edges: print("Selecting best skeleton...") - _ = crossvalutils.cross_validate_paf_graphs( - config, - str(path_test_config).replace("pose_", "inference_"), - data_path, - data_path.replace("_full", "_meta"), - ) - - # Evaluate mAP and edge separability power - + n_graphs = 10 + paf_inds = None + else: + n_graphs = 1 + paf_inds = [list(range(n_edges))] + results, paf_scores = crossvalutils.cross_validate_paf_graphs( + config, + str(path_test_config).replace("pose_", "inference_"), + data_path, + data_path.replace("_full", "_meta"), + n_graphs=n_graphs, + paf_inds=paf_inds, + ) + df = results[1].copy() + df.loc(axis=0)[('mAP', 'mean')] = [d['mAP'] for d in results[2]] + df.loc(axis=0)[('mAR', 'mean')] = [d['mAR'] for d in results[2]] + with open(data_path.replace("_full", ), "wb") as file: + pickle.dump((df, paf_scores), file) if len(final_result) > 0: # Only append if results were calculated make_results_file(final_result, evaluationfolder, DLCscorer) - # returning to intial folder os.chdir(str(start_path)) diff --git a/deeplabcut/pose_estimation_tensorflow/lib/crossvalutils.py b/deeplabcut/pose_estimation_tensorflow/lib/crossvalutils.py index caa231866c..bce75a62ed 100644 --- a/deeplabcut/pose_estimation_tensorflow/lib/crossvalutils.py +++ b/deeplabcut/pose_estimation_tensorflow/lib/crossvalutils.py @@ -321,6 +321,8 @@ def cross_validate_paf_graphs( add_discarded=True, calibrate=False, overwrite_config=True, + n_graphs=10, + paf_inds=None, ): cfg = auxiliaryfunctions.read_config(config) inf_cfg = auxiliaryfunctions.read_plainconfig(inference_config) @@ -336,9 +338,14 @@ def cross_validate_paf_graphs( to_ignore = auxfun_multianimal.filter_unwanted_paf_connections( cfg, params["paf_graph"] ) - paf_inds, paf_scores = _get_n_best_paf_graphs( - data, metadata, params["paf_graph"], ignore_inds=to_ignore + best_graphs = _get_n_best_paf_graphs( + data, metadata, params["paf_graph"], + ignore_inds=to_ignore, + n_graphs=n_graphs, ) + paf_scores = best_graphs[1] + if paf_inds is None: + paf_inds = best_graphs[0] if calibrate: trainingsetfolder = auxiliaryfunctions.GetTrainingSetFolder(cfg) @@ -372,4 +379,4 @@ def cross_validate_paf_graphs( if output_name: with open(output_name, "wb") as file: pickle.dump([results], file) - return results + return results, paf_scores From ccc3ace3ae69aa458e9a7af6c192e8178f199333 Mon Sep 17 00:00:00 2001 From: Jessy Lauer <30733203+jeylau@users.noreply.github.com> Date: Tue, 6 Jul 2021 10:02:46 +0200 Subject: [PATCH 22/58] Minor fix --- .../pose_estimation_tensorflow/core/evaluate_multianimal.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/deeplabcut/pose_estimation_tensorflow/core/evaluate_multianimal.py b/deeplabcut/pose_estimation_tensorflow/core/evaluate_multianimal.py index f2edf4382f..e261689426 100644 --- a/deeplabcut/pose_estimation_tensorflow/core/evaluate_multianimal.py +++ b/deeplabcut/pose_estimation_tensorflow/core/evaluate_multianimal.py @@ -556,7 +556,7 @@ def evaluate_multianimal_full( df = results[1].copy() df.loc(axis=0)[('mAP', 'mean')] = [d['mAP'] for d in results[2]] df.loc(axis=0)[('mAR', 'mean')] = [d['mAR'] for d in results[2]] - with open(data_path.replace("_full", ), "wb") as file: + with open(data_path.replace("_full", "_map"), "wb") as file: pickle.dump((df, paf_scores), file) if len(final_result) > 0: # Only append if results were calculated From d6ef51e49cdf70afd32f1a7e5ee09b97d8ef9fa5 Mon Sep 17 00:00:00 2001 From: Jessy Lauer <30733203+jeylau@users.noreply.github.com> Date: Wed, 7 Jul 2021 10:36:12 +0200 Subject: [PATCH 23/58] Improved search of within-animal connections --- .../lib/crossvalutils.py | 35 ++++++++++++++++--- 1 file changed, 30 insertions(+), 5 deletions(-) diff --git a/deeplabcut/pose_estimation_tensorflow/lib/crossvalutils.py b/deeplabcut/pose_estimation_tensorflow/lib/crossvalutils.py index bce75a62ed..7c8348cac7 100644 --- a/deeplabcut/pose_estimation_tensorflow/lib/crossvalutils.py +++ b/deeplabcut/pose_estimation_tensorflow/lib/crossvalutils.py @@ -18,6 +18,7 @@ import numpy as np import pandas as pd from scipy.spatial import cKDTree +from scipy.spatial.distance import cdist from scipy.optimize import linear_sum_assignment from sklearn.metrics.cluster import contingency_matrix @@ -100,10 +101,11 @@ def _calc_separability( def _calc_within_between_pafs( data, metadata, - per_bodypart=True, + per_edge=True, train_set_only=True, ): train_inds = set(metadata["data"]["trainIndices"]) + graph = data["metadata"]["PAFgraph"] within_train = defaultdict(list) within_test = defaultdict(list) between_train = defaultdict(list) @@ -111,16 +113,39 @@ def _calc_within_between_pafs( for i, (key, dict_) in enumerate(data.items()): if key == "metadata": continue + is_train = i in train_inds if train_set_only and not is_train: continue + + df = dict_["groundtruth"][2] + try: + df.drop("single", level="individuals", inplace=True) + except KeyError: + pass + coords_gt = (df.unstack(['individuals', 'coords']) + .to_numpy() + .reshape((len(data['metadata']['all_joints_names']), -1, 2))) + coords = dict_["prediction"]["coordinates"][0] + # Get animal IDs and corresponding indices in the arrays of detections + lookup = dict() + for i, (coord, coord_gt) in enumerate(zip(coords, coords_gt)): + inds_gt = np.flatnonzero(np.all(~np.isnan(coord_gt), axis=1)) + if inds_gt.size and coord.size: + d = cdist(coord_gt[inds_gt], coord) + rows, cols = linear_sum_assignment(d) + lookup[i] = dict(zip(inds_gt[rows], cols)) + costs = dict_["prediction"]["costs"] for k, v in costs.items(): paf = v["m1"] - paf[np.isnan(paf)] = 0 - rows, cols = linear_sum_assignment(paf, maximize=True) mask_within = np.zeros(paf.shape, dtype=bool) - mask_within[rows, cols] = True + s, t = graph[k] + lu_s = lookup[s] + lu_t = lookup[t] + common_id = set(lu_s).intersection(lu_t) + for id_ in common_id: + mask_within[lu_s[id_], lu_t[id_]] = True within_vals = paf[mask_within] between_vals = paf[~mask_within] if is_train: @@ -129,7 +154,7 @@ def _calc_within_between_pafs( else: within_test[k].extend(within_vals) between_test[k].extend(between_vals) - if not per_bodypart: + if not per_edge: within_train = np.concatenate([*within_train.values()]) within_test = np.concatenate([*within_test.values()]) between_train = np.concatenate([*between_train.values()]) From 09fdfbd7f7fbf7923d344617f2d2f1edf3e87fd5 Mon Sep 17 00:00:00 2001 From: Jessy Lauer <30733203+jeylau@users.noreply.github.com> Date: Wed, 7 Jul 2021 11:06:59 +0200 Subject: [PATCH 24/58] Fix unit test expected graph --- tests/test_crossvalutils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/test_crossvalutils.py b/tests/test_crossvalutils.py index 7505ddb62e..574b934c15 100644 --- a/tests/test_crossvalutils.py +++ b/tests/test_crossvalutils.py @@ -2,7 +2,7 @@ from deeplabcut.pose_estimation_tensorflow.lib import crossvalutils -BEST_GRAPH = [14, 15, 16, 17, 11, 18, 22, 31, 61, 7, 59] +BEST_GRAPH = [14, 15, 16, 17, 34, 35, 11, 22, 59, 3, 43] def test_get_n_best_paf_graphs(evaluation_data_and_metadata): From f91540027d92fbb836f054eff69f33f4e7f969af Mon Sep 17 00:00:00 2001 From: Jessy Lauer <30733203+jeylau@users.noreply.github.com> Date: Wed, 7 Jul 2021 11:43:38 +0200 Subject: [PATCH 25/58] Preemptively cast yaml CommentedSeq to list --- deeplabcut/utils/auxiliaryfunctions.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/deeplabcut/utils/auxiliaryfunctions.py b/deeplabcut/utils/auxiliaryfunctions.py index e155e7d5ef..c860eccce1 100644 --- a/deeplabcut/utils/auxiliaryfunctions.py +++ b/deeplabcut/utils/auxiliaryfunctions.py @@ -514,7 +514,7 @@ def IntersectionofBodyPartsandOnesGivenbyUser(cfg, comparisonbodyparts): allbpts = cfg["bodyparts"] if comparisonbodyparts == "all": - return allbpts + return list(allbpts) else: # take only items in list that are actually bodyparts... cpbpts = [] # Ensure same order as in config.yaml From ca7d8a97052bf98b4e402ef3ceba6fed9da84b30 Mon Sep 17 00:00:00 2001 From: Jessy Lauer <30733203+jeylau@users.noreply.github.com> Date: Wed, 7 Jul 2021 15:12:25 +0200 Subject: [PATCH 26/58] Minor fix --- deeplabcut/pose_estimation_tensorflow/lib/crossvalutils.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/deeplabcut/pose_estimation_tensorflow/lib/crossvalutils.py b/deeplabcut/pose_estimation_tensorflow/lib/crossvalutils.py index 7c8348cac7..e11fef6765 100644 --- a/deeplabcut/pose_estimation_tensorflow/lib/crossvalutils.py +++ b/deeplabcut/pose_estimation_tensorflow/lib/crossvalutils.py @@ -141,6 +141,8 @@ def _calc_within_between_pafs( paf = v["m1"] mask_within = np.zeros(paf.shape, dtype=bool) s, t = graph[k] + if s not in lookup or t not in lookup: + continue lu_s = lookup[s] lu_t = lookup[t] common_id = set(lu_s).intersection(lu_t) From cd5a0c94ba8554221951c2feda969e183edb9ff8 Mon Sep 17 00:00:00 2001 From: Jessy Lauer <30733203+jeylau@users.noreply.github.com> Date: Wed, 7 Jul 2021 17:44:58 +0200 Subject: [PATCH 27/58] Minor fix --- deeplabcut/pose_estimation_tensorflow/lib/crossvalutils.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/deeplabcut/pose_estimation_tensorflow/lib/crossvalutils.py b/deeplabcut/pose_estimation_tensorflow/lib/crossvalutils.py index e11fef6765..70a2f6294b 100644 --- a/deeplabcut/pose_estimation_tensorflow/lib/crossvalutils.py +++ b/deeplabcut/pose_estimation_tensorflow/lib/crossvalutils.py @@ -130,11 +130,12 @@ def _calc_within_between_pafs( # Get animal IDs and corresponding indices in the arrays of detections lookup = dict() for i, (coord, coord_gt) in enumerate(zip(coords, coords_gt)): + inds = np.flatnonzero(np.all(~np.isnan(coord), axis=1)) inds_gt = np.flatnonzero(np.all(~np.isnan(coord_gt), axis=1)) - if inds_gt.size and coord.size: - d = cdist(coord_gt[inds_gt], coord) + if inds.size and inds_gt.size: + d = cdist(coord_gt[inds_gt], coord[inds]) rows, cols = linear_sum_assignment(d) - lookup[i] = dict(zip(inds_gt[rows], cols)) + lookup[i] = dict(zip(inds_gt[rows], inds[cols])) costs = dict_["prediction"]["costs"] for k, v in costs.items(): From 43c5f202e26cd02e6052c27416f0f6d88a1add80 Mon Sep 17 00:00:00 2001 From: Jessy Lauer <30733203+jeylau@users.noreply.github.com> Date: Thu, 8 Jul 2021 19:08:50 +0200 Subject: [PATCH 28/58] Some more fixes --- deeplabcut/pose_estimation_tensorflow/lib/crossvalutils.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/deeplabcut/pose_estimation_tensorflow/lib/crossvalutils.py b/deeplabcut/pose_estimation_tensorflow/lib/crossvalutils.py index 70a2f6294b..6a6a6d9c7e 100644 --- a/deeplabcut/pose_estimation_tensorflow/lib/crossvalutils.py +++ b/deeplabcut/pose_estimation_tensorflow/lib/crossvalutils.py @@ -106,6 +106,7 @@ def _calc_within_between_pafs( ): train_inds = set(metadata["data"]["trainIndices"]) graph = data["metadata"]["PAFgraph"] + bpts = data['metadata']['all_joints_names'] within_train = defaultdict(list) within_test = defaultdict(list) between_train = defaultdict(list) @@ -124,8 +125,9 @@ def _calc_within_between_pafs( except KeyError: pass coords_gt = (df.unstack(['individuals', 'coords']) + .reindex(bpts, level="bodyparts") .to_numpy() - .reshape((len(data['metadata']['all_joints_names']), -1, 2))) + .reshape((len(bpts), -1, 2))) coords = dict_["prediction"]["coordinates"][0] # Get animal IDs and corresponding indices in the arrays of detections lookup = dict() @@ -315,7 +317,8 @@ def _get_n_best_paf_graphs( # Find minimal skeleton G = nx.Graph() for edge, score in zip(existing_edges, scores): - G.add_edge(*full_graph[edge], weight=score) + if np.isfinite(score): + G.add_edge(*full_graph[edge], weight=score) if which == "best": order = np.asarray(existing_edges)[np.argsort(scores)[::-1]] if root is None: From 27bc07dd7971fcd69d82712d87e9eefb6aa21b58 Mon Sep 17 00:00:00 2001 From: Jessy Lauer <30733203+jeylau@users.noreply.github.com> Date: Thu, 8 Jul 2021 22:59:17 +0200 Subject: [PATCH 29/58] Get rid of keypoints outside the cropped region --- .../datasets/pose_multianimal_imgaug.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/deeplabcut/pose_estimation_tensorflow/datasets/pose_multianimal_imgaug.py b/deeplabcut/pose_estimation_tensorflow/datasets/pose_multianimal_imgaug.py index 4362ad1d22..a19bfd7466 100644 --- a/deeplabcut/pose_estimation_tensorflow/datasets/pose_multianimal_imgaug.py +++ b/deeplabcut/pose_estimation_tensorflow/datasets/pose_multianimal_imgaug.py @@ -258,6 +258,9 @@ def next_batch(self, plotting=False): batch_images, batch_joints = self.pipeline( images=batch_images, keypoints=batch_joints ) + batch_images = np.asarray(batch_images) + # Discard keypoints whose coordinates lie outside the cropped image + batch_joints = [j[~np.any(j < 0, axis=1)] for j in batch_joints] # If you would like to check the augmented images, script for saving # the images with joints on: @@ -274,15 +277,15 @@ def next_batch(self, plotting=False): os.path.join(self.cfg["project_path"], str(i) + ".png"), im ) - image_shape = np.array(batch_images).shape[1:3] - batch = {Batch.inputs: np.array(batch_images).astype(np.float64)} + image_shape = batch_images.shape[1:3] + batch = {Batch.inputs: batch_images.astype(np.float64)} if self.has_gt: targetmaps = self.get_targetmaps_update( joint_ids, batch_joints, data_items, (sm_size[1], sm_size[0]), image_shape ) batch.update(targetmaps) - batch = {key: np.array(data) for (key, data) in batch.items()} + batch = {key: np.asarray(data) for (key, data) in batch.items()} batch[Batch.data_item] = data_items return batch From 359513eef18c4b9ca7998725af52f994790303c9 Mon Sep 17 00:00:00 2001 From: Jessy Lauer <30733203+jeylau@users.noreply.github.com> Date: Thu, 8 Jul 2021 23:43:58 +0200 Subject: [PATCH 30/58] Get rid of keypoints outside the cropped region --- .../datasets/pose_multianimal_imgaug.py | 21 ++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/deeplabcut/pose_estimation_tensorflow/datasets/pose_multianimal_imgaug.py b/deeplabcut/pose_estimation_tensorflow/datasets/pose_multianimal_imgaug.py index a19bfd7466..b32e5bcfb6 100644 --- a/deeplabcut/pose_estimation_tensorflow/datasets/pose_multianimal_imgaug.py +++ b/deeplabcut/pose_estimation_tensorflow/datasets/pose_multianimal_imgaug.py @@ -260,13 +260,24 @@ def next_batch(self, plotting=False): ) batch_images = np.asarray(batch_images) # Discard keypoints whose coordinates lie outside the cropped image - batch_joints = [j[~np.any(j < 0, axis=1)] for j in batch_joints] + batch_joints_valid = [] + joint_ids_valid = [] + for joints, ids in zip(batch_joints, joint_ids): + mask = ~np.any(joints < 0, axis=1) + batch_joints_valid.append(joints[mask]) + temp = [] + start = 0 + for array in ids: + end = start + array.size + temp.append(array[mask[start:end]]) + start = end + joint_ids_valid.append(temp) # If you would like to check the augmented images, script for saving # the images with joints on: if plotting: for i in range(self.batch_size): - joints = batch_joints[i] + joints = batch_joints_valid[i] kps = KeypointsOnImage( [Keypoint(x=joint[0], y=joint[1]) for joint in joints], shape=batch_images[i].shape, @@ -281,7 +292,11 @@ def next_batch(self, plotting=False): batch = {Batch.inputs: batch_images.astype(np.float64)} if self.has_gt: targetmaps = self.get_targetmaps_update( - joint_ids, batch_joints, data_items, (sm_size[1], sm_size[0]), image_shape + joint_ids_valid, + batch_joints_valid, + data_items, + (sm_size[1], sm_size[0]), + image_shape, ) batch.update(targetmaps) From da768b0c9ab876f69b590b44a431a2320efa8126 Mon Sep 17 00:00:00 2001 From: Jessy Lauer <30733203+jeylau@users.noreply.github.com> Date: Fri, 9 Jul 2021 15:47:51 +0200 Subject: [PATCH 31/58] =?UTF-8?q?Get=20rid=20of=20keypoints=20outside=20th?= =?UTF-8?q?e=20cropped=20region=20=E2=80=94=20take=203?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../datasets/pose_multianimal_imgaug.py | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/deeplabcut/pose_estimation_tensorflow/datasets/pose_multianimal_imgaug.py b/deeplabcut/pose_estimation_tensorflow/datasets/pose_multianimal_imgaug.py index b32e5bcfb6..4b01f2615d 100644 --- a/deeplabcut/pose_estimation_tensorflow/datasets/pose_multianimal_imgaug.py +++ b/deeplabcut/pose_estimation_tensorflow/datasets/pose_multianimal_imgaug.py @@ -259,17 +259,25 @@ def next_batch(self, plotting=False): images=batch_images, keypoints=batch_joints ) batch_images = np.asarray(batch_images) + image_shape = batch_images.shape[1:3] # Discard keypoints whose coordinates lie outside the cropped image batch_joints_valid = [] joint_ids_valid = [] for joints, ids in zip(batch_joints, joint_ids): - mask = ~np.any(joints < 0, axis=1) - batch_joints_valid.append(joints[mask]) + inside = np.logical_and.reduce( + ( + joints[:, 0] < image_shape[1], + joints[:, 0] > 0, + joints[:, 1] < image_shape[0], + joints[:, 1] > 0, + ) + ) + batch_joints_valid.append(joints[inside]) temp = [] start = 0 for array in ids: end = start + array.size - temp.append(array[mask[start:end]]) + temp.append(array[inside[start:end]]) start = end joint_ids_valid.append(temp) @@ -288,7 +296,6 @@ def next_batch(self, plotting=False): os.path.join(self.cfg["project_path"], str(i) + ".png"), im ) - image_shape = batch_images.shape[1:3] batch = {Batch.inputs: batch_images.astype(np.float64)} if self.has_gt: targetmaps = self.get_targetmaps_update( From 94fd17c173336a9394d8b46612cbb5e6a8105cb7 Mon Sep 17 00:00:00 2001 From: Jessy Lauer <30733203+jeylau@users.noreply.github.com> Date: Sat, 10 Jul 2021 11:01:46 +0200 Subject: [PATCH 32/58] Fix scale factor --- .../datasets/pose_multianimal_imgaug.py | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/deeplabcut/pose_estimation_tensorflow/datasets/pose_multianimal_imgaug.py b/deeplabcut/pose_estimation_tensorflow/datasets/pose_multianimal_imgaug.py index 4b01f2615d..9f559a668f 100644 --- a/deeplabcut/pose_estimation_tensorflow/datasets/pose_multianimal_imgaug.py +++ b/deeplabcut/pose_estimation_tensorflow/datasets/pose_multianimal_imgaug.py @@ -176,7 +176,7 @@ def get_batch(self): return batch_images, joint_ids, batch_joints, data_items def get_targetmaps_update( - self, joint_ids, joints, data_items, sm_size, target_size + self, joint_ids, joints, data_items, sm_size, scale, ): part_score_targets = [] part_score_weights = [] @@ -185,12 +185,6 @@ def get_targetmaps_update( partaffinityfield_targets = [] partaffinityfield_masks = [] for i in range(len(data_items)): - # Approximating the scale - # FIXME I feel scale calculation is wrong - scale = min( - target_size[0] / data_items[i].im_size[1], - target_size[1] / data_items[i].im_size[2], - ) if self.cfg.get("scmap_type", None) == "gaussian": assert 0 == 1 # not implemented for pafs! ( @@ -254,6 +248,7 @@ def next_batch(self, plotting=False): # Scale is sampled only once (per batch) to transform all of the images into same size. target_size, sm_size = self.calc_target_and_scoremap_sizes() + scale = np.mean(target_size / self.default_crop_size) augmentation.update_crop_size(self.pipeline, *target_size) batch_images, batch_joints = self.pipeline( images=batch_images, keypoints=batch_joints @@ -303,7 +298,7 @@ def next_batch(self, plotting=False): batch_joints_valid, data_items, (sm_size[1], sm_size[0]), - image_shape, + scale, ) batch.update(targetmaps) From d80230b97b6f0b885641af3aca28d1069f798683 Mon Sep 17 00:00:00 2001 From: Jessy Lauer <30733203+jeylau@users.noreply.github.com> Date: Mon, 12 Jul 2021 18:17:46 +0200 Subject: [PATCH 33/58] Minor fix --- ...ultiple_individuals_trainingsetmanipulation.py | 15 ++++----------- 1 file changed, 4 insertions(+), 11 deletions(-) diff --git a/deeplabcut/generate_training_dataset/multiple_individuals_trainingsetmanipulation.py b/deeplabcut/generate_training_dataset/multiple_individuals_trainingsetmanipulation.py index 4f4424ecb3..7350faa473 100755 --- a/deeplabcut/generate_training_dataset/multiple_individuals_trainingsetmanipulation.py +++ b/deeplabcut/generate_training_dataset/multiple_individuals_trainingsetmanipulation.py @@ -222,19 +222,12 @@ def create_multianimaltraining_dataset( if trainIndices is None and testIndices is None: splits = [] for shuffle in Shuffles: # Creating shuffles starting from 1 - for trainFraction in cfg["TrainingFraction"]: - train_inds_temp, test_inds_temp = SplitTrials( - range(len(Data)), trainFraction + for train_frac in cfg["TrainingFraction"]: + train_inds, test_inds = SplitTrials( + range(len(Data)), train_frac ) - # Map back to the original indices. - temp = [re.escape(name) for i, name in enumerate(img_names) - if i in test_inds_temp] - mask = Data.index.str.contains("|".join(temp)) - testIndices = np.flatnonzero(mask) - trainIndices = np.flatnonzero(~mask) - splits.append( - (trainFraction, shuffle, (trainIndices, testIndices)) + (train_frac, shuffle, (train_inds, test_inds)) ) else: if len(trainIndices) != len(testIndices) != len(Shuffles): From 04476fae9a7b6f750feb0728b8e8c7eda72db4d2 Mon Sep 17 00:00:00 2001 From: Jessy Lauer <30733203+jeylau@users.noreply.github.com> Date: Tue, 13 Jul 2021 18:12:59 +0200 Subject: [PATCH 34/58] Ignore unique body parts when computing edge affinity distributions --- deeplabcut/pose_estimation_tensorflow/lib/crossvalutils.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/deeplabcut/pose_estimation_tensorflow/lib/crossvalutils.py b/deeplabcut/pose_estimation_tensorflow/lib/crossvalutils.py index 6a6a6d9c7e..c905b76b01 100644 --- a/deeplabcut/pose_estimation_tensorflow/lib/crossvalutils.py +++ b/deeplabcut/pose_estimation_tensorflow/lib/crossvalutils.py @@ -106,7 +106,6 @@ def _calc_within_between_pafs( ): train_inds = set(metadata["data"]["trainIndices"]) graph = data["metadata"]["PAFgraph"] - bpts = data['metadata']['all_joints_names'] within_train = defaultdict(list) within_test = defaultdict(list) between_train = defaultdict(list) @@ -124,7 +123,8 @@ def _calc_within_between_pafs( df.drop("single", level="individuals", inplace=True) except KeyError: pass - coords_gt = (df.unstack(['individuals', 'coords']) + bpts = df.index.get_level_values("bodyparts").unique().to_list() + coords_gt = (df.unstack(["individuals", "coords"]) .reindex(bpts, level="bodyparts") .to_numpy() .reshape((len(bpts), -1, 2))) From 02a78499cbd6942b89ceef273ced9d20ce83cee3 Mon Sep 17 00:00:00 2001 From: Jessy Lauer <30733203+jeylau@users.noreply.github.com> Date: Tue, 13 Jul 2021 22:37:49 +0200 Subject: [PATCH 35/58] Improved Assembler with unique body parts --- .../pose_estimation_tensorflow/lib/inferenceutils.py | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/deeplabcut/pose_estimation_tensorflow/lib/inferenceutils.py b/deeplabcut/pose_estimation_tensorflow/lib/inferenceutils.py index 965b5faf59..fcd163bf5b 100644 --- a/deeplabcut/pose_estimation_tensorflow/lib/inferenceutils.py +++ b/deeplabcut/pose_estimation_tensorflow/lib/inferenceutils.py @@ -592,6 +592,8 @@ def _assemble(self, data_dict, ind_frame): for joint in joints: bag[joint.label].append(joint) + assembled = set() + if self.n_uniquebodyparts: unique = np.full((self.n_uniquebodyparts, 3), np.nan) for n, ind in enumerate(range(self.n_multibodyparts, self.n_keypoints)): @@ -602,6 +604,11 @@ def _assemble(self, data_dict, ind_frame): det = max(dets, key=lambda x: x.confidence) else: det = dets[0] + # Mark the unique body parts as assembled anyway so + # they are not used later on to fill assemblies. + assembled.update(d.idx for d in dets) + if det.confidence <= self.pcutoff and not self.add_discarded: + continue unique[n] = *det.pos, det.confidence if np.isnan(unique).all(): unique = None @@ -613,7 +620,6 @@ def _assemble(self, data_dict, ind_frame): if self.identity_only: assemblies = [] - assembled = set() get_attr = operator.attrgetter("group") temp = sorted( (joint for joint in joints if np.isfinite(joint.confidence)), @@ -648,7 +654,8 @@ def _assemble(self, data_dict, ind_frame): vecs = np.vstack([link.to_vector() for link in links]) self._trees[ind_frame] = cKDTree(vecs) - assemblies, assembled = self.build_assemblies(links) + assemblies, assembled_ = self.build_assemblies(links) + assembled.update(assembled_) # Remove invalid assemblies discarded = set( From 5f3556bbcf5d7440eab4755495db6744e5651b7b Mon Sep 17 00:00:00 2001 From: Jessy Lauer <30733203+jeylau@users.noreply.github.com> Date: Tue, 13 Jul 2021 23:08:10 +0200 Subject: [PATCH 36/58] Fix incorrect number of maximal number of graph edges --- .../pose_estimation_tensorflow/core/evaluate_multianimal.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/deeplabcut/pose_estimation_tensorflow/core/evaluate_multianimal.py b/deeplabcut/pose_estimation_tensorflow/core/evaluate_multianimal.py index e261689426..ed25b4e177 100644 --- a/deeplabcut/pose_estimation_tensorflow/core/evaluate_multianimal.py +++ b/deeplabcut/pose_estimation_tensorflow/core/evaluate_multianimal.py @@ -536,7 +536,8 @@ def evaluate_multianimal_full( # Skip data-driven skeleton selection unless # the model was trained on the full graph. - max_n_edges = dlc_cfg["num_joints"] * (dlc_cfg["num_joints"] - 1) // 2 + n_multibpts = len(cfg["multianimalbodyparts"]) + max_n_edges = n_multibpts * (n_multibpts - 1) // 2 n_edges = len(dlc_cfg["partaffinityfield_graph"]) if n_edges == max_n_edges: print("Selecting best skeleton...") From 8a71877e8906808b61857f50a48c14f5d43ecb2f Mon Sep 17 00:00:00 2001 From: Jessy Lauer <30733203+jeylau@users.noreply.github.com> Date: Thu, 15 Jul 2021 15:00:54 +0200 Subject: [PATCH 37/58] Minor fix --- .../datasets/pose_multianimal_imgaug.py | 91 +++++++++---------- 1 file changed, 45 insertions(+), 46 deletions(-) diff --git a/deeplabcut/pose_estimation_tensorflow/datasets/pose_multianimal_imgaug.py b/deeplabcut/pose_estimation_tensorflow/datasets/pose_multianimal_imgaug.py index 9f559a668f..70c1f92de2 100644 --- a/deeplabcut/pose_estimation_tensorflow/datasets/pose_multianimal_imgaug.py +++ b/deeplabcut/pose_estimation_tensorflow/datasets/pose_multianimal_imgaug.py @@ -417,56 +417,55 @@ def compute_target_part_scoremap_numpy( y, x = np.rollaxis(grid * stride + half_stride, 2) for person_id in range(len(joint_id)): joint_ids = joint_id[person_id].tolist() - if len(joint_ids) < 2: # there is no possible edge - continue - for l, (bp1, bp2) in enumerate(self.cfg["partaffinityfield_graph"]): - try: - ind1 = joint_ids.index(bp1) - except ValueError: - continue - try: - ind2 = joint_ids.index(bp2) - except ValueError: - continue - j_x, j_y = coords[ind1 + coordinateoffset] - linkedj_x, linkedj_y = coords[ind2 + coordinateoffset] - dist = sqrt((linkedj_x - j_x) ** 2 + (linkedj_y - j_y) ** 2) - if dist > 0: - Dx = (linkedj_x - j_x) / dist # x-axis UNIT VECTOR - Dy = (linkedj_y - j_y) / dist - d1 = [ - Dx * j_x + Dy * j_y, - Dx * linkedj_x + Dy * linkedj_y, - ] # in-line with direct axis - d1lowerboundary = min(d1) - d1upperboundary = max(d1) - d2mid = j_y * Dx - j_x * Dy # orthogonal direction - - distance_along = Dx * x + Dy * y - distance_across = ( - ( + if len(joint_ids) >= 2: # there is a possible edge + for l, (bp1, bp2) in enumerate(self.cfg["partaffinityfield_graph"]): + try: + ind1 = joint_ids.index(bp1) + except ValueError: + continue + try: + ind2 = joint_ids.index(bp2) + except ValueError: + continue + j_x, j_y = coords[ind1 + coordinateoffset] + linkedj_x, linkedj_y = coords[ind2 + coordinateoffset] + dist = sqrt((linkedj_x - j_x) ** 2 + (linkedj_y - j_y) ** 2) + if dist > 0: + Dx = (linkedj_x - j_x) / dist # x-axis UNIT VECTOR + Dy = (linkedj_y - j_y) / dist + d1 = [ + Dx * j_x + Dy * j_y, + Dx * linkedj_x + Dy * linkedj_y, + ] # in-line with direct axis + d1lowerboundary = min(d1) + d1upperboundary = max(d1) + d2mid = j_y * Dx - j_x * Dy # orthogonal direction + + distance_along = Dx * x + Dy * y + distance_across = ( ( - y * Dx - - x * Dy + ( + y * Dx + - x * Dy + ) + - d2mid ) - - d2mid + * 1.0 + / self.cfg["pafwidth"] + * scale ) - * 1.0 - / self.cfg["pafwidth"] - * scale - ) - mask1 = (distance_along >= d1lowerboundary) & ( - distance_along <= d1upperboundary - ) - distance_across_abs = np.abs(distance_across) - mask2 = distance_across_abs <= 1 - mask = mask1 & mask2 - temp = 1 - distance_across_abs[mask] - if self.cfg["weigh_only_present_joints"]: - partaffinityfield_mask[mask, [l * 2 + 0, l * 2 + 1]] = 1.0 - partaffinityfield_map[mask, l * 2 + 0] = Dx * temp - partaffinityfield_map[mask, l * 2 + 1] = Dy * temp + mask1 = (distance_along >= d1lowerboundary) & ( + distance_along <= d1upperboundary + ) + distance_across_abs = np.abs(distance_across) + mask2 = distance_across_abs <= 1 + mask = mask1 & mask2 + temp = 1 - distance_across_abs[mask] + if self.cfg["weigh_only_present_joints"]: + partaffinityfield_mask[mask, [l * 2 + 0, l * 2 + 1]] = 1.0 + partaffinityfield_map[mask, l * 2 + 0] = Dx * temp + partaffinityfield_map[mask, l * 2 + 1] = Dy * temp coordinateoffset += len(joint_ids) # keeping track of the blocks From 42882681473253932a33896090831d7fc1fcb5c1 Mon Sep 17 00:00:00 2001 From: Jessy Lauer <30733203+jeylau@users.noreply.github.com> Date: Thu, 15 Jul 2021 17:59:54 +0200 Subject: [PATCH 38/58] Define crop size when creating dataset --- .../multiple_individuals_trainingsetmanipulation.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/deeplabcut/generate_training_dataset/multiple_individuals_trainingsetmanipulation.py b/deeplabcut/generate_training_dataset/multiple_individuals_trainingsetmanipulation.py index 7350faa473..ab9723a829 100755 --- a/deeplabcut/generate_training_dataset/multiple_individuals_trainingsetmanipulation.py +++ b/deeplabcut/generate_training_dataset/multiple_individuals_trainingsetmanipulation.py @@ -99,6 +99,7 @@ def create_multianimaltraining_dataset( windows2linux=False, net_type=None, numdigits=2, + crop_size=(400, 400), paf_graph=None, trainIndices=None, testIndices=None, @@ -133,6 +134,10 @@ def create_multianimaltraining_dataset( numdigits: int, optional + crop_size: tuple of int, optional + Dimensions (width, height) of the crops for data augmentation. + Default is 400x400. + paf_graph: list of lists, optional (default=None) If not None, overwrite the default complete graph. This is useful for advanced users who already know a good graph, or simply want to use a specific one. Note that, in that case, @@ -155,6 +160,8 @@ def create_multianimaltraining_dataset( >>> deeplabcut.create_multianimaltraining_dataset(r'C:\\Users\\Ulf\\looming-task\\config.yaml',Shuffles=[3,17,5]) -------- """ + if len(crop_size) != 2 or not all(isinstance(v, int) for v in crop_size): + raise ValueError("Crop size must be a tuple of two integers (width, height).") # Loading metadata from config file: cfg = auxiliaryfunctions.read_config(config) @@ -366,6 +373,7 @@ def create_multianimaltraining_dataset( "num_idchannel": len(cfg["individuals"]) if cfg.get("identity", False) else 0, + "crop_size": crop_size, } trainingdata = MakeTrain_pose_yaml( From e67d2255259d8baf3c8095f19adf4be2532d7a95 Mon Sep 17 00:00:00 2001 From: Jessy Lauer <30733203+jeylau@users.noreply.github.com> Date: Fri, 16 Jul 2021 00:04:46 +0200 Subject: [PATCH 39/58] Add utility function to convert cropped datasets back to standard format --- ...ple_individuals_trainingsetmanipulation.py | 102 +++++++++++++++++- .../trainingsetmanipulation.py | 36 +++++-- 2 files changed, 128 insertions(+), 10 deletions(-) diff --git a/deeplabcut/generate_training_dataset/multiple_individuals_trainingsetmanipulation.py b/deeplabcut/generate_training_dataset/multiple_individuals_trainingsetmanipulation.py index ab9723a829..0a767dd827 100755 --- a/deeplabcut/generate_training_dataset/multiple_individuals_trainingsetmanipulation.py +++ b/deeplabcut/generate_training_dataset/multiple_individuals_trainingsetmanipulation.py @@ -10,7 +10,6 @@ import os import os.path -import re from itertools import combinations from pathlib import Path @@ -24,6 +23,7 @@ MakeTrain_pose_yaml, MakeTest_pose_yaml, MakeInference_yaml, + pad_train_test_indices, ) from deeplabcut.utils import auxiliaryfunctions, auxfun_models, auxfun_multianimal @@ -251,6 +251,12 @@ def create_multianimaltraining_dataset( print( f"You passed a split with the following fraction: {int(100 * trainFraction)}%" ) + # Now that the training fraction is guaranteed to be correct, + # the values added to pad the indices are removed. + train_inds = np.asarray(train_inds) + train_inds = train_inds[train_inds != -1] + test_inds = np.asarray(test_inds) + test_inds = test_inds[test_inds != -1] splits.append( (trainFraction, Shuffles[shuffle], (train_inds, test_inds)) ) @@ -428,3 +434,97 @@ def create_multianimaltraining_dataset( ) else: pass + + +def convert_cropped_to_standard_dataset( + config_path, + delete_crops=False, + recreate_datasets=True, +): + import pandas as pd + import pickle + import shutil + from deeplabcut.generate_training_dataset import trainingsetmanipulation + from deeplabcut.utils import read_plainconfig, write_config + + cfg = auxiliaryfunctions.read_config(config_path) + if delete_crops: + data_path = os.path.join(cfg["project_path"], "labeled-data") + for video in cfg["video_sets"]: + _, filename, _ = trainingsetmanipulation._robust_path_split(video) + if "_cropped" in video: # One can never be too safe... + shutil.rmtree(os.path.join(data_path, filename), ignore_errors=True) + + videos_orig = cfg.pop("video_sets_original") + is_cropped = cfg.pop("croppedtraining") + if videos_orig is None or not is_cropped: + print("Labeled data do not appear to be cropped. Nothing was changed...") + return + + cfg["video_sets"] = videos_orig + write_config(config_path, cfg) + + if not recreate_datasets: + return + + datasets_folder = os.path.join( + cfg["project_path"], auxiliaryfunctions.GetTrainingSetFolder(cfg), + ) + df_old = pd.read_hdf( + os.path.join(datasets_folder, "CollectedData_" + cfg["scorer"] + ".h5"), + ) + + def strip_cropped_image_name(path): + head, filename = os.path.split(path) + head = head.replace("_cropped", "") + file, ext = filename.split(".") + file = file.split("c")[0] + return os.path.join(head, file + "." + ext) + + img_names_old = np.asarray( + [strip_cropped_image_name(img) for img in df_old.index.to_list()] + ) + df = merge_annotateddatasets(cfg, datasets_folder, False) + img_names = df.index.to_numpy() + train_idx = [] + test_idx = [] + for dirpath, dirnames, filenames in os.walk(datasets_folder): + for filename in filenames: + if filename.startswith("Docu") and filename.endswith("pickle"): + pickle_file = os.path.join(datasets_folder, filename) + with open(pickle_file, "rb") as f: + _, train_inds, test_inds, train_frac = pickle.load(f) + train_inds_temp = np.flatnonzero( + np.isin(img_names, img_names_old[train_inds]) + ) + test_inds_temp = np.flatnonzero( + np.isin(img_names, img_names_old[test_inds]) + ) + train_inds, test_inds = pad_train_test_indices( + train_inds_temp, test_inds_temp, train_frac + ) + train_idx.append(train_inds) + test_idx.append(test_inds) + + # Search a pose_config.yaml file to parse missing information + pose_config_path = "" + for dirpath, dirnames, filenames in os.walk( + os.path.join(cfg["project_path"], "dlc-models") + ): + for file in filenames: + if file.endswith("pose_cfg.yaml"): + pose_config_path = os.path.join(dirpath, file) + break + pose_cfg = read_plainconfig(pose_config_path) + net_type = pose_cfg["net_type"] + if net_type == "resnet_50" and pose_cfg.cfg("multi_stage", False): + net_type = "dlcrnet_ms5" + + create_multianimaltraining_dataset( + config_path, + trainIndices=train_idx, + testIndices=test_idx, + net_type=net_type, + paf_graph=pose_cfg["partaffinityfield_graph"], + crop_size=pose_cfg.get("crop_size", (400, 400)) + ) diff --git a/deeplabcut/generate_training_dataset/trainingsetmanipulation.py b/deeplabcut/generate_training_dataset/trainingsetmanipulation.py index ec0b7d69fe..89ec13c157 100755 --- a/deeplabcut/generate_training_dataset/trainingsetmanipulation.py +++ b/deeplabcut/generate_training_dataset/trainingsetmanipulation.py @@ -499,18 +499,36 @@ def SplitTrials( test_indices = shuffle[int(train_size):] train_indices = shuffle[:int(train_size)] if enforce_train_fraction and not train_size.is_integer(): - # Determine the index length required to guarantee - # the train–test ratio is exactly the desired one. - min_length_req = int(100 / math.gcd(100, int(round(100 * train_fraction)))) - length_req = math.ceil(index_len / min_length_req) * min_length_req - n_train = int(round(length_req * train_fraction)) - n_test = length_req - n_train - # Pad indices so lengths agree - train_indices = np.append(train_indices, [-1] * (n_train - len(train_indices))) - test_indices = np.append(test_indices, [-1] * (n_test - len(test_indices))) + train_indices, test_indices = pad_train_test_indices( + train_indices, test_indices, train_fraction, + ) return train_indices, test_indices +def pad_train_test_indices(train_inds, test_inds, train_fraction): + n_train_inds = len(train_inds) + n_test_inds = len(test_inds) + index_len = n_train_inds + n_test_inds + if n_train_inds / index_len == train_fraction: + return + + # Determine the index length required to guarantee + # the train–test ratio is exactly the desired one. + min_length_req = int(100 / math.gcd(100, int(round(100 * train_fraction)))) + min_n_train = int(round(min_length_req * train_fraction)) + min_n_test = min_length_req - min_n_train + mult = max( + math.ceil(n_train_inds / min_n_train), + math.ceil(n_test_inds / min_n_test), + ) + n_train = mult * min_n_train + n_test = mult * min_n_test + # Pad indices so lengths agree + train_inds = np.append(train_inds, [-1] * (n_train - n_train_inds)) + test_inds = np.append(test_inds, [-1] * (n_test - n_test_inds)) + return train_inds, test_inds + + def mergeandsplit(config, trainindex=0, uniform=True, windows2linux=False): """ This function allows additional control over "create_training_dataset". From ac0e54e9042f913dba0b60b27fdac5884f9e43e2 Mon Sep 17 00:00:00 2001 From: Jessy Lauer <30733203+jeylau@users.noreply.github.com> Date: Fri, 16 Jul 2021 09:43:14 +0200 Subject: [PATCH 40/58] Back up projects by default --- ...ple_individuals_trainingsetmanipulation.py | 27 ++++++++++++------- 1 file changed, 17 insertions(+), 10 deletions(-) diff --git a/deeplabcut/generate_training_dataset/multiple_individuals_trainingsetmanipulation.py b/deeplabcut/generate_training_dataset/multiple_individuals_trainingsetmanipulation.py index 0a767dd827..316968012f 100755 --- a/deeplabcut/generate_training_dataset/multiple_individuals_trainingsetmanipulation.py +++ b/deeplabcut/generate_training_dataset/multiple_individuals_trainingsetmanipulation.py @@ -438,8 +438,9 @@ def create_multianimaltraining_dataset( def convert_cropped_to_standard_dataset( config_path, - delete_crops=False, recreate_datasets=True, + delete_crops=True, + back_up=True, ): import pandas as pd import pickle @@ -448,19 +449,25 @@ def convert_cropped_to_standard_dataset( from deeplabcut.utils import read_plainconfig, write_config cfg = auxiliaryfunctions.read_config(config_path) + videos_orig = cfg.pop("video_sets_original") + is_cropped = cfg.pop("croppedtraining") + if videos_orig is None or not is_cropped: + print("Labeled data do not appear to be cropped. " + "Project will remain unchanged...") + return + + project_path = cfg["project_path"] + + if back_up: + shutil.copytree(project_path, project_path + "_bak", symlinks=True) + if delete_crops: - data_path = os.path.join(cfg["project_path"], "labeled-data") + data_path = os.path.join(project_path, "labeled-data") for video in cfg["video_sets"]: _, filename, _ = trainingsetmanipulation._robust_path_split(video) if "_cropped" in video: # One can never be too safe... shutil.rmtree(os.path.join(data_path, filename), ignore_errors=True) - videos_orig = cfg.pop("video_sets_original") - is_cropped = cfg.pop("croppedtraining") - if videos_orig is None or not is_cropped: - print("Labeled data do not appear to be cropped. Nothing was changed...") - return - cfg["video_sets"] = videos_orig write_config(config_path, cfg) @@ -468,7 +475,7 @@ def convert_cropped_to_standard_dataset( return datasets_folder = os.path.join( - cfg["project_path"], auxiliaryfunctions.GetTrainingSetFolder(cfg), + project_path, auxiliaryfunctions.GetTrainingSetFolder(cfg), ) df_old = pd.read_hdf( os.path.join(datasets_folder, "CollectedData_" + cfg["scorer"] + ".h5"), @@ -509,7 +516,7 @@ def strip_cropped_image_name(path): # Search a pose_config.yaml file to parse missing information pose_config_path = "" for dirpath, dirnames, filenames in os.walk( - os.path.join(cfg["project_path"], "dlc-models") + os.path.join(project_path, "dlc-models") ): for file in filenames: if file.endswith("pose_cfg.yaml"): From 90db5388c4cae565c1ee35bde64f5707bcad1edb Mon Sep 17 00:00:00 2001 From: Jessy Lauer <30733203+jeylau@users.noreply.github.com> Date: Fri, 16 Jul 2021 09:58:30 +0200 Subject: [PATCH 41/58] Add flag for weighted crop center sampling --- deeplabcut/pose_cfg.yaml | 1 + .../datasets/augmentation.py | 35 +++++++++++++------ .../datasets/pose_multianimal_imgaug.py | 2 +- 3 files changed, 27 insertions(+), 11 deletions(-) diff --git a/deeplabcut/pose_cfg.yaml b/deeplabcut/pose_cfg.yaml index dfe5cb28e2..acc7e7ea4d 100644 --- a/deeplabcut/pose_cfg.yaml +++ b/deeplabcut/pose_cfg.yaml @@ -35,6 +35,7 @@ pre_resize: [] # Specify [width, height] if pre-resizing is desired # Smart, on-the-fly image cropping, replacing deeplabcut.cropimagesandlabels crop_size: [400, 400] # width, height max_shift: 0.4 # Maximum relative shift of the position of the crop center +weighted_sampling: true # Weigh crop centers by keypoint neighbor density #Data loaders, i.e. with additional data augmentation options (as of 2.0.9+): #default with be with no extra dataloaders. Other options: 'tensorpack, deterministic' diff --git a/deeplabcut/pose_estimation_tensorflow/datasets/augmentation.py b/deeplabcut/pose_estimation_tensorflow/datasets/augmentation.py index 26e0f17273..302eb70d87 100644 --- a/deeplabcut/pose_estimation_tensorflow/datasets/augmentation.py +++ b/deeplabcut/pose_estimation_tensorflow/datasets/augmentation.py @@ -4,7 +4,13 @@ class KeypointAwareCropToFixedSize(iaa.CropToFixedSize): - def __init__(self, width, height, max_shift=0.4): + def __init__( + self, + width, + height, + max_shift=0.4, + weighted_sampling=True, + ): """ Parameters ---------- @@ -17,6 +23,10 @@ def __init__(self, width, height, max_shift=0.4): max_shift : float, optional (default=0.25) Maximum allowed shift of the cropping center position as a fraction of the crop size. + + weighted_sampling : bool, optional (default=True) + Whether to weigh crop centers sampling based on + keypoint neighbor density. """ super(KeypointAwareCropToFixedSize, self).__init__( width, height, name="kptscrop", @@ -24,10 +34,11 @@ def __init__(self, width, height, max_shift=0.4): # Clamp to 40% of crop size to ensure that at least # the center keypoint remains visible after the offset is applied. self.max_shift = max(0., min(max_shift, 0.4)) + self.weighted_sampling = weighted_sampling @staticmethod def calc_n_neighbors(xy, radius): - d = pdist(xy, 'sqeuclidean') + d = pdist(xy, "sqeuclidean") mat = squareform(d <= radius * radius, checks=False) return np.sum(mat, axis=0) @@ -40,14 +51,18 @@ def _draw_samples(self, batch, random_state): for n in range(batch.nb_rows): h, w = batch.images[n].shape[:2] kpts = batch.keypoints[n].to_xy_array() - inds = np.arange(kpts.shape[0]) - # Points located close to one another are sampled preferentially - # in order to augment crowded regions. - radius = 0.1 * min(h, w) - n_neighbors = self.calc_n_neighbors(kpts, radius) - # Include keypoints in the count to avoid null probabilities - n_neighbors += 1 - p = n_neighbors / n_neighbors.sum() + n_kpts = kpts.shape[0] + inds = np.arange(n_kpts) + if self.weighted_sampling: + # Points located close to one another are sampled preferentially + # in order to augment crowded regions. + radius = 0.1 * min(h, w) + n_neighbors = self.calc_n_neighbors(kpts, radius) + # Include keypoints in the count to avoid null probabilities + n_neighbors += 1 + p = n_neighbors / n_neighbors.sum() + else: + p = np.ones_like(inds) / n_kpts center = kpts[random_state.choice(inds, p=p)] # Shift the crop center in both dimensions by random amounts # and normalize to the original image dimensions. diff --git a/deeplabcut/pose_estimation_tensorflow/datasets/pose_multianimal_imgaug.py b/deeplabcut/pose_estimation_tensorflow/datasets/pose_multianimal_imgaug.py index 70c1f92de2..dc3b501990 100644 --- a/deeplabcut/pose_estimation_tensorflow/datasets/pose_multianimal_imgaug.py +++ b/deeplabcut/pose_estimation_tensorflow/datasets/pose_multianimal_imgaug.py @@ -96,7 +96,7 @@ def build_augmentation_pipeline(self, apply_prob=0.5): pipeline.add(iaa.PadToFixedSize(w, h)) pipeline.add( augmentation.KeypointAwareCropToFixedSize( - w, h, cfg.get('max_shift', 0.4), + w, h, cfg.get("max_shift", 0.4), cfg.get("weighted_sampling", True) ) ) From 4ae5b9487e2f4962d41c436200412e5229234790 Mon Sep 17 00:00:00 2001 From: Jessy Lauer <30733203+jeylau@users.noreply.github.com> Date: Wed, 21 Jul 2021 09:46:01 +0200 Subject: [PATCH 42/58] Minor fixes --- .../pose_estimation_tensorflow/core/evaluate_multianimal.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/deeplabcut/pose_estimation_tensorflow/core/evaluate_multianimal.py b/deeplabcut/pose_estimation_tensorflow/core/evaluate_multianimal.py index ed25b4e177..7bcf73d747 100644 --- a/deeplabcut/pose_estimation_tensorflow/core/evaluate_multianimal.py +++ b/deeplabcut/pose_estimation_tensorflow/core/evaluate_multianimal.py @@ -550,14 +550,14 @@ def evaluate_multianimal_full( config, str(path_test_config).replace("pose_", "inference_"), data_path, - data_path.replace("_full", "_meta"), + data_path.replace("_full.", "_meta."), n_graphs=n_graphs, paf_inds=paf_inds, ) df = results[1].copy() df.loc(axis=0)[('mAP', 'mean')] = [d['mAP'] for d in results[2]] df.loc(axis=0)[('mAR', 'mean')] = [d['mAR'] for d in results[2]] - with open(data_path.replace("_full", "_map"), "wb") as file: + with open(data_path.replace("_full.", "_map."), "wb") as file: pickle.dump((df, paf_scores), file) if len(final_result) > 0: # Only append if results were calculated From 885f4d07df17a62cf423f63003adc5dfa290a1b1 Mon Sep 17 00:00:00 2001 From: Jessy Lauer <30733203+jeylau@users.noreply.github.com> Date: Sun, 25 Jul 2021 20:16:23 +0200 Subject: [PATCH 43/58] Fix YAML error --- .../multiple_individuals_trainingsetmanipulation.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/deeplabcut/generate_training_dataset/multiple_individuals_trainingsetmanipulation.py b/deeplabcut/generate_training_dataset/multiple_individuals_trainingsetmanipulation.py index 316968012f..5a28cbf7e3 100755 --- a/deeplabcut/generate_training_dataset/multiple_individuals_trainingsetmanipulation.py +++ b/deeplabcut/generate_training_dataset/multiple_individuals_trainingsetmanipulation.py @@ -379,7 +379,7 @@ def create_multianimaltraining_dataset( "num_idchannel": len(cfg["individuals"]) if cfg.get("identity", False) else 0, - "crop_size": crop_size, + "crop_size": list(crop_size), } trainingdata = MakeTrain_pose_yaml( From 1195662ec4494ac54989441f8a3e355b38592e56 Mon Sep 17 00:00:00 2001 From: Jessy Lauer <30733203+jeylau@users.noreply.github.com> Date: Wed, 28 Jul 2021 10:53:55 +0200 Subject: [PATCH 44/58] Minor fixes --- .../multiple_individuals_trainingsetmanipulation.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/deeplabcut/generate_training_dataset/multiple_individuals_trainingsetmanipulation.py b/deeplabcut/generate_training_dataset/multiple_individuals_trainingsetmanipulation.py index 5a28cbf7e3..ed240265b0 100755 --- a/deeplabcut/generate_training_dataset/multiple_individuals_trainingsetmanipulation.py +++ b/deeplabcut/generate_training_dataset/multiple_individuals_trainingsetmanipulation.py @@ -459,9 +459,11 @@ def convert_cropped_to_standard_dataset( project_path = cfg["project_path"] if back_up: + print("Backing up original project...") shutil.copytree(project_path, project_path + "_bak", symlinks=True) if delete_crops: + print("Deleting crops...") data_path = os.path.join(project_path, "labeled-data") for video in cfg["video_sets"]: _, filename, _ = trainingsetmanipulation._robust_path_split(video) @@ -524,14 +526,15 @@ def strip_cropped_image_name(path): break pose_cfg = read_plainconfig(pose_config_path) net_type = pose_cfg["net_type"] - if net_type == "resnet_50" and pose_cfg.cfg("multi_stage", False): + if net_type == "resnet_50" and pose_cfg.get("multi_stage", False): net_type = "dlcrnet_ms5" create_multianimaltraining_dataset( config_path, trainIndices=train_idx, testIndices=test_idx, + num_shuffles=len(train_idx), net_type=net_type, paf_graph=pose_cfg["partaffinityfield_graph"], - crop_size=pose_cfg.get("crop_size", (400, 400)) + crop_size=pose_cfg.get("crop_size", [400, 400]) ) From da93fd1aadf1d1d19f4542a029bc6f307a46906e Mon Sep 17 00:00:00 2001 From: Jessy Lauer <30733203+jeylau@users.noreply.github.com> Date: Wed, 28 Jul 2021 14:44:03 +0200 Subject: [PATCH 45/58] Improved dataset creation --- ...ple_individuals_trainingsetmanipulation.py | 20 +++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/deeplabcut/generate_training_dataset/multiple_individuals_trainingsetmanipulation.py b/deeplabcut/generate_training_dataset/multiple_individuals_trainingsetmanipulation.py index ed240265b0..cc37c62cdc 100755 --- a/deeplabcut/generate_training_dataset/multiple_individuals_trainingsetmanipulation.py +++ b/deeplabcut/generate_training_dataset/multiple_individuals_trainingsetmanipulation.py @@ -10,6 +10,7 @@ import os import os.path +import re from itertools import combinations from pathlib import Path @@ -459,7 +460,7 @@ def convert_cropped_to_standard_dataset( project_path = cfg["project_path"] if back_up: - print("Backing up original project...") + print("Backing up project...") shutil.copytree(project_path, project_path + "_bak", symlinks=True) if delete_crops: @@ -497,10 +498,12 @@ def strip_cropped_image_name(path): img_names = df.index.to_numpy() train_idx = [] test_idx = [] - for dirpath, dirnames, filenames in os.walk(datasets_folder): - for filename in filenames: - if filename.startswith("Docu") and filename.endswith("pickle"): - pickle_file = os.path.join(datasets_folder, filename) + pickle_files = [] + for filename in os.listdir(datasets_folder): + if filename.endswith("pickle"): + pickle_file = os.path.join(datasets_folder, filename) + pickle_files.append(pickle_file) + if filename.startswith("Docu"): with open(pickle_file, "rb") as f: _, train_inds, test_inds, train_frac = pickle.load(f) train_inds_temp = np.flatnonzero( @@ -529,11 +532,16 @@ def strip_cropped_image_name(path): if net_type == "resnet_50" and pose_cfg.get("multi_stage", False): net_type = "dlcrnet_ms5" + # Clean the training-datasets folder prior to recreating the data pickles + shuffle_inds = set() + for file in pickle_files: + os.remove(file) + shuffle_inds.add(int(re.findall(r"shuffle(\d+)", file)[0])) create_multianimaltraining_dataset( config_path, trainIndices=train_idx, testIndices=test_idx, - num_shuffles=len(train_idx), + Shuffles=sorted(shuffle_inds), net_type=net_type, paf_graph=pose_cfg["partaffinityfield_graph"], crop_size=pose_cfg.get("crop_size", [400, 400]) From 1059fb5d740a4a786f5ce23b2faa1d22fdf00012 Mon Sep 17 00:00:00 2001 From: Jessy Lauer <30733203+jeylau@users.noreply.github.com> Date: Wed, 28 Jul 2021 15:34:26 +0200 Subject: [PATCH 46/58] Edit docs --- docs/maDLC_UserGuide.md | 25 +++++++++++-------------- docs/tutorial.md | 12 ------------ 2 files changed, 11 insertions(+), 26 deletions(-) diff --git a/docs/maDLC_UserGuide.md b/docs/maDLC_UserGuide.md index dc79ca93d1..7acbca7bd5 100644 --- a/docs/maDLC_UserGuide.md +++ b/docs/maDLC_UserGuide.md @@ -224,21 +224,9 @@ deeplabcut.check_labels(config_path, visualizeindividuals=True/False) For each video directory in labeled-data this function creates a subdirectory with **labeled** as a suffix. Those directories contain the frames plotted with the annotated body parts. The user can double check if the body parts are labeled correctly. If they are not correct, the user can reload the frames (i.e. `deeplabcut.label_frames`), move them around, and click save again. -**CROP+LABEL:** When you are done checking the label quality and adjusting if needed, please then use this new function to crop frames /labels for more efficient training. PLEASE call this before you create a training dataset by running: -```python -deeplabcut.cropimagesandlabels(path_config_file, userfeedback=False) -``` -### Create Training Dataset: - -Ideally for training DNNs, one uses large batch sizes. Thus, for mutli-animal training batch processing is preferred. This means that we'd like the images to be similarly sized. You can of course have differing size of images you label (but we suggest cropping out useless pixels!). So, we have a new function that can pre-process your data to be compatible with batch training. As noted above, please run this function before you `create_multianmialtraining_dataset`. This function assures that each crop is "small", by default 400 x 400, which allows larger batchsizes and that there are multiple crops so that different parts of larger images are covered. - -You **should also first run** `deeplabcut.cropimagesandlabels(config_path)` before creating a training set, as we use batch processing and many users have smaller GPUs that cannot accommodate larger images + larger batchsizes. This is also a type of data augmentation. -NOTE: you can edit the crop size. If your images are very large (2k, 4k pixels), consider increasing this size, but be aware unless you have a lagre GPU (24 GB or more), you will hit memory errors. _You can lower the batchsize, but this may affect performance._ +### Create Training Dataset: -```python -deeplabcut.cropimagesandlabels(path_config_file, size=(400, 400), userfeedback=False) -``` At this point you also select your neural network type. Please see Lauer et al. 2021 for options. For **create_multianimaltraining_dataset** we already changed this such that by default you will use imgaug, ADAM optimization, our new DLCRNet, and batch training. We suggest these defaults at this time. Then run: ```python @@ -265,7 +253,7 @@ are listed in Box 2. **OPTIONAL POINTS:** With the data-driven skeleton selection introduced in 2.2rc1, DLC networks are trained by default -on complete skeletons (i.e., they learn all possible redundant connections), before being optimially pruned +on complete skeletons (i.e., they learn all possible redundant connections), before being optimally pruned at model evaluation. Although this procedure is by far superior to manually defining a graph, we leave manually-defining a skeleton as an option for the advanced user: @@ -288,6 +276,15 @@ Our recent [A Primer on Motion Capture with Deep Learning: Principles, Pitfalls, Alternatively, you can set the loader (as well as other training parameters) in the **pose_cfg.yaml** file of the model that you want to train. Note, to get details on the options, look at the default file: [**pose_cfg.yaml**](https://github.com/AlexEMG/DeepLabCut/blob/master/deeplabcut/pose_cfg.yaml). +Importantly, image cropping as previously done with `deeplabcut.cropimagesandlabels` in multi-animal projects +is now part of the augmentation pipeline. In other words, image crops are no longer stored in labeled-data/..._cropped +folders. Crop number and size still default to 10 and (400, 400), +but they can be easily edited prior to training in the **pose_cfg.yaml** configuration file. +If your images are very large (2k, 4k pixels), consider increasing this size, but be aware unless you have a lagre GPU (24 GB or more), you will hit memory errors. _You can lower the batchsize, but this may affect performance._ + +As a reminder, cropping images into smaller patches is a form of data augmentation that simultaneously +allows the use of batch processing even on small GPUs that could not otherwise accommodate larger images + larger batchsizes.. + ### Train The Network: diff --git a/docs/tutorial.md b/docs/tutorial.md index 5b8ea7064f..45fe1917ab 100644 --- a/docs/tutorial.md +++ b/docs/tutorial.md @@ -51,18 +51,6 @@ deeplabcut.check_labels( ) ``` - -**Crop frames to augment the dataset** -```python -deeplabcut.cropimagesandlabels( - config_path, - numcrops=10, - size=(400, 400), - userfeedback=False, -) -``` - - **Create the training dataset** ```python deeplabcut.create_multianimaltraining_dataset( From 002357d5c6ebf4dfb48baed4f234a7a8085b18e5 Mon Sep 17 00:00:00 2001 From: Jessy Lauer <30733203+jeylau@users.noreply.github.com> Date: Wed, 28 Jul 2021 16:14:45 +0200 Subject: [PATCH 47/58] Fix tests --- tests/test_crossvalutils.py | 2 +- tests/test_pose_multianimal_imgaug.py | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/tests/test_crossvalutils.py b/tests/test_crossvalutils.py index 574b934c15..506f287757 100644 --- a/tests/test_crossvalutils.py +++ b/tests/test_crossvalutils.py @@ -2,7 +2,7 @@ from deeplabcut.pose_estimation_tensorflow.lib import crossvalutils -BEST_GRAPH = [14, 15, 16, 17, 34, 35, 11, 22, 59, 3, 43] +BEST_GRAPH = [14, 15, 16, 11, 22, 31, 61, 7, 59, 62, 64] def test_get_n_best_paf_graphs(evaluation_data_and_metadata): diff --git a/tests/test_pose_multianimal_imgaug.py b/tests/test_pose_multianimal_imgaug.py index 79e498b0ef..64d5a3e196 100644 --- a/tests/test_pose_multianimal_imgaug.py +++ b/tests/test_pose_multianimal_imgaug.py @@ -78,7 +78,8 @@ def test_get_targetmaps(ma_dataset, num_idchannel): ma_dataset.cfg["num_idchannel"] = num_idchannel batch = ma_dataset.get_batch()[1:] target_size, sm_size = ma_dataset.calc_target_and_scoremap_sizes() - maps = ma_dataset.get_targetmaps_update(*batch, sm_size, target_size) + scale = np.mean(target_size / ma_dataset.default_crop_size) + maps = ma_dataset.get_targetmaps_update(*batch, sm_size, scale) assert all(len(map_) == ma_dataset.batch_size for map_ in maps.values()) assert maps[Batch.part_score_targets][0].shape \ == maps[Batch.part_score_weights][0].shape From 6d532ba66fe2d0aa662f53ecc1c151fb9a795263 Mon Sep 17 00:00:00 2001 From: Jessy Lauer <30733203+jeylau@users.noreply.github.com> Date: Fri, 30 Jul 2021 08:55:21 +0200 Subject: [PATCH 48/58] Add other crop sampling methods --- deeplabcut/pose_cfg.yaml | 2 +- .../datasets/augmentation.py | 57 +++++++++++-------- .../datasets/pose_multianimal_imgaug.py | 2 +- 3 files changed, 35 insertions(+), 26 deletions(-) diff --git a/deeplabcut/pose_cfg.yaml b/deeplabcut/pose_cfg.yaml index acc7e7ea4d..80d5d206f4 100644 --- a/deeplabcut/pose_cfg.yaml +++ b/deeplabcut/pose_cfg.yaml @@ -35,7 +35,7 @@ pre_resize: [] # Specify [width, height] if pre-resizing is desired # Smart, on-the-fly image cropping, replacing deeplabcut.cropimagesandlabels crop_size: [400, 400] # width, height max_shift: 0.4 # Maximum relative shift of the position of the crop center -weighted_sampling: true # Weigh crop centers by keypoint neighbor density +crop_sampling: density # Weigh crop centers by keypoint neighbor density #Data loaders, i.e. with additional data augmentation options (as of 2.0.9+): #default with be with no extra dataloaders. Other options: 'tensorpack, deterministic' diff --git a/deeplabcut/pose_estimation_tensorflow/datasets/augmentation.py b/deeplabcut/pose_estimation_tensorflow/datasets/augmentation.py index 302eb70d87..09620b916c 100644 --- a/deeplabcut/pose_estimation_tensorflow/datasets/augmentation.py +++ b/deeplabcut/pose_estimation_tensorflow/datasets/augmentation.py @@ -9,7 +9,7 @@ def __init__( width, height, max_shift=0.4, - weighted_sampling=True, + crop_sampling="density", ): """ Parameters @@ -24,8 +24,11 @@ def __init__( Maximum allowed shift of the cropping center position as a fraction of the crop size. - weighted_sampling : bool, optional (default=True) - Whether to weigh crop centers sampling based on + crop_sampling : str, optional (default="dense') + Crop centers sampling method. Must be either: + "uniform" (randomly over the image), + "keypoints" (randomly over the annotated keypoints), + or "density" (weighing preferentially dense regions of keypoints). keypoint neighbor density. """ super(KeypointAwareCropToFixedSize, self).__init__( @@ -34,7 +37,10 @@ def __init__( # Clamp to 40% of crop size to ensure that at least # the center keypoint remains visible after the offset is applied. self.max_shift = max(0., min(max_shift, 0.4)) - self.weighted_sampling = weighted_sampling + if crop_sampling not in ("uniform", "keypoints", "density"): + raise ValueError(f"Invalid sampling {crop_sampling}. Must be " + f"either 'uniform', 'keypoints', or 'density'.") + self.crop_sampling = crop_sampling @staticmethod def calc_n_neighbors(xy, radius): @@ -49,27 +55,30 @@ def _draw_samples(self, batch, random_state): shift_x = self.max_shift * self.size[0] * rngs[0].uniform(-1, 1, n_samples) shift_y = self.max_shift * self.size[1] * rngs[1].uniform(-1, 1, n_samples) for n in range(batch.nb_rows): - h, w = batch.images[n].shape[:2] - kpts = batch.keypoints[n].to_xy_array() - n_kpts = kpts.shape[0] - inds = np.arange(n_kpts) - if self.weighted_sampling: - # Points located close to one another are sampled preferentially - # in order to augment crowded regions. - radius = 0.1 * min(h, w) - n_neighbors = self.calc_n_neighbors(kpts, radius) - # Include keypoints in the count to avoid null probabilities - n_neighbors += 1 - p = n_neighbors / n_neighbors.sum() + if self.crop_sampling == "uniform": + center = random_state.uniform(size=2) else: - p = np.ones_like(inds) / n_kpts - center = kpts[random_state.choice(inds, p=p)] - # Shift the crop center in both dimensions by random amounts - # and normalize to the original image dimensions. - center[0] += shift_x[n] - center[0] /= w - center[1] += shift_y[n] - center[1] /= h + h, w = batch.images[n].shape[:2] + kpts = batch.keypoints[n].to_xy_array() + n_kpts = kpts.shape[0] + inds = np.arange(n_kpts) + if self.crop_sampling == "density": + # Points located close to one another are sampled preferentially + # in order to augment crowded regions. + radius = 0.1 * min(h, w) + n_neighbors = self.calc_n_neighbors(kpts, radius) + # Include keypoints in the count to avoid null probabilities + n_neighbors += 1 + p = n_neighbors / n_neighbors.sum() + else: + p = np.ones_like(inds) / n_kpts + center = kpts[random_state.choice(inds, p=p)] + # Shift the crop center in both dimensions by random amounts + # and normalize to the original image dimensions. + center[0] += shift_x[n] + center[0] /= w + center[1] += shift_y[n] + center[1] /= h offsets[n] = center offsets = np.clip(offsets, 0, 1) return [self.size] * n_samples, offsets[:, 0], offsets[:, 1] diff --git a/deeplabcut/pose_estimation_tensorflow/datasets/pose_multianimal_imgaug.py b/deeplabcut/pose_estimation_tensorflow/datasets/pose_multianimal_imgaug.py index 4873ec95a0..65da403409 100644 --- a/deeplabcut/pose_estimation_tensorflow/datasets/pose_multianimal_imgaug.py +++ b/deeplabcut/pose_estimation_tensorflow/datasets/pose_multianimal_imgaug.py @@ -96,7 +96,7 @@ def build_augmentation_pipeline(self, apply_prob=0.5): pipeline.add(iaa.PadToFixedSize(w, h)) pipeline.add( augmentation.KeypointAwareCropToFixedSize( - w, h, cfg.get("max_shift", 0.4), cfg.get("weighted_sampling", True) + w, h, cfg.get("max_shift", 0.4), cfg.get("crop_sampling", "density") ) ) From 070d30516e9c527e722eecdab9a7913916a0e3a4 Mon Sep 17 00:00:00 2001 From: Jessy <30733203+jeylau@users.noreply.github.com> Date: Mon, 2 Aug 2021 15:03:22 +0200 Subject: [PATCH 49/58] Evaluate detection error from GT neighbors --- .../core/evaluate_multianimal.py | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/deeplabcut/pose_estimation_tensorflow/core/evaluate_multianimal.py b/deeplabcut/pose_estimation_tensorflow/core/evaluate_multianimal.py index 7bcf73d747..068b5bfb6e 100644 --- a/deeplabcut/pose_estimation_tensorflow/core/evaluate_multianimal.py +++ b/deeplabcut/pose_estimation_tensorflow/core/evaluate_multianimal.py @@ -380,13 +380,16 @@ def evaluate_multianimal_full( if inds_gt.size and xy.size: # Pick the predictions closest to ground truth, # rather than the ones the model has most confident in - d = cdist(xy_gt.iloc[inds_gt], xy) - rows, cols = linear_sum_assignment(d) - min_dists = d[rows, cols] + xy_gt_values = xy_gt.iloc[inds_gt].values + neighbors = _find_closest_neighbors(xy_gt_values, xy, k=3) + found = neighbors != -1 + min_dists = np.linalg.norm( + xy_gt_values[found] - xy[neighbors[found]], axis=1, + ) inds = np.flatnonzero(all_bpts == bpt) - sl = imageindex, inds[inds_gt[rows]] + sl = imageindex, inds[inds_gt[found]] dist[sl] = min_dists - conf[sl] = probs_pred[n_joint][cols].squeeze() + conf[sl] = probs_pred[n_joint][neighbors[found]].squeeze() if plotting: gt = temp_xy.values.reshape( From 9b5051899c29dba793f299e257f39859c1e03561 Mon Sep 17 00:00:00 2001 From: Jessy <30733203+jeylau@users.noreply.github.com> Date: Mon, 2 Aug 2021 18:57:25 +0200 Subject: [PATCH 50/58] Minor fixes --- .../pose_estimation_tensorflow/core/predict_multianimal.py | 4 +--- deeplabcut/pose_estimation_tensorflow/lib/crossvalutils.py | 6 +++--- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/deeplabcut/pose_estimation_tensorflow/core/predict_multianimal.py b/deeplabcut/pose_estimation_tensorflow/core/predict_multianimal.py index c230ef6a8d..7c1aff40ac 100644 --- a/deeplabcut/pose_estimation_tensorflow/core/predict_multianimal.py +++ b/deeplabcut/pose_estimation_tensorflow/core/predict_multianimal.py @@ -45,9 +45,7 @@ def AssociationCosts( ny, nx, nlimbs = np.shape(partaffinitymaps) graph = cfg["partaffinityfield_graph"] limbs = cfg.get("paf_best", np.arange(len(graph))) - if len(graph) != len(limbs): - limbs = np.arange(len(graph)) - + graph = [cfg["partaffinityfield_graph"][l] for l in limbs] for l, (bp1, bp2) in zip(limbs, graph): # get coordinates for bp1 and bp2 C1 = coordinates[bp1] diff --git a/deeplabcut/pose_estimation_tensorflow/lib/crossvalutils.py b/deeplabcut/pose_estimation_tensorflow/lib/crossvalutils.py index c905b76b01..83525c00a7 100644 --- a/deeplabcut/pose_estimation_tensorflow/lib/crossvalutils.py +++ b/deeplabcut/pose_estimation_tensorflow/lib/crossvalutils.py @@ -135,9 +135,9 @@ def _calc_within_between_pafs( inds = np.flatnonzero(np.all(~np.isnan(coord), axis=1)) inds_gt = np.flatnonzero(np.all(~np.isnan(coord_gt), axis=1)) if inds.size and inds_gt.size: - d = cdist(coord_gt[inds_gt], coord[inds]) - rows, cols = linear_sum_assignment(d) - lookup[i] = dict(zip(inds_gt[rows], inds[cols])) + neighbors = _find_closest_neighbors(coord_gt[inds_gt], coord[inds], k=3) + found = neighbors != -1 + lookup[i] = dict(zip(inds_gt[found], inds[neighbors[found]])) costs = dict_["prediction"]["costs"] for k, v in costs.items(): From f4133a1f09a6b50e9efd3946015251d720f403e1 Mon Sep 17 00:00:00 2001 From: Jessy <30733203+jeylau@users.noreply.github.com> Date: Mon, 2 Aug 2021 21:51:25 +0200 Subject: [PATCH 51/58] Minor fixes --- .../lib/crossvalutils.py | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/deeplabcut/pose_estimation_tensorflow/lib/crossvalutils.py b/deeplabcut/pose_estimation_tensorflow/lib/crossvalutils.py index 83525c00a7..33cce55fc8 100644 --- a/deeplabcut/pose_estimation_tensorflow/lib/crossvalutils.py +++ b/deeplabcut/pose_estimation_tensorflow/lib/crossvalutils.py @@ -288,11 +288,11 @@ def _get_n_best_paf_graphs( if which not in ("best", "worst"): raise ValueError('`which` must be either "best" or "worst"') - (within_train, within_test), (between_train, _) = _calc_within_between_pafs( - data, metadata, train_set_only=False + (within_train, _), (between_train, _) = _calc_within_between_pafs( + data, metadata, train_set_only=True, ) # Handle unlabeled bodyparts... - existing_edges = set(k for k, v in within_test.items() if v) + existing_edges = set(k for k, v in within_train.items() if v) if ignore_inds is not None: existing_edges = existing_edges.difference(ignore_inds) existing_edges = list(existing_edges) @@ -306,11 +306,8 @@ def _get_n_best_paf_graphs( scores, _ = zip( *[ - _calc_separability(b_train, w_train, metric=metric) - for n, (w_train, b_train) in enumerate( - zip(within_train.values(), between_train.values()) - ) - if n in existing_edges + _calc_separability(between_train[n], within_train[n], metric=metric) + for n in existing_edges ] ) @@ -324,7 +321,7 @@ def _get_n_best_paf_graphs( if root is None: root = [] for edge in nx.maximum_spanning_edges(G, data=False): - root.append(full_graph.index(list(edge))) + root.append(full_graph.index(sorted(edge))) else: order = np.asarray(existing_edges)[np.argsort(scores)] if root is None: From c6bb6fb80fb8eee97c8bb99d6d2ce15ed2269260 Mon Sep 17 00:00:00 2001 From: Jessy <30733203+jeylau@users.noreply.github.com> Date: Tue, 3 Aug 2021 09:56:48 +0200 Subject: [PATCH 52/58] Some more fixes --- .../core/predict_multianimal.py | 2 +- .../pose_estimation_tensorflow/predict_videos.py | 12 ------------ 2 files changed, 1 insertion(+), 13 deletions(-) diff --git a/deeplabcut/pose_estimation_tensorflow/core/predict_multianimal.py b/deeplabcut/pose_estimation_tensorflow/core/predict_multianimal.py index 7c1aff40ac..93449e51f6 100644 --- a/deeplabcut/pose_estimation_tensorflow/core/predict_multianimal.py +++ b/deeplabcut/pose_estimation_tensorflow/core/predict_multianimal.py @@ -45,7 +45,7 @@ def AssociationCosts( ny, nx, nlimbs = np.shape(partaffinitymaps) graph = cfg["partaffinityfield_graph"] limbs = cfg.get("paf_best", np.arange(len(graph))) - graph = [cfg["partaffinityfield_graph"][l] for l in limbs] + graph = [graph[l] for l in limbs] for l, (bp1, bp2) in zip(limbs, graph): # get coordinates for bp1 and bp2 C1 = coordinates[bp1] diff --git a/deeplabcut/pose_estimation_tensorflow/predict_videos.py b/deeplabcut/pose_estimation_tensorflow/predict_videos.py index 9d232516bc..c17e2f33d4 100644 --- a/deeplabcut/pose_estimation_tensorflow/predict_videos.py +++ b/deeplabcut/pose_estimation_tensorflow/predict_videos.py @@ -290,18 +290,6 @@ def analyze_videos( from deeplabcut.pose_estimation_tensorflow.predict_multianimal import ( AnalyzeMultiAnimalVideo, ) - - # Re-use data-driven PAF graph for video analysis. Note that this must - # happen after setting up the TF session to avoid graph mismatch. - best_edges = dlc_cfg.get("paf_best") - if best_edges is not None: - best_graph = [dlc_cfg["partaffinityfield_graph"][i] for i in best_edges] - else: - best_graph = dlc_cfg["partaffinityfield_graph"] - - dlc_cfg["partaffinityfield_graph"] = best_graph - dlc_cfg["num_limbs"] = len(best_graph) - for video in Videos: AnalyzeMultiAnimalVideo( video, From f78075c9a3718e875c8ff706d488563a0bc53dc1 Mon Sep 17 00:00:00 2001 From: Jessy <30733203+jeylau@users.noreply.github.com> Date: Tue, 3 Aug 2021 14:46:15 +0200 Subject: [PATCH 53/58] Less fragile graph indexing --- .../core/evaluate_multianimal.py | 7 +++---- .../pose_estimation_tensorflow/lib/crossvalutils.py | 1 - .../pose_estimation_tensorflow/lib/inferenceutils.py | 3 ++- tests/test_inferenceutils.py | 8 ++------ 4 files changed, 7 insertions(+), 12 deletions(-) diff --git a/deeplabcut/pose_estimation_tensorflow/core/evaluate_multianimal.py b/deeplabcut/pose_estimation_tensorflow/core/evaluate_multianimal.py index 068b5bfb6e..7ba201ec50 100644 --- a/deeplabcut/pose_estimation_tensorflow/core/evaluate_multianimal.py +++ b/deeplabcut/pose_estimation_tensorflow/core/evaluate_multianimal.py @@ -203,7 +203,8 @@ def evaluate_multianimal_full( # TODO: IMPLEMENT for different batch sizes? dlc_cfg["batch_size"] = 1 # due to differently sized images!!! - + # Ignore best edges possibly defined during a prior evaluation + _ = dlc_cfg.pop("paf_best", None) joints = dlc_cfg["all_joints_names"] # Create folder structure to store results. @@ -505,9 +506,7 @@ def evaluate_multianimal_full( "nms radius": dlc_cfg["nmsradius"], "minimal confidence": dlc_cfg["minconfidence"], "PAFgraph": dlc_cfg["partaffinityfield_graph"], - "PAFinds": dlc_cfg.get( - "paf_best", - np.arange(len(dlc_cfg["partaffinityfield_graph"])), + "PAFinds": np.arange(len(dlc_cfg["partaffinityfield_graph"]), ), "all_joints": [ [i] for i in range(len(dlc_cfg["all_joints"])) diff --git a/deeplabcut/pose_estimation_tensorflow/lib/crossvalutils.py b/deeplabcut/pose_estimation_tensorflow/lib/crossvalutils.py index 33cce55fc8..5985ab2e1a 100644 --- a/deeplabcut/pose_estimation_tensorflow/lib/crossvalutils.py +++ b/deeplabcut/pose_estimation_tensorflow/lib/crossvalutils.py @@ -231,7 +231,6 @@ def _benchmark_paf_graphs( print(f"Graph {j}|{n_graphs}") graph = [paf_graph[i] for i in paf] ass.paf_inds = paf - ass.graph = graph ass.assemble() oks = evaluate_assembly(ass.assemblies, ass_true_dict, oks_sigma) all_metrics.append(oks) diff --git a/deeplabcut/pose_estimation_tensorflow/lib/inferenceutils.py b/deeplabcut/pose_estimation_tensorflow/lib/inferenceutils.py index fcd163bf5b..b26f50d9b0 100644 --- a/deeplabcut/pose_estimation_tensorflow/lib/inferenceutils.py +++ b/deeplabcut/pose_estimation_tensorflow/lib/inferenceutils.py @@ -347,7 +347,8 @@ def _flatten_detections(data_dict): def extract_best_links(self, joints_dict, costs, trees=None): links = [] - for (s, t), ind in zip(self.graph, self.paf_inds): + for ind in self.paf_inds: + s, t = self.graph[ind] dets_s = joints_dict.get(s, None) dets_t = joints_dict.get(t, None) if dets_s is None or dets_t is None: diff --git a/tests/test_inferenceutils.py b/tests/test_inferenceutils.py index 9ef969d55e..f43d3a3b95 100644 --- a/tests/test_inferenceutils.py +++ b/tests/test_inferenceutils.py @@ -135,9 +135,7 @@ def test_assembler(tmpdir_factory, real_assemblies): [3, 4], [0, 2], ] - paf_inds = [ass.graph.index(edge) for edge in naive_graph] - ass.graph = naive_graph - ass.paf_inds = paf_inds + ass.paf_inds = [ass.graph.index(edge) for edge in naive_graph] ass.assemble() assert not ass.unique assert len(ass.assemblies) == len(real_assemblies) @@ -184,9 +182,7 @@ def test_assembler_with_identity(tmpdir_factory, real_assemblies): [3, 4], [0, 2], ] - paf_inds = [ass.graph.index(edge) for edge in naive_graph] - ass.graph = naive_graph - ass.paf_inds = paf_inds + ass.paf_inds = [ass.graph.index(edge) for edge in naive_graph] ass.assemble() assert not ass.unique assert len(ass.assemblies) == len(real_assemblies) From 786560e0fa35d7ffab9b663e69e3fbade1d05fcf Mon Sep 17 00:00:00 2001 From: Alexander Mathis Date: Wed, 4 Aug 2021 11:38:22 +0200 Subject: [PATCH 54/58] Update pose_cfg.yaml details on ratio --- deeplabcut/pose_cfg.yaml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/deeplabcut/pose_cfg.yaml b/deeplabcut/pose_cfg.yaml index 80d5d206f4..06ab7afcde 100644 --- a/deeplabcut/pose_cfg.yaml +++ b/deeplabcut/pose_cfg.yaml @@ -27,6 +27,7 @@ dataset_type: imgaug batch_size: 1 # Probability with which the augmenters will be applied to input images +# Note some augmentations have their own probability (e.g. claheratio/rotratio/...) apply_prob: 0.5 # Resize images prior to augmentation @@ -43,7 +44,7 @@ crop_sampling: density # Weigh crop centers by keypoint neighbor density #For deterministic, see https://github.com/AlexEMG/DeepLabCut/pull/324 #For tensorpack, see https://github.com/AlexEMG/DeepLabCut/pull/409 -#what is the fraction of training samples with cropping? (used for scalecrop, ) +#what is the fraction of training samples with cropping? (used for scalecrop) cropratio: 0.4 # see below for cropping variables for tensorpack and scalecrop (these need to be set in pose_cfg.yaml per model) # for imagaug strengh is modulated by crop_by From ad2186e83f003864c98cba2414d8dac16259a479 Mon Sep 17 00:00:00 2001 From: Jessy <30733203+jeylau@users.noreply.github.com> Date: Wed, 4 Aug 2021 12:19:51 +0200 Subject: [PATCH 55/58] Add default, hybrid crop sampling --- deeplabcut/pose_cfg.yaml | 2 +- .../datasets/augmentation.py | 19 +++++++++++-------- 2 files changed, 12 insertions(+), 9 deletions(-) diff --git a/deeplabcut/pose_cfg.yaml b/deeplabcut/pose_cfg.yaml index 06ab7afcde..a6893a8bc6 100644 --- a/deeplabcut/pose_cfg.yaml +++ b/deeplabcut/pose_cfg.yaml @@ -36,7 +36,7 @@ pre_resize: [] # Specify [width, height] if pre-resizing is desired # Smart, on-the-fly image cropping, replacing deeplabcut.cropimagesandlabels crop_size: [400, 400] # width, height max_shift: 0.4 # Maximum relative shift of the position of the crop center -crop_sampling: density # Weigh crop centers by keypoint neighbor density +crop_sampling: hybrid # Sample crop centers either uniformly over the image or based on keypoint neighbor density, at random #Data loaders, i.e. with additional data augmentation options (as of 2.0.9+): #default with be with no extra dataloaders. Other options: 'tensorpack, deterministic' diff --git a/deeplabcut/pose_estimation_tensorflow/datasets/augmentation.py b/deeplabcut/pose_estimation_tensorflow/datasets/augmentation.py index 09620b916c..9e64f260b8 100644 --- a/deeplabcut/pose_estimation_tensorflow/datasets/augmentation.py +++ b/deeplabcut/pose_estimation_tensorflow/datasets/augmentation.py @@ -9,7 +9,7 @@ def __init__( width, height, max_shift=0.4, - crop_sampling="density", + crop_sampling="hybrid", ): """ Parameters @@ -24,12 +24,12 @@ def __init__( Maximum allowed shift of the cropping center position as a fraction of the crop size. - crop_sampling : str, optional (default="dense') + crop_sampling : str, optional (default="hybrid") Crop centers sampling method. Must be either: "uniform" (randomly over the image), "keypoints" (randomly over the annotated keypoints), - or "density" (weighing preferentially dense regions of keypoints). - keypoint neighbor density. + "density" (weighing preferentially dense regions of keypoints), + or "hybrid" (alternating randomly between "uniform" and "density"). """ super(KeypointAwareCropToFixedSize, self).__init__( width, height, name="kptscrop", @@ -37,9 +37,9 @@ def __init__( # Clamp to 40% of crop size to ensure that at least # the center keypoint remains visible after the offset is applied. self.max_shift = max(0., min(max_shift, 0.4)) - if crop_sampling not in ("uniform", "keypoints", "density"): + if crop_sampling not in ("uniform", "keypoints", "density", "hybrid"): raise ValueError(f"Invalid sampling {crop_sampling}. Must be " - f"either 'uniform', 'keypoints', or 'density'.") + f"either 'uniform', 'keypoints', 'density', or 'hybrid.") self.crop_sampling = crop_sampling @staticmethod @@ -54,15 +54,18 @@ def _draw_samples(self, batch, random_state): rngs = random_state.duplicate(2) shift_x = self.max_shift * self.size[0] * rngs[0].uniform(-1, 1, n_samples) shift_y = self.max_shift * self.size[1] * rngs[1].uniform(-1, 1, n_samples) + sampling = self.crop_sampling for n in range(batch.nb_rows): - if self.crop_sampling == "uniform": + if self.crop_sampling == "hybrid": + sampling = random_state.choice(["uniform", "density"]) + if sampling == "uniform": center = random_state.uniform(size=2) else: h, w = batch.images[n].shape[:2] kpts = batch.keypoints[n].to_xy_array() n_kpts = kpts.shape[0] inds = np.arange(n_kpts) - if self.crop_sampling == "density": + if sampling == "density": # Points located close to one another are sampled preferentially # in order to augment crowded regions. radius = 0.1 * min(h, w) From d17c2f71d37a0f1a0c223793fb229a75ecf54f16 Mon Sep 17 00:00:00 2001 From: Alexander Mathis Date: Thu, 5 Aug 2021 10:39:23 +0200 Subject: [PATCH 56/58] Update pose_cfg.yaml --- deeplabcut/pose_cfg.yaml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/deeplabcut/pose_cfg.yaml b/deeplabcut/pose_cfg.yaml index a6893a8bc6..3d4229f29e 100644 --- a/deeplabcut/pose_cfg.yaml +++ b/deeplabcut/pose_cfg.yaml @@ -38,6 +38,13 @@ crop_size: [400, 400] # width, height max_shift: 0.4 # Maximum relative shift of the position of the crop center crop_sampling: hybrid # Sample crop centers either uniformly over the image or based on keypoint neighbor density, at random +# Other crop_sampling variants: +#- uniform -- spatially uniform sampling of crops (over the image) +#- keypoints -- keypoint based sampling of crops (over the image) +#- density -- keypoint based sampling of crops biasing towards regions with more keypoints (over the image) +#- hybrid -- 50% density and 50% uniform + + #Data loaders, i.e. with additional data augmentation options (as of 2.0.9+): #default with be with no extra dataloaders. Other options: 'tensorpack, deterministic' #types of datasets, see factory: deeplabcut/pose_estimation_tensorflow/dataset/factory.py From c0d177de16e2f184cb8798d3797bc29595c0474a Mon Sep 17 00:00:00 2001 From: Jessy <30733203+jeylau@users.noreply.github.com> Date: Thu, 5 Aug 2021 13:03:58 +0200 Subject: [PATCH 57/58] Add missing argument and documentation --- ...tiple_individuals_trainingsetmanipulation.py | 17 ++++++++++++++++- .../datasets/pose_multianimal_imgaug.py | 2 +- docs/maDLC_UserGuide.md | 6 ++---- examples/testscript_multianimal.py | 1 - 4 files changed, 19 insertions(+), 7 deletions(-) diff --git a/deeplabcut/generate_training_dataset/multiple_individuals_trainingsetmanipulation.py b/deeplabcut/generate_training_dataset/multiple_individuals_trainingsetmanipulation.py index 9044e96466..73e9fe1b2b 100755 --- a/deeplabcut/generate_training_dataset/multiple_individuals_trainingsetmanipulation.py +++ b/deeplabcut/generate_training_dataset/multiple_individuals_trainingsetmanipulation.py @@ -101,6 +101,7 @@ def create_multianimaltraining_dataset( net_type=None, numdigits=2, crop_size=(400, 400), + crop_sampling="hybrid", paf_graph=None, trainIndices=None, testIndices=None, @@ -139,6 +140,14 @@ def create_multianimaltraining_dataset( Dimensions (width, height) of the crops for data augmentation. Default is 400x400. + crop_sampling: str, optional + Crop centers sampling method. Must be either: + "uniform" (randomly over the image), + "keypoints" (randomly over the annotated keypoints), + "density" (weighing preferentially dense regions of keypoints), + or "hybrid" (alternating randomly between "uniform" and "density"). + Default is "hybrid". + paf_graph: list of lists, optional (default=None) If not None, overwrite the default complete graph. This is useful for advanced users who already know a good graph, or simply want to use a specific one. Note that, in that case, @@ -164,6 +173,10 @@ def create_multianimaltraining_dataset( if len(crop_size) != 2 or not all(isinstance(v, int) for v in crop_size): raise ValueError("Crop size must be a tuple of two integers (width, height).") + if crop_sampling not in ("uniform", "keypoints", "density", "hybrid"): + raise ValueError(f"Invalid sampling {crop_sampling}. Must be " + f"either 'uniform', 'keypoints', 'density', or 'hybrid.") + # Loading metadata from config file: cfg = auxiliaryfunctions.read_config(config) scorer = cfg["scorer"] @@ -386,6 +399,7 @@ def create_multianimaltraining_dataset( if cfg.get("identity", False) else 0, "crop_size": list(crop_size), + "crop_sampling": crop_sampling, } trainingdata = MakeTrain_pose_yaml( @@ -549,5 +563,6 @@ def strip_cropped_image_name(path): Shuffles=sorted(shuffle_inds), net_type=net_type, paf_graph=pose_cfg["partaffinityfield_graph"], - crop_size=pose_cfg.get("crop_size", [400, 400]) + crop_size=pose_cfg.get("crop_size", [400, 400]), + crop_sampling=pose_cfg.get("crop_sampling", "hybrid"), ) diff --git a/deeplabcut/pose_estimation_tensorflow/datasets/pose_multianimal_imgaug.py b/deeplabcut/pose_estimation_tensorflow/datasets/pose_multianimal_imgaug.py index 65da403409..f230ae4219 100644 --- a/deeplabcut/pose_estimation_tensorflow/datasets/pose_multianimal_imgaug.py +++ b/deeplabcut/pose_estimation_tensorflow/datasets/pose_multianimal_imgaug.py @@ -96,7 +96,7 @@ def build_augmentation_pipeline(self, apply_prob=0.5): pipeline.add(iaa.PadToFixedSize(w, h)) pipeline.add( augmentation.KeypointAwareCropToFixedSize( - w, h, cfg.get("max_shift", 0.4), cfg.get("crop_sampling", "density") + w, h, cfg.get("max_shift", 0.4), cfg.get("crop_sampling", "hybrid") ) ) diff --git a/docs/maDLC_UserGuide.md b/docs/maDLC_UserGuide.md index 7acbca7bd5..212809b55b 100644 --- a/docs/maDLC_UserGuide.md +++ b/docs/maDLC_UserGuide.md @@ -278,10 +278,8 @@ Alternatively, you can set the loader (as well as other training parameters) in Importantly, image cropping as previously done with `deeplabcut.cropimagesandlabels` in multi-animal projects is now part of the augmentation pipeline. In other words, image crops are no longer stored in labeled-data/..._cropped -folders. Crop number and size still default to 10 and (400, 400), -but they can be easily edited prior to training in the **pose_cfg.yaml** configuration file. -If your images are very large (2k, 4k pixels), consider increasing this size, but be aware unless you have a lagre GPU (24 GB or more), you will hit memory errors. _You can lower the batchsize, but this may affect performance._ - +folders. Crop size still defaults to (400, 400); if your images are very large (2k, 4k pixels), consider increasing this size, but be aware unless you have a lagre GPU (24 GB or more), you will hit memory errors. You can lower the batch size, but this may affect performance. +In addition, one can specify a crop sampling strategy: crop centers can either be taken at random over the image (`uniform`) or the annotated keypoints (`keypoints`); with a focus on regions of the scene with high body part density (`density`); last, combining `uniform` and `density` for a `hybrid` balanced strategy (the default strategy). Note that both parameters can be easily edited prior to training in the **pose_cfg.yaml** configuration file. As a reminder, cropping images into smaller patches is a form of data augmentation that simultaneously allows the use of batch processing even on small GPUs that could not otherwise accommodate larger images + larger batchsizes.. diff --git a/examples/testscript_multianimal.py b/examples/testscript_multianimal.py index 3ade3dc827..285c3685f4 100644 --- a/examples/testscript_multianimal.py +++ b/examples/testscript_multianimal.py @@ -98,7 +98,6 @@ "batch_size": 1, "save_iters": N_ITER, "display_iters": N_ITER // 2, - "n_crops": 2, "crop_size": [200, 200], # "multi_step": [[0.001, N_ITER]], } From ccfe5eb0184c0340f5787d8c7b7fbe3a71805945 Mon Sep 17 00:00:00 2001 From: Alexander Mathis Date: Thu, 5 Aug 2021 14:42:00 +0200 Subject: [PATCH 58/58] Update maDLC_UserGuide.md --- docs/maDLC_UserGuide.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/docs/maDLC_UserGuide.md b/docs/maDLC_UserGuide.md index 212809b55b..a51e3087c1 100644 --- a/docs/maDLC_UserGuide.md +++ b/docs/maDLC_UserGuide.md @@ -278,10 +278,11 @@ Alternatively, you can set the loader (as well as other training parameters) in Importantly, image cropping as previously done with `deeplabcut.cropimagesandlabels` in multi-animal projects is now part of the augmentation pipeline. In other words, image crops are no longer stored in labeled-data/..._cropped -folders. Crop size still defaults to (400, 400); if your images are very large (2k, 4k pixels), consider increasing this size, but be aware unless you have a lagre GPU (24 GB or more), you will hit memory errors. You can lower the batch size, but this may affect performance. -In addition, one can specify a crop sampling strategy: crop centers can either be taken at random over the image (`uniform`) or the annotated keypoints (`keypoints`); with a focus on regions of the scene with high body part density (`density`); last, combining `uniform` and `density` for a `hybrid` balanced strategy (the default strategy). Note that both parameters can be easily edited prior to training in the **pose_cfg.yaml** configuration file. +folders. Crop size still defaults to (400, 400); if your images are very large (e.g. 2k, 4k pixels), consider increasing the crop size, but be aware unless you have a strong GPU (24 GB memory or more), you will hit memory errors. You can lower the batch size, but this may affect performance. + +In addition, one can specify a crop sampling strategy: crop centers can either be taken at random over the image (`uniform`) or the annotated keypoints (`keypoints`); with a focus on regions of the scene with high body part density (`density`); last, combining `uniform` and `density` for a `hybrid` balanced strategy (this is the default strategy). Note that both parameters can be easily edited prior to training in the **pose_cfg.yaml** configuration file. As a reminder, cropping images into smaller patches is a form of data augmentation that simultaneously -allows the use of batch processing even on small GPUs that could not otherwise accommodate larger images + larger batchsizes.. +allows the use of batch processing even on small GPUs that could not otherwise accommodate larger images + larger batchsizes (this usually increases performance and decreasing training time). ### Train The Network: