Preproceso y posproceso

Nota: A partir de Maximo® Visual Inspection 8.7, los modelos personalizados no están soportados y los scripts personalizados no se pueden cargar. Los modelos personalizados siguen estando soportados en Maximo Visual Inspection 8.6 y versiones anteriores. Las API REST siguen dando soporte a la recuperación de cualquier script personalizado existente que haya cargado en Maximo Visual Inspection 8.6 y versiones anteriores.

Puede cargar personalizaciones para realizar operaciones antes y después de cada operación de inferencia sin intervención manual.

  • custom.py Plantilla
  • Archivo requirements.txt opcional
  • Despliegue de un modelo con preproceso, postproceso o ambos
Nota: no se admiten los modelos de detección de acciones.

custom.py Plantilla

Utilice la plantilla custom.py para generar un archivo Python denominado custom.py. El archivo puede contener instrucciones para el preproceso, el postproceso o ambos. La versión depende del tipo de modelo:

  • Python 2 para modelos de alta resolución, de anomalía optimizada y personalizados.
  • Python 3 para modelos R-CNN, GoogLeNet, SSD, YOLO v3, Tiny YOLO v3 y Detectron2 más rápidos.
Nota: A partir de Maximo Visual Inspection 9.1 los modelos Single Shot Detector (SSD) ya no se admiten para el entrenamiento de modelos. Sin embargo, puede seguir importando y desplegando modelos SSD en Maximo Visual Inspection y Maximo Visual Inspection Edge.
Importante: Este archivo debe estar empaquetado en un .zip archivo que contenga el custom.py archivo en el directorio de nivel superior del .zip archivo.

Otros archivos, como archivos Python adicionales, scripts de shell e imágenes, también pueden existir en el .zip archivo. Si el script de personalización requiere módulos Python además de los módulos incorporados en Python, puede crear un archivo requirements.txt que contenga una lista de los módulos que se deben instalar mediante pip. La plantilla contiene la información siguiente:

clase CustomInference
La única clase Python en el archivo. Debe denominarse CustomInference y contiene las llamadas "pre" y "post".
onPreProcessing
Si se define, esta función debe estar en CustomInference. Se llama a esta función antes de que se ejecute la inferencia en la imagen.
onPostProcessing
Si se define, esta función debe estar en CustomInference. Se llama a esta función después de que se ejecute la inferencia en la imagen.
class CustomInference:
# Callout for inference pre-processing.  Will be called before the
# actual inference on the “image”
#
# Input:
#    image:    Image represented as a NumPy array that inference is to be
#              performed on.
#
# params:  To be used for additional parameters.  This will be
#             a listof key/value pairs.
#
# Output:
#    image:    Return the image represented as a NumPy array that is to
#              be used for inference.  This array may been manipulated
#              in this function, or it may be the same exact NumPy array.
#
def onPreProcessing(self, image, params):

     return image
# Callout for the inference post-processing.  Will be called
# after the image has been inferred.
#
# Input:
#    Image:    Image represented as a NumPy array that inference is to be
#              performed on.
#
# results:  JSON of the inference results.  The JSON will be
#              dependent on thetype of inference.
#
# params: To be used for additional parameters.  This will
#              be a list of key/value pairs
#
# Output:
#    results:  A json object that is a copy of the original
#              inference results.  However, if the callout
#              intends to return additional information, that
#              information can bereturnedin the json results
#              under the key “user”.
#                   
def onPostProcessing(self, image, results, params):

     return results

Archivo requirements.txt opcional

En el siguiente archivo de ejemplo, se muestra el contenido de un archivo requirements.txt:

sseclient==0.0.19
tflearn==0.3.2
keras==2.2.4

Despliegue de un modelo que utiliza el preproceso, posproceso o ambos

Para implementar un modelo que utiliza procesamiento adicional, debe cargar el archivo .zip personalizado y, a continuación, especificarlo en la implementación.

  1. Vaya a la página Artefactos personalizados y cargue el .zip archivo que contiene custom.py. Para el tipo de artefacto, seleccione Script de inferencia personalizado.
  2. Vaya al modelo que quiera desplegar y pulse Desplegar modelo.
  3. Active Despliegue avanzado.
  4. En Script de inferencia personalizado, seleccione el script de inferencia que quiera utilizar, especifique lo que quiere hacer con los resultados de inferencia y pulse Desplegar.
    Nota:
    • Los resultados de inferencia se pueden guardar aunque no elija un script de inferencia personalizado.
    • Los resultados de inferencia para los vídeos no se guardan.