Class SAM2

  • All Implemented Interfaces:
    adams.core.CleanUpHandler, adams.core.GlobalInfoSupporter, adams.core.logging.LoggingLevelHandler, adams.core.logging.LoggingSupporter, adams.core.SizeOfHandler, adams.gui.visualization.segmentation.tool.CustomizableTool, adams.gui.visualization.segmentation.tool.Tool, Serializable

    public class SAM2
    extends adams.gui.visualization.segmentation.tool.AbstractToolWithParameterPanel
    Uses SAM (via docker and redis) to aid human in annotating.
    Author:
    fracpete (fracpete at waikato dot ac dot nz)
    See Also:
    Serialized Form
    • Field Summary

      Fields 
      Modifier and Type Field Description
      protected adams.gui.core.BaseComboBox<String> m_ComboBoxModelName
      the combobox for the model name.
      protected Color m_MarkerColor
      the marker color.
      protected int m_MarkerSize
      the marker size.
      protected int m_MaxObjectSize
      the maximum object size (width/height).
      protected int m_MinObjectSize
      the minimum object size (width/height).
      protected double m_MinProbabilityDetection
      the minimum probability for the detections.
      protected float m_MinProbabilityMask
      the minimum probability for the mask pixels.
      protected ai.djl.repository.zoo.ZooModel<ai.djl.modality.cv.translator.Sam2Translator.Sam2Input,​ai.djl.modality.cv.output.DetectedObjects> m_Model
      the current model.
      protected String m_ModelName
      the model to use.
      protected ai.djl.inference.Predictor<ai.djl.modality.cv.translator.Sam2Translator.Sam2Input,​ai.djl.modality.cv.output.DetectedObjects> m_Predictor
      the current predictor.
      protected adams.gui.core.BaseColorTextField m_TextMarkerColor
      the marker color.
      protected adams.gui.core.NumberTextField m_TextMarkerSize
      the marker size.
      protected adams.gui.core.NumberTextField m_TextMaxObjectSize
      the maximum object size (width/height).
      protected adams.gui.core.NumberTextField m_TextMinObjectSize
      the minimum object size (width/height).
      protected adams.gui.core.NumberTextField m_TextMinProbabilityDetection
      the minimum detection probability.
      protected adams.gui.core.NumberTextField m_TextMinProbabilityMask
      the minimum mask pixel probability.
      • Fields inherited from class adams.gui.visualization.segmentation.tool.AbstractToolWithParameterPanel

        m_ButtonApply, m_ButtonFavorites, m_IgnoreOptionsUpdate, m_InitialOptions, m_ParameterPanel
      • Fields inherited from class adams.gui.visualization.segmentation.tool.AbstractTool

        m_KeyListener, m_Listener, m_MotionListener, m_PaintOperation, m_PanelCanvas, m_PanelFullOptions, m_PanelOptions
      • Fields inherited from class adams.core.logging.LoggingObject

        m_Logger, m_LoggingIsEnabled, m_LoggingLevel
    • Constructor Summary

      Constructors 
      Constructor Description
      SAM2()  
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      protected void addOptions​(adams.gui.core.ParameterPanel paramPanel)
      Fills the parameter panel with the options.
      protected String checkBeforeApply()
      Checks the parameters before applying them.
      void cleanUp()
      Cleans up data structures, frees up memory.
      protected Cursor createCursor()
      Creates the mouse cursor to use.
      protected adams.gui.visualization.segmentation.tool.ToolKeyAdapter createKeyListener()
      Creates the key listener to use.
      protected adams.gui.visualization.segmentation.tool.ToolMouseAdapter createMouseListener()
      Creates the mouse listener to use.
      protected adams.gui.visualization.segmentation.tool.ToolMouseMotionAdapter createMouseMotionListener()
      Creates the mouse motion listener to use.
      protected void detect()
      Applies SAM2 to the image and points.
      protected void doApply()
      Applies the settings.
      Icon getIcon()
      The icon of the tool.
      String getName()
      The name of the tool.
      String globalInfo()
      Returns a string describing the object.
      protected void initialize()
      Initializes the members.
      protected void loadModel()
      Loads the model, if necessary.
      • Methods inherited from class adams.gui.visualization.segmentation.tool.AbstractToolWithParameterPanel

        apply, applyOptions, applyOptionsQuietly, createOptionPanel, getCurrentOptions, getFavoritesOptions, getOption, getOptionPanel, postProcessCurrentOptions, retrieveCurrentOptions, setFavoritesOptions, setInitialOptions, setOption, showFavoritesMenu, updateOptions
      • Methods inherited from class adams.gui.visualization.segmentation.tool.AbstractTool

        activate, annotationsChanged, createApplyButton, createPaintOperation, deactivate, getActiveColor, getActiveCombinedSubLayer, getActiveImage, getActiveOverlay, getCanvas, getCursor, getKeyListener, getLayerManager, getModifiedIcon, getMouseListener, getMouseMotionListener, getPaintOperation, getUnmodifiedIcon, getZoom, hasActiveCombinedSubLayer, hasActiveOverlay, hasAnyActive, isAutomaticUndoEnabled, setApplyButtonState, setCanvas
      • Methods inherited from class adams.core.logging.CustomLoggingLevelObject

        setLoggingLevel
      • Methods inherited from class adams.core.logging.LoggingObject

        configureLogger, getLogger, getLoggingLevel, initializeLogging, isLoggingEnabled, sizeOf
      • Methods inherited from interface adams.core.logging.LoggingLevelHandler

        getLoggingLevel, setLoggingLevel
      • Methods inherited from interface adams.core.logging.LoggingSupporter

        getLogger, isLoggingEnabled
      • Methods inherited from interface adams.gui.visualization.segmentation.tool.Tool

        activate, annotationsChanged, deactivate, getActiveColor, getActiveCombinedSubLayer, getActiveImage, getActiveOverlay, getCanvas, getCursor, getKeyListener, getLayerManager, getMouseListener, getMouseMotionListener, getPaintOperation, getZoom, hasActiveCombinedSubLayer, hasActiveOverlay, hasAnyActive, isAutomaticUndoEnabled, setCanvas
    • Field Detail

      • m_TextMarkerSize

        protected adams.gui.core.NumberTextField m_TextMarkerSize
        the marker size.
      • m_TextMarkerColor

        protected adams.gui.core.BaseColorTextField m_TextMarkerColor
        the marker color.
      • m_ComboBoxModelName

        protected adams.gui.core.BaseComboBox<String> m_ComboBoxModelName
        the combobox for the model name.
      • m_TextMinProbabilityDetection

        protected adams.gui.core.NumberTextField m_TextMinProbabilityDetection
        the minimum detection probability.
      • m_TextMinProbabilityMask

        protected adams.gui.core.NumberTextField m_TextMinProbabilityMask
        the minimum mask pixel probability.
      • m_TextMinObjectSize

        protected adams.gui.core.NumberTextField m_TextMinObjectSize
        the minimum object size (width/height).
      • m_TextMaxObjectSize

        protected adams.gui.core.NumberTextField m_TextMaxObjectSize
        the maximum object size (width/height).
      • m_MarkerSize

        protected int m_MarkerSize
        the marker size.
      • m_MarkerColor

        protected Color m_MarkerColor
        the marker color.
      • m_ModelName

        protected String m_ModelName
        the model to use.
      • m_MinProbabilityDetection

        protected double m_MinProbabilityDetection
        the minimum probability for the detections.
      • m_MinProbabilityMask

        protected float m_MinProbabilityMask
        the minimum probability for the mask pixels.
      • m_MinObjectSize

        protected int m_MinObjectSize
        the minimum object size (width/height).
      • m_MaxObjectSize

        protected int m_MaxObjectSize
        the maximum object size (width/height).
      • m_Model

        protected transient ai.djl.repository.zoo.ZooModel<ai.djl.modality.cv.translator.Sam2Translator.Sam2Input,​ai.djl.modality.cv.output.DetectedObjects> m_Model
        the current model.
      • m_Predictor

        protected transient ai.djl.inference.Predictor<ai.djl.modality.cv.translator.Sam2Translator.Sam2Input,​ai.djl.modality.cv.output.DetectedObjects> m_Predictor
        the current predictor.
    • Constructor Detail

      • SAM2

        public SAM2()
    • Method Detail

      • globalInfo

        public String globalInfo()
        Returns a string describing the object.
        Returns:
        a description suitable for displaying in the gui
      • initialize

        protected void initialize()
        Initializes the members.
        Overrides:
        initialize in class adams.gui.visualization.segmentation.tool.AbstractToolWithParameterPanel
      • getName

        public String getName()
        The name of the tool.
        Returns:
        the name
      • getIcon

        public Icon getIcon()
        The icon of the tool.
        Returns:
        the icon
      • createCursor

        protected Cursor createCursor()
        Creates the mouse cursor to use.
        Specified by:
        createCursor in class adams.gui.visualization.segmentation.tool.AbstractTool
        Returns:
        the cursor
      • createMouseListener

        protected adams.gui.visualization.segmentation.tool.ToolMouseAdapter createMouseListener()
        Creates the mouse listener to use.
        Specified by:
        createMouseListener in class adams.gui.visualization.segmentation.tool.AbstractTool
        Returns:
        the listener, null if not applicable
      • createMouseMotionListener

        protected adams.gui.visualization.segmentation.tool.ToolMouseMotionAdapter createMouseMotionListener()
        Creates the mouse motion listener to use.
        Specified by:
        createMouseMotionListener in class adams.gui.visualization.segmentation.tool.AbstractTool
        Returns:
        the listener, null if not applicable
      • createKeyListener

        protected adams.gui.visualization.segmentation.tool.ToolKeyAdapter createKeyListener()
        Creates the key listener to use.
        Overrides:
        createKeyListener in class adams.gui.visualization.segmentation.tool.AbstractTool
        Returns:
        the listener, null if not applicable
      • checkBeforeApply

        protected String checkBeforeApply()
        Checks the parameters before applying them.
        Overrides:
        checkBeforeApply in class adams.gui.visualization.segmentation.tool.AbstractTool
        Returns:
        null if checks passed, otherwise error message (gets displayed in GUI)
      • doApply

        protected void doApply()
        Applies the settings.
        Specified by:
        doApply in class adams.gui.visualization.segmentation.tool.AbstractTool
      • addOptions

        protected void addOptions​(adams.gui.core.ParameterPanel paramPanel)
        Fills the parameter panel with the options.
        Specified by:
        addOptions in class adams.gui.visualization.segmentation.tool.AbstractToolWithParameterPanel
        Parameters:
        paramPanel - for adding the options to
      • loadModel

        protected void loadModel()
                          throws Exception
        Loads the model, if necessary.
        Throws:
        Exception - if model loading fails
      • detect

        protected void detect()
        Applies SAM2 to the image and points.
      • cleanUp

        public void cleanUp()
        Cleans up data structures, frees up memory.
        Specified by:
        cleanUp in interface adams.core.CleanUpHandler
        Overrides:
        cleanUp in class adams.gui.visualization.segmentation.tool.AbstractTool