A method for to determine distress of a driver of a vehicle, the method comprising: receiving inputs by one or more processors from a plurality of sensors, including interior vehicle image sensors, an interior vehicle audio sensor, vehicle data sensors, and Global Positioning System GPS data sensors; processing the received inputs by the one or more processors to obtain a driver heat change estimate, a driver expression estimate, a driver gesture estimate, an on-board diagnostics OBD estimate, and a GPS estimate; storing by the one or more processors the estimates in a memory; using the stored estimates by the one or more processors to generate deviation scores with respect to a normal distribution model of normal driving performance for each of the driver heat change estimate, the driver expression estimate, the driver gesture estimate, the OBD estimate, and the GPS estimate; executing a machine learning algorithm by the one or more processors to classify driver behavior as normal or impaired based on the deviation scores; and generating a warning by the one or more processors based on the classification indicating impaired driver behavior, wherein generating the deviation score for the driver heat change estimate includes: generating a normal driving model offline using normal driving thermal images of the driver; comparing the normal driving model with real-time thermal image data of the driver to obtain a comparison result; and applying a probability density function PDF to the comparison result to obtain the deviation score for the driver heat change estimate. receiving inputs by one or more processors from a plurality of sensors, including interior vehicle image sensors, an interior vehicle audio sensor, vehicle data sensors, and Global Positioning System GPS data sensors; processing the received inputs by the one or more processors to obtain a driver heat change estimate, a driver expression estimate, a driver gesture estimate, an on-board diagnostics OBD estimate, and a GPS estimate; storing by the one or more processors the estimates in a memory; using the stored estimates by the one or more processors to generate deviation scores with respect to a normal distribution model of normal driving performance for each of the driver heat change estimate, the driver expression estimate, the driver gesture estimate, the OBD estimate, and the GPS estimate; executing a machine learning algorithm by the one or more processors to classify driver behavior as normal or impaired based on the deviation scores; and generating a warning by the one or more processors based on the classification indicating impaired driver behavior, wherein generating the deviation score for the driver heat change estimate includes: generating a normal driving model offline using normal driving thermal images of the driver; comparing the normal driving model with real-time thermal image data of the driver to obtain a comparison result; and applying a probability density function PDF to the comparison result to obtain the deviation score for the driver heat change estimate. generating a normal driving model offline using normal driving thermal images of the driver; comparing the normal driving model with real-time thermal image data of the driver to obtain a comparison result; and applying a probability density function PDF to the comparison result to obtain the deviation score for the driver heat change estimate.