TFLiteHeatStressManager

class TFLiteHeatStressManager(val context: Context)

Gestiona el modelo TFLite para la detección de Estrés por Calor.

Esta clase implementa el patrón Singleton y se encarga de:

  • Cargar y gestionar el modelo TFLite.

  • Preprocesar los datos de entrada (10 características).

  • Realizar inferencias en tiempo real con salida de probabilidades.

  • Postprocesar los resultados.

Utiliza un modelo TFLite (heat_stress_model.tflite) que espera 10 características de entrada y produce 2 probabilidades: P(sin estrés), P(estrés). Las características de entrada, en orden, son:

  1. Frecuencia Cardíaca (lpm)

  2. Temperatura de la Piel (°C)

  3. Temperatura Ambiente (°C)

  4. Conteo de Pasos

  5. Intensidad de la Actividad (unidad arbitraria)

  6. Actividad Acumulada (unidad arbitraria)

  7. Carga de Trabajo (unidad arbitraria)

  8. Índice de Estrés Fisiológico (PSI)

  9. Nivel de Riesgo Actual (0:Bajo, 1:Moderado, 2:Alto, 3:Crítico)

  10. Índice de Calor (°C)

La clase proporciona StateFlows para:

Las inferencias están limitadas por MIN_INFERENCE_INTERVAL para evitar un procesamiento excesivo.

Author

WiLoc Team

Parameters

context

El contexto de la aplicación, utilizado para cargar el modelo desde los assets.

Constructors

Link copied to clipboard
private constructor(context: Context)

Types

Link copied to clipboard
Link copied to clipboard
data class HeatStressPrediction(val riskLevel: HeatStressRiskLevel, val confidence: Float, val probabilities: Map<HeatStressRiskLevel, Float>, val hasHeatStress: Boolean = false, val rawValue: Float = 0.0f, val probNoStress: Float = 0.0f, val probStress: Float = 0.0f, val timestamp: Long = System.currentTimeMillis())

Representa el resultado de una predicción de estrés térmico del modelo.

Properties

Link copied to clipboard
private val _lastPrediction: <Error class: unknown class>
Link copied to clipboard
private val _modelStatus: <Error class: unknown class>
Link copied to clipboard
private val context: Context
Link copied to clipboard
private var interpreter: Interpreter?
Link copied to clipboard
private var lastInferenceTime: Long
Link copied to clipboard

Un StateFlow que emite la última predicción de estrés por calor.

Link copied to clipboard
private val modelScope: <Error class: unknown class>
Link copied to clipboard
val modelStatus: StateFlow<MLModelStatus>

Un StateFlow que emite el estado actual del modelo de ML.

Functions

Link copied to clipboard
fun close()

Libera los recursos utilizados por el modelo TFLite y cancela las coroutines asociadas.

Link copied to clipboard

Obtiene información de depuración sobre la última predicción.

Link copied to clipboard

Interpreta la salida del modelo para determinar los niveles de estrés térmico.

Link copied to clipboard
private fun isValidPrediction(output: FloatArray): Boolean

Determina si los valores de salida del modelo TFLite indican una predicción válida.

Link copied to clipboard
fun loadModel()

Carga el modelo TFLite desde los assets.

Link copied to clipboard

Realiza la predicción de estrés térmico basada en los datos actuales.

Link copied to clipboard

Prepara los datos de entrada para el modelo SIN normalización. El modelo espera los valores raw, excepto riskLevel, que debe ser numérico.