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.

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

Plantilla custom.py

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 empaquetarse en un archivo .zip que tenga el archivo custom.py en el directorio de nivel más alto del archivo .zip.

El archivo .zip también puede contener otros archivos, como archivos Python adicionales, scripts de shell e imágenes. 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: esta función, en caso de definirse, debe encontrarse en CustomInference. Se llama a esta función antes de que se ejecute la inferencia en la imagen.
  • onPostProcessing: esta función, en caso de definirse, debe encontrarse 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 desplegar un modelo que utilice un proceso adicional, cargue el archivo .zip personalizado y, a continuación, especifíquelo en el despliegue.

  1. Vaya a la página Artefactos personalizados y cargue el archivo .zip 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.