amazonka-lookoutvision-2.0: gen/Amazonka/LookoutVision/Types/DetectAnomalyResult.hs
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DuplicateRecordFields #-}
{-# LANGUAGE NamedFieldPuns #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE StrictData #-}
{-# LANGUAGE NoImplicitPrelude #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
{-# OPTIONS_GHC -fno-warn-unused-matches #-}
-- Derived from AWS service descriptions, licensed under Apache 2.0.
-- |
-- Module : Amazonka.LookoutVision.Types.DetectAnomalyResult
-- Copyright : (c) 2013-2023 Brendan Hay
-- License : Mozilla Public License, v. 2.0.
-- Maintainer : Brendan Hay
-- Stability : auto-generated
-- Portability : non-portable (GHC extensions)
module Amazonka.LookoutVision.Types.DetectAnomalyResult where
import qualified Amazonka.Core as Core
import qualified Amazonka.Core.Lens.Internal as Lens
import qualified Amazonka.Data as Data
import Amazonka.LookoutVision.Types.Anomaly
import Amazonka.LookoutVision.Types.ImageSource
import qualified Amazonka.Prelude as Prelude
-- | The prediction results from a call to DetectAnomalies.
-- @DetectAnomalyResult@ includes classification information for the
-- prediction (@IsAnomalous@ and @Confidence@). If the model you use is an
-- image segementation model, @DetectAnomalyResult@ also includes
-- segmentation information (@Anomalies@ and @AnomalyMask@). Classification
-- information is calculated separately from segmentation information and
-- you shouldn\'t assume a relationship between them.
--
-- /See:/ 'newDetectAnomalyResult' smart constructor.
data DetectAnomalyResult = DetectAnomalyResult'
{ -- | If the model is an image segmentation model, @Anomalies@ contains a list
-- of anomaly types found in the image. There is one entry for each type of
-- anomaly found (even if multiple instances of an anomaly type exist on
-- the image). The first element in the list is always an anomaly type
-- representing the image background (\'background\') and shouldn\'t be
-- considered an anomaly. Amazon Lookout for Vision automatically add the
-- background anomaly type to the response, and you don\'t need to declare
-- a background anomaly type in your dataset.
--
-- If the list has one entry (\'background\'), no anomalies were found on
-- the image.
--
-- An image classification model doesn\'t return an @Anomalies@ list.
anomalies :: Prelude.Maybe [Anomaly],
-- | If the model is an image segmentation model, @AnomalyMask@ contains
-- pixel masks that covers all anomaly types found on the image. Each
-- anomaly type has a different mask color. To map a color to an anomaly
-- type, see the @color@ field of the PixelAnomaly object.
--
-- An image classification model doesn\'t return an @Anomalies@ list.
anomalyMask :: Prelude.Maybe Data.Base64,
-- | The confidence that Lookout for Vision has in the accuracy of the
-- classification in @IsAnomalous@.
confidence :: Prelude.Maybe Prelude.Double,
-- | True if Amazon Lookout for Vision classifies the image as containing an
-- anomaly, otherwise false.
isAnomalous :: Prelude.Maybe Prelude.Bool,
-- | The source of the image that was analyzed. @direct@ means that the
-- images was supplied from the local computer. No other values are
-- supported.
source :: Prelude.Maybe ImageSource
}
deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
-- |
-- Create a value of 'DetectAnomalyResult' with all optional fields omitted.
--
-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
--
-- The following record fields are available, with the corresponding lenses provided
-- for backwards compatibility:
--
-- 'anomalies', 'detectAnomalyResult_anomalies' - If the model is an image segmentation model, @Anomalies@ contains a list
-- of anomaly types found in the image. There is one entry for each type of
-- anomaly found (even if multiple instances of an anomaly type exist on
-- the image). The first element in the list is always an anomaly type
-- representing the image background (\'background\') and shouldn\'t be
-- considered an anomaly. Amazon Lookout for Vision automatically add the
-- background anomaly type to the response, and you don\'t need to declare
-- a background anomaly type in your dataset.
--
-- If the list has one entry (\'background\'), no anomalies were found on
-- the image.
--
-- An image classification model doesn\'t return an @Anomalies@ list.
--
-- 'anomalyMask', 'detectAnomalyResult_anomalyMask' - If the model is an image segmentation model, @AnomalyMask@ contains
-- pixel masks that covers all anomaly types found on the image. Each
-- anomaly type has a different mask color. To map a color to an anomaly
-- type, see the @color@ field of the PixelAnomaly object.
--
-- An image classification model doesn\'t return an @Anomalies@ list.--
-- -- /Note:/ This 'Lens' automatically encodes and decodes Base64 data.
-- -- The underlying isomorphism will encode to Base64 representation during
-- -- serialisation, and decode from Base64 representation during deserialisation.
-- -- This 'Lens' accepts and returns only raw unencoded data.
--
-- 'confidence', 'detectAnomalyResult_confidence' - The confidence that Lookout for Vision has in the accuracy of the
-- classification in @IsAnomalous@.
--
-- 'isAnomalous', 'detectAnomalyResult_isAnomalous' - True if Amazon Lookout for Vision classifies the image as containing an
-- anomaly, otherwise false.
--
-- 'source', 'detectAnomalyResult_source' - The source of the image that was analyzed. @direct@ means that the
-- images was supplied from the local computer. No other values are
-- supported.
newDetectAnomalyResult ::
DetectAnomalyResult
newDetectAnomalyResult =
DetectAnomalyResult'
{ anomalies = Prelude.Nothing,
anomalyMask = Prelude.Nothing,
confidence = Prelude.Nothing,
isAnomalous = Prelude.Nothing,
source = Prelude.Nothing
}
-- | If the model is an image segmentation model, @Anomalies@ contains a list
-- of anomaly types found in the image. There is one entry for each type of
-- anomaly found (even if multiple instances of an anomaly type exist on
-- the image). The first element in the list is always an anomaly type
-- representing the image background (\'background\') and shouldn\'t be
-- considered an anomaly. Amazon Lookout for Vision automatically add the
-- background anomaly type to the response, and you don\'t need to declare
-- a background anomaly type in your dataset.
--
-- If the list has one entry (\'background\'), no anomalies were found on
-- the image.
--
-- An image classification model doesn\'t return an @Anomalies@ list.
detectAnomalyResult_anomalies :: Lens.Lens' DetectAnomalyResult (Prelude.Maybe [Anomaly])
detectAnomalyResult_anomalies = Lens.lens (\DetectAnomalyResult' {anomalies} -> anomalies) (\s@DetectAnomalyResult' {} a -> s {anomalies = a} :: DetectAnomalyResult) Prelude.. Lens.mapping Lens.coerced
-- | If the model is an image segmentation model, @AnomalyMask@ contains
-- pixel masks that covers all anomaly types found on the image. Each
-- anomaly type has a different mask color. To map a color to an anomaly
-- type, see the @color@ field of the PixelAnomaly object.
--
-- An image classification model doesn\'t return an @Anomalies@ list.--
-- -- /Note:/ This 'Lens' automatically encodes and decodes Base64 data.
-- -- The underlying isomorphism will encode to Base64 representation during
-- -- serialisation, and decode from Base64 representation during deserialisation.
-- -- This 'Lens' accepts and returns only raw unencoded data.
detectAnomalyResult_anomalyMask :: Lens.Lens' DetectAnomalyResult (Prelude.Maybe Prelude.ByteString)
detectAnomalyResult_anomalyMask = Lens.lens (\DetectAnomalyResult' {anomalyMask} -> anomalyMask) (\s@DetectAnomalyResult' {} a -> s {anomalyMask = a} :: DetectAnomalyResult) Prelude.. Lens.mapping Data._Base64
-- | The confidence that Lookout for Vision has in the accuracy of the
-- classification in @IsAnomalous@.
detectAnomalyResult_confidence :: Lens.Lens' DetectAnomalyResult (Prelude.Maybe Prelude.Double)
detectAnomalyResult_confidence = Lens.lens (\DetectAnomalyResult' {confidence} -> confidence) (\s@DetectAnomalyResult' {} a -> s {confidence = a} :: DetectAnomalyResult)
-- | True if Amazon Lookout for Vision classifies the image as containing an
-- anomaly, otherwise false.
detectAnomalyResult_isAnomalous :: Lens.Lens' DetectAnomalyResult (Prelude.Maybe Prelude.Bool)
detectAnomalyResult_isAnomalous = Lens.lens (\DetectAnomalyResult' {isAnomalous} -> isAnomalous) (\s@DetectAnomalyResult' {} a -> s {isAnomalous = a} :: DetectAnomalyResult)
-- | The source of the image that was analyzed. @direct@ means that the
-- images was supplied from the local computer. No other values are
-- supported.
detectAnomalyResult_source :: Lens.Lens' DetectAnomalyResult (Prelude.Maybe ImageSource)
detectAnomalyResult_source = Lens.lens (\DetectAnomalyResult' {source} -> source) (\s@DetectAnomalyResult' {} a -> s {source = a} :: DetectAnomalyResult)
instance Data.FromJSON DetectAnomalyResult where
parseJSON =
Data.withObject
"DetectAnomalyResult"
( \x ->
DetectAnomalyResult'
Prelude.<$> (x Data..:? "Anomalies" Data..!= Prelude.mempty)
Prelude.<*> (x Data..:? "AnomalyMask")
Prelude.<*> (x Data..:? "Confidence")
Prelude.<*> (x Data..:? "IsAnomalous")
Prelude.<*> (x Data..:? "Source")
)
instance Prelude.Hashable DetectAnomalyResult where
hashWithSalt _salt DetectAnomalyResult' {..} =
_salt
`Prelude.hashWithSalt` anomalies
`Prelude.hashWithSalt` anomalyMask
`Prelude.hashWithSalt` confidence
`Prelude.hashWithSalt` isAnomalous
`Prelude.hashWithSalt` source
instance Prelude.NFData DetectAnomalyResult where
rnf DetectAnomalyResult' {..} =
Prelude.rnf anomalies
`Prelude.seq` Prelude.rnf anomalyMask
`Prelude.seq` Prelude.rnf confidence
`Prelude.seq` Prelude.rnf isAnomalous
`Prelude.seq` Prelude.rnf source