Hardware components | ||||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
Software apps and online services | ||||||
| ||||||
| ||||||
| ||||||
| ||||||
| ||||||
| ||||||
Hand tools and fabrication machines | ||||||
| ||||||
| ||||||
| ||||||
| ||||||
|
Drowsiness and attention monitor for driving or handling heavy machinery. Also detects objects at the blind spot via CV and the Jetson Nano.
Introduction:We will be tackling the problem of drowsiness when handling or performing tasks such as driving or handling heavy machinery and the blind spot when driving.
The Center for Disease Control and Prevention (CDC) says that 35% of American drivers sleep less than the recommended minimum of seven hours a day. It mainly affects attention when performing any task and in the long term, it can affect health permanently.
According to a report by the WHO (World Health Organization) (2), falling asleep while driving is one of the leading causes of traffic accidents. Up to 24% of accidents are caused by falling asleep, and according to the DMV USA (Department of Motor Vehicles) (3) and NHTSA (National Highway traffic safety administration) (4), 20% of accidents are related to drowsiness, being at the same level as accidents due to alcohol consumption with sometimes even worse consequences than those.
We will create a system that will be able to detect a person's drowsiness level, this with the aim of notifying the user about his state and if he is able to drive.
At the same time it will measure the driver’s attention or capacity to garner attention and if he is falling asleep while driving. If it positively detects that state (that he is getting drowsy), a powerful alarm will sound with the objective of waking the driver.
Additionally it will detect small vehicles and motorcycles in the automobile’s blind spots.
In turn, the system will have an accelerometer to generate a call to the emergency services if the car had an accident to be able to attend the emergency quickly.
Current Solutions:
- Mercedes-Benz Attention Assist uses the car's engine control unit to monitor changes in steering and other driving habits and alerts the driver accordingly.
- Lexus placed a camera in the dashboard that tracks the driver's face, rather than the vehicle's behavior, and alerts the driver if his or her movements seem to indicate sleep.
- Volvo's Driver Alert Control is a lane-departure system that monitors and corrects the vehicle's position on the road, then alerts the driver if it detects any drifting between lanes.
- Saab uses two cameras in the cockpit to monitor the driver's eye movement and alerts the driver with a text message in the dash, followed by a stern audio message if he or she still seems sleepy.
As you can see these are all premium brands and there is not a single plug and play system that can work for every car. This, is our opportunity as most cars in the road are not on that price range and do not have these systems.
Connection Diagram:This is the connection diagram of the system:
To download the operating system of the Jetson Nano enter the following link:
https://developer.nvidia.com/jetson-nano-sd-card-image
Format the SD card with SD Card Formatter and Flash the operating system in the SD with Etcher.
Hardware Setup:Because we will be using several hardware components such as cameras, an accelerometer, speakers and more, I highly recommend a power supply of at least 5V - 4A.
The only hardware device that is not plug and play is the accelerometer because this one uses a I2C protocol (TWI if you speak Atmel). That's why we have to check if the Jetson Nano has these pins available.
In this case we will use the Bus 1 because of its proximity to the 5V and GND pins. This will allow us to create a soldered circuit like an Arduino shield, but this time for the Jetson Nano.
After soldering our circuit looks like so:
This next video show us how to setup our hardware:
Curious Fact: The Nvidia Jetson Nano has the same IO pin distribution as a Raspberry Pi, so every shield for the Pi is backwards compatible with the Nano!
WiFi Setup:The device has to be first set up with a WiFi connection, because of the fact that there are a ton of libraries we have to install. During the boot portion of the OS installation, we will connect the Jetson to your private WiFi and next we will set up the WiFi from our mobile phone (For this project as we need a Cellular connection). The advantage of doing this is that the Nano will connect to the one available so we can easily control this from the outside. TLDR: Connect both your private WiFi and your Mobile phone during the first setup, you the system can recognize both automatically.
Boot WiFi:
Home WiFi IP:
IP: 192.168.0.23
Mobile WiFi:
IP: 192.168.43.246
We need to access our jetson from any command terminal via SSH, in the case of MAC and Linux just open the terminal and type the following command.
ssh youruser@yourip
The command that I use in MY case is:
ssh alex@192.168.0.23
In Window's case you can access it from any SSH connection assistant such as Putty.
Here is an example of how to do that with Putty:
The first library to install is OpenCV Contrib, this will be installed using the following series of commands.
git clone https://github.com/JetsonHacksNano/buildOpenCV
cd buildOpenCV
./buildOpenCV.sh |& tee openCV_build.log
This process can take up to 4 hours, so if possible, go out and clear yourself for a while, while this process ends.
sudo apt-get install python-dev libsdl-image1.2-dev libsdl-mixer1.2-dev libsdl-ttf2.0-dev libsdl1.2-dev libsmpeg-dev python-numpy subversion libportmidi-dev ffmpeg libswscale-dev libavformat-dev libavcodec-dev
pip3 install paho-mqtt pygame twilio smbus
After this we will have installed all the libraries necessary for the project to work properly.
Files Download:To download and configure the project to the Jetson Nano, run the following commands.
git clone https://github.com/AlexSanch/Jetson-Drowsiness-Driving-Monitor
cd "Jetson-Drowsiness-Driving-Monitor/Python Scripts/yolo-coco/"
wget https://pjreddie.com/media/files/yolov3.weights
Now we have all the libraries correctly installed.
- OpenCV Contrib
- YoloV3 (only model)
- Twilio
- PahoMQTT
Open a twilio account to be able to notify via SMS in case of a crash.
https://www.twilio.com/try-twilio
Obtain your credentials:The credentials for the Python code appear immediately upon entering, save the SID and the token, we will configure them later.
When you signed up for your trial account, you verified your personal phone number. You can see your list of verified phone numbers on the Verified Caller IDs page.
Go to your Verified Caller IDs page in the console.
Click on the red plus (+) icon to add a new number.
Enter the phone number you wish to receive the notification from Twilio.
Note: You will need access to this device to receive the call or text with your verification code.
Enter the verification code. You’re now ready to text or call this number with your trial Twilio account.
Go to the Phone Numbers page in the console.
Go to the Getting Started page in the console and click on "Get your first Twilio phone number".
A number will be automatically offered, save this number for later and press "Choose this number" to finish setting up your number.
Create an account in Cloud MQTT. https://www.cloudmqtt.com/
Save the credentials of "Server", "User", "Password" and "Port".
To edit the files we have to use the Vim editor that comes by default in the Jetson Nano, the following video shows what to do:
Setup boot start scripts:In order for both files to run at the same time on the device's boot, we must run the following commands to create an rc.local file and give it the permission to run both scripts.
cd
sudo mv "Jetson-Drowsiness-Driving-Monitor/Config File/rc.local" /etc/rc.local
sudo chmod u+x /etc/rc.local
The rc.local content is:
#!/bin/bash
sleep 10
sudo python3 "Jetson-Drowsiness-Driving-Monitor/Python Scripts/Drowsiness.py" &
sudo python3 "Jetson-Drowsiness-Driving-Monitor/Python Scripts/Yolo.py" &
ESP32 Setup:Schematics of the OLED (128x32) and the ESP32.
I grabbed a case and fit everything inside and this is how it looks:
These are the images it will show according to the CV detection, whether it sees a bike or a dog or anything else:
If you want to add more images to the display, you have to use the following image2cpp converter, which will convert pixels into a code that Arduino IDE can use:
https://javl.github.io/image2cpp/
The web application gives us the code to copy and paste in our arduino project.
The device code is in the "Arduino" folder and all we have to do is configure the WiFi and MQTT credentials.
Let's go through a revision of the algorithms and procedures of both CV systems (Drowsiness and alert on one side and Blind spot detection on the other). The installation is remarkably easy as I have already provided an image for the project.
ALL the code is well explained in the respective Github file: https://github.com/AlexSanch/Jetson-Drowsiness-Driving-Monitor
Look for the two Python files: Drowsiness and Yolo:
https://github.com/AlexSanch/Jetson-Drowsiness-Driving-Monitor/blob/master/Python%20Scripts/Yolo.py
Those are the two that make all the magic happen.
Please take a look at it for extensive explanation and documentation.
The sleep monitor uses the following libraries:
OpenCV:
- Image processing
- Haarcascades implementation.
- Flashing speed detection.
Pygame:
- Player sound alert.
Smbus:
- Accelerometer reading.
Twilio:
- Emergency notification delivery.
Requests:
- Geolocation
The flicker detection algorithm is as follows:
- Detection that there is a face of a person behind the wheel:
- If a face is detected, perform eye search.
- Thanks to the sensitivity of the Haarcascades we can use that in our favor. If a scaleFactor = 1.1 and minNeighbors = 40 is selected we can detect eyes only if the person has them open.
- Because a blink lasts approximately 350 milliseconds then a single blink will not cause problems, however once the person keeps blinking for more than 2 or 3 seconds (according to our criteria) it will mean for the system that the person is falling asleep. Not separating the eyes from the road being one of the most important rules of driving.
Also during the demo I found a very interesting use case, when one turns to look at his cell phone,the system also detects that you are not seeing the road. This being a new aspect that we will be exploring in future versions of the system to improve detection when a driver is not looking at the road and is distracted. But, for now it is one of those unintended great finds.
The blind Spot monitor uses the following libraries:
OpenCV:
- Image processing
DNN implementation.
- The weights of the DNN were obtained from YoloV3.
MQTT:
- Communication with the ESP32.
In this algorithm we use the detection of objects using YoloV3 and OpenCV Contrib which allows the use of DNN.
In this case, I created an algorithm to calculate the approximate distance at which an object is located using YOLOV3, the algorithm is as follows.
We calculate the aperture and distance of our camera, in my case it is 19 centimeters in aperture at a distance of 16 cm.
It means that an object 19 cm wide can be at least 16 cm away from the camera so that it can fully capture it, in this case the calculation of the distance of any object becomes a problem of similar triangles.
In this case, since our model creates boxes where it encloses our detected objects, we will use that data to obtain the apparent width of the object, in this case the approximate width will be stored in a variable during the calculation.
If we combine both terms we get the following equation.
In this case for the objects that we are going to detect, we approximate the following widths in centimeters.
{
person:70,
car:220,
motorcycle:120,
dogs:50
}
Here is an example of its operation with the same image.
Testing the algorithm with the camera.
Once having this distance, we will filter all distances that are greater than 2 meters, this being a safe distance to the car at the blind spot.
In turn, we will determine in which of the 2 blind spots the object is, right or left. Depending on the object and the side, the information will be sent via MQTT to the display. For example a car on the left side:
Product:
Notifications:
I would consider the product finished as we only need a little of additional touches in the industrial engineering side of things for it to be a commercial product. Well and also a bit on the Electrical engineering perhaps to use only the components we need. That being said this functions as an upgrade from a project that a couple friends and myself are developing and It was ideal for me to use as a springboard and develop the idea much more. This one has the potential of becoming a commercially available option regarding Smart cities as the transition to autonomous or even smart vehicles will take a while in most cities.
That middle ground between the Analog, primarily mechanical-based private transports to a more "Smart" vehicle is a huge opportunity as the transition will take several years and most people are not able to afford it. Thank you for reading.
References:Links:
(1) https://medlineplus.gov/healthysleep.html
(2) http://www.euro.who.int/__data/assets/pdf_file/0008/114101/E84683.pdf
(3) https://dmv.ny.gov/press-release/press-release-03-09-2018
(4) https://www.nhtsa.gov/risky-driving/drowsy-driving
https://courses.nvidia.com/courses/course-v1:DLI+C-RX-02+V1/about
https://www.governing.com/gov-data/car-ownership-numbers-of-vehicles-by-city-map.html
# -*- coding: utf-8 -*-
"""
@author: ALEX
"""
import numpy as np
import argparse
import time
import cv2
import os
import paho.mqtt.client as paho
# This function trigger if the client connected
def on_connect(client, userdata, flags, rc):
print("Connection returned result: " + str(rc) )
#client.subscribe("#" , 1 ) # Wild Card
# This function trigger every time we receive a message from the platform
def on_message(client, userdata, msg):
print("topic: "+msg.topic)
print("payload: "+str(msg.payload))
# This function trigger when we publish
def on_publish(client, obj, mid):
print("mid: " + str(mid))
# This function trigger when we subscribe to a new topic
def on_subscribe(client, obj, mid, granted_qos):
print("Subscribed: " + str(mid) + " " + str(granted_qos))
# load the COCO class labels our YOLO model was trained on
labelsPath = "yolo-coco/coco.names"
LABELS = open(labelsPath).read().strip().split("\n")
#objects=[70,200,120,50] #person:70, cars:220, motorcycle:120, dogs:50
# Approximate width of the objects to calculate the distance in centimeters.
objects=[70,220,120,50] #person:70, cars:220, motorcycle:120, dogs:50
# initialize a list of colors to represent each possible class label
np.random.seed(42)
COLORS = np.random.randint(0, 255, size=(len(LABELS), 3), dtype="uint8")
# derive the paths to the YOLO weights and model configuration
weightsPath = "yolo-coco/yolov3.weights"
configPath = "yolo-coco/yolov3.cfg"
# load our YOLO object detector trained on COCO dataset (80 classes)
print("[INFO] loading YOLO from disk...")
net = cv2.dnn.readNetFromDarknet(configPath, weightsPath)
# load our input image and grab its spatial dimensions
cap = cv2.VideoCapture(0)
cap.set(cv2.CAP_PROP_EXPOSURE,-10)
# MQTT Start
mqttc = paho.Client()
mqttc.on_connect = on_connect
mqttc.on_message = on_message
mqttc.on_publish = on_publish
mqttc.on_subscribe = on_subscribe
mqttc.username_pw_set("USER", "PASSWORD")
mqttc.connect("URL", PORT, keepalive=60)
rc = 0
while 1:
# Mqtt Client loop
mqttc.loop()
# Take Image From Camera
ret, image = cap.read()
# Saving the image
cv2.imwrite('image.jpg', image)
# Open Again the image
image = cv2.imread("image.jpg")
# Obtaining the Height and Width
(H, W) = image.shape[:2]
# determine only the *output* layer names that we need from YOLO
ln = net.getLayerNames()
ln = [ln[i[0] - 1] for i in net.getUnconnectedOutLayers()]
# construct a blob from the input image and then perform a forward
# pass of the YOLO object detector, giving us our bounding boxes and
# associated probabilities
blob = cv2.dnn.blobFromImage(image, 1 / 255.0, (416, 416),
swapRB=True, crop=False)
net.setInput(blob)
start = time.time()
layerOutputs = net.forward(ln)
end = time.time()
# show timing information on YOLO
print("[INFO] YOLO took {:.6f} seconds".format(end - start))
# initialize our lists of detected bounding boxes, confidences, and
# class IDs, respectively
boxes = []
confidences = []
classIDs = []
# loop over each of the layer outputs
for output in layerOutputs:
# loop over each of the detections
for detection in output:
# extract the class ID and confidence (i.e., probability) of
# the current object detection
scores = detection[5:]
classID = np.argmax(scores)
confidence = scores[classID]
# filter out weak predictions by ensuring the detected
# probability is greater than the minimum probability
if confidence > 0.5:
# scale the bounding box coordinates back relative to the
# size of the image, keeping in mind that YOLO actually
# returns the center (x, y)-coordinates of the bounding
# box followed by the boxes' width and height
box = detection[0:4] * np.array([W, H, W, H])
(centerX, centerY, width, height) = box.astype("int")
# use the center (x, y)-coordinates to derive the top and
# and left corner of the bounding box
x = int(centerX - (width / 2))
y = int(centerY - (height / 2))
# update our list of bounding box coordinates, confidences,
# and class IDs
boxes.append([x, y, int(width), int(height)])
confidences.append(float(confidence))
classIDs.append(classID)
# apply non-maxima suppression to suppress weak, overlapping bounding
# boxes
idxs = cv2.dnn.NMSBoxes(boxes, confidences, 0.5,
0.3)
## suppressing the labels that don't interest us
distance=100000
distancemem=100000
labelmem=""
labelmod=""
pos=""
# ensure at least one detection exists
if len(idxs) > 0:
# loop over the indexes we are keeping
for i in idxs.flatten():
# extract the bounding box coordinates
(x, y) = (boxes[i][0], boxes[i][1])
(w, h) = (boxes[i][2], boxes[i][3])
# draw a bounding box rectangle and label on the image
color = [int(c) for c in COLORS[classIDs[i]]]
cv2.rectangle(image, (x, y), (x + w, y + h), color, 2)
height, width, channels = image.shape
# Calculating on which side of the screen the object is
if((width/2)<(x+(w/2))):
pos="1"
else:
pos="0"
# Checking if the label that the model sees is one of those that interest us
if(LABELS[classIDs[i]]=="motorbike"):
check=objects[2]
labelmem="m"+pos
elif(LABELS[classIDs[i]]=="dog"):
check=objects[3]
labelmem="d"+pos
elif(LABELS[classIDs[i]]=="person"):
check=objects[0]
labelmem="p"+pos
elif(LABELS[classIDs[i]]=="car"):
check=objects[1]
labelmem="c"+pos
else:
check = 1000
# Calculating the distance with the algorithm explaining in Hackster
distance=(check*16)/(19*(w/width))
if(distance<distancemem):
# Checking if the object is less than 3 meters from our car.
if(300>distance):
distancemem=distance
labelmod = labelmem
print(LABELS[classIDs[i]])
text = "{}: {}: {:.4f}".format(LABELS[classIDs[i]],str(distance), confidences[i])
cv2.putText(image, text, (x, y - 5), cv2.FONT_HERSHEY_SIMPLEX,
0.5, color, 2)
# Sending the object that is nearby or a blank screen
mqttc.publish('inTopic', labelmod)
# Saving the processed image
cv2.imwrite('process.jpg', image)
cap.release()
cv2.destroyAllWindows()
<?xml version="1.0"?>
<!--
Stump-based 20x20 frontal eye detector.
Created by Shameem Hameed (http://umich.edu/~shameem)
////////////////////////////////////////////////////////////////////////////////////////
IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
By downloading, copying, installing or using the software you agree to this license.
If you do not agree to this license, do not download, install,
copy or use the software.
Intel License Agreement
For Open Source Computer Vision Library
Copyright (C) 2000, Intel Corporation, all rights reserved.
Third party copyrights are property of their respective owners.
Redistribution and use in source and binary forms, with or without modification,
are permitted provided that the following conditions are met:
* Redistribution's of source code must retain the above copyright notice,
this list of conditions and the following disclaimer.
* Redistribution's in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
* The name of Intel Corporation may not be used to endorse or promote products
derived from this software without specific prior written permission.
This software is provided by the copyright holders and contributors "as is" and
any express or implied warranties, including, but not limited to, the implied
warranties of merchantability and fitness for a particular purpose are disclaimed.
In no event shall the Intel Corporation or contributors be liable for any direct,
indirect, incidental, special, exemplary, or consequential damages
(including, but not limited to, procurement of substitute goods or services;
loss of use, data, or profits; or business interruption) however caused
and on any theory of liability, whether in contract, strict liability,
or tort (including negligence or otherwise) arising in any way out of
the use of this software, even if advised of the possibility of such damage.
-->
<opencv_storage>
<cascade type_id="opencv-cascade-classifier"><stageType>BOOST</stageType>
<featureType>HAAR</featureType>
<height>20</height>
<width>20</width>
<stageParams>
<maxWeakCount>93</maxWeakCount></stageParams>
<featureParams>
<maxCatCount>0</maxCatCount></featureParams>
<stageNum>24</stageNum>
<stages>
<_>
<maxWeakCount>6</maxWeakCount>
<stageThreshold>-1.4562760591506958e+00</stageThreshold>
<weakClassifiers>
<_>
<internalNodes>
0 -1 0 1.2963959574699402e-01</internalNodes>
<leafValues>
-7.7304208278656006e-01 6.8350148200988770e-01</leafValues></_>
<_>
<internalNodes>
0 -1 1 -4.6326808631420135e-02</internalNodes>
<leafValues>
5.7352751493453979e-01 -4.9097689986228943e-01</leafValues></_>
<_>
<internalNodes>
0 -1 2 -1.6173090785741806e-02</internalNodes>
<leafValues>
6.0254341363906860e-01 -3.1610709428787231e-01</leafValues></_>
<_>
<internalNodes>
0 -1 3 -4.5828841626644135e-02</internalNodes>
<leafValues>
6.4177548885345459e-01 -1.5545040369033813e-01</leafValues></_>
<_>
<internalNodes>
0 -1 4 -5.3759619593620300e-02</internalNodes>
<leafValues>
5.4219317436218262e-01 -2.0480829477310181e-01</leafValues></_>
<_>
<internalNodes>
0 -1 5 3.4171190112829208e-02</internalNodes>
<leafValues>
-2.3388190567493439e-01 4.8410901427268982e-01</leafValues></_></weakClassifiers></_>
<_>
<maxWeakCount>12</maxWeakCount>
<stageThreshold>-1.2550230026245117e+00</stageThreshold>
<weakClassifiers>
<_>
<internalNodes>
0 -1 6 -2.1727620065212250e-01</internalNodes>
<leafValues>
7.1098899841308594e-01 -5.9360730648040771e-01</leafValues></_>
<_>
<internalNodes>
0 -1 7 1.2071969918906689e-02</internalNodes>
<leafValues>
-2.8240481019020081e-01 5.9013551473617554e-01</leafValues></_>
<_>
<internalNodes>
0 -1 8 -1.7854139208793640e-02</internalNodes>
<leafValues>
5.3137522935867310e-01 -2.2758960723876953e-01</leafValues></_>
<_>
<internalNodes>
0 -1 9 2.2333610802888870e-02</internalNodes>
<leafValues>
-1.7556099593639374e-01 6.3356137275695801e-01</leafValues></_>
<_>
<internalNodes>
0 -1 10 -9.1420017182826996e-02</internalNodes>
<leafValues>
6.1563092470169067e-01 -1.6899530589580536e-01</leafValues></_>
<_>
<internalNodes>
0 -1 11 2.8973650187253952e-02</internalNodes>
<leafValues>
-1.2250079959630966e-01 7.4401170015335083e-01</leafValues></_>
<_>
<internalNodes>
0 -1 12 7.8203463926911354e-03</internalNodes>
<leafValues>
1.6974370181560516e-01 -6.5441650152206421e-01</leafValues></_>
<_>
<internalNodes>
0 -1 13 2.0340489223599434e-02</internalNodes>
<leafValues>
-1.2556649744510651e-01 8.2710450887680054e-01</leafValues></_>
<_>
<internalNodes>
0 -1 14 -1.1926149949431419e-02</internalNodes>
<leafValues>
3.8605681061744690e-01 -2.0992340147495270e-01</leafValues></_>
<_>
<internalNodes>
0 -1 15 -9.7281101625412703e-04</internalNodes>
<leafValues>
-6.3761192560195923e-01 1.2952390313148499e-01</leafValues></_>
<_>
<internalNodes>
0 -1 16 1.8322050891583785e-05</internalNodes>
<leafValues>
-3.4631478786468506e-01 2.2924269735813141e-01</leafValues></_>
<_>
<internalNodes>
0 -1 17 -8.0854417756199837e-03</internalNodes>
<leafValues>
-6.3665801286697388e-01 1.3078659772872925e-01</leafValues></_></weakClassifiers></_>
<_>
<maxWeakCount>9</maxWeakCount>
<stageThreshold>-1.3728189468383789e+00</stageThreshold>
<weakClassifiers>
<_>
<internalNodes>
0 -1 18 -1.1812269687652588e-01</internalNodes>
<leafValues>
6.7844521999359131e-01 -5.0045782327651978e-01</leafValues></_>
<_>
<internalNodes>
0 -1 19 -3.4332759678363800e-02</internalNodes>
<leafValues>
6.7186361551284790e-01 -3.5744878649711609e-01</leafValues></_>
<_>
<internalNodes>
0 -1 20 -2.1530799567699432e-02</internalNodes>
<leafValues>
7.2220700979232788e-01 -1.8192419409751892e-01</leafValues></_>
<_>
<internalNodes>
0 -1 21 -2.1909970790147781e-02</internalNodes>
<leafValues>
6.6529387235641479e-01 -2.7510228753089905e-01</leafValues></_>
<_>
<internalNodes>
0 -1 22 -2.8713539242744446e-02</internalNodes>
<leafValues>
6.9955700635910034e-01 -1.9615580141544342e-01</leafValues></_>
<_>
<internalNodes>
0 -1 23 -1.1467480100691319e-02</internalNodes>
<leafValues>
5.9267348051071167e-01 -2.2097350656986237e-01</leafValues></_>
<_>
<internalNodes>
0 -1 24 -2.2611169144511223e-02</internalNodes>
<leafValues>
3.4483069181442261e-01 -3.8379558920860291e-01</leafValues></_>
<_>
<internalNodes>
0 -1 25 -1.9308089977130294e-03</internalNodes>
<leafValues>
-7.9445719718933105e-01 1.5628659725189209e-01</leafValues></_>
<_>
<internalNodes>
0 -1 26 5.6419910833938047e-05</internalNodes>
<leafValues>
-3.0896010994911194e-01 3.5431089997291565e-01</leafValues></_></weakClassifiers></_>
<_>
<maxWeakCount>16</maxWeakCount>
<stageThreshold>-1.2879480123519897e+00</stageThreshold>
<weakClassifiers>
<_>
<internalNodes>
0 -1 27 1.9886520504951477e-01</internalNodes>
<leafValues>
-5.2860701084136963e-01 3.5536721348762512e-01</leafValues></_>
<_>
<internalNodes>
0 -1 28 -3.6008939146995544e-02</internalNodes>
<leafValues>
4.2109689116477966e-01 -3.9348980784416199e-01</leafValues></_>
<_>
<internalNodes>
0 -1 29 -7.7569849789142609e-02</internalNodes>
<leafValues>
4.7991541028022766e-01 -2.5122168660163879e-01</leafValues></_>
<_>
<internalNodes>
0 -1 30 8.2630853285081685e-05</internalNodes>
<leafValues>
-3.8475489616394043e-01 3.1849220395088196e-01</leafValues></_>
<_>
<internalNodes>
0 -1 31 3.2773229759186506e-04</internalNodes>
<leafValues>
-2.6427319645881653e-01 3.2547241449356079e-01</leafValues></_>
<_>
<internalNodes>
0 -1 32 -1.8574850633740425e-02</internalNodes>
<leafValues>
4.6736589074134827e-01 -1.5067270398139954e-01</leafValues></_>
<_>
<internalNodes>
0 -1 33 -7.0008762122597545e-05</internalNodes>
<leafValues>
2.9313150048255920e-01 -2.5365099310874939e-01</leafValues></_>
<_>
<internalNodes>
0 -1 34 -1.8552130088210106e-02</internalNodes>
<leafValues>
4.6273660659790039e-01 -1.3148050010204315e-01</leafValues></_>
<_>
<internalNodes>
0 -1 35 -1.3030420057475567e-02</internalNodes>
<leafValues>
4.1627219319343567e-01 -1.7751489579677582e-01</leafValues></_>
<_>
<internalNodes>
0 -1 36 6.5694141085259616e-05</internalNodes>
<leafValues>
-2.8035101294517517e-01 2.6680740714073181e-01</leafValues></_>
<_>
<internalNodes>
0 -1 37 1.7005260451696813e-04</internalNodes>
<leafValues>
-2.7027249336242676e-01 2.3981650173664093e-01</leafValues></_>
<_>
<internalNodes>
0 -1 38 -3.3129199873656034e-03</internalNodes>
<leafValues>
4.4411438703536987e-01 -1.4428889751434326e-01</leafValues></_>
<_>
<internalNodes>
0 -1 39 1.7583490116521716e-03</internalNodes>
<leafValues>
-1.6126190125942230e-01 4.2940768599510193e-01</leafValues></_>
<_>
<internalNodes>
0 -1 40 -2.5194749236106873e-02</internalNodes>
<leafValues>
4.0687298774719238e-01 -1.8202580511569977e-01</leafValues></_>
<_>
<internalNodes>
0 -1 41 1.4031709870323539e-03</internalNodes>
<leafValues>
8.4759786725044250e-02 -8.0018568038940430e-01</leafValues></_>
<_>
<internalNodes>
0 -1 42 -7.3991729877889156e-03</internalNodes>
<leafValues>
5.5766099691390991e-01 -1.1843159794807434e-01</leafValues></_></weakClassifiers></_>
<_>
<maxWeakCount>23</maxWeakCount>
<stageThreshold>-1.2179850339889526e+00</stageThreshold>
<weakClassifiers>
<_>
<internalNodes>
0 -1 43 -2.9943080618977547e-02</internalNodes>
<leafValues>
3.5810810327529907e-01 -3.8487631082534790e-01</leafValues></_>
<_>
<internalNodes>
0 -1 44 -1.2567380070686340e-01</internalNodes>
<leafValues>
3.9316931366920471e-01 -3.0012258887290955e-01</leafValues></_>
<_>
<internalNodes>
0 -1 45 5.3635272197425365e-03</internalNodes>
<leafValues>
-4.3908619880676270e-01 1.9257010519504547e-01</leafValues></_>
<_>
<internalNodes>
0 -1 46 -8.0971820279955864e-03</internalNodes>
<leafValues>
3.9906668663024902e-01 -2.3407870531082153e-01</leafValues></_>
<_>
<internalNodes>
0 -1 47 -1.6597909852862358e-02</internalNodes>
<leafValues>
4.2095288634300232e-01 -2.2674840688705444e-01</leafValues></_>
<_>
<internalNodes>
0 -1 48 -2.0199299324303865e-03</internalNodes>
<leafValues>
-7.4156731367111206e-01 1.2601189315319061e-01</leafValues></_>
<_>
<internalNodes>
0 -1 49 -1.5202340437099338e-03</internalNodes>
<leafValues>
-7.6154601573944092e-01 8.6373612284660339e-02</leafValues></_>
<_>
<internalNodes>
0 -1 50 -4.9663940444588661e-03</internalNodes>
<leafValues>
4.2182239890098572e-01 -1.7904919385910034e-01</leafValues></_>
<_>
<internalNodes>
0 -1 51 -1.9207600504159927e-02</internalNodes>
<leafValues>
4.6894899010658264e-01 -1.4378750324249268e-01</leafValues></_>
<_>
<internalNodes>
0 -1 52 -1.2222680263221264e-02</internalNodes>
<leafValues>
3.2842078804969788e-01 -2.1802149713039398e-01</leafValues></_>
<_>
<internalNodes>
0 -1 53 5.7548668235540390e-02</internalNodes>
<leafValues>
-3.6768808960914612e-01 2.4357110261917114e-01</leafValues></_>
<_>
<internalNodes>
0 -1 54 -9.5794079825282097e-03</internalNodes>
<leafValues>
-7.2245067358016968e-01 6.3664563000202179e-02</leafValues></_>
<_>
<internalNodes>
0 -1 55 -2.9545740690082312e-03</internalNodes>
<leafValues>
3.5846439003944397e-01 -1.6696329414844513e-01</leafValues></_>
<_>
<internalNodes>
0 -1 56 -4.2017991654574871e-03</internalNodes>
<leafValues>
3.9094808697700500e-01 -1.2041790038347244e-01</leafValues></_>
<_>
<internalNodes>
0 -1 57 -1.3624990358948708e-02</internalNodes>
<leafValues>
-5.8767718076705933e-01 8.8404729962348938e-02</leafValues></_>
<_>
<internalNodes>
0 -1 58 6.2853112467564642e-05</internalNodes>
<leafValues>
-2.6348459720611572e-01 2.1419279277324677e-01</leafValues></_>
<_>
<internalNodes>
0 -1 59 -2.6782939676195383e-03</internalNodes>
<leafValues>
-7.8390169143676758e-01 8.0526962876319885e-02</leafValues></_>
<_>
<internalNodes>
0 -1 60 -7.0597179234027863e-02</internalNodes>
<leafValues>
4.1469261050224304e-01 -1.3989959657192230e-01</leafValues></_>
<_>
<internalNodes>
0 -1 61 9.2093646526336670e-02</internalNodes>
<leafValues>
-1.3055180013179779e-01 5.0435781478881836e-01</leafValues></_>
<_>
<internalNodes>
0 -1 62 -8.8004386052489281e-03</internalNodes>
<leafValues>
3.6609750986099243e-01 -1.4036649465560913e-01</leafValues></_>
<_>
<internalNodes>
0 -1 63 7.5080977694597095e-05</internalNodes>
<leafValues>
-2.9704439640045166e-01 2.0702940225601196e-01</leafValues></_>
<_>
<internalNodes>
0 -1 64 -2.9870450962334871e-03</internalNodes>
<leafValues>
3.5615700483322144e-01 -1.5445969998836517e-01</leafValues></_>
<_>
<internalNodes>
0 -1 65 -2.6441509835422039e-03</internalNodes>
<leafValues>
-5.4353517293930054e-01 1.0295110195875168e-01</leafValues></_></weakClassifiers></_>
<_>
<maxWeakCount>27</maxWeakCount>
<stageThreshold>-1.2905240058898926e+00</stageThreshold>
<weakClassifiers>
<_>
<internalNodes>
0 -1 66 -4.7862470149993896e-02</internalNodes>
<leafValues>
4.1528239846229553e-01 -3.4185820817947388e-01</leafValues></_>
<_>
<internalNodes>
0 -1 67 8.7350532412528992e-02</internalNodes>
<leafValues>
-3.8749781250953674e-01 2.4204200506210327e-01</leafValues></_>
<_>
<internalNodes>
0 -1 68 -1.6849499195814133e-02</internalNodes>
<leafValues>
5.3082478046417236e-01 -1.7282910645008087e-01</leafValues></_>
<_>
<internalNodes>
0 -1 69 -2.8870029374957085e-02</internalNodes>
<leafValues>
3.5843509435653687e-01 -2.2402590513229370e-01</leafValues></_>
<_>
<internalNodes>
0 -1 70 2.5679389946162701e-03</internalNodes>
<leafValues>
1.4990499615669250e-01 -6.5609407424926758e-01</leafValues></_>
<_>
<internalNodes>
0 -1 71 -2.4116659536957741e-02</internalNodes>
<leafValues>
5.5889678001403809e-01 -1.4810280501842499e-01</leafValues></_>
<_>
<internalNodes>
0 -1 72 -3.2826658338308334e-02</internalNodes>
<leafValues>
4.6468681097030640e-01 -1.0785529762506485e-01</leafValues></_>
<_>
<internalNodes>
0 -1 73 -1.5233060345053673e-02</internalNodes>
<leafValues>
-7.3954427242279053e-01 5.6236881762742996e-02</leafValues></_>
<_>
<internalNodes>
0 -1 74 -3.0209511169232428e-04</internalNodes>
<leafValues>
-4.5548820495605469e-01 9.7069837152957916e-02</leafValues></_>
<_>
<internalNodes>
0 -1 75 7.5365108205005527e-04</internalNodes>
<leafValues>
9.5147296786308289e-02 -5.4895019531250000e-01</leafValues></_>
<_>
<internalNodes>
0 -1 76 -1.0638950392603874e-02</internalNodes>
<leafValues>
4.0912970900535583e-01 -1.2308409810066223e-01</leafValues></_>
<_>
<internalNodes>
0 -1 77 -7.5217830017209053e-03</internalNodes>
<leafValues>
4.0289148688316345e-01 -1.6048780083656311e-01</leafValues></_>
<_>
<internalNodes>
0 -1 78 -1.0677099972963333e-01</internalNodes>
<leafValues>
6.1759322881698608e-01 -7.3091186583042145e-02</leafValues></_>
<_>
<internalNodes>
0 -1 79 1.6256919130682945e-02</internalNodes>
<leafValues>
-1.3103680312633514e-01 3.7453651428222656e-01</leafValues></_>
<_>
<internalNodes>
0 -1 80 -2.0679360255599022e-02</internalNodes>
<leafValues>
-7.1402907371520996e-01 5.2390009164810181e-02</leafValues></_>
<_>
<internalNodes>
0 -1 81 1.7052369192242622e-02</internalNodes>
<leafValues>
1.2822860479354858e-01 -3.1080681085586548e-01</leafValues></_>
<_>
<internalNodes>
0 -1 82 -5.7122060097754002e-03</internalNodes>
<leafValues>
-6.0556507110595703e-01 8.1884756684303284e-02</leafValues></_>
<_>
<internalNodes>
0 -1 83 2.0851430235779844e-05</internalNodes>
<leafValues>
-2.6812988519668579e-01 1.4453840255737305e-01</leafValues></_>
<_>
<internalNodes>
0 -1 84 7.9284431412816048e-03</internalNodes>
<leafValues>
-7.8795351088047028e-02 5.6762582063674927e-01</leafValues></_>
<_>
<internalNodes>
0 -1 85 -2.5217379443347454e-03</internalNodes>
<leafValues>
3.7068629264831543e-01 -1.3620570302009583e-01</leafValues></_>
<_>
<internalNodes>
0 -1 86 -2.2426199167966843e-02</internalNodes>
<leafValues>
-6.8704998493194580e-01 5.1062859594821930e-02</leafValues></_>
<_>
<internalNodes>
0 -1 87 -7.6451441273093224e-03</internalNodes>
<leafValues>
2.3492220044136047e-01 -1.7905959486961365e-01</leafValues></_>
<_>
<internalNodes>
0 -1 88 -1.1175329564139247e-03</internalNodes>
<leafValues>
-5.9869050979614258e-01 7.4324436485767365e-02</leafValues></_>
<_>
<internalNodes>
0 -1 89 1.9212789833545685e-02</internalNodes>
<leafValues>
-1.5702550113201141e-01 2.9737469553947449e-01</leafValues></_>
<_>
<internalNodes>
0 -1 90 5.6293429806828499e-03</internalNodes>
<leafValues>
-9.9769018590450287e-02 4.2130270600318909e-01</leafValues></_>
<_>
<internalNodes>
0 -1 91 -9.5671862363815308e-03</internalNodes>
<leafValues>
-6.0858798027038574e-01 7.3506258428096771e-02</leafValues></_>
<_>
<internalNodes>
0 -1 92 1.1217960156500340e-02</internalNodes>
<leafValues>
-1.0320810228586197e-01 4.1909849643707275e-01</leafValues></_></weakClassifiers></_>
<_>
<maxWeakCount>28</maxWeakCount>
<stageThreshold>-1.1600480079650879e+00</stageThreshold>
<weakClassifiers>
<_>
<internalNodes>
0 -1 93 -1.7486440017819405e-02</internalNodes>
<leafValues>
3.1307280063629150e-01 -3.3681181073188782e-01</leafValues></_>
<_>
<internalNodes>
0 -1 94 3.0714649707078934e-02</internalNodes>
<leafValues>
-1.8766190111637115e-01 5.3780800104141235e-01</leafValues></_>
<_>
<internalNodes>
0 -1 95 -2.2188719362020493e-02</internalNodes>
<leafValues>
3.6637881398200989e-01 -1.6124810278415680e-01</leafValues></_>
<_>
<internalNodes>
0 -1 96 -5.0700771680567414e-05</internalNodes>
<leafValues>
2.1245710551738739e-01 -2.8444620966911316e-01</leafValues></_>
<_>
<internalNodes>
0 -1 97 -7.0170420221984386e-03</internalNodes>
<leafValues>
3.9543110132217407e-01 -1.3173590600490570e-01</leafValues></_>
<_>
<internalNodes>
0 -1 98 -6.8563609384000301e-03</internalNodes>
<leafValues>
3.0373859405517578e-01 -2.0657819509506226e-01</leafValues></_>
<_>
<internalNodes>
0 -1 99 -1.4129259623587132e-02</internalNodes>
<leafValues>
-7.6503008604049683e-01 9.8213188350200653e-02</leafValues></_>
<_>
<internalNodes>
0 -1 100 -4.7915481030941010e-02</internalNodes>
<leafValues>
4.8307389020919800e-01 -1.3006809353828430e-01</leafValues></_>
<_>
<internalNodes>
0 -1 101 4.7032979637151584e-05</internalNodes>
<leafValues>
-2.5216570496559143e-01 2.4386680126190186e-01</leafValues></_>
<_>
<internalNodes>
0 -1 102 1.0221180273219943e-03</internalNodes>
<leafValues>
6.8857602775096893e-02 -6.5861141681671143e-01</leafValues></_>
<_>
<internalNodes>
0 -1 103 -2.6056109927594662e-03</internalNodes>
<leafValues>
4.2942029237747192e-01 -1.3022460043430328e-01</leafValues></_>
<_>
<internalNodes>
0 -1 104 5.4505340813193470e-05</internalNodes>
<leafValues>
-1.9288620352745056e-01 2.8958499431610107e-01</leafValues></_>
<_>
<internalNodes>
0 -1 105 -6.6721157054416835e-05</internalNodes>
<leafValues>
3.0290710926055908e-01 -1.9854369759559631e-01</leafValues></_>
<_>
<internalNodes>
0 -1 106 2.6281431317329407e-01</internalNodes>
<leafValues>
-2.3293940722942352e-01 2.3692460358142853e-01</leafValues></_>
<_>
<internalNodes>
0 -1 107 -2.3569669574499130e-02</internalNodes>
<leafValues>
1.9401040673255920e-01 -2.8484618663787842e-01</leafValues></_>
<_>
<internalNodes>
0 -1 108 -3.9120172150433064e-03</internalNodes>
<leafValues>
5.5378979444503784e-01 -9.5665678381919861e-02</leafValues></_>
<_>
<internalNodes>
0 -1 109 5.0788799853762612e-05</internalNodes>
<leafValues>
-2.3912659287452698e-01 2.1799489855766296e-01</leafValues></_>
<_>
<internalNodes>
0 -1 110 -7.8732017427682877e-03</internalNodes>
<leafValues>
4.0697428584098816e-01 -1.2768040597438812e-01</leafValues></_>
<_>
<internalNodes>
0 -1 111 -1.6778609715402126e-03</internalNodes>
<leafValues>
-5.7744657993316650e-01 9.7324788570404053e-02</leafValues></_>
<_>
<internalNodes>
0 -1 112 -2.6832430739887059e-04</internalNodes>
<leafValues>
2.9021880030632019e-01 -1.6831269860267639e-01</leafValues></_>
<_>
<internalNodes>
0 -1 113 7.8687182394787669e-05</internalNodes>
<leafValues>
-1.9551570713520050e-01 2.7720969915390015e-01</leafValues></_>
<_>
<internalNodes>
0 -1 114 1.2953500263392925e-02</internalNodes>
<leafValues>
-9.6838317811489105e-02 4.0323871374130249e-01</leafValues></_>
<_>
<internalNodes>
0 -1 115 -1.3043959625065327e-02</internalNodes>
<leafValues>
4.7198569774627686e-01 -8.9287549257278442e-02</leafValues></_>
<_>
<internalNodes>
0 -1 116 3.0261781066656113e-03</internalNodes>
<leafValues>
-1.3623380661010742e-01 3.0686271190643311e-01</leafValues></_>
<_>
<internalNodes>
0 -1 117 -6.0438038781285286e-03</internalNodes>
<leafValues>
-7.7954101562500000e-01 5.7316310703754425e-02</leafValues></_>
<_>
<internalNodes>
0 -1 118 -2.2507249377667904e-03</internalNodes>
<leafValues>
3.0877059698104858e-01 -1.5006309747695923e-01</leafValues></_>
<_>
<internalNodes>
0 -1 119 1.5826810151338577e-02</internalNodes>
<leafValues>
6.4551889896392822e-02 -7.2455567121505737e-01</leafValues></_>
<_>
<internalNodes>
0 -1 120 6.5864507632795721e-05</internalNodes>
<leafValues>
-1.7598840594291687e-01 2.3210389912128448e-01</leafValues></_></weakClassifiers></_>
<_>
<maxWeakCount>36</maxWeakCount>
<stageThreshold>-1.2257250547409058e+00</stageThreshold>
<weakClassifiers>
<_>
<internalNodes>
0 -1 121 -2.7854869142174721e-02</internalNodes>
<leafValues>
4.5518448948860168e-01 -1.8099910020828247e-01</leafValues></_>
<_>
<internalNodes>
0 -1 122 1.2895040214061737e-01</internalNodes>
<leafValues>
-5.2565532922744751e-01 1.6188900172710419e-01</leafValues></_>
<_>
<internalNodes>
0 -1 123 2.4403180927038193e-02</internalNodes>
<leafValues>
-1.4974960684776306e-01 4.2357379198074341e-01</leafValues></_>
<_>
<internalNodes>
0 -1 124 -2.4458570405840874e-03</internalNodes>
<leafValues>
3.2948669791221619e-01 -1.7447690665721893e-01</leafValues></_>
<_>
<internalNodes>
0 -1 125 -3.5336529836058617e-03</internalNodes>
<leafValues>
4.7426640987396240e-01 -7.3618359863758087e-02</leafValues></_>
<_>
<internalNodes>
0 -1 126 5.1358150813030079e-05</internalNodes>
<leafValues>
-3.0421930551528931e-01 1.5633270144462585e-01</leafValues></_>
<_>
<internalNodes>
0 -1 127 -1.6225680708885193e-02</internalNodes>
<leafValues>
2.3002180457115173e-01 -2.0359820127487183e-01</leafValues></_>
<_>
<internalNodes>
0 -1 128 -4.6007009223103523e-03</internalNodes>
<leafValues>
4.0459269285202026e-01 -1.3485440611839294e-01</leafValues></_>
<_>
<internalNodes>
0 -1 129 -2.1928999572992325e-02</internalNodes>
<leafValues>
-6.8724489212036133e-01 8.0684266984462738e-02</leafValues></_>
<_>
<internalNodes>
0 -1 130 -2.8971210122108459e-03</internalNodes>
<leafValues>
-6.9619607925415039e-01 4.8545219004154205e-02</leafValues></_>
<_>
<internalNodes>
0 -1 131 -4.4074649922549725e-03</internalNodes>
<leafValues>
2.5166261196136475e-01 -1.6236649453639984e-01</leafValues></_>
<_>
<internalNodes>
0 -1 132 2.8437169268727303e-02</internalNodes>
<leafValues>
6.0394261032342911e-02 -6.6744458675384521e-01</leafValues></_>
<_>
<internalNodes>
0 -1 133 8.3212882280349731e-02</internalNodes>
<leafValues>
6.4357921481132507e-02 -5.3626042604446411e-01</leafValues></_>
<_>
<internalNodes>
0 -1 134 -1.2419329956173897e-02</internalNodes>
<leafValues>
-7.0816862583160400e-01 5.7526610791683197e-02</leafValues></_>
<_>
<internalNodes>
0 -1 135 -4.6992599964141846e-03</internalNodes>
<leafValues>
5.1254332065582275e-01 -8.7350800633430481e-02</leafValues></_>
<_>
<internalNodes>
0 -1 136 -7.8025809489190578e-04</internalNodes>
<leafValues>
2.6687660813331604e-01 -1.7961509525775909e-01</leafValues></_>
<_>
<internalNodes>
0 -1 137 -1.9724339246749878e-02</internalNodes>
<leafValues>
-6.7563730478286743e-01 7.2941906750202179e-02</leafValues></_>
<_>
<internalNodes>
0 -1 138 1.0269250487908721e-03</internalNodes>
<leafValues>
5.3919319063425064e-02 -5.5540180206298828e-01</leafValues></_>
<_>
<internalNodes>
0 -1 139 -2.5957189500331879e-02</internalNodes>
<leafValues>
5.6362527608871460e-01 -7.1898393332958221e-02</leafValues></_>
<_>
<internalNodes>
0 -1 140 -1.2552699772641063e-03</internalNodes>
<leafValues>
-5.0346630811691284e-01 8.9691452682018280e-02</leafValues></_>
<_>
<internalNodes>
0 -1 141 -4.9970578402280807e-02</internalNodes>
<leafValues>
1.7685119807720184e-01 -2.2301959991455078e-01</leafValues></_>
<_>
<internalNodes>
0 -1 142 -2.9899610672146082e-03</internalNodes>
<leafValues>
3.9122420549392700e-01 -1.0149750113487244e-01</leafValues></_>
<_>
<internalNodes>
0 -1 143 4.8546842299401760e-03</internalNodes>
<leafValues>
-1.1770179867744446e-01 4.2190939188003540e-01</leafValues></_>
<_>
<internalNodes>
0 -1 144 1.0448860120959580e-04</internalNodes>
<leafValues>
-1.7333979904651642e-01 2.2344440221786499e-01</leafValues></_>
<_>
<internalNodes>
0 -1 145 5.9689260524464771e-05</internalNodes>
<leafValues>
-2.3409630358219147e-01 1.6558240354061127e-01</leafValues></_>
<_>
<internalNodes>
0 -1 146 -1.3423919677734375e-02</internalNodes>
<leafValues>
4.3023818731307983e-01 -9.9723652005195618e-02</leafValues></_>
<_>
<internalNodes>
0 -1 147 2.2581999655812979e-03</internalNodes>
<leafValues>
7.2720989584922791e-02 -5.7501018047332764e-01</leafValues></_>
<_>
<internalNodes>
0 -1 148 -1.2546280398964882e-02</internalNodes>
<leafValues>
3.6184579133987427e-01 -1.1457010358572006e-01</leafValues></_>
<_>
<internalNodes>
0 -1 149 -2.8705769218504429e-03</internalNodes>
<leafValues>
2.8210538625717163e-01 -1.2367550283670425e-01</leafValues></_>
<_>
<internalNodes>
0 -1 150 1.9785640761256218e-02</internalNodes>
<leafValues>
4.7876749187707901e-02 -8.0666238069534302e-01</leafValues></_>
<_>
<internalNodes>
0 -1 151 4.7588930465281010e-03</internalNodes>
<leafValues>
-1.0925389826297760e-01 3.3746978640556335e-01</leafValues></_>
<_>
<internalNodes>
0 -1 152 -6.9974269717931747e-03</internalNodes>
<leafValues>
-8.0295938253402710e-01 4.5706700533628464e-02</leafValues></_>
<_>
<internalNodes>
0 -1 153 -1.3033480383455753e-02</internalNodes>
<leafValues>
1.8680439889431000e-01 -1.7688910663127899e-01</leafValues></_>
<_>
<internalNodes>
0 -1 154 -1.3742579612880945e-03</internalNodes>
<leafValues>
2.7725479006767273e-01 -1.2809009850025177e-01</leafValues></_>
<_>
<internalNodes>
0 -1 155 2.7657810132950544e-03</internalNodes>
<leafValues>
9.0758942067623138e-02 -4.2594739794731140e-01</leafValues></_>
<_>
<internalNodes>
0 -1 156 2.8941841446794569e-04</internalNodes>
<leafValues>
-3.8816329836845398e-01 8.9267797768115997e-02</leafValues></_></weakClassifiers></_>
<_>
<maxWeakCount>47</maxWeakCount>
<stageThreshold>-1.2863140106201172e+00</stageThreshold>
<weakClassifiers>
<_>
<internalNodes>
0 -1 157 -1.4469229616224766e-02</internalNodes>
<leafValues>
3.7507829070091248e-01 -2.4928289651870728e-01</leafValues></_>
<_>
<internalNodes>
0 -1 158 -1.3317629694938660e-01</internalNodes>
<leafValues>
3.0166378617286682e-01 -2.2414070367813110e-01</leafValues></_>
<_>
<internalNodes>
0 -1 159 -1.0132160037755966e-02</internalNodes>
<leafValues>
3.6985591053962708e-01 -1.7850010097026825e-01</leafValues></_>
<_>
<internalNodes>
0 -1 160 -7.8511182218790054e-03</internalNodes>
<leafValues>
4.6086761355400085e-01 -1.2931390106678009e-01</leafValues></_>
<_>
<internalNodes>
0 -1 161 -1.4295839704573154e-02</internalNodes>
<leafValues>
4.4841429591178894e-01 -1.0226240009069443e-01</leafValues></_>
<_>
<internalNodes>
0 -1 162 -5.9606940485537052e-03</internalNodes>
<leafValues>
2.7927988767623901e-01 -1.5323829650878906e-01</leafValues></_>
<_>
<internalNodes>
0 -1 163 1.0932769626379013e-02</internalNodes>
<leafValues>
-1.5141740441322327e-01 3.9889648556709290e-01</leafValues></_>
<_>
<internalNodes>
0 -1 164 5.0430990086169913e-05</internalNodes>
<leafValues>
-2.2681570053100586e-01 2.1644389629364014e-01</leafValues></_>
<_>
<internalNodes>
0 -1 165 -5.8431681245565414e-03</internalNodes>
<leafValues>
4.5420148968696594e-01 -1.2587159872055054e-01</leafValues></_>
<_>
<internalNodes>
0 -1 166 -2.2346209734678268e-02</internalNodes>
<leafValues>
-6.2690192461013794e-01 8.2403123378753662e-02</leafValues></_>
<_>
<internalNodes>
0 -1 167 -4.8836669884622097e-03</internalNodes>
<leafValues>
2.6359251141548157e-01 -1.4686630666255951e-01</leafValues></_>
<_>
<internalNodes>
0 -1 168 7.5506002758629620e-05</internalNodes>
<leafValues>
-2.4507020413875580e-01 1.6678880155086517e-01</leafValues></_>
<_>
<internalNodes>
0 -1 169 -4.9026997294276953e-04</internalNodes>
<leafValues>
-4.2649960517883301e-01 8.9973561465740204e-02</leafValues></_>
<_>
<internalNodes>
0 -1 170 1.4861579984426498e-03</internalNodes>
<leafValues>
-1.2040250003337860e-01 3.0097651481628418e-01</leafValues></_>
<_>
<internalNodes>
0 -1 171 -1.1988339945673943e-02</internalNodes>
<leafValues>
2.7852478623390198e-01 -1.2244340032339096e-01</leafValues></_>
<_>
<internalNodes>
0 -1 172 1.0502239689230919e-02</internalNodes>
<leafValues>
4.0452759712934494e-02 -7.4050408601760864e-01</leafValues></_>
<_>
<internalNodes>
0 -1 173 -3.0963009223341942e-02</internalNodes>
<leafValues>
-6.2842690944671631e-01 4.8013761639595032e-02</leafValues></_>
<_>
<internalNodes>
0 -1 174 1.1414520442485809e-02</internalNodes>
<leafValues>
3.9405211806297302e-02 -7.1674120426177979e-01</leafValues></_>
<_>
<internalNodes>
0 -1 175 -1.2337000109255314e-02</internalNodes>
<leafValues>
1.9941329956054688e-01 -1.9274300336837769e-01</leafValues></_>
<_>
<internalNodes>
0 -1 176 -5.9942267835140228e-03</internalNodes>
<leafValues>
5.1318162679672241e-01 -6.1658058315515518e-02</leafValues></_>
<_>
<internalNodes>
0 -1 177 -1.1923230485990644e-03</internalNodes>
<leafValues>
-7.2605299949645996e-01 5.0652720034122467e-02</leafValues></_>
<_>
<internalNodes>
0 -1 178 -7.4582789093255997e-03</internalNodes>
<leafValues>
2.9603078961372375e-01 -1.1754789948463440e-01</leafValues></_>
<_>
<internalNodes>
0 -1 179 2.7877509128302336e-03</internalNodes>
<leafValues>
4.5068711042404175e-02 -6.9535410404205322e-01</leafValues></_>
<_>
<internalNodes>
0 -1 180 -2.2503209766000509e-04</internalNodes>
<leafValues>
2.0047250390052795e-01 -1.5775249898433685e-01</leafValues></_>
<_>
<internalNodes>
0 -1 181 -5.0367889925837517e-03</internalNodes>
<leafValues>
...
This file has been truncated, please download it to see its full contents.
<?xml version="1.0"?>
<!--
Stump-based 24x24 discrete(?) adaboost frontal face detector.
Created by Rainer Lienhart.
////////////////////////////////////////////////////////////////////////////////////////
IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
By downloading, copying, installing or using the software you agree to this license.
If you do not agree to this license, do not download, install,
copy or use the software.
Intel License Agreement
For Open Source Computer Vision Library
Copyright (C) 2000, Intel Corporation, all rights reserved.
Third party copyrights are property of their respective owners.
Redistribution and use in source and binary forms, with or without modification,
are permitted provided that the following conditions are met:
* Redistribution's of source code must retain the above copyright notice,
this list of conditions and the following disclaimer.
* Redistribution's in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
* The name of Intel Corporation may not be used to endorse or promote products
derived from this software without specific prior written permission.
This software is provided by the copyright holders and contributors "as is" and
any express or implied warranties, including, but not limited to, the implied
warranties of merchantability and fitness for a particular purpose are disclaimed.
In no event shall the Intel Corporation or contributors be liable for any direct,
indirect, incidental, special, exemplary, or consequential damages
(including, but not limited to, procurement of substitute goods or services;
loss of use, data, or profits; or business interruption) however caused
and on any theory of liability, whether in contract, strict liability,
or tort (including negligence or otherwise) arising in any way out of
the use of this software, even if advised of the possibility of such damage.
-->
<opencv_storage>
<cascade type_id="opencv-cascade-classifier"><stageType>BOOST</stageType>
<featureType>HAAR</featureType>
<height>24</height>
<width>24</width>
<stageParams>
<maxWeakCount>211</maxWeakCount></stageParams>
<featureParams>
<maxCatCount>0</maxCatCount></featureParams>
<stageNum>25</stageNum>
<stages>
<_>
<maxWeakCount>9</maxWeakCount>
<stageThreshold>-5.0425500869750977e+00</stageThreshold>
<weakClassifiers>
<_>
<internalNodes>
0 -1 0 -3.1511999666690826e-02</internalNodes>
<leafValues>
2.0875380039215088e+00 -2.2172100543975830e+00</leafValues></_>
<_>
<internalNodes>
0 -1 1 1.2396000325679779e-02</internalNodes>
<leafValues>
-1.8633940219879150e+00 1.3272049427032471e+00</leafValues></_>
<_>
<internalNodes>
0 -1 2 2.1927999332547188e-02</internalNodes>
<leafValues>
-1.5105249881744385e+00 1.0625729560852051e+00</leafValues></_>
<_>
<internalNodes>
0 -1 3 5.7529998011887074e-03</internalNodes>
<leafValues>
-8.7463897466659546e-01 1.1760339736938477e+00</leafValues></_>
<_>
<internalNodes>
0 -1 4 1.5014000236988068e-02</internalNodes>
<leafValues>
-7.7945697307586670e-01 1.2608419656753540e+00</leafValues></_>
<_>
<internalNodes>
0 -1 5 9.9371001124382019e-02</internalNodes>
<leafValues>
5.5751299858093262e-01 -1.8743000030517578e+00</leafValues></_>
<_>
<internalNodes>
0 -1 6 2.7340000960975885e-03</internalNodes>
<leafValues>
-1.6911929845809937e+00 4.4009700417518616e-01</leafValues></_>
<_>
<internalNodes>
0 -1 7 -1.8859000876545906e-02</internalNodes>
<leafValues>
-1.4769539833068848e+00 4.4350099563598633e-01</leafValues></_>
<_>
<internalNodes>
0 -1 8 5.9739998541772366e-03</internalNodes>
<leafValues>
-8.5909199714660645e-01 8.5255599021911621e-01</leafValues></_></weakClassifiers></_>
<_>
<maxWeakCount>16</maxWeakCount>
<stageThreshold>-4.9842400550842285e+00</stageThreshold>
<weakClassifiers>
<_>
<internalNodes>
0 -1 9 -2.1110000088810921e-02</internalNodes>
<leafValues>
1.2435649633407593e+00 -1.5713009834289551e+00</leafValues></_>
<_>
<internalNodes>
0 -1 10 2.0355999469757080e-02</internalNodes>
<leafValues>
-1.6204780340194702e+00 1.1817760467529297e+00</leafValues></_>
<_>
<internalNodes>
0 -1 11 2.1308999508619308e-02</internalNodes>
<leafValues>
-1.9415930509567261e+00 7.0069098472595215e-01</leafValues></_>
<_>
<internalNodes>
0 -1 12 9.1660000383853912e-02</internalNodes>
<leafValues>
-5.5670100450515747e-01 1.7284419536590576e+00</leafValues></_>
<_>
<internalNodes>
0 -1 13 3.6288000643253326e-02</internalNodes>
<leafValues>
2.6763799786567688e-01 -2.1831810474395752e+00</leafValues></_>
<_>
<internalNodes>
0 -1 14 -1.9109999760985374e-02</internalNodes>
<leafValues>
-2.6730210781097412e+00 4.5670801401138306e-01</leafValues></_>
<_>
<internalNodes>
0 -1 15 8.2539999857544899e-03</internalNodes>
<leafValues>
-1.0852910280227661e+00 5.3564202785491943e-01</leafValues></_>
<_>
<internalNodes>
0 -1 16 1.8355000764131546e-02</internalNodes>
<leafValues>
-3.5200199484825134e-01 9.3339198827743530e-01</leafValues></_>
<_>
<internalNodes>
0 -1 17 -7.0569999516010284e-03</internalNodes>
<leafValues>
9.2782098054885864e-01 -6.6349899768829346e-01</leafValues></_>
<_>
<internalNodes>
0 -1 18 -9.8770000040531158e-03</internalNodes>
<leafValues>
1.1577470302581787e+00 -2.9774799942970276e-01</leafValues></_>
<_>
<internalNodes>
0 -1 19 1.5814000740647316e-02</internalNodes>
<leafValues>
-4.1960600018501282e-01 1.3576040267944336e+00</leafValues></_>
<_>
<internalNodes>
0 -1 20 -2.0700000226497650e-02</internalNodes>
<leafValues>
1.4590020179748535e+00 -1.9739399850368500e-01</leafValues></_>
<_>
<internalNodes>
0 -1 21 -1.3760800659656525e-01</internalNodes>
<leafValues>
1.1186759471893311e+00 -5.2915501594543457e-01</leafValues></_>
<_>
<internalNodes>
0 -1 22 1.4318999834358692e-02</internalNodes>
<leafValues>
-3.5127198696136475e-01 1.1440860033035278e+00</leafValues></_>
<_>
<internalNodes>
0 -1 23 1.0253000073134899e-02</internalNodes>
<leafValues>
-6.0850602388381958e-01 7.7098500728607178e-01</leafValues></_>
<_>
<internalNodes>
0 -1 24 9.1508001089096069e-02</internalNodes>
<leafValues>
3.8817799091339111e-01 -1.5122940540313721e+00</leafValues></_></weakClassifiers></_>
<_>
<maxWeakCount>27</maxWeakCount>
<stageThreshold>-4.6551899909973145e+00</stageThreshold>
<weakClassifiers>
<_>
<internalNodes>
0 -1 25 6.9747000932693481e-02</internalNodes>
<leafValues>
-1.0130879878997803e+00 1.4687349796295166e+00</leafValues></_>
<_>
<internalNodes>
0 -1 26 3.1502999365329742e-02</internalNodes>
<leafValues>
-1.6463639736175537e+00 1.0000629425048828e+00</leafValues></_>
<_>
<internalNodes>
0 -1 27 1.4260999858379364e-02</internalNodes>
<leafValues>
4.6480301022529602e-01 -1.5959889888763428e+00</leafValues></_>
<_>
<internalNodes>
0 -1 28 1.4453000389039516e-02</internalNodes>
<leafValues>
-6.5511900186538696e-01 8.3021801710128784e-01</leafValues></_>
<_>
<internalNodes>
0 -1 29 -3.0509999487549067e-03</internalNodes>
<leafValues>
-1.3982310295104980e+00 4.2550599575042725e-01</leafValues></_>
<_>
<internalNodes>
0 -1 30 3.2722998410463333e-02</internalNodes>
<leafValues>
-5.0702601671218872e-01 1.0526109933853149e+00</leafValues></_>
<_>
<internalNodes>
0 -1 31 -7.2960001416504383e-03</internalNodes>
<leafValues>
3.6356899142265320e-01 -1.3464889526367188e+00</leafValues></_>
<_>
<internalNodes>
0 -1 32 5.0425000488758087e-02</internalNodes>
<leafValues>
-3.0461400747299194e-01 1.4504129886627197e+00</leafValues></_>
<_>
<internalNodes>
0 -1 33 4.6879000961780548e-02</internalNodes>
<leafValues>
-4.0286201238632202e-01 1.2145609855651855e+00</leafValues></_>
<_>
<internalNodes>
0 -1 34 -6.9358997046947479e-02</internalNodes>
<leafValues>
1.0539360046386719e+00 -4.5719701051712036e-01</leafValues></_>
<_>
<internalNodes>
0 -1 35 -4.9033999443054199e-02</internalNodes>
<leafValues>
-1.6253089904785156e+00 1.5378999710083008e-01</leafValues></_>
<_>
<internalNodes>
0 -1 36 8.4827996790409088e-02</internalNodes>
<leafValues>
2.8402999043464661e-01 -1.5662059783935547e+00</leafValues></_>
<_>
<internalNodes>
0 -1 37 -1.7229999648407102e-03</internalNodes>
<leafValues>
-1.0147459506988525e+00 2.3294800519943237e-01</leafValues></_>
<_>
<internalNodes>
0 -1 38 1.1562199890613556e-01</internalNodes>
<leafValues>
-1.6732899844646454e-01 1.2804069519042969e+00</leafValues></_>
<_>
<internalNodes>
0 -1 39 -5.1279999315738678e-02</internalNodes>
<leafValues>
1.5162390470504761e+00 -3.0271100997924805e-01</leafValues></_>
<_>
<internalNodes>
0 -1 40 -4.2706999927759171e-02</internalNodes>
<leafValues>
1.7631920576095581e+00 -5.1832001656293869e-02</leafValues></_>
<_>
<internalNodes>
0 -1 41 3.7178099155426025e-01</internalNodes>
<leafValues>
-3.1389200687408447e-01 1.5357979536056519e+00</leafValues></_>
<_>
<internalNodes>
0 -1 42 1.9412999972701073e-02</internalNodes>
<leafValues>
-1.0017599910497665e-01 9.3655401468276978e-01</leafValues></_>
<_>
<internalNodes>
0 -1 43 1.7439000308513641e-02</internalNodes>
<leafValues>
-4.0379899740219116e-01 9.6293002367019653e-01</leafValues></_>
<_>
<internalNodes>
0 -1 44 3.9638999849557877e-02</internalNodes>
<leafValues>
1.7039099335670471e-01 -2.9602990150451660e+00</leafValues></_>
<_>
<internalNodes>
0 -1 45 -9.1469995677471161e-03</internalNodes>
<leafValues>
8.8786798715591431e-01 -4.3818700313568115e-01</leafValues></_>
<_>
<internalNodes>
0 -1 46 1.7219999572262168e-03</internalNodes>
<leafValues>
-3.7218600511550903e-01 4.0018901228904724e-01</leafValues></_>
<_>
<internalNodes>
0 -1 47 3.0231000855565071e-02</internalNodes>
<leafValues>
6.5924003720283508e-02 -2.6469180583953857e+00</leafValues></_>
<_>
<internalNodes>
0 -1 48 -7.8795999288558960e-02</internalNodes>
<leafValues>
-1.7491459846496582e+00 2.8475299477577209e-01</leafValues></_>
<_>
<internalNodes>
0 -1 49 2.1110000088810921e-03</internalNodes>
<leafValues>
-9.3908101320266724e-01 2.3205199837684631e-01</leafValues></_>
<_>
<internalNodes>
0 -1 50 2.7091000229120255e-02</internalNodes>
<leafValues>
-5.2664000540971756e-02 1.0756820440292358e+00</leafValues></_>
<_>
<internalNodes>
0 -1 51 -4.4964998960494995e-02</internalNodes>
<leafValues>
-1.8294479846954346e+00 9.9561996757984161e-02</leafValues></_></weakClassifiers></_>
<_>
<maxWeakCount>32</maxWeakCount>
<stageThreshold>-4.4531588554382324e+00</stageThreshold>
<weakClassifiers>
<_>
<internalNodes>
0 -1 52 -6.5701000392436981e-02</internalNodes>
<leafValues>
1.1558510065078735e+00 -1.0716359615325928e+00</leafValues></_>
<_>
<internalNodes>
0 -1 53 1.5839999541640282e-02</internalNodes>
<leafValues>
-1.5634720325469971e+00 7.6877099275588989e-01</leafValues></_>
<_>
<internalNodes>
0 -1 54 1.4570899307727814e-01</internalNodes>
<leafValues>
-5.7450097799301147e-01 1.3808720111846924e+00</leafValues></_>
<_>
<internalNodes>
0 -1 55 6.1389999464154243e-03</internalNodes>
<leafValues>
-1.4570560455322266e+00 5.1610302925109863e-01</leafValues></_>
<_>
<internalNodes>
0 -1 56 6.7179999314248562e-03</internalNodes>
<leafValues>
-8.3533602952957153e-01 5.8522200584411621e-01</leafValues></_>
<_>
<internalNodes>
0 -1 57 1.8518000841140747e-02</internalNodes>
<leafValues>
-3.1312099099159241e-01 1.1696679592132568e+00</leafValues></_>
<_>
<internalNodes>
0 -1 58 1.9958000630140305e-02</internalNodes>
<leafValues>
-4.3442600965499878e-01 9.5446902513504028e-01</leafValues></_>
<_>
<internalNodes>
0 -1 59 -2.7755001187324524e-01</internalNodes>
<leafValues>
1.4906179904937744e+00 -1.3815900683403015e-01</leafValues></_>
<_>
<internalNodes>
0 -1 60 9.1859996318817139e-03</internalNodes>
<leafValues>
-9.6361500024795532e-01 2.7665498852729797e-01</leafValues></_>
<_>
<internalNodes>
0 -1 61 -3.7737999111413956e-02</internalNodes>
<leafValues>
-2.4464108943939209e+00 2.3619599640369415e-01</leafValues></_>
<_>
<internalNodes>
0 -1 62 1.8463000655174255e-02</internalNodes>
<leafValues>
1.7539200186729431e-01 -1.3423130512237549e+00</leafValues></_>
<_>
<internalNodes>
0 -1 63 -1.1114999651908875e-02</internalNodes>
<leafValues>
4.8710799217224121e-01 -8.9851897954940796e-01</leafValues></_>
<_>
<internalNodes>
0 -1 64 3.3927999436855316e-02</internalNodes>
<leafValues>
1.7874200642108917e-01 -1.6342279911041260e+00</leafValues></_>
<_>
<internalNodes>
0 -1 65 -3.5649001598358154e-02</internalNodes>
<leafValues>
-1.9607399702072144e+00 1.8102499842643738e-01</leafValues></_>
<_>
<internalNodes>
0 -1 66 -1.1438000015914440e-02</internalNodes>
<leafValues>
9.9010699987411499e-01 -3.8103199005126953e-01</leafValues></_>
<_>
<internalNodes>
0 -1 67 -6.5236002206802368e-02</internalNodes>
<leafValues>
-2.5794160366058350e+00 2.4753600358963013e-01</leafValues></_>
<_>
<internalNodes>
0 -1 68 -4.2272001504898071e-02</internalNodes>
<leafValues>
1.4411840438842773e+00 -2.9508298635482788e-01</leafValues></_>
<_>
<internalNodes>
0 -1 69 1.9219999667257071e-03</internalNodes>
<leafValues>
-4.9608600139617920e-01 6.3173598051071167e-01</leafValues></_>
<_>
<internalNodes>
0 -1 70 -1.2921799719333649e-01</internalNodes>
<leafValues>
-2.3314270973205566e+00 5.4496999830007553e-02</leafValues></_>
<_>
<internalNodes>
0 -1 71 2.2931000217795372e-02</internalNodes>
<leafValues>
-8.4447097778320312e-01 3.8738098740577698e-01</leafValues></_>
<_>
<internalNodes>
0 -1 72 -3.4120000898838043e-02</internalNodes>
<leafValues>
-1.4431500434875488e+00 9.8422996699810028e-02</leafValues></_>
<_>
<internalNodes>
0 -1 73 2.6223000138998032e-02</internalNodes>
<leafValues>
1.8223099410533905e-01 -1.2586519718170166e+00</leafValues></_>
<_>
<internalNodes>
0 -1 74 2.2236999124288559e-02</internalNodes>
<leafValues>
6.9807998836040497e-02 -2.3820950984954834e+00</leafValues></_>
<_>
<internalNodes>
0 -1 75 -5.8240001089870930e-03</internalNodes>
<leafValues>
3.9332500100135803e-01 -2.7542799711227417e-01</leafValues></_>
<_>
<internalNodes>
0 -1 76 4.3653000146150589e-02</internalNodes>
<leafValues>
1.4832699298858643e-01 -1.1368780136108398e+00</leafValues></_>
<_>
<internalNodes>
0 -1 77 5.7266999036073685e-02</internalNodes>
<leafValues>
2.4628099799156189e-01 -1.2687400579452515e+00</leafValues></_>
<_>
<internalNodes>
0 -1 78 2.3409998975694180e-03</internalNodes>
<leafValues>
-7.5448900461196899e-01 2.7163800597190857e-01</leafValues></_>
<_>
<internalNodes>
0 -1 79 1.2996000237762928e-02</internalNodes>
<leafValues>
-3.6394900083541870e-01 7.0959198474884033e-01</leafValues></_>
<_>
<internalNodes>
0 -1 80 -2.6517000049352646e-02</internalNodes>
<leafValues>
-2.3221859931945801e+00 3.5744000226259232e-02</leafValues></_>
<_>
<internalNodes>
0 -1 81 -5.8400002308189869e-03</internalNodes>
<leafValues>
4.2194300889968872e-01 -4.8184998333454132e-02</leafValues></_>
<_>
<internalNodes>
0 -1 82 -1.6568999737501144e-02</internalNodes>
<leafValues>
1.1099940538406372e+00 -3.4849700331687927e-01</leafValues></_>
<_>
<internalNodes>
0 -1 83 -6.8157002329826355e-02</internalNodes>
<leafValues>
-3.3269989490509033e+00 2.1299000084400177e-01</leafValues></_></weakClassifiers></_>
<_>
<maxWeakCount>52</maxWeakCount>
<stageThreshold>-4.3864588737487793e+00</stageThreshold>
<weakClassifiers>
<_>
<internalNodes>
0 -1 84 3.9974000304937363e-02</internalNodes>
<leafValues>
-1.2173449993133545e+00 1.0826710462570190e+00</leafValues></_>
<_>
<internalNodes>
0 -1 85 1.8819500505924225e-01</internalNodes>
<leafValues>
-4.8289400339126587e-01 1.4045250415802002e+00</leafValues></_>
<_>
<internalNodes>
0 -1 86 7.8027002513408661e-02</internalNodes>
<leafValues>
-1.0782150030136108e+00 7.4040299654006958e-01</leafValues></_>
<_>
<internalNodes>
0 -1 87 1.1899999663000926e-04</internalNodes>
<leafValues>
-1.2019979953765869e+00 3.7749201059341431e-01</leafValues></_>
<_>
<internalNodes>
0 -1 88 8.5056997835636139e-02</internalNodes>
<leafValues>
-4.3939098715782166e-01 1.2647340297698975e+00</leafValues></_>
<_>
<internalNodes>
0 -1 89 8.9720003306865692e-03</internalNodes>
<leafValues>
-1.8440499901771545e-01 4.5726400613784790e-01</leafValues></_>
<_>
<internalNodes>
0 -1 90 8.8120000436902046e-03</internalNodes>
<leafValues>
3.0396699905395508e-01 -9.5991098880767822e-01</leafValues></_>
<_>
<internalNodes>
0 -1 91 -2.3507999256253242e-02</internalNodes>
<leafValues>
1.2487529516220093e+00 4.6227999031543732e-02</leafValues></_>
<_>
<internalNodes>
0 -1 92 7.0039997808635235e-03</internalNodes>
<leafValues>
-5.9442102909088135e-01 5.3963297605514526e-01</leafValues></_>
<_>
<internalNodes>
0 -1 93 3.3851999789476395e-02</internalNodes>
<leafValues>
2.8496098518371582e-01 -1.4895249605178833e+00</leafValues></_>
<_>
<internalNodes>
0 -1 94 -3.2530000898987055e-03</internalNodes>
<leafValues>
4.8120799660682678e-01 -5.2712398767471313e-01</leafValues></_>
<_>
<internalNodes>
0 -1 95 2.9097000136971474e-02</internalNodes>
<leafValues>
2.6743900775909424e-01 -1.6007850170135498e+00</leafValues></_>
<_>
<internalNodes>
0 -1 96 -8.4790000692009926e-03</internalNodes>
<leafValues>
-1.3107639551162720e+00 1.5243099629878998e-01</leafValues></_>
<_>
<internalNodes>
0 -1 97 -1.0795000009238720e-02</internalNodes>
<leafValues>
4.5613598823547363e-01 -7.2050899267196655e-01</leafValues></_>
<_>
<internalNodes>
0 -1 98 -2.4620000272989273e-02</internalNodes>
<leafValues>
-1.7320619821548462e+00 6.8363003432750702e-02</leafValues></_>
<_>
<internalNodes>
0 -1 99 3.7380000576376915e-03</internalNodes>
<leafValues>
-1.9303299486637115e-01 6.8243497610092163e-01</leafValues></_>
<_>
<internalNodes>
0 -1 100 -1.2264000251889229e-02</internalNodes>
<leafValues>
-1.6095290184020996e+00 7.5268000364303589e-02</leafValues></_>
<_>
<internalNodes>
0 -1 101 -4.8670000396668911e-03</internalNodes>
<leafValues>
7.4286502599716187e-01 -2.1510200202465057e-01</leafValues></_>
<_>
<internalNodes>
0 -1 102 7.6725997030735016e-02</internalNodes>
<leafValues>
-2.6835098862648010e-01 1.3094140291213989e+00</leafValues></_>
<_>
<internalNodes>
0 -1 103 2.8578000143170357e-02</internalNodes>
<leafValues>
-5.8793000876903534e-02 1.2196329832077026e+00</leafValues></_>
<_>
<internalNodes>
0 -1 104 1.9694000482559204e-02</internalNodes>
<leafValues>
-3.5142898559570312e-01 8.4926998615264893e-01</leafValues></_>
<_>
<internalNodes>
0 -1 105 -2.9093999415636063e-02</internalNodes>
<leafValues>
-1.0507299900054932e+00 2.9806300997734070e-01</leafValues></_>
<_>
<internalNodes>
0 -1 106 -2.9144000262022018e-02</internalNodes>
<leafValues>
8.2547801733016968e-01 -3.2687199115753174e-01</leafValues></_>
<_>
<internalNodes>
0 -1 107 1.9741000607609749e-02</internalNodes>
<leafValues>
2.0452600717544556e-01 -8.3760201930999756e-01</leafValues></_>
<_>
<internalNodes>
0 -1 108 4.3299999088048935e-03</internalNodes>
<leafValues>
2.0577900111675262e-01 -6.6829800605773926e-01</leafValues></_>
<_>
<internalNodes>
0 -1 109 -3.5500999540090561e-02</internalNodes>
<leafValues>
-1.2969900369644165e+00 1.3897499442100525e-01</leafValues></_>
<_>
<internalNodes>
0 -1 110 -1.6172999516129494e-02</internalNodes>
<leafValues>
-1.3110569715499878e+00 7.5751997530460358e-02</leafValues></_>
<_>
<internalNodes>
0 -1 111 -2.2151000797748566e-02</internalNodes>
<leafValues>
-1.0524389743804932e+00 1.9241100549697876e-01</leafValues></_>
<_>
<internalNodes>
0 -1 112 -2.2707000374794006e-02</internalNodes>
<leafValues>
-1.3735309839248657e+00 6.6780999302864075e-02</leafValues></_>
<_>
<internalNodes>
0 -1 113 1.6607999801635742e-02</internalNodes>
<leafValues>
-3.7135999649763107e-02 7.7846401929855347e-01</leafValues></_>
<_>
<internalNodes>
0 -1 114 -1.3309000059962273e-02</internalNodes>
<leafValues>
-9.9850702285766602e-01 1.2248100340366364e-01</leafValues></_>
<_>
<internalNodes>
0 -1 115 -3.3732000738382339e-02</internalNodes>
<leafValues>
1.4461359977722168e+00 1.3151999562978745e-02</leafValues></_>
<_>
<internalNodes>
0 -1 116 1.6935000196099281e-02</internalNodes>
<leafValues>
-3.7121298909187317e-01 5.2842199802398682e-01</leafValues></_>
<_>
<internalNodes>
0 -1 117 3.3259999472647905e-03</internalNodes>
<leafValues>
-5.7568502426147461e-01 3.9261901378631592e-01</leafValues></_>
<_>
<internalNodes>
0 -1 118 8.3644002676010132e-02</internalNodes>
<leafValues>
1.6116000711917877e-02 -2.1173279285430908e+00</leafValues></_>
<_>
<internalNodes>
0 -1 119 2.5785198807716370e-01</internalNodes>
<leafValues>
-8.1609003245830536e-02 9.8782497644424438e-01</leafValues></_>
<_>
<internalNodes>
0 -1 120 -3.6566998809576035e-02</internalNodes>
<leafValues>
-1.1512110233306885e+00 9.6459001302719116e-02</leafValues></_>
<_>
<internalNodes>
0 -1 121 -1.6445999965071678e-02</internalNodes>
<leafValues>
3.7315499782562256e-01 -1.4585399627685547e-01</leafValues></_>
<_>
<internalNodes>
0 -1 122 -3.7519999314099550e-03</internalNodes>
<leafValues>
2.6179298758506775e-01 -5.8156698942184448e-01</leafValues></_>
<_>
<internalNodes>
0 -1 123 -6.3660000450909138e-03</internalNodes>
<leafValues>
7.5477397441864014e-01 -1.7055200040340424e-01</leafValues></_>
<_>
<internalNodes>
0 -1 124 -3.8499999791383743e-03</internalNodes>
<leafValues>
2.2653999924659729e-01 -6.3876402378082275e-01</leafValues></_>
<_>
<internalNodes>
0 -1 125 -4.5494001358747482e-02</internalNodes>
<leafValues>
-1.2640299797058105e+00 2.5260698795318604e-01</leafValues></_>
<_>
<internalNodes>
0 -1 126 -2.3941000923514366e-02</internalNodes>
<leafValues>
8.7068402767181396e-01 -2.7104699611663818e-01</leafValues></_>
<_>
<internalNodes>
0 -1 127 -7.7558003365993500e-02</internalNodes>
<leafValues>
-1.3901610374450684e+00 2.3612299561500549e-01</leafValues></_>
<_>
<internalNodes>
0 -1 128 2.3614000529050827e-02</internalNodes>
<leafValues>
6.6140003502368927e-02 -1.2645419836044312e+00</leafValues></_>
<_>
<internalNodes>
0 -1 129 -2.5750000495463610e-03</internalNodes>
<leafValues>
-5.3841698169708252e-01 3.0379098653793335e-01</leafValues></_>
<_>
<internalNodes>
0 -1 130 1.2010800093412399e-01</internalNodes>
<leafValues>
-3.5343000292778015e-01 5.2866202592849731e-01</leafValues></_>
<_>
<internalNodes>
0 -1 131 2.2899999748915434e-03</internalNodes>
<leafValues>
-5.8701997995376587e-01 2.4061000347137451e-01</leafValues></_>
<_>
<internalNodes>
0 -1 132 6.9716997444629669e-02</internalNodes>
<leafValues>
-3.3348900079727173e-01 5.1916301250457764e-01</leafValues></_>
<_>
<internalNodes>
0 -1 133 -4.6670001000165939e-02</internalNodes>
<leafValues>
6.9795399904251099e-01 -1.4895999804139137e-02</leafValues></_>
<_>
<internalNodes>
0 -1 134 -5.0129000097513199e-02</internalNodes>
<leafValues>
8.6146199703216553e-01 -2.5986000895500183e-01</leafValues></_>
<_>
<internalNodes>
0 -1 135 3.0147999525070190e-02</internalNodes>
<leafValues>
1.9332799315452576e-01 -5.9131097793579102e-01</leafValues></_></weakClassifiers></_>
<_>
<maxWeakCount>53</maxWeakCount>
<stageThreshold>-4.1299300193786621e+00</stageThreshold>
<weakClassifiers>
<_>
<internalNodes>
0 -1 136 9.1085001826286316e-02</internalNodes>
<leafValues>
-8.9233100414276123e-01 1.0434230566024780e+00</leafValues></_>
<_>
<internalNodes>
0 -1 137 1.2818999588489532e-02</internalNodes>
<leafValues>
-1.2597670555114746e+00 5.5317097902297974e-01</leafValues></_>
<_>
<internalNodes>
0 -1 138 1.5931999310851097e-02</internalNodes>
<leafValues>
-8.6254400014877319e-01 6.3731801509857178e-01</leafValues></_>
<_>
<internalNodes>
0 -1 139 2.2780001163482666e-03</internalNodes>
<leafValues>
-7.4639201164245605e-01 5.3155601024627686e-01</leafValues></_>
<_>
<internalNodes>
0 -1 140 3.1840998679399490e-02</internalNodes>
<leafValues>
-1.2650489807128906e+00 3.6153900623321533e-01</leafValues></_>
<_>
<internalNodes>
0 -1 141 2.6960000395774841e-03</internalNodes>
<leafValues>
-9.8290401697158813e-01 3.6013001203536987e-01</leafValues></_>
<_>
<internalNodes>
0 -1 142 -1.2055000290274620e-02</internalNodes>
<leafValues>
6.4068400859832764e-01 -5.0125002861022949e-01</leafValues></_>
<_>
<internalNodes>
0 -1 143 2.1324999630451202e-02</internalNodes>
<leafValues>
-2.4034999310970306e-01 8.5448002815246582e-01</leafValues></_>
<_>
<internalNodes>
0 -1 144 3.0486000701785088e-02</internalNodes>
<leafValues>
-3.4273600578308105e-01 1.1428849697113037e+00</leafValues></_>
<_>
<internalNodes>
0 -1 145 -4.5079998672008514e-02</internalNodes>
<leafValues>
1.0976949930191040e+00 -1.7974600195884705e-01</leafValues></_>
<_>
<internalNodes>
0 -1 146 -7.1700997650623322e-02</internalNodes>
<leafValues>
1.5735000371932983e+00 -3.1433498859405518e-01</leafValues></_>
<_>
<internalNodes>
0 -1 147 5.9218000620603561e-02</internalNodes>
<leafValues>
-2.7582401037216187e-01 1.0448570251464844e+00</leafValues></_>
<_>
<internalNodes>
0 -1 148 6.7010000348091125e-03</internalNodes>
<leafValues>
-1.0974019765853882e+00 1.9801199436187744e-01</leafValues></_>
<_>
<internalNodes>
0 -1 149 4.1046999394893646e-02</internalNodes>
<leafValues>
3.0547699332237244e-01 -1.3287999629974365e+00</leafValues></_>
<_>
<internalNodes>
0 -1 150 -8.5499999113380909e-04</internalNodes>
<leafValues>
2.5807100534439087e-01 -7.0052897930145264e-01</leafValues></_>
<_>
<internalNodes>
0 -1 151 -3.0360000208020210e-02</internalNodes>
<leafValues>
-1.2306419610977173e+00 2.2609399259090424e-01</leafValues></_>
<_>
<internalNodes>
0 -1 152 -1.2930000200867653e-02</internalNodes>
<leafValues>
4.0758600831031799e-01 -5.1234501600265503e-01</leafValues></_>
<_>
<internalNodes>
0 -1 153 3.7367999553680420e-02</internalNodes>
<leafValues>
-9.4755001366138458e-02 6.1765098571777344e-01</leafValues></_>
<_>
<internalNodes>
0 -1 154 2.4434000253677368e-02</internalNodes>
<leafValues>
-4.1100600361824036e-01 4.7630500793457031e-01</leafValues></_>
<_>
<internalNodes>
0 -1 155 5.7007998228073120e-02</internalNodes>
<leafValues>
2.5249299407005310e-01 -6.8669801950454712e-01</leafValues></_>
<_>
<internalNodes>
0 -1 156 -1.6313999891281128e-02</internalNodes>
<leafValues>
-9.3928402662277222e-01 1.1448100209236145e-01</leafValues></_>
<_>
<internalNodes>
0 -1 157 -1.7648899555206299e-01</internalNodes>
<leafValues>
1.2451089620590210e+00 -5.6519001722335815e-02</leafValues></_>
<_>
<internalNodes>
0 -1 158 1.7614600062370300e-01</internalNodes>
<leafValues>
-3.2528200745582581e-01 8.2791501283645630e-01</leafValues></_>
<_>
<internalNodes>
0 -1 159 -7.3910001665353775e-03</internalNodes>
<leafValues>
3.4783700108528137e-01 -1.7929099500179291e-01</leafValues></_>
<_>
<internalNodes>
0 -1 160 6.0890998691320419e-02</internalNodes>
<leafValues>
5.5098000913858414e-02 -1.5480779409408569e+00</leafValues></_>
<_>
<internalNodes>
0 -1 161 -2.9123000800609589e-02</internalNodes>
<leafValues>
-1.0255639553070068e+00 2.4106900393962860e-01</leafValues></_>
<_>
<internalNodes>
0 -1 162 -4.5648999512195587e-02</internalNodes>
<leafValues>
1.0301599502563477e+00 -3.1672099232673645e-01</leafValues></_>
<_>
<internalNodes>
0 -1 163 3.7333000451326370e-02</internalNodes>
<leafValues>
2.1620599925518036e-01 -8.2589900493621826e-01</leafValues></_>
<_>
<internalNodes>
0 -1 164 -2.4411000311374664e-02</internalNodes>
<leafValues>
-1.5957959890365601e+00 5.1139000803232193e-02</leafValues></_>
<_>
<internalNodes>
0 -1 165 -5.9806998819112778e-02</internalNodes>
<leafValues>
-1.0312290191650391e+00 1.3092300295829773e-01</leafValues></_>
<_>
<internalNodes>
0 -1 166 -3.0106000602245331e-02</internalNodes>
<leafValues>
-1.4781630039215088e+00 3.7211999297142029e-02</leafValues></_>
<_>
<internalNodes>
0 -1 167 7.4209999293088913e-03</internalNodes>
<leafValues>
-2.4024100601673126e-01 4.9333998560905457e-01</leafValues></_>
<_>
<internalNodes>
0 -1 168 -2.1909999195486307e-03</internalNodes>
<leafValues>
2.8941500186920166e-01 -5.7259601354598999e-01</leafValues></_>
<_>
<internalNodes>
0 -1 169 2.0860999822616577e-02</internalNodes>
<leafValues>
-2.3148399591445923e-01 6.3765901327133179e-01</leafValues></_>
<_>
<internalNodes>
0 -1 170 -6.6990000195801258e-03</internalNodes>
<leafValues>
-1.2107750177383423e+00 6.4018003642559052e-02</leafValues></_>
<_>
<internalNodes>
0 -1 171 1.8758000805974007e-02</internalNodes>
<leafValues>
2.4461300671100616e-01 -9.9786698818206787e-01</leafValues></_>
<_>
<internalNodes>
0 -1 172 -4.4323001056909561e-02</internalNodes>
<leafValues>
-1.3699189424514771e+00 3.6051999777555466e-02</leafValues></_>
<_>
<internalNodes>
0 -1 173 2.2859999909996986e-02</internalNodes>
<leafValues>
2.1288399398326874e-01 -1.0397620201110840e+00</leafValues></_>
<_>
<internalNodes>
0 -1 174 -9.8600005730986595e-04</internalNodes>
<leafValues>
3.2443600893020630e-01 -5.4291802644729614e-01</leafValues></_>
<_>
<internalNodes>
0 -1 175 1.7239000648260117e-02</internalNodes>
<leafValues>
-2.8323900699615479e-01 4.4468200206756592e-01</leafValues></_>
<_>
<internalNodes>
0 -1 176 -3.4531001001596451e-02</internalNodes>
<leafValues>
-2.3107020854949951e+00 -3.1399999279528856e-03</leafValues></_>
<_>
<internalNodes>
0 -1 177 6.7006997764110565e-02</internalNodes>
<leafValues>
2.8715699911117554e-01 -6.4481002092361450e-01</leafValues></_>
<_>
<internalNodes>
0 -1 178 2.3776899278163910e-01</internalNodes>
<leafValues>
-2.7174800634384155e-01 8.0219101905822754e-01</leafValues></_>
<_>
<internalNodes>
0 -1 179 -1.2903000228106976e-02</internalNodes>
<leafValues>
-1.5317620038986206e+00 2.1423600614070892e-01</leafValues></_>
<_>
<internalNodes>
0 -1 180 1.0514999739825726e-02</internalNodes>
<leafValues>
7.7037997543811798e-02 -1.0581140518188477e+00</leafValues></_>
<_>
<internalNodes>
0 -1 181 1.6969000920653343e-02</internalNodes>
<leafValues>
1.4306700229644775e-01 -8.5828399658203125e-01</leafValues></_>
<_>
<internalNodes>
0 -1 182 -7.2460002265870571e-03</internalNodes>
<leafValues>
-1.1020129919052124e+00 6.4906999468803406e-02</leafValues></_>
<_>
<internalNodes>
0 -1 183 1.0556999593973160e-02</internalNodes>
<leafValues>
1.3964000158011913e-02 6.3601499795913696e-01</leafValues></_>
<_>
...
This file has been truncated, please download it to see its full contents.
person
bicycle
car
motorbike
aeroplane
bus
train
truck
boat
traffic light
fire hydrant
stop sign
parking meter
bench
bird
cat
dog
horse
sheep
cow
elephant
bear
zebra
giraffe
backpack
umbrella
handbag
tie
suitcase
frisbee
skis
snowboard
sports ball
kite
baseball bat
baseball glove
skateboard
surfboard
tennis racket
bottle
wine glass
cup
fork
knife
spoon
bowl
banana
apple
sandwich
orange
broccoli
carrot
hot dog
pizza
donut
cake
chair
sofa
pottedplant
bed
diningtable
toilet
tvmonitor
laptop
mouse
remote
keyboard
cell phone
microwave
oven
toaster
sink
refrigerator
book
clock
vase
scissors
teddy bear
hair drier
toothbrush
[net]
# Testing
# batch=1
# subdivisions=1
# Training
batch=64
subdivisions=16
width=608
height=608
channels=3
momentum=0.9
decay=0.0005
angle=0
saturation = 1.5
exposure = 1.5
hue=.1
learning_rate=0.001
burn_in=1000
max_batches = 500200
policy=steps
steps=400000,450000
scales=.1,.1
[convolutional]
batch_normalize=1
filters=32
size=3
stride=1
pad=1
activation=leaky
# Downsample
[convolutional]
batch_normalize=1
filters=64
size=3
stride=2
pad=1
activation=leaky
[convolutional]
batch_normalize=1
filters=32
size=1
stride=1
pad=1
activation=leaky
[convolutional]
batch_normalize=1
filters=64
size=3
stride=1
pad=1
activation=leaky
[shortcut]
from=-3
activation=linear
# Downsample
[convolutional]
batch_normalize=1
filters=128
size=3
stride=2
pad=1
activation=leaky
[convolutional]
batch_normalize=1
filters=64
size=1
stride=1
pad=1
activation=leaky
[convolutional]
batch_normalize=1
filters=128
size=3
stride=1
pad=1
activation=leaky
[shortcut]
from=-3
activation=linear
[convolutional]
batch_normalize=1
filters=64
size=1
stride=1
pad=1
activation=leaky
[convolutional]
batch_normalize=1
filters=128
size=3
stride=1
pad=1
activation=leaky
[shortcut]
from=-3
activation=linear
# Downsample
[convolutional]
batch_normalize=1
filters=256
size=3
stride=2
pad=1
activation=leaky
[convolutional]
batch_normalize=1
filters=128
size=1
stride=1
pad=1
activation=leaky
[convolutional]
batch_normalize=1
filters=256
size=3
stride=1
pad=1
activation=leaky
[shortcut]
from=-3
activation=linear
[convolutional]
batch_normalize=1
filters=128
size=1
stride=1
pad=1
activation=leaky
[convolutional]
batch_normalize=1
filters=256
size=3
stride=1
pad=1
activation=leaky
[shortcut]
from=-3
activation=linear
[convolutional]
batch_normalize=1
filters=128
size=1
stride=1
pad=1
activation=leaky
[convolutional]
batch_normalize=1
filters=256
size=3
stride=1
pad=1
activation=leaky
[shortcut]
from=-3
activation=linear
[convolutional]
batch_normalize=1
filters=128
size=1
stride=1
pad=1
activation=leaky
[convolutional]
batch_normalize=1
filters=256
size=3
stride=1
pad=1
activation=leaky
[shortcut]
from=-3
activation=linear
[convolutional]
batch_normalize=1
filters=128
size=1
stride=1
pad=1
activation=leaky
[convolutional]
batch_normalize=1
filters=256
size=3
stride=1
pad=1
activation=leaky
[shortcut]
from=-3
activation=linear
[convolutional]
batch_normalize=1
filters=128
size=1
stride=1
pad=1
activation=leaky
[convolutional]
batch_normalize=1
filters=256
size=3
stride=1
pad=1
activation=leaky
[shortcut]
from=-3
activation=linear
[convolutional]
batch_normalize=1
filters=128
size=1
stride=1
pad=1
activation=leaky
[convolutional]
batch_normalize=1
filters=256
size=3
stride=1
pad=1
activation=leaky
[shortcut]
from=-3
activation=linear
[convolutional]
batch_normalize=1
filters=128
size=1
stride=1
pad=1
activation=leaky
[convolutional]
batch_normalize=1
filters=256
size=3
stride=1
pad=1
activation=leaky
[shortcut]
from=-3
activation=linear
# Downsample
[convolutional]
batch_normalize=1
filters=512
size=3
stride=2
pad=1
activation=leaky
[convolutional]
batch_normalize=1
filters=256
size=1
stride=1
pad=1
activation=leaky
[convolutional]
batch_normalize=1
filters=512
size=3
stride=1
pad=1
activation=leaky
[shortcut]
from=-3
activation=linear
[convolutional]
batch_normalize=1
filters=256
size=1
stride=1
pad=1
activation=leaky
[convolutional]
batch_normalize=1
filters=512
size=3
stride=1
pad=1
activation=leaky
[shortcut]
from=-3
activation=linear
[convolutional]
batch_normalize=1
filters=256
size=1
stride=1
pad=1
activation=leaky
[convolutional]
batch_normalize=1
filters=512
size=3
stride=1
pad=1
activation=leaky
[shortcut]
from=-3
activation=linear
[convolutional]
batch_normalize=1
filters=256
size=1
stride=1
pad=1
activation=leaky
[convolutional]
batch_normalize=1
filters=512
size=3
stride=1
pad=1
activation=leaky
[shortcut]
from=-3
activation=linear
[convolutional]
batch_normalize=1
filters=256
size=1
stride=1
pad=1
activation=leaky
[convolutional]
batch_normalize=1
filters=512
size=3
stride=1
pad=1
activation=leaky
[shortcut]
from=-3
activation=linear
[convolutional]
batch_normalize=1
filters=256
size=1
stride=1
pad=1
activation=leaky
[convolutional]
batch_normalize=1
filters=512
size=3
stride=1
pad=1
activation=leaky
[shortcut]
from=-3
activation=linear
[convolutional]
batch_normalize=1
filters=256
size=1
stride=1
pad=1
activation=leaky
[convolutional]
batch_normalize=1
filters=512
size=3
stride=1
pad=1
activation=leaky
[shortcut]
from=-3
activation=linear
[convolutional]
batch_normalize=1
filters=256
size=1
stride=1
pad=1
activation=leaky
[convolutional]
batch_normalize=1
filters=512
size=3
stride=1
pad=1
activation=leaky
[shortcut]
from=-3
activation=linear
# Downsample
[convolutional]
batch_normalize=1
filters=1024
size=3
stride=2
pad=1
activation=leaky
[convolutional]
batch_normalize=1
filters=512
size=1
stride=1
pad=1
activation=leaky
[convolutional]
batch_normalize=1
filters=1024
size=3
stride=1
pad=1
activation=leaky
[shortcut]
from=-3
activation=linear
[convolutional]
batch_normalize=1
filters=512
size=1
stride=1
pad=1
activation=leaky
[convolutional]
batch_normalize=1
filters=1024
size=3
stride=1
pad=1
activation=leaky
[shortcut]
from=-3
activation=linear
[convolutional]
batch_normalize=1
filters=512
size=1
stride=1
pad=1
activation=leaky
[convolutional]
batch_normalize=1
filters=1024
size=3
stride=1
pad=1
activation=leaky
[shortcut]
from=-3
activation=linear
[convolutional]
batch_normalize=1
filters=512
size=1
stride=1
pad=1
activation=leaky
[convolutional]
batch_normalize=1
filters=1024
size=3
stride=1
pad=1
activation=leaky
[shortcut]
from=-3
activation=linear
######################
[convolutional]
batch_normalize=1
filters=512
size=1
stride=1
pad=1
activation=leaky
[convolutional]
batch_normalize=1
size=3
stride=1
pad=1
filters=1024
activation=leaky
[convolutional]
batch_normalize=1
filters=512
size=1
stride=1
pad=1
activation=leaky
[convolutional]
batch_normalize=1
size=3
stride=1
pad=1
filters=1024
activation=leaky
[convolutional]
batch_normalize=1
filters=512
size=1
stride=1
pad=1
activation=leaky
[convolutional]
batch_normalize=1
size=3
stride=1
pad=1
filters=1024
activation=leaky
[convolutional]
size=1
stride=1
pad=1
filters=255
activation=linear
[yolo]
mask = 6,7,8
anchors = 10,13, 16,30, 33,23, 30,61, 62,45, 59,119, 116,90, 156,198, 373,326
classes=80
num=9
jitter=.3
ignore_thresh = .7
truth_thresh = 1
random=1
[route]
layers = -4
[convolutional]
batch_normalize=1
filters=256
size=1
stride=1
pad=1
activation=leaky
[upsample]
stride=2
[route]
layers = -1, 61
[convolutional]
batch_normalize=1
filters=256
size=1
stride=1
pad=1
activation=leaky
[convolutional]
batch_normalize=1
size=3
stride=1
pad=1
filters=512
activation=leaky
[convolutional]
batch_normalize=1
filters=256
size=1
stride=1
pad=1
activation=leaky
[convolutional]
batch_normalize=1
size=3
stride=1
pad=1
filters=512
activation=leaky
[convolutional]
batch_normalize=1
filters=256
size=1
stride=1
pad=1
activation=leaky
[convolutional]
batch_normalize=1
size=3
stride=1
pad=1
filters=512
activation=leaky
[convolutional]
size=1
stride=1
pad=1
filters=255
activation=linear
[yolo]
mask = 3,4,5
anchors = 10,13, 16,30, 33,23, 30,61, 62,45, 59,119, 116,90, 156,198, 373,326
classes=80
num=9
jitter=.3
ignore_thresh = .7
truth_thresh = 1
random=1
[route]
layers = -4
[convolutional]
batch_normalize=1
filters=128
size=1
stride=1
pad=1
activation=leaky
[upsample]
stride=2
[route]
layers = -1, 36
[convolutional]
batch_normalize=1
filters=128
size=1
stride=1
pad=1
activation=leaky
[convolutional]
batch_normalize=1
size=3
stride=1
pad=1
filters=256
activation=leaky
[convolutional]
batch_normalize=1
filters=128
size=1
stride=1
pad=1
activation=leaky
[convolutional]
batch_normalize=1
size=3
stride=1
pad=1
filters=256
activation=leaky
[convolutional]
batch_normalize=1
filters=128
size=1
stride=1
pad=1
activation=leaky
[convolutional]
batch_normalize=1
size=3
stride=1
pad=1
filters=256
activation=leaky
[convolutional]
size=1
stride=1
pad=1
filters=255
activation=linear
[yolo]
mask = 0,1,2
anchors = 10,13, 16,30, 33,23, 30,61, 62,45, 59,119, 116,90, 156,198, 373,326
classes=80
num=9
jitter=.3
ignore_thresh = .7
truth_thresh = 1
random=1
// Libraries
#include <WiFi.h>
#include <PubSubClient.h>
#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
// Constant Definitions
#define SCREEN_WIDTH 128 // OLED display width, in pixels
#define SCREEN_HEIGHT 32 // OLED display height, in pixels
#define r 32 // Right LED
#define l 14 // Left LED
// Declaration for an SSD1306 display connected to I2C (SDA, SCL pins)
#define OLED_RESET -1 // Reset pin # (or -1 if sharing Arduino reset pin)
#define LOGO_HEIGHT 32 // LOGO height, in pixels
#define LOGO_WIDTH 128 // LOGO width, in pixels
// WiFi Credentials
const char* ssid = "YOURSSID";
const char* password = "YOURSSIDPASS";
// MQTT Credentials
const char* mqttServer = "YOURSERVER";
const int mqttPort = YOURPORT; //Your port number
const char* mqttUser = "YOURUSER";
const char* mqttPassword = "YOURPASS";
// Vars
char payload[512];
// Symbols
// White Screen
const unsigned char w [] PROGMEM = {
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
};
// Car Symbol
const unsigned char car [] PROGMEM = {
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x00, 0x00, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x0f, 0xfc, 0x3f, 0xfe, 0x00, 0x3f, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x03, 0xff, 0xfc, 0x3f, 0xff, 0xc0, 0x01, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x3f, 0xff, 0xfc, 0x7f, 0xff, 0xe7, 0x80, 0x0f, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xfe, 0x01, 0xff, 0xff, 0xf8, 0x7f, 0xff, 0xf3, 0xf0, 0x00, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xe0, 0x01, 0xff, 0xff, 0xf8, 0x7f, 0xff, 0xf0, 0xfc, 0x00, 0x00, 0x7f,
0xff, 0xff, 0xff, 0xfe, 0x00, 0x01, 0xff, 0xff, 0xf0, 0x7f, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x1f,
0xff, 0xff, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f,
0xff, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f,
0xff, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f,
0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f,
0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07,
0xe0, 0x00, 0x07, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x07,
0xc0, 0x00, 0x78, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xc1, 0xe0, 0x00, 0x07,
0xc0, 0x01, 0xc0, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x18, 0x00, 0x07,
0xc0, 0x03, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x02, 0x0c, 0x00, 0x07,
0xc0, 0x06, 0x06, 0xc0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x32, 0x06, 0x00, 0x0f,
0xe0, 0x0c, 0x30, 0x18, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0xc0, 0xc3, 0x00, 0x3f,
0xf0, 0x0c, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x03, 0xff, 0xff,
0xff, 0x8c, 0x30, 0x38, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0xc0, 0xc3, 0xff, 0xff,
0xff, 0xfe, 0x06, 0xc0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x12, 0x07, 0xff, 0xff,
0xff, 0xff, 0x06, 0xc1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x33, 0x07, 0xff, 0xff,
0xff, 0xff, 0x80, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x00, 0x1f, 0xff, 0xff,
0xff, 0xff, 0xf0, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
};
// Dog Symbol
const unsigned char dog [] PROGMEM = {
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x33, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x00, 0x7f, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x00, 0x3f, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe0, 0x00, 0x03, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xcf, 0xff, 0xff, 0xff, 0xff, 0xe0, 0x00, 0x00, 0x7f, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xc7, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xe3, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x00, 0x01, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xf0, 0x7f, 0xff, 0xff, 0xff, 0x80, 0x00, 0x07, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xfe, 0x03, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xe0, 0x00, 0xff, 0xe0, 0x00, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x03, 0xff, 0xff, 0xe0, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x1f, 0xff, 0xff, 0xe0, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x7f, 0xff, 0xff, 0xf0, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xfe, 0x01, 0xff, 0xff, 0xff, 0xf0, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0xff, 0xff, 0xff, 0xf0, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0xff, 0xff, 0xff, 0xf0, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0xff, 0xff, 0xff, 0xf8, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xff, 0xff, 0xff, 0xf8, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xff, 0xff, 0xff, 0xfc, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
};
// Motorcycle Symbol
const unsigned char moto [] PROGMEM = {
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x03, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x33, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x31, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x10, 0x7f, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x1f, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x00, 0x0f, 0xff, 0xff, 0xff,
0xff, 0xf0, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x04, 0x00, 0x07, 0xff, 0xff, 0xff,
0xff, 0xff, 0xc0, 0x00, 0x00, 0x0f, 0xff, 0xff, 0xfe, 0x00, 0x00, 0x00, 0x03, 0xff, 0xff, 0xff,
0xff, 0xff, 0xfc, 0x00, 0x00, 0x00, 0x0f, 0xff, 0x80, 0x00, 0x00, 0x00, 0x03, 0xff, 0xff, 0xff,
0xff, 0xfc, 0x07, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xff,
0xff, 0xfc, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xff, 0xff,
0xff, 0xff, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xff, 0xff, 0xff,
0xff, 0xff, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xfe, 0x00, 0x1e, 0x1f, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xc0, 0xff, 0x00, 0x0f, 0xff, 0xff,
0xff, 0xff, 0xe0, 0xff, 0x00, 0x00, 0x00, 0x07, 0xff, 0xff, 0xc3, 0xf8, 0x00, 0x00, 0x1f, 0xff,
0xff, 0xf0, 0x00, 0x00, 0xff, 0x80, 0x00, 0x0c, 0x00, 0x00, 0xc3, 0xc0, 0x00, 0xc0, 0x01, 0xff,
0xff, 0x00, 0x00, 0x00, 0x0f, 0xe0, 0x00, 0x18, 0x00, 0x01, 0x87, 0x00, 0xe1, 0xff, 0x80, 0x7f,
0xfc, 0x03, 0xff, 0xfc, 0x03, 0xf0, 0x00, 0x38, 0x00, 0x06, 0x0c, 0x07, 0xe0, 0xff, 0xe0, 0x3f,
0xf0, 0x1f, 0xff, 0xff, 0x80, 0xe0, 0x00, 0x70, 0x00, 0x38, 0x18, 0x0f, 0xf0, 0x7f, 0xf8, 0x1f,
0xe0, 0x7f, 0xff, 0xff, 0x80, 0x00, 0x00, 0x7f, 0xff, 0xc0, 0xf8, 0x1f, 0xfc, 0x3f, 0xfc, 0x0f,
0xc0, 0x7f, 0xfe, 0x00, 0x00, 0x0f, 0xe0, 0x00, 0x00, 0x07, 0xf8, 0x1f, 0xfe, 0x3f, 0xfc, 0x0f,
0xc0, 0xff, 0xf0, 0x1f, 0xe0, 0x7f, 0xff, 0xf8, 0x07, 0xff, 0xf8, 0x1f, 0xff, 0xff, 0xf8, 0x1f,
0xc0, 0x7f, 0xff, 0xff, 0xe0, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x0f, 0xff, 0xff, 0xf0, 0x1f,
0xe0, 0x3f, 0xff, 0xff, 0xc0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x01, 0xff, 0xff, 0xc0, 0x3f,
0xf0, 0x0f, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x3f, 0xfc, 0x00, 0xff,
0xfc, 0x01, 0xff, 0xf8, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x00, 0x00, 0x07, 0xff,
0xff, 0x80, 0x00, 0x00, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff,
0xff, 0xf8, 0x00, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
};
// People Symbol
const unsigned char peo [] PROGMEM = {
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xf8, 0x00, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x00, 0x1f, 0xff, 0xff,
0xff, 0xff, 0x80, 0x00, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x00, 0x01, 0xff, 0xff,
0xff, 0xfe, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x7f, 0xff,
0xff, 0xfc, 0x00, 0x00, 0x00, 0x7f, 0xff, 0xc0, 0x03, 0xff, 0xfe, 0x00, 0x00, 0x00, 0x3f, 0xff,
0xff, 0xf8, 0x00, 0x00, 0x00, 0x3f, 0xf8, 0x00, 0x00, 0x1f, 0xfc, 0x00, 0x00, 0x00, 0x1f, 0xff,
0xff, 0xf8, 0x00, 0x00, 0x00, 0x3f, 0xc0, 0x00, 0x00, 0x03, 0xfc, 0x00, 0x00, 0x00, 0x1f, 0xff,
0xff, 0xfc, 0x00, 0x00, 0x00, 0x7f, 0x80, 0x00, 0x00, 0x01, 0xfe, 0x00, 0x00, 0x00, 0x3f, 0xff,
0xff, 0xfe, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x7f, 0xff,
0xff, 0xff, 0xc0, 0x00, 0x07, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xe0, 0x00, 0x03, 0xff, 0xff,
0xff, 0xff, 0xff, 0x01, 0xff, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xff, 0x80, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00, 0x00, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0x80, 0x00, 0x03, 0xff, 0xf0, 0x00, 0x00, 0x0f, 0xff, 0xc0, 0x00, 0x01, 0xff, 0xff,
0xff, 0xf0, 0x00, 0x00, 0x00, 0x1f, 0xfe, 0x00, 0x00, 0x7f, 0xf8, 0x00, 0x00, 0x00, 0x0f, 0xff,
0xff, 0x80, 0x00, 0x00, 0x00, 0x03, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x00, 0x00, 0x00, 0x01, 0xff,
0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f,
0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xff, 0xff, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f,
0xf8, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xf0, 0x00, 0x00, 0x07, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x1f,
0xf8, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x1f,
0xf0, 0x00, 0x00, 0x00, 0x03, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, 0x00, 0x0f,
0xf8, 0x00, 0x00, 0x00, 0x0f, 0x80, 0x00, 0x00, 0x00, 0x00, 0x01, 0xf0, 0x00, 0x00, 0x00, 0x1f,
0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
};
// Module Declaration
WiFiClient ESPClient;
PubSubClient client(ESPClient);
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
// MQTT Callback
void callback(char* topic, byte* payload, unsigned int length) {
Serial.print("Message arrived [");
Serial.print(topic);
Serial.print("] ");
String inVal="";
// Save the payload in variable
for (int i=0;i<length;i++) {
inVal.concat((char)payload[i]);
}
// Show symbols depends on payload
if (inVal == "m0") {
testdrawbitmap(moto);
digitalWrite(r,HIGH);
digitalWrite(l,LOW);
}
else if (inVal == "m1") {
testdrawbitmap(moto);
digitalWrite(r,LOW);
digitalWrite(l,HIGH);
}
else if (inVal == "c0") {
digitalWrite(r,HIGH);
digitalWrite(l,LOW);
testdrawbitmap(car);
}
else if (inVal == "c1") {
testdrawbitmap(car);
digitalWrite(r,LOW);
digitalWrite(l,HIGH);
}
else if (inVal == "p0") {
digitalWrite(r,HIGH);
digitalWrite(l,LOW);
testdrawbitmap(peo);
}
else if (inVal == "p1") {
testdrawbitmap(peo);
digitalWrite(r,LOW);
digitalWrite(l,HIGH);
}
else if (inVal == "d0") {
digitalWrite(r,HIGH);
digitalWrite(l,LOW);
testdrawbitmap(dog);
}
else if (inVal == "d1") {
testdrawbitmap(dog);
digitalWrite(r,LOW);
digitalWrite(l,HIGH);
}
else
{
testdrawbitmap(w);
digitalWrite(r,LOW);
digitalWrite(l,LOW);
}
Serial.println(inVal);
}
// Reconnect algorithm
void reconnect() {
// Loop until we're reconnected
Serial.println("ESP > Connected to WiFi");
client.setServer(mqttServer, mqttPort);
client.setCallback(callback);
while (!client.connected()) {
Serial.println("ESP > Connecting to MQTT...");
if (client.connect("ESP32Client", mqttUser, mqttPassword )) {
Serial.println("connected to CloudMQTT");
} else {
Serial.print("ERROR > failed with state ");
Serial.print(client.state());
delay(2000);
}
}
client.publish("ESP32", "Reconnect OK");
client.subscribe("inTopic");
}
char* string2char(String command){
if(command.length()!=0){
char *p = const_cast<char*>(command.c_str());
return p;
}
}
void setup() {
// Setup Leds
pinMode(r,OUTPUT);
pinMode(l,OUTPUT);
digitalWrite(r,LOW);
digitalWrite(l,LOW);
Serial.begin(9600);
if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) { // Address 0x3C for 128x32
Serial.println(F("SSD1306 allocation failed"));
for(;;); // Don't proceed, loop forever
}
// SSD1306_SWITCHCAPVCC = generate display voltage from 3.3V internally
testdrawbitmap(c);
// Show initial display buffer contents on the screen --
display.display();
// Wifi Start
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.println("Please wait while connecting to WiFi");
}
Serial.println("ESP > Connected to WiFi");
client.setServer(mqttServer, mqttPort);
client.setCallback(callback);
while (!client.connected()) {
Serial.println("ESP > Connecting to MQTT...");
if (client.connect("ESP32Client", mqttUser, mqttPassword )) {
Serial.println("connected to CloudMQTT");
} else {
Serial.print("ERROR > failed with state ");
Serial.print(client.state());
delay(2000);
}
}
client.publish("ESP32", "Start OK");
client.subscribe("inTopic");
}
// Client Loop
void loop() {
if (!client.connected()) {
reconnect();
}
client.loop();
}
// Display in Screen
void testdrawbitmap(const unsigned char draw[]) {
display.clearDisplay();
display.drawBitmap(
(display.width() - LOGO_WIDTH ) / 2,
(display.height() - LOGO_HEIGHT) / 2,
draw, LOGO_WIDTH, LOGO_HEIGHT, 1);
display.display();
}
# -*- coding: utf-8 -*-
"""
@author: ALEX
"""
import smbus
import numpy as np
import urllib.request
import cv2
import pygame
import time
import os
import math
import requests
from twilio.rest import Client
import requests
import json
# Setup the class of VMA accelerometer
class MMA7455():
bus = smbus.SMBus(1)
def __init__(self):
self.bus.write_byte_data(0x1D, 0x16, 0x55) # Setup the Mode
self.bus.write_byte_data(0x1D, 0x10, 0) # Calibrate
self.bus.write_byte_data(0x1D, 0x11, 0) # Calibrate
self.bus.write_byte_data(0x1D, 0x12, 0) # Calibrate
self.bus.write_byte_data(0x1D, 0x13, 0) # Calibrate
self.bus.write_byte_data(0x1D, 0x14, 0) # Calibrate
self.bus.write_byte_data(0x1D, 0x15, 0) # Calibrate
def getValueX(self):
return self.bus.read_byte_data(0x1D, 0x06)
def getValueY(self):
return self.bus.read_byte_data(0x1D, 0x07)
def getValueZ(self):
return self.bus.read_byte_data(0x1D, 0x08)
# Alarm sound file
file = 'alarm.mp3'
# Sound player start
pygame.init()
pygame.mixer.init()
# multiple cascades: https://github.com/Itseez/opencv/tree/master/data/haarcascade
#https://github.com/Itseez/opencv/blob/master/data/haarcascades/haarcascade_frontalface_default.xml
face_cascade = cv2.CascadeClassifier('haarcascade/haarcascade_frontalface_default.xml')
#https://github.com/Itseez/opencv/blob/master/data/haarcascades/haarcascade_eye.xml
eye_cascade = cv2.CascadeClassifier('haarcascade/haarcascade_eye.xml')
# Cam image input
cap = cv2.VideoCapture(0)
# Vars
nf=1
ne=1
count=0
# Accelerometer Declaration
mma = MMA7455()
# Obtaining the X, Y and Z values.
xmem=mma.getValueX()
ymem=mma.getValueY()
zmem=mma.getValueZ()
# Creating the base accelerometer values.
if(xmem > 127):
xmem=xmem-255
if(ymem > 127):
ymem=ymem-255
if(zmem > 127):
zmem=zmem-255
# Vars to get blinking frequency
time1=time.time()
time2=time.time()
# Crash Sensibility
sens=30
# Sending SMS if Crash Detected
def send():
# Your Account SID from twilio.com/console
account_sid = "Twilio SID"
# Your Auth Token from twilio.com/console
auth_token = "Twilio Token"
client = Client(account_sid, auth_token)
phone = "Registered Number"
print('crash')
send_url = 'http://ip-api.com/json'
r = requests.get(send_url)
j = json.loads(r.text)
text="Alejandro Sanchez Crash Here: "
text+="http://maps.google.com/maps?q=loc:{},{}".format(j['lat'],j['lon'])
print(text)
message = client.messages.create(to=phone, from_="Twilio Number",body=text)
print(message.sid)
time.sleep(10)
stop()
# Script Loop
try:
while 1:
# Check if we have a crash with the acceleration samples
x = mma.getValueX()
y = mma.getValueY()
z = mma.getValueZ()
if(x > 127):
x=x-255
if(y > 127):
y=y-255
if(z > 127):
z=z-255
# Send sms if crash
if(abs(xmem-x)>sens):
send()
if(abs(ymem-y)>sens):
send()
if(abs(zmem-z)>sens):
send()
# Take Image From Camera
ret, img = cap.read()
# Gray scale convertion
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# Obtaining the faces in the image
faces = face_cascade.detectMultiScale(gray, 1.3, 5)
for (x,y,w,h) in faces:
cv2.rectangle(img,(x,y),(x+w,y+h),(255,0,0),2)
roi_gray = gray[y:y+h, x:x+w]
roi_color = img[y:y+h, x:x+w]
# If there is a face check that we can detect the eyes
eyes = eye_cascade.detectMultiScale(roi_gray,1.3, 40)
ne=len(eyes)
for (ex,ey,ew,eh) in eyes:
cv2.rectangle(roi_color,(ex,ey),(ex+ew,ey+eh),(0,255,0),2)
# Con esta configuracin si cerramos los ojos el sistema no detecta los ojos
nf=len(faces)
# If we can see a face but cannot detect its eyes then start a counter.
if(nf>0 and ne<1):
time1=time.time()
print(time1-time2)
# If we cannot detect the eyes for more than 2 seconds the alarm will sound.
if((time1-time2)>=2):
pygame.mixer.music.load(file)
pygame.mixer.music.play()
else:
# If we detect the eyes again, we stop the alarm and reset the counters.
pygame.mixer.music.stop()
time1=time.time()
time2=time1
# "Stop" Function
except NameError:
print("Crash Exception")
Comments