Safety Monitor for Image Misclassification

JP7668918B2Active Publication Date: 2025-04-25ATI TECHNOLOGIES ULC
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
JP2024013261
Authority / Receiving Office
JP · JP
Patent Type
Patents
Current Assignee / Owner
Priority Date
2020-05-11
Filing Date
2024-01-31
Publication Date
2025-04-25
Estimated Expiration
2040-05-11

AI Technical Summary

Technical Problem

Existing monitoring methods for inference accelerators in safety-critical environments fail to detect misclassification errors and random, intermittent failures at the neural network level, as they primarily focus on lower-level hardware checks that overlook output-level failures.

Method used

A safety monitor framework that modifies input images by adding additional objects outside the boundaries, processes these modified images through the inference accelerator, and analyzes the output to determine the likelihood of misclassification, providing confidence indicators to safety-critical applications.

Benefits of technology

Enhances fault coverage by detecting misclassifications and other output-level failures, ensuring the inference accelerator operates correctly and allowing safety-critical applications to take corrective actions.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 00000014_0000
    Figure 00000014_0000
  • Figure 00000015_0000
    Figure 00000015_0000
  • Figure 00000016_0000
    Figure 00000016_0000
Patent Text Reader

Abstract

To provide a system, device and method for implementing a safety monitor framework for a safety-critical inference application configured so that a safety monitor complements the overall fault coverage and protects against faults only observable in a network level.SOLUTION: In a safety-critical system including a safety-critical inference application, a safety monitor, and an inference accelerator engine, a safety monitor framework is configured to receive an input image, test data, and a neural network specification from the safety-critical inference application, generate a modified image by adding objects to the input image; and provide the modified image to the inference accelerator engine. The engine processes the modified image and provides outputs to the framework. The framework compares outputs for the modified image with a known good result, to determine a likelihood of misclassification of the original input image.SELECTED DRAWING: Figure 6
Need to check novelty before this filing date? Find Prior Art

Description

[Background technology]

[0001] An emerging technology field is machine learning, and neural networks are one type of machine learning model. Neural networks have shown good performance in tasks such as handwritten digit classification and face detection. In addition, neural networks are expected to perform well in other more challenging visual classification tasks. Other applications of neural networks include speech recognition, language modeling, sentiment analysis, and text prediction.

[0002] In a typical configuration of a machine learning algorithm, a software application feeds a neural network to an inference accelerator hardware engine. When the inference accelerator is operating in a safety-critical environment, it is desirable to monitor the inference accelerator for anomalous behavior. A typical implementation for monitoring an inference accelerator inserts monitoring logic into the inference accelerator processing hardware sub-block. For example, a machine check architecture is a mechanism whereby monitoring logic in the processing hardware checks for anomalous behavior. However, while these checks provide monitoring at a lower level of hardware, they may miss failures that are only observable at the output of the inference accelerator. This approach also fails to detect random and intermittent failures at the neural network level. For example, an inference accelerator may have misclassification errors, such as failure to detect a target object.

[0003] Advantages of the methods and mechanisms described herein may be better understood by referring to the following description in conjunction with the accompanying drawings. [Brief description of the drawings]

[0004] [Figure 1]FIG. 1 is a block diagram of one embodiment of a computing system. [Diagram 2] FIG. 1 is a block diagram of one embodiment of a safety-critical reasoning application running on a safety-critical system. [Diagram 3] FIG. 1 is a block diagram of one embodiment of an inference fault detection framework. [Figure 4] 1 is an example of an image sent from a safety-critical application to a safety monitor framework, according to one embodiment. [Diagram 5] 1 is a modified image generated by a safety monitor framework from an original image according to one embodiment. [Figure 6] FIG. 1 is a generalized flow diagram illustrating one embodiment of a method for operating a safety monitor framework for an inference accelerator. [Figure 7] FIG. 1 is a generalized flow diagram illustrating one embodiment of a method for implementing a safety monitor framework. [Figure 8] FIG. 1 is a generalized flow diagram illustrating one embodiment of a method for generating confidence indicators for use by safety-critical applications. [Figure 9] FIG. 2 is a generalized flow diagram illustrating one embodiment of a method for determining which objects to use to modify an image. [Figure 10] FIG. 2 is a generalized flow diagram illustrating one embodiment of a method for a safety monitor framework to change operating modes. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS

[0005] In the following description, numerous specific details are set forth to provide a thorough understanding of the methods and mechanisms described herein. However, those skilled in the art should appreciate that various embodiments may be practiced without these specific details. In some cases, well-known structures, components, signals, computer program instructions and techniques have not been shown in detail so as not to obscure the approaches described herein. It should be understood that for simplicity and clarity of illustration, elements shown in the figures have not necessarily been drawn to scale. For example, the dimensions of some elements may be exaggerated relative to other elements.

[0006] Disclosed herein are systems, apparatus, and methods for implementing a safety monitor framework for safety-critical neural network applications. In one embodiment, the system includes a safety-critical neural network application, a safety monitor, and an inference accelerator engine. The safety monitor receives an input image, test data (e.g., test vectors), and a neural network specification (e.g., layers and weights) from the safety-critical neural network application. In one embodiment, the test data includes a list of images with known good objects / images and corresponding classifications of these objects / images. In one embodiment, the safety monitor modifies the input image to add additional objects outside the boundaries of the input image. In such an embodiment, the modified image is larger than the input image to accommodate the additional objects outside the boundaries of the original image. In one embodiment, the configuration of the modified image (i.e., the additional space and where the additional objects are inserted) is stored in a data structure (i.e., metadata) that is passed through the system flow along with the modified image.

[0007] In one embodiment, the additional objects include one or more redundant objects that are identical to objects found in a previous input image. In another embodiment, the additional objects include one or more objects provided in the test vector. The safety monitor provides the modified image to an inference accelerator. The inference accelerator processes the modified image and returns an output to the safety monitor. The safety monitor determines a likelihood of misclassification of the original input image based on the output generated by the inference accelerator. In one embodiment, the safety monitor compares known good results with the output associated with the modification to determine the likelihood of misclassification of the original input image. The safety monitor provides an indicator of the likelihood of misclassification to the safety-critical application. With this approach, the safety monitor complements the overall fault coverage and protects against failures observable only at the output of the neural network.

[0008] Referring to FIG. 1, a block diagram of one embodiment of a computing system 100 is shown. In one embodiment, the computing system 100 includes at least an inference accelerator engine 105, processor(s) 110A-110B, an input / output (I / O) interface 120, a bus 125, and a memory subsystem 130. In other embodiments, the computing system 100 may include other components and / or may be configured differently. In one embodiment, the inference accelerator engine 105 is implemented on the processor(s) 110B. The inference accelerator engine 105 represents any combination of software, firmware, and / or hardware for implementing various machine learning algorithms or models on the processor(s) 110B.

[0009] In one embodiment, the inference accelerator engine 105 implements one or more layers of a convolutional neural network. For example, in this embodiment, the inference accelerator engine 105 implements one or more convolutional layers and / or one or more fully connected layers. In another embodiment, the inference accelerator engine 105 implements one or more layers of a recurrent neural network. In general, an "inference engine" or "inference accelerator engine" is defined as hardware and / or software that receives image data and generates one or more label probabilities for the image data. In some cases, an "inference engine" or "inference accelerator engine" is referred to as a "classification engine" or "classifier."

[0010] The inference accelerator engine 105 may be used in any of a variety of applications, depending on the embodiment. For example, in one embodiment, the inference accelerator engine 105 analyzes images or video frames to generate one or more label probabilities for the frames. For example, potential use cases include at least eye tracking, object recognition, point cloud estimation, ray tracing, light field modeling, depth tracking, etc. In an eye tracking use case, the probabilities generated by the inference accelerator engine 105 are based on learned patterns, dwells, transition angles, blinks, etc. In other embodiments, the inference accelerator engine 105 is trained and customized in other types of use cases.

[0011] The inference accelerator engine 105 may be used by any of a variety of safety-critical applications, depending on the embodiment. For example, in one embodiment, the inference accelerator engine 105 is used in an automotive application. For example, the inference accelerator engine 105 controls one or more functions of a self-driving vehicle (i.e., an autonomous vehicle), a driver-assisted vehicle, or an advanced driver assistance system. In other embodiments, the inference accelerator engine 105 is trained and customized for other types of use cases. Depending on the embodiment, the inference accelerator engine 105 generates classification result probabilities for various objects detected in an input image or video frame.

[0012] Processor(s) 110A-110B represent any number and type of processing units (e.g., central processing unit (CPU), graphics processing unit (GPU), digital signal processor (DSP), field programmable gate array (FPGA), application specific integrated circuit (ASIC)). In one embodiment, some of the processing associated with the inference accelerator engine 105 is performed by processor(s) 110B. Furthermore, the inference accelerator engine 105 is implemented using any of these types of processing units and / or other types of processing elements. The memory subsystem 130 includes any number and type of memory devices. For example, the type of memory of the memory subsystem 130 may include high bandwidth memory (HBM), non-volatile memory (NVM), dynamic random access memory (DRAM), static random access memory (SRAM), NAND flash memory, NOR flash memory, ferroelectric random access memory (FeRAM), or other memories. Memory subsystem 130 is accessible by inference accelerator engine 105 and processor(s) 110A-110B. I / O interface 120 represents any number and type of I / O interface (e.g., Peripheral Component Interconnect (PCI) bus, PCI Extended (PCI-X), PCI Express (PCIE) bus, Gigabit Ethernet (GBE) bus, Universal Serial Bus (USB)). Various types of peripherals may be coupled to I / O interface 120. Such peripherals include, but are not limited to, displays, keyboards, mice, printers, scanners, joysticks or other types of game controllers, media recording devices, external storage devices, network interface cards, and the like.

[0013] In various embodiments, computing system 100 is a computer, a laptop, a mobile device, a game console, a server, a streaming device, a wearable device, or various other types of computing systems or devices. In some embodiments, the entire computing system 100 or one or more portions thereof are incorporated within a robotic system, an autonomous vehicle, an autonomous drone, a surgical tool, or other types of mechanical devices or systems. It should be noted that the number of components of computing system 100 may vary from embodiment to embodiment. For example, in other embodiments, there may be more or fewer components than those shown in FIG. 1. It should also be noted that in other embodiments, computing system 100 includes other components not shown in FIG. 1. Additionally, in other embodiments, computing system 100 is configured in a manner other than that shown in FIG. 1.

[0014] Referring to FIG. 2, a block diagram of one embodiment of a safety-critical reasoning application 220 executing on a safety-critical system 200 is shown. In one embodiment, the safety-critical system 200 includes at least processing unit(s) 205, 210, which represent any number and type of processing units. It should be noted that the safety-critical system 200 may include any number of other components not shown to avoid obscuring the diagram. In one embodiment, the processing unit(s) 205 include one or more central processing units (CPUs). In other embodiments, the processing unit(s) 205 may include other types of processing units. In one embodiment, the processing unit(s) 210 include one or more graphics processing units (GPUs). In other embodiments, the processing unit(s) 210 may include other types of processing units (e.g., digital signal processors (DSPs), field programmable gate arrays (FPGAs), application specific integrated circuits (ASICs)).

[0015] In one embodiment, safety-critical reasoning application 220 executes on processing unit(s) 205. Safety-critical reasoning application 220 represents any type of software application that executes in hazardous environments where safety is critical. For example, in one embodiment, safety-critical reasoning application 220 controls an autonomous or driver-assisted automobile or other vehicle. In other embodiments, safety-critical reasoning application 220 operates as an autopilot control mechanism in a robot or airplane, or as part of other systems in a variety of challenging and high-risk environments.

[0016] In one embodiment, a first portion of safety monitor framework 230 (i.e., safety monitor framework 230A) executes on processing unit(s) 205 and a second portion of safety monitor framework 230 (i.e., safety monitor framework 230B) executes on processing unit(s) 210. In other embodiments, safety monitor framework 230 executes entirely on processing unit(s) 205 or entirely on processing unit(s) 210. Inference accelerator 240 represents any combination of software and / or hardware used to implement one or more machine learning inference algorithms and / or machine learning inference models. In one embodiment, inference accelerator 240 is implemented using dedicated hardware (e.g., FPGA, ASIC, IP core). In another embodiment, inference accelerator 240 includes software instructions designed to execute on processing unit(s) 210. In other embodiments, inference accelerator 240 can be any suitable combination of software and / or hardware. In one embodiment, the inference accelerator 240 operates according to the topology and weights / biases provided by the safety-critical inference application 220 .

[0017] The safety-critical inference application 220 provides images to be processed by the inference accelerator 240. In one embodiment, the safety monitor framework 230 receives inputs sent from the safety-critical inference application 220 to the inference accelerator 240, the safety monitor framework 230 modifies one or more of these inputs, and then sends the modified inputs to the safety-critical inference application 220. After the inference accelerator 240 processes the modified inputs, the inference accelerator 240 sends the processing results to the safety-critical inference application 220 via the safety monitor framework 230. The safety monitor framework 230 analyzes the results to determine whether the inference accelerator 240 is malfunctioning. In one embodiment, the safety monitor framework 230 generates a confidence indicator that indicates how confident the safety monitor framework 230 is that the inference accelerator 240 has correctly processed the inputs generated by the safety-critical inference application 220. The safety monitor framework 230 communicates the confidence indicator and a modified version of the processing result to the safety-critical reasoning application 220. In one embodiment, the safety-critical reasoning application 220 performs one or more corrective actions (e.g., shut down, restart the system, retry the same image, generate a warning signal to the user, slow the vehicle, change the operating mode) if the confidence indicator falls below a threshold.

[0018] 3, a block diagram of one embodiment of an inference fault detection framework 300 is shown. In one embodiment, a computing system 310 includes a safety monitor framework 315 and an inference accelerator hardware 350. In one embodiment, the safety monitor framework 315 includes a test generation unit 320, a scalar unit 325, a result filter 330, a test validation unit 335, an inference stack 340, and an inference driver 345. In other embodiments, the safety monitor framework 315 includes other components and / or is configured in other suitable manners. In one embodiment, the safety monitor framework 315 is designed to comply with the Automated Safety Integrity Level (ASIL) risk classification scheme. In other embodiments, the safety monitor framework 315 can be designed to comply with other risk classification schemes in other types of environments.

[0019] In one embodiment, the safety-critical inference application 305 communicates the image, the test vector, and the inference network specification to the safety monitor framework 315. The test vector is received and used by the test generation unit 320 to determine which objects to add to the original image. The test vector is also used to determine whether the results generated by the inference accelerator hardware 350 are accurate. In one embodiment, a redundant object is added to the original image, where the redundant object is identical to an object present in the previous image. In another embodiment, a predefined object that was not present in the previous image is added to the original image. For example, in one embodiment, the predefined object is an object identified in the test vector as being a known good object in one or more test images. As used herein, a "known good object" is defined as an object that has a high probability of being correctly identified or processed in a consistent manner by the inference accelerator hardware 350. In one embodiment, the predefined object that is added to the original image is selected based at least in part on a high probability of occurring in the image being processed. The test generation unit 320 adds one or more additional predefined object(s) to the original image to generate a modified image. The inference stack 340 communicates the modified image and the inference network specification to the inference accelerator hardware 350. In one embodiment, the modified image and the inference network specification are communicated to the inference accelerator hardware 350 via an inference driver 345.

[0020] The inference accelerator hardware 350 processes the modified image according to the provided inference network specification, and then the inference accelerator hardware 350 returns the processing results to the inference stack 340. The result filter 330 analyzes the results and also filters the results to remove additional objects that were added to the original image. The result filter 330 communicates the objects and classification results to the application 305. The objects and classification results can include any type of data, and the types vary depending on the embodiment. For example, in one embodiment, if the application 305 is looking for the number of objects in the original image, the results include the number of objects in the original image and their locations. In other embodiments, other data can be communicated in the objects and classification results depending on what the application 305 is looking for in the original image.

[0021] In one embodiment, the results from the inference accelerator hardware 350 are analyzed by the test verification unit 335. The test verification unit 335 determines whether the additional object(s) added to the original image were correctly processed and / or classified by the inference accelerator hardware 350. In other embodiments, the test verification unit 335 may use other suitable techniques to verify the results generated by the inference accelerator hardware 350. If the test verification unit 335 determines that the inference accelerator hardware 350 correctly processed the known good object, the test verification unit 335 returns a test result indicator of pass to the application 305. Otherwise, if the known good object was not correctly processed, the test verification unit 335 returns a test result indicator of fail to the application 305. In response to receiving a test result indicator of fail, the application 305 may take any of a variety of corrective actions (e.g., restarting, generating an error, replaying the same image).

[0022] Referring to FIG. 4, an example of an image 400A sent from a safety-critical application to a safety monitor framework is shown according to one embodiment. In the example shown in FIG. 4, the image 400A includes a truck 402, a person 404, a dog 406, a horse 408, and another person 410. It should be understood that this example of an image 400A including these objects is merely illustrative of one particular embodiment. The likelihood of detection and correct identification is shown at the top of the dashed box surrounding each identified object. In one embodiment, these probabilities are determined during the training phase of the target inference accelerator engine. In one embodiment, these probabilities are provided within the test data that the safety-critical application provides to the safety monitor framework for the particular neural network and / or target inference accelerator engine that is processing the image.

[0023] Referring to FIG. 5, a modified image 400B is shown generated by a safety monitor framework from an original image 400A, according to one embodiment. The modified image 400B is intended to represent the image 400A (of FIG. 4) after it has been modified by a safety monitor framework (e.g., the safety monitor framework 315 of FIG. 3). As shown, the modified image 400B includes the original image 400A with a known good object region 505 added to the modified image 400B outside (to the right) the boundary of the original image 400A. The region of the original image 400A to the left of the modified image 400B remains unchanged. Thus, the portion of the original image 400A in the modified image 400B includes all of the original objects seen in the image 400A (of FIG. 4).

[0024] In one embodiment, the known good object region 505 includes a person 510 that represents a known good object found in one of the test vector images. In other embodiments, the known good object region 505 may include other numbers and / or types of objects. Depending on the embodiment, the objects shown in the known good object region 505 may include redundant objects that are exact duplicates of objects in the original image, and / or new objects that are not included as part of the original image 400A. Additionally, while the known good object region 505 is shown on the right side of the modified image 400B, it should be understood that this is only intended to represent one particular embodiment. In other embodiments, the known good object region 505 may be added to the top, left, and / or bottom of the original image 400A. In some embodiments, a portion of the original image may be used as the known good object region 505. For example, if a portion of the image is deemed non-essential for any reason (e.g., if the image content of a particular region is determined to have no functional impact on the processing results), that particular region may be used as the known good object region.

[0025] After generating the modified image 400B, the safety monitor framework communicates the modified image 400B to an inference accelerator engine (e.g., the inference accelerator hardware 350 of FIG. 3). The inference accelerator engine processes the modified image 400B and then communicates an output based on this processing to the safety monitor framework. The safety monitor framework determines whether the objects added to the known good object region 505 were identified and / or processed according to the previously provided test data. If these added objects were correctly identified and / or properly processed, the safety monitor framework provides a pass indicator to the safety-critical application. The safety monitor framework also filters the processing results on the original image 400A by excluding the objects in the known good object region 505. The safety monitor framework then provides these filtered results to the safety-critical application.

[0026] On the other hand, if the added object is incorrectly identified and / or incorrectly processed, the safety monitor framework provides a failure indicator to the safety-critical application. In response to receiving the failure indicator, the safety-critical application executes one or more corrective actions. For example, in one embodiment, in response to receiving the failure indicator, the safety-critical application terminates. In another embodiment, in response to receiving the failure indicator, the safety-critical application generates the same frame to be reprocessed by the inference accelerator engine. In other embodiments, in response to receiving the failure indicator, the safety-critical application performs other actions.

[0027] With reference to FIG. 6, one embodiment of a method 600 for operating a safety monitor framework for an inference accelerator is shown. For purposes of explanation, the steps of this embodiment and the steps of FIGS. 7-9 are shown in sequence. However, it should be noted that in various embodiments of the described method, one or more of the described elements may be performed simultaneously, in a different order than shown, or may be omitted entirely. Other additional elements may also be performed as desired. Any of the various systems or devices described herein may be configured to perform the method 600.

[0028] The safety monitor framework receives test data and neural network specifications from the safety-critical reasoning application (block 605). The test data may include training information, test vectors, and / or other metadata. In some cases, the test data is pre-supplied or received by the safety monitor framework before the start of the method 600. In one embodiment, the test vectors include objects that have been previously identified and / or have a high probability of being identified in the image to be processed. The safety monitor framework also receives an input image from the safety-critical reasoning application (block 610). In one embodiment, the input image is a real image that needs to be processed in a real-time application. The safety monitor framework then generates a modified image from the input image based on the test data (block 615). In one embodiment, the modified image includes an input image with one or more additional objects added outside the boundary of the input image. For example, in one embodiment, the safety monitor framework detects a first object in a previous input image. In this embodiment, if the first object is identified in the test data as greater than a threshold probability of being identified by the inference accelerator engine, the safety monitor framework adds the first object to a space outside the original input image. In this example, the modified image includes the original input image in addition to the first object. Note that any number of objects can be added to the area outside the original input image. The modified image is generated from a combination of the original input image and the additional area.

[0029] The safety monitor framework then communicates the modified image to the inference accelerator engine (block 620). The inference accelerator engine then processes the modified image (block 625). Note that the inference accelerator engine is not aware that the original image has been modified. Thus, the inference accelerator engine performs normal processing as if the image had been received directly from the safety-critical application without modification. The inference accelerator engine then communicates output from the processing of the modified image to the safety monitor framework (block 630). The safety monitor framework checks the output to determine whether the inference accelerator engine is operating normally or malfunctioning (block 635). For example, if the additional object(s) added to the modified image are processed as expected, the safety monitor framework concludes that the inference accelerator engine is operating normally. Otherwise, if the results from the inference accelerator engine processing the additional object(s) are unexpected and / or inconsistent with the results from the same object(s) in the original image portion of the modified image, the safety monitor framework concludes that the inference accelerator engine is malfunctioning.

[0030] If the safety monitor framework determines that the inference accelerator engine is malfunctioning (conditional block 640: "YES"), the safety monitor framework generates and communicates an error message to the safety-critical inference application (block 645). The safety monitor framework may also provide other outputs from the inference accelerator engine to the safety-critical application in block 645. In response to receiving the error message, the safety-critical application performs one or more corrective actions (block 650). Note that the safety-critical application may optionally decide to continue sending subsequent images to the inference accelerator engine for processing, possibly depending on the type of error detected and / or the current status of the safety-critical application. Alternatively, the safety-critical application may decide to terminate in response to receiving the error message. If the safety monitor framework determines that the inference accelerator engine is functioning normally (conditional block 640: "NO"), the safety monitor framework generates and communicates a non-error message to the safety-critical application (block 655). The safety monitor framework may also provide other output from the inference accelerator engine (e.g., filtered results) to the safety-critical application at block 655. In response to receiving a non-error message, the safety-critical application provides another image to the safety monitor framework and then the method 600 returns to block 610.

[0031] Referring to FIG. 7, one embodiment of a method 700 for implementing a safety monitor framework is shown. The safety monitor framework receives an input image and test data from a safety-critical application (block 705). The safety monitor framework determines whether any objects identified in the test data were present in the previous image (block 710). For the purposes of this description, it is assumed that the input image is part of a continuous sequence of images, such as a camera input stream. If any of the one or more objects identified by the test data were present in the previous image (conditional block 715: "yes"), the safety monitor framework modifies the input image by adding redundant copies of one or more of these identified objects outside the boundaries of the original image (block 720). The safety monitor framework then communicates the modified image to the inference accelerator engine (block 725). If any of the objects identified by the test data were not present in the previous image (conditional block 715: "no"), the safety monitor framework passes the input image to the inference accelerator engine (block 730) using processing performed in a conventional manner. After block 730, the method 700 ends.

[0032] After block 725, the inference accelerator engine processes the modified image and returns a first set of processing results to the safety monitor framework (block 735). The safety monitor framework analyzes the first set of processing results to generate an error status message (block 740). Note that the error status message indicates an error status of the inference accelerator engine or its likelihood. In one embodiment, the error status message is a single bit that indicates whether the inference accelerator engine is functioning normally or malfunctioning. The safety monitor framework also converts the first set of processing results to a second set of processing results (block 745). In one embodiment, the safety monitor framework converts the first set of processing results to a second set of processing results by removing result data related to the modifications to the original image from the first set of processing results. In other words, the second set of processing results is what the processing results would look like if the original image, rather than the modified image, was processed by the inference accelerator engine. The safety monitor framework then communicates the error status message and the second set of processing results to the safety-critical application (block 750). After block 750, the method 700 ends.

[0033] Referring to FIG. 8, one embodiment of a method 800 for generating a confidence indicator for use by a safety-critical application is shown. The safety monitor framework intercepts an image sent from the safety-critical application to the inference accelerator engine (block 805). In one embodiment, the safety monitor framework is interposed between the safety-critical application and the inference accelerator engine. In one embodiment, neither the safety-critical application nor the inference accelerator engine is aware that the safety monitor framework is interposed between them. However, in other embodiments, the safety-critical application and / or the inference accelerator engine are aware that the safety monitor framework is disposed between them. The safety monitor framework applies one or more modifications to the image and communicates the modified image to the inference accelerator engine (block 810). In one embodiment, the one or more modifications include adding one or more additional objects to a space outside the original image. In the case of a video stream, one way to improve the confidence level in the case of object identification is to embed one similar object and one different object in the additional space in the next video frame (assuming that the objects are present in the next captured frame at a close time distance).

[0034] After the inference accelerator engine processes the modified image, the safety monitor framework intercepts the results sent from the inference accelerator engine to the safety-critical application (block 815). The safety monitor framework analyzes the results to determine the likelihood that the inference accelerator engine correctly processed the image (block 820). For example, in one embodiment, the safety monitor framework determines whether the results indicate that a misclassification occurred. If the results from the modified processing on the image do not match the results provided in the test data, the safety monitor framework concludes that there is a relatively high likelihood that the inference accelerator misprocessed the original input image. In one embodiment, the relatively high likelihood that the inference accelerator misprocessed the image is represented by a relatively low (i.e., close to zero) confidence indicator.

[0035] The safety monitor framework then generates a confidence indicator that indicates the probability that the inference accelerator engine correctly processed the image (block 825). The safety monitor framework also modifies the results by filtering out results related to modifications made to the original image (block 830). The safety monitor framework then returns the confidence indicator and the modified results to the safety-critical application (block 835). After block 835, the method 800 ends.

[0036] 9, one embodiment of a method 900 for determining objects to use in modifying an image is shown. A safety monitor receives test data including known good objects and their probabilities of being present in the real image (block 905). In one embodiment, a safety-critical application communicates the test data to the safety monitor. The safety monitor also analyzes the detection output of previous images to track the detection frequency of various objects in the previous images (block 910).

[0037] The safety monitor determines whether any object has both a probability of occurrence greater than the first threshold and a detection frequency in the previous image greater than the second threshold (conditional block 915). It should be noted that the values ​​of the first and second thresholds may vary depending on the embodiment. If any object has both a probability of occurrence greater than the first threshold and a detection frequency in the previous image greater than the second threshold (conditional block 915: "yes"), the safety monitor adds one or more of these objects to the next image communicated to the inference accelerator engine (block 920). Otherwise, if there is no object with both a probability of occurrence greater than the first threshold and a detection frequency in the previous image greater than the second threshold (conditional block 915: "no"), the safety monitor adds at least one object with either a probability of occurrence greater than the first threshold or a detection frequency in the previous image greater than the second threshold to the next image (block 925). If there is no object with either a probability of occurrence greater than the first threshold or a frequency of detection in the previous image greater than the second threshold, the safety monitor may choose to add another type of object to the next image, or may choose not to add any object. Note that if there is no object with both a probability of occurrence greater than the first threshold and a frequency of detection in the previous image greater than the second threshold, the safety monitor may decrease the value of the first threshold and / or the value of the second threshold. After blocks 920 and 925, the method 900 ends.

[0038] Referring to FIG. 10, one embodiment of a method 1000 for a safety monitor framework to change operating modes is shown. A safety monitor in a safety-critical system having a safety-critical application and an inference accelerator engine starts by operating in a first mode (block 1005). In one embodiment, while operating in the first mode, the safety monitor sends real image data to the inference accelerator engine for classification. If the safety monitor detects a first condition (conditional block 1010: "Yes"), the safety monitor switches to a second mode to monitor the inference accelerator engine (block 1015). It is noted that the "second mode" is also referred to herein as a "safety mode". In one embodiment, when operating in the second mode, the safety monitor generates experimental image data and communicates the experimental image data to the inference accelerator engine for classification. It is noted that the "experimental image data" is also referred to herein as "known good object image data". In this embodiment, after the inference accelerator engine generates a classification result for the experimental image data, the safety monitor generates a confidence indicator based on an analysis of the classification result, where the confidence indicator represents the probability that the result is accurate.

[0039] In one embodiment, the first condition is receiving a signal from a safety-critical application that enhanced monitoring should be performed. For example, a particularly critical portion of code within the application may be detected and the application may determine that enhanced monitoring of the inference accelerator engine is desirable during the period when this portion of code is executing. In another embodiment, the first condition is detecting abnormal operation associated with the inference accelerator engine. In another embodiment, the first condition is the expiration of a timer. In other embodiments, the first condition may be other types of conditions.

[0040] In one embodiment, when operating in the first mode, the safety monitor modifies 1 out of N images (N is a positive integer greater than 1). In this embodiment, when operating in the second mode, the safety monitor modifies 1 out of M images (M is a positive integer less than N). If the safety monitor does not detect the first condition (conditional block 1010: "No"), the safety monitor remains in the first mode (block 1020). After block 1020, method 1000 returns to conditional block 1010.

[0041] After block 1015, if the safety monitor detects a second condition (conditional block 1020: "Yes"), the safety monitor returns to the first mode (block 1025). In one embodiment, the second condition is receiving a signal from the safety-critical application to transition back to the first mode. In another embodiment, the second condition is detecting a return to normal operation by the inference accelerator engine. In another embodiment, the second condition is that the timer value is within a certain range. In other embodiments, the second condition may be other types of conditions. After block 1025, the method 1000 returns to conditional block 1010. Otherwise, if the safety monitor does not detect a second condition (conditional block 1020: "No"), the safety monitor remains in the second mode (block 1030). After block 1030, the method 1000 returns to conditional block 1020. It should be appreciated that in other embodiments, the safety monitor operates in more than two different types of modes. In these embodiments, the frequency of the inference accelerator engine can be adjusted at finer granularity depending on the application and / or the status of the inference accelerator engine. For example, the safety monitor can be changed every 10th frame, every 9th frame, every 8th frame, every 7th frame, etc. Or, the safety monitor can switch between generating experimental image data every other frame, every 2nd frame, every 3rd frame, etc.

[0042] In various embodiments, program instructions of a software application are used to implement the methods and / or mechanisms described herein. For example, program instructions executable by a general-purpose processor or a special-purpose processor are contemplated. In various embodiments, such program instructions may be expressed by a high-level programming language. In other embodiments, the program instructions may be compiled from the high-level programming language into a binary, intermediate, or other form. Alternatively, program instructions describing the operation or design of hardware may be written. Such program instructions may be expressed by a high-level programming language such as C. Alternatively, a hardware design language (HDL) such as Verilog may be used. In various embodiments, the program instructions are stored in any of a variety of non-transitory computer-readable storage media. The storage medium is accessible by the computing system during use to provide the program instructions to the computing system for program execution. Generally, such a computing system includes at least one or more memories and one or more processors configured to execute the program instructions.

[0043] It should be emphasized that the above embodiments are merely non-limiting examples of embodiments. Numerous variations and modifications will become apparent to those skilled in the art once the above disclosure is fully appreciated. It is intended that the following claims be interpreted to include all such variations and modifications.

Claims

1. 1. A system comprising: Equipped with a safety monitor, The safety monitor includes: Tracking a frequency of detection of one or more objects in the image data; adding the at least one object of the one or more objects to current image data for processing in response to at least one object having a detection frequency in the previously processed image data that exceeds a first threshold; a circuit configured to: system.

2. the circuitry is configured to add the at least one object outside a boundary of an image corresponding to the current image data to generate modified image data. The system of claim 1.

3. the circuitry is configured to store a configuration of the modified image data that identifies a location of the at least one object in the modified image data; The system of claim 2.

4. The circuit comprises: sending the modified image data to an inference accelerator; receiving at least one output from the inference accelerator indicative of processing of the modified image data by the inference accelerator; calculating a likelihood of misclassification of the current image data based at least in part on the at least one output; [0023] The system of claim 2.

5. the current image data is deemed to be misclassified in response to a mismatch between the at least one output and a predetermined test vector data corresponding to the current image data. The system of claim 4.

6. the at least one object is selected based at least in part on predetermined test vector data corresponding to the previously processed image data. The system of claim 1.

7. the at least one object is identified in the predetermined test vector data as an object having a computed probability of being correctly identified by the inference accelerator in the previously processed image data that exceeds a second threshold. The system of claim 6.

8. 1. A method comprising: a safety monitor tracking a frequency of detection of one or more objects in the image data; and in response to at least one object having a detection frequency in previously processed image data exceeding a first threshold, the safety monitor adds the at least one object of the one or more objects to current image data for processing. method.

9. the safety monitor adding the at least one object outside a boundary of an image corresponding to the current image data to generate modified image data. The method of claim 8.

10. storing a configuration of the modified image data, the modified image data identifying a location of the at least one object in the modified image data; 10. The method of claim 9.

11. the safety monitor transmitting the modified image data to an inference accelerator; the safety monitor receiving at least one output from the inference accelerator indicative of processing of the modified image data by the inference accelerator; and the safety monitor calculating a likelihood of misclassification of the current image data based at least in part on the at least one output.

10. The method of claim 9.

12. the current image data is deemed to be misclassified in response to a mismatch between the at least one output and a predetermined test vector data corresponding to the current image data.

12. The method of claim 11.

13. the at least one object is selected based at least in part on predetermined test vector data corresponding to the previously processed image data. The method of claim 8.

14. the at least one object is identified in the predetermined test vector data as an object having a computed probability of being correctly identified by the inference accelerator in the previously processed image data that exceeds a second threshold.

14. The method of claim 13.

15. 1. A system comprising: An inference accelerator; A safety monitor, The safety monitor includes: Tracking a frequency of detection of one or more objects in the image data; adding the at least one object of the one or more objects to current image data for processing in response to at least one object having a detection frequency in previously processed image data that exceeds a first threshold; a circuit configured to: system.

16. the circuitry is configured to add the at least one object outside a boundary of an image corresponding to the current image data to generate modified image data.

16. The system of claim 15.

17. the circuitry is configured to store a configuration of the modified image data that identifies a location of the at least one object in the modified image data; 17. The system of claim 16.

18. The circuit comprises: sending the modified image data to an inference accelerator; receiving at least one output from the inference accelerator indicative of processing of the modified image data by the inference accelerator; calculating a likelihood of misclassification of the current image data based at least in part on the at least one output; [0023] 17. The system of claim 16.

19. the at least one object is selected based at least in part on predetermined test vector data corresponding to the previously processed image data.

16. The system of claim 15.

20. the at least one object is identified in the predetermined test vector data as an object having a computed probability of being correctly identified by the inference accelerator in the previously processed image data that exceeds a second threshold.

20. The system of claim 19.