Source code for jactorch.vision.peak

#! /usr/bin/env python3
# -*- coding: utf-8 -*-
# File   : peak.py
# Author : Jiayuan Mao
# Email  : maojiayuan@gmail.com
# Date   : 04/07/2019
#
# This file is part of Jacinle.
# Distributed under terms of the MIT license.

"""
Extracting peaks from feature maps: inspired by `skimage.features.peak`.
"""

import torch
from .smooth import maximum_smooth

__all__ = ['peak_local_max']


def _get_high_intensity_peaks(is_peak, nr_peaks, feature_maps):
    peaks = torch.nonzero(is_peak)
    if nr_peaks is not None:
        # TODO(Jiayuan Mao @ 04/07): select the top-K peaks.
        raise NotImplementedError()
    return is_peak, peaks


[docs] def peak_local_max(feature_maps, radius, exclude_border=True): if type(exclude_border) is bool: if exclude_border: exclude_border = radius else: exclude_border = 0 max_fmaps = maximum_smooth(feature_maps, 2 * radius + 1) is_peak = max_fmaps == feature_maps if exclude_border > 0: is_peak[..., :exclude_border, :] = 0 is_peak[..., -exclude_border:, :] = 0 is_peak[..., :, :exclude_border] = 0 is_peak[..., :, -exclude_border:] = 0 return _get_high_intensity_peaks(is_peak, None, None)