From 5abe3b59f5308a84dc3bd2c8b543b3972871278f Mon Sep 17 00:00:00 2001 From: lluis Date: Sat, 20 Jul 2013 01:10:05 +0200 Subject: [PATCH] Class-specific Extremal Region Filter algorithm as proposed in : Neumann L., Matas J.: Real-Time Scene Text Localization and Recognition, CVPR 2012. High-level C++ interface and implementation of algorithm is in the objdetect module. C++ example, a test image, and the default classifiers in xml files. --- modules/objdetect/CMakeLists.txt | 2 +- .../objdetect/include/opencv2/objdetect.hpp | 1 + .../include/opencv2/objdetect/erfilter.hpp | 202 + modules/objdetect/src/erfilter.cpp | 1124 +++++ samples/cpp/erfilter.cpp | 120 + samples/cpp/scenetext.jpg | Bin 0 -> 84697 bytes samples/cpp/scenetext_GT.png | Bin 0 -> 3160 bytes samples/cpp/trained_classifierNM1.xml | 4046 +++++++++++++++++ samples/cpp/trained_classifierNM2.xml | 4046 +++++++++++++++++ 9 files changed, 9540 insertions(+), 1 deletion(-) create mode 100644 modules/objdetect/include/opencv2/objdetect/erfilter.hpp create mode 100644 modules/objdetect/src/erfilter.cpp create mode 100644 samples/cpp/erfilter.cpp create mode 100644 samples/cpp/scenetext.jpg create mode 100644 samples/cpp/scenetext_GT.png create mode 100644 samples/cpp/trained_classifierNM1.xml create mode 100644 samples/cpp/trained_classifierNM2.xml diff --git a/modules/objdetect/CMakeLists.txt b/modules/objdetect/CMakeLists.txt index 78aa4aa234..5739ee9e38 100644 --- a/modules/objdetect/CMakeLists.txt +++ b/modules/objdetect/CMakeLists.txt @@ -1,2 +1,2 @@ set(the_description "Object Detection") -ocv_define_module(objdetect opencv_core opencv_imgproc OPTIONAL opencv_highgui) +ocv_define_module(objdetect opencv_core opencv_imgproc opencv_ml OPTIONAL opencv_highgui) diff --git a/modules/objdetect/include/opencv2/objdetect.hpp b/modules/objdetect/include/opencv2/objdetect.hpp index 3ccb057e33..39cf4654d0 100644 --- a/modules/objdetect/include/opencv2/objdetect.hpp +++ b/modules/objdetect/include/opencv2/objdetect.hpp @@ -394,5 +394,6 @@ CV_EXPORTS_W void drawDataMatrixCodes(InputOutputArray image, } #include "opencv2/objdetect/linemod.hpp" +#include "opencv2/objdetect/erfilter.hpp" #endif diff --git a/modules/objdetect/include/opencv2/objdetect/erfilter.hpp b/modules/objdetect/include/opencv2/objdetect/erfilter.hpp new file mode 100644 index 0000000000..c03d49f94e --- /dev/null +++ b/modules/objdetect/include/opencv2/objdetect/erfilter.hpp @@ -0,0 +1,202 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// 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. +// +// +// License Agreement +// For Open Source Computer Vision Library +// +// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. +// Copyright (C) 2009, Willow Garage Inc., all rights reserved. +// Copyright (C) 2013, OpenCV Foundation, 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 the copyright holders 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. +// +//M*/ + +#ifndef __OPENCV_OBJDETECT_ERFILTER_HPP__ +#define __OPENCV_OBJDETECT_ERFILTER_HPP__ + +#include "opencv2/core.hpp" +#include +#include + +namespace cv +{ + +/*! + Extremal Region Stat structure + + The ERStat structure represents a class-specific Extremal Region (ER). + + An ER is a 4-connected set of pixels with all its grey-level values smaller than the values + in its outer boundary. A class-specific ER is selected (using a classifier) from all the ER's + in the component tree of the image. +*/ +struct CV_EXPORTS ERStat +{ +public: + //! Constructor + ERStat(int level = 256, int pixel = 0, int x = 0, int y = 0); + //! Destructor + ~ERStat(){}; + + //! seed point and the threshold (max grey-level value) + int pixel; + int level; + + //! incrementally computable features + int area; + int perimeter; + int euler; //!< euler number + int bbox[4]; + double raw_moments[2]; //!< order 1 raw moments to derive the centroid + double central_moments[3]; //!< order 2 central moments to construct the covariance matrix + std::deque *crossings;//!< horizontal crossings + + //! 1st stage features + float aspect_ratio; + float compactness; + float num_holes; + float med_crossings; + + //! 2nd stage features + float hole_area_ratio; + float convex_hull_ratio; + float num_inflexion_points; + + // TODO Other features can be added (average color, standard deviation, and such) + + + // TODO shall we include the pixel list whenever available (i.e. after 2nd stage) ? + std::vector *pixels; + + //! probability that the ER belongs to the class we are looking for + double probability; + + //! pointers preserving the tree structure of the component tree + ERStat* parent; + ERStat* child; + ERStat* next; + ERStat* prev; + + //! wenever the regions is a local maxima of the probability + bool local_maxima; + ERStat* max_probability_ancestor; + ERStat* min_probability_ancestor; +}; + +/*! + Base class for 1st and 2nd stages of Neumann and Matas scene text detection algorithms + Neumann L., Matas J.: Real-Time Scene Text Localization and Recognition, CVPR 2012 + + Extracts the component tree (if needed) and filter the extremal regions (ER's) by using a given classifier. +*/ +class CV_EXPORTS ERFilter : public cv::Algorithm +{ +public: + + //! callback with the classifier is made a class. By doing it we hide SVM, Boost etc. + class CV_EXPORTS Callback + { + public: + virtual ~Callback(){}; + //! The classifier must return probability measure for the region. + virtual double eval(const ERStat& stat) = 0; //const = 0; //TODO why cannot use const = 0 here? + }; + + /*! + the key method. Takes image on input and returns the selected regions in a vector of ERStat + only distinctive ERs which correspond to characters are selected by a sequential classifier + \param image is the input image + \param regions is output for the first stage, input/output for the second one. + */ + virtual void run( cv::InputArray image, std::vector& regions ) = 0; + + + //! set/get methods to set the algorithm properties, + virtual void setCallback(const cv::Ptr& cb) = 0; + virtual void setThresholdDelta(int thresholdDelta) = 0; + virtual void setMinArea(float minArea) = 0; + virtual void setMaxArea(float maxArea) = 0; + virtual void setMinProbability(float minProbability) = 0; + virtual void setMinProbabilityDiff(float minProbabilityDiff) = 0; + virtual void setNonMaxSuppression(bool nonMaxSuppression) = 0; + virtual int getNumRejected() = 0; +}; + + +/*! + Create an Extremal Region Filter for the 1st stage classifier of N&M algorithm + Neumann L., Matas J.: Real-Time Scene Text Localization and Recognition, CVPR 2012 + + The component tree of the image is extracted by a threshold increased step by step + from 0 to 255, incrementally computable descriptors (aspect_ratio, compactness, + number of holes, and number of horizontal crossings) are computed for each ER + and used as features for a classifier which estimates the class-conditional + probability P(er|character). The value of P(er|character) is tracked using the inclusion + relation of ER across all thresholds and only the ERs which correspond to local maximum + of the probability P(er|character) are selected (if the local maximum of the + probability is above a global limit pmin and the difference between local maximum and + local minimum is greater than minProbabilityDiff). + + \param cb Callback with the classifier. + if omitted tries to load a default classifier from file trained_classifierNM1.xml + \param thresholdDelta Threshold step in subsequent thresholds when extracting the component tree + \param minArea The minimum area (% of image size) allowed for retreived ER's + \param minArea The maximum area (% of image size) allowed for retreived ER's + \param minProbability The minimum probability P(er|character) allowed for retreived ER's + \param nonMaxSuppression Whenever non-maximum suppression is done over the branch probabilities + \param minProbability The minimum probability difference between local maxima and local minima ERs +*/ +CV_EXPORTS cv::Ptr createERFilterNM1(const cv::Ptr& cb = NULL, + int thresholdDelta = 1, float minArea = 0.000025, + float maxArea = 0.13, float minProbability = 0.2, + bool nonMaxSuppression = true, + float minProbabilityDiff = 0.1); + +/*! + Create an Extremal Region Filter for the 2nd stage classifier of N&M algorithm + Neumann L., Matas J.: Real-Time Scene Text Localization and Recognition, CVPR 2012 + + In the second stage, the ERs that passed the first stage are classified into character + and non-character classes using more informative but also more computationally expensive + features. The classifier uses all the features calculated in the first stage and the following + additional features: hole area ratio, convex hull ratio, and number of outer inflexion points. + + \param cb Callback with the classifier + if omitted tries to load a default classifier from file trained_classifierNM2.xml + \param minProbability The minimum probability P(er|character) allowed for retreived ER's +*/ +CV_EXPORTS cv::Ptr createERFilterNM2(const cv::Ptr& cb = NULL, + float minProbability = 0.85); + +} +#endif // _OPENCV_ERFILTER_HPP_ diff --git a/modules/objdetect/src/erfilter.cpp b/modules/objdetect/src/erfilter.cpp new file mode 100644 index 0000000000..002aa5247a --- /dev/null +++ b/modules/objdetect/src/erfilter.cpp @@ -0,0 +1,1124 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// 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. +// +// +// License Agreement +// For Open Source Computer Vision Library +// +// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. +// Copyright (C) 2009, Willow Garage Inc., 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 the copyright holders 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. +// +//M*/ + +#include "precomp.hpp" +#include + +using namespace std; + +namespace cv +{ + +ERStat::ERStat(int init_level, int init_pixel, int init_x, int init_y) : pixel(init_pixel), + level(init_level), area(0), perimeter(0), euler(0), probability(1.0), + parent(0), child(0), next(0), prev(0), local_maxima(0), + max_probability_ancestor(0), min_probability_ancestor(0) +{ + bbox[0] = init_x; + bbox[1] = init_y; + bbox[2] = init_x; + bbox[3] = init_y; + raw_moments[0] = 0.0; + raw_moments[1] = 0.0; + central_moments[0] = 0.0; + central_moments[1] = 0.0; + central_moments[2] = 0.0; + crossings = new std::deque(); + crossings->push_back(0); +} + + +// derivative classes + + +// the classe implementing the interface for the 1st and 2nd stages of Neumann and Matas algorithm +class CV_EXPORTS ERFilterNM : public ERFilter +{ +public: + //Constructor + ERFilterNM(); + //Destructor + ~ERFilterNM() {}; + + float minProbability; + bool nonMaxSuppression; + float minProbabilityDiff; + + // the key method. Takes image on input, vector of ERStat is output for the first stage, + // input/output - for the second one. + void run( cv::InputArray image, std::vector& regions ); + +protected: + int thresholdDelta; + float maxArea; + float minArea; + + cv::Ptr classifier; + + // count of the rejected/accepted regions + int num_rejected_regions; + int num_accepted_regions; + +public: + + // set/get methods to set the algorithm properties, + void setCallback(const cv::Ptr& cb); + void setThresholdDelta(int thresholdDelta); + void setMinArea(float minArea); + void setMaxArea(float maxArea); + void setMinProbability(float minProbability); + void setMinProbabilityDiff(float minProbabilityDiff); + void setNonMaxSuppression(bool nonMaxSuppression); + int getNumRejected(); + +private: + // pointer to the input/output regions vector + std::vector *regions; + // image mask used for feature calculations + cv::Mat region_mask; + + // extract the component tree and store all the ER regions + void er_tree_extract( cv::InputArray image ); + // accumulate a pixel into an ER + void er_add_pixel( ERStat *parent, int x, int y, int non_boundary_neighbours, + int non_boundary_neighbours_horiz, + int d_C1, int d_C2, int d_C3 ); + // merge an ER with its nested parent + void er_merge( ERStat *parent, ERStat *child ); + // recursively walk the tree and clean memory + void er_tree_clean( ERStat *er ); + // copy extracted regions into the output vector + ERStat* er_save( ERStat *er, ERStat *parent, ERStat *prev ); + // recursively walk the tree and filter (remove) regions using the callback classifier + ERStat* er_tree_filter( cv::InputArray image, ERStat *stat, ERStat *parent, ERStat *prev ); + // recursively walk the tree selecting only regions with local maxima probability + ERStat* er_tree_nonmax_suppression( ERStat *er, ERStat *parent, ERStat *prev ); +}; + + +// default 1st stage classifier +class CV_EXPORTS ERClassifierNM1 : public ERFilter::Callback +{ +public: + //Constructor + ERClassifierNM1(); + // Destructor + ~ERClassifierNM1() {}; + + // The classifier must return probability measure for the region. + double eval(const ERStat& stat); + +private: + CvBoost boost; +}; + +// default 2nd stage classifier +class CV_EXPORTS ERClassifierNM2 : public ERFilter::Callback +{ +public: + //constructor + ERClassifierNM2(); + // Destructor + ~ERClassifierNM2() {}; + + // The classifier must return probability measure for the region. + double eval(const ERStat& stat); + +private: + CvBoost boost; +}; + + + + + +// default constructor +ERFilterNM::ERFilterNM() +{ + thresholdDelta = 1; + minArea = 0.; + maxArea = 1.; + minProbability = 0.; + nonMaxSuppression = false; + minProbabilityDiff = 1.; + num_accepted_regions = 0; + num_rejected_regions = 0; + classifier = NULL; +} + +// the key method. Takes image on input, vector of ERStat is output for the first stage, +// input/output for the second one. +void ERFilterNM::run( cv::InputArray image, std::vector& _regions ) +{ + + // assert correct image type + CV_Assert( image.getMat().type() == CV_8UC1 ); + + regions = &_regions; + region_mask = Mat::zeros(image.getMat().rows+2, image.getMat().cols+2, CV_8UC1); + + // if regions vector is empty we must extract the entire component tree + if ( regions->size() == 0 ) + { + er_tree_extract( image ); + if (nonMaxSuppression) + { + vector aux_regions; + regions->swap(aux_regions); + regions->reserve(aux_regions.size()); + er_tree_nonmax_suppression( &aux_regions.front(), NULL, NULL ); + aux_regions.clear(); + } + } + else // if regions vector is already filled we'll just filter the current regions + { + // the tree root must have no parent + CV_Assert( regions->front().parent == NULL ); + + vector aux_regions; + regions->swap(aux_regions); + regions->reserve(aux_regions.size()); + er_tree_filter( image, &aux_regions.front(), NULL, NULL ); + aux_regions.clear(); + } +} + +// extract the component tree and store all the ER regions +// uses the algorithm described in +// Linear time maximally stable extremal regions, D Nistér, H Stewénius – ECCV 2008 +void ERFilterNM::er_tree_extract( cv::InputArray image ) +{ + + Mat src = image.getMat(); + // assert correct image type + CV_Assert( src.type() == CV_8UC1 ); + + if (thresholdDelta > 1) + { + Mat tmp; + src.copyTo(tmp); + src.release(); + src = (image.getMat() / thresholdDelta) -1; + } + + const unsigned char * image_data = src.data; + int width = src.cols, height = src.rows; + + // the component stack + vector er_stack; + + //the quads for euler number calculation + unsigned char quads[3][4]; + quads[0][0] = 1 << 3; + quads[0][1] = 1 << 2; + quads[0][2] = 1 << 1; + quads[0][3] = 1; + quads[1][0] = (1<<2)|(1<<1)|(1); + quads[1][1] = (1<<3)|(1<<1)|(1); + quads[1][2] = (1<<3)|(1<<2)|(1); + quads[1][3] = (1<<3)|(1<<2)|(1<<1); + quads[2][0] = (1<<2)|(1<<1); + quads[2][1] = (1<<3)|(1); + quads[2][3] = 255; + quads[2][4] = 255; + + + // masks to know if a pixel is accessible and if it has been already added to some region + vector accessible_pixel_mask(width * height); + vector accumulated_pixel_mask(width * height); + + // heap of boundary pixels + vector boundary_pixes[(255/thresholdDelta)+1]; + vector boundary_edges[(255/thresholdDelta)+1]; + + // add a dummy-component before start + er_stack.push_back(new ERStat); + + // we'll look initially for all pixels with grey-level lower than a grey-level higher than any allowed in the image + int threshold_level = (255/thresholdDelta)+1; + + // starting from the first pixel (0,0) + int current_pixel = 0; + int current_edge = 0; + int current_level = image_data[0]; + accessible_pixel_mask[0] = true; + + bool push_new_component = true; + + for (;;) { + + int x = current_pixel % width; + int y = current_pixel / width; + + // push a component with current level in the component stack + if (push_new_component) + er_stack.push_back(new ERStat(current_level, current_pixel, x, y)); + push_new_component = false; + + // explore the (remaining) edges to the neighbors to the current pixel + for (current_edge = current_edge; current_edge < 4; current_edge++) + { + + int neighbour_pixel = current_pixel; + + switch (current_edge) + { + case 0: if (x < width - 1) neighbour_pixel = current_pixel + 1; break; + case 1: if (y < height - 1) neighbour_pixel = current_pixel + width; break; + case 2: if (x > 0) neighbour_pixel = current_pixel - 1; break; + default: if (y > 0) neighbour_pixel = current_pixel - width; break; + } + + // if neighbour is not accessible, mark it accessible and retreive its grey-level value + if ( !accessible_pixel_mask[neighbour_pixel] && (neighbour_pixel != current_pixel) ) + { + + int neighbour_level = image_data[neighbour_pixel]; + accessible_pixel_mask[neighbour_pixel] = true; + + // if neighbour level is not lower than current level add neighbour to the boundary heap + if (neighbour_level >= current_level) + { + + boundary_pixes[neighbour_level].push_back(neighbour_pixel); + boundary_edges[neighbour_level].push_back(0); + + // if neighbour level is lower than our threshold_level set threshold_level to neighbour level + if (neighbour_level < threshold_level) + threshold_level = neighbour_level; + + } + else // if neighbour level is lower than current add current_pixel (and next edge) + // to the boundary heap for later processing + { + + boundary_pixes[current_level].push_back(current_pixel); + boundary_edges[current_level].push_back(current_edge + 1); + + // if neighbour level is lower than threshold_level set threshold_level to neighbour level + if (current_level < threshold_level) + threshold_level = current_level; + + // consider the new pixel and its grey-level as current pixel + current_pixel = neighbour_pixel; + current_edge = 0; + current_level = neighbour_level; + + // and push a new component + push_new_component = true; + break; + } + } + + } // else neigbor was already accessible + + if (push_new_component) continue; + + + // once here we can add the current pixel to the component at the top of the stack + // but first we find how many of its neighbours are part of the region boundary (needed for + // perimeter and crossings calc.) and the increment in quads counts for euler number calc. + int non_boundary_neighbours = 0; + int non_boundary_neighbours_horiz = 0; + + unsigned char quad_before[4] = {0,0,0,0}; + unsigned char quad_after[4] = {0,0,0,0}; + quad_after[0] = 1<<1; + quad_after[1] = 1<<3; + quad_after[2] = 1<<2; + quad_after[3] = 1; + + for (int edge = 0; edge < 8; edge++) + { + int neighbour4 = -1; + int neighbour8 = -1; + int cell = 0; + switch (edge) + { + case 0: if (x < width - 1) { neighbour4 = neighbour8 = current_pixel + 1;} cell = 5; break; + case 1: if ((x < width - 1)&&(y < height - 1)) { neighbour8 = current_pixel + 1 + width;} cell = 8; break; + case 2: if (y < height - 1) { neighbour4 = neighbour8 = current_pixel + width;} cell = 7; break; + case 3: if ((x > 0)&&(y < height - 1)) { neighbour8 = current_pixel - 1 + width;} cell = 6; break; + case 4: if (x > 0) { neighbour4 = neighbour8 = current_pixel - 1;} cell = 3; break; + case 5: if ((x > 0)&&(y > 0)) { neighbour8 = current_pixel - 1 - width;} cell = 0; break; + case 6: if (y > 0) { neighbour4 = neighbour8 = current_pixel - width;} cell = 1; break; + default: if ((x < width - 1)&&(y > 0)) { neighbour8 = current_pixel + 1 - width;} cell = 2; break; + } + if ((neighbour4 != -1)&&(accumulated_pixel_mask[neighbour4])&&(image_data[neighbour4]<=image_data[current_pixel])) + { + non_boundary_neighbours++; + if ((edge == 0) || (edge == 4)) + non_boundary_neighbours_horiz++; + } + + int pix_value = image_data[current_pixel] + 1; + if (neighbour8 != -1) + { + if (accumulated_pixel_mask[neighbour8]) + pix_value = image_data[neighbour8]; + } + + if (pix_value<=image_data[current_pixel]) + { + switch(cell) + { + case 0: + quad_before[3] = quad_before[3] | (1<<3); + quad_after[3] = quad_after[3] | (1<<3); + break; + case 1: + quad_before[3] = quad_before[3] | (1<<2); + quad_after[3] = quad_after[3] | (1<<2); + quad_before[0] = quad_before[0] | (1<<3); + quad_after[0] = quad_after[0] | (1<<3); + break; + case 2: + quad_before[0] = quad_before[0] | (1<<2); + quad_after[0] = quad_after[0] | (1<<2); + break; + case 3: + quad_before[3] = quad_before[3] | (1<<1); + quad_after[3] = quad_after[3] | (1<<1); + quad_before[2] = quad_before[2] | (1<<3); + quad_after[2] = quad_after[2] | (1<<3); + break; + case 5: + quad_before[0] = quad_before[0] | (1); + quad_after[0] = quad_after[0] | (1); + quad_before[1] = quad_before[1] | (1<<2); + quad_after[1] = quad_after[1] | (1<<2); + break; + case 6: + quad_before[2] = quad_before[2] | (1<<1); + quad_after[2] = quad_after[2] | (1<<1); + break; + case 7: + quad_before[2] = quad_before[2] | (1); + quad_after[2] = quad_after[2] | (1); + quad_before[1] = quad_before[1] | (1<<1); + quad_after[1] = quad_after[1] | (1<<1); + break; + default: + quad_before[1] = quad_before[1] | (1); + quad_after[1] = quad_after[1] | (1); + break; + } + } + + } + + int C_before[3] = {0, 0, 0}; + int C_after[3] = {0, 0, 0}; + + for (int p=0; p<3; p++) + { + for (int q=0; q<4; q++) + { + if ( (quad_before[0] == quads[p][q]) ) + if ((p<2)||(q<2)) C_before[p]++; + if ( (quad_before[1] == quads[p][q]) ) + if ((p<2)||(q<2)) C_before[p]++; + if ( (quad_before[2] == quads[p][q]) ) + if ((p<2)||(q<2)) C_before[p]++; + if ( (quad_before[3] == quads[p][q]) ) + if ((p<2)||(q<2)) C_before[p]++; + + if ( (quad_after[0] == quads[p][q]) ) + if ((p<2)||(q<2)) C_after[p]++; + if ( (quad_after[1] == quads[p][q]) ) + if ((p<2)||(q<2)) C_after[p]++; + if ( (quad_after[2] == quads[p][q]) ) + if ((p<2)||(q<2)) C_after[p]++; + if ( (quad_after[3] == quads[p][q]) ) + if ((p<2)||(q<2)) C_after[p]++; + } + } + + int d_C1 = C_after[0]-C_before[0]; + int d_C2 = C_after[1]-C_before[1]; + int d_C3 = C_after[2]-C_before[2]; + + er_add_pixel(er_stack.back(), x, y, non_boundary_neighbours, non_boundary_neighbours_horiz, d_C1, d_C2, d_C3); + accumulated_pixel_mask[current_pixel] = true; + + // if we have processed all the possible threshold levels (the hea is empty) we are done! + if (threshold_level == (255/thresholdDelta)+1) + { + + // save the extracted regions into the output vector + regions->reserve(num_accepted_regions+1); + er_save(er_stack.back(), NULL, NULL); + + // clean memory + er_tree_clean(er_stack.back()); + er_stack.clear(); + + return; + } + + + // pop the heap of boundary pixels + current_pixel = boundary_pixes[threshold_level].back(); + boundary_pixes[threshold_level].erase(boundary_pixes[threshold_level].end()-1); + current_edge = boundary_edges[threshold_level].back(); + boundary_edges[threshold_level].erase(boundary_edges[threshold_level].end()-1); + + while (boundary_pixes[threshold_level].empty() && (threshold_level < (255/thresholdDelta)+1)) + threshold_level++; + + + int new_level = image_data[current_pixel]; + + // if the new pixel has higher grey value than the current one + if (new_level != current_level) { + + current_level = new_level; + + // process components on the top of the stack until we reach the higher grey-level + while (er_stack.back()->level < new_level) + { + ERStat* er = er_stack.back(); + er_stack.erase(er_stack.end()-1); + + if (new_level < er_stack.back()->level) + { + er_stack.push_back(new ERStat(new_level, current_pixel, current_pixel%width, current_pixel/width)); + er_merge(er_stack.back(), er); + break; + } + + er_merge(er_stack.back(), er); + } + + } + + } +} + +// accumulate a pixel into an ER +void ERFilterNM::er_add_pixel(ERStat *parent, int x, int y, int non_border_neighbours, + int non_border_neighbours_horiz, + int d_C1, int d_C2, int d_C3) +{ + parent->area++; + parent->perimeter += 4 - 2*non_border_neighbours; + + if (parent->crossings->size()>0) + { + if (ybbox[1]) parent->crossings->push_front(2); + else if (y>parent->bbox[3]) parent->crossings->push_back(2); + else { + parent->crossings->at(y - parent->bbox[1]) += 2-2*non_border_neighbours_horiz; + } + } else { + parent->crossings->push_back(2); + } + + parent->euler += (d_C1 - d_C2 + 2*d_C3) / 4; + + parent->bbox[0] = min(parent->bbox[0],x); + parent->bbox[1] = min(parent->bbox[1],y); + parent->bbox[2] = max(parent->bbox[2],x); + parent->bbox[3] = max(parent->bbox[3],y); + + parent->raw_moments[0] += x; + parent->raw_moments[1] += y; + + parent->central_moments[0] += x * x; + parent->central_moments[1] += x * y; + parent->central_moments[2] += y * y; +} + +// merge an ER with its nested parent +void ERFilterNM::er_merge(ERStat *parent, ERStat *child) +{ + + parent->area += child->area; + + parent->perimeter += child->perimeter; + + for (int i=parent->bbox[1]; i<=min(parent->bbox[3],child->bbox[3]); i++) + if (i-child->bbox[1] >= 0) + parent->crossings->at(i-parent->bbox[1]) += child->crossings->at(i-child->bbox[1]); + + for (int i=parent->bbox[1]-1; i>=child->bbox[1]; i--) + if (i-child->bbox[1] < (int)child->crossings->size()) + parent->crossings->push_front(child->crossings->at(i-child->bbox[1])); + else + parent->crossings->push_front(0); + + for (int i=parent->bbox[3]+1; ibbox[1]; i++) + parent->crossings->push_back(0); + + for (int i=max(parent->bbox[3]+1,child->bbox[1]); i<=child->bbox[3]; i++) + parent->crossings->push_back(child->crossings->at(i-child->bbox[1])); + + parent->euler += child->euler; + + parent->bbox[0] = min(parent->bbox[0],child->bbox[0]); + parent->bbox[1] = min(parent->bbox[1],child->bbox[1]); + parent->bbox[2] = max(parent->bbox[2],child->bbox[2]); + parent->bbox[3] = max(parent->bbox[3],child->bbox[3]); + + parent->raw_moments[0] += child->raw_moments[0]; + parent->raw_moments[1] += child->raw_moments[1]; + + parent->central_moments[0] += child->central_moments[0]; + parent->central_moments[1] += child->central_moments[1]; + parent->central_moments[2] += child->central_moments[2]; + + // child region done, we can calculate 1st stage features from the incrementally computable descriptors + child->aspect_ratio = (float)(child->bbox[2]-child->bbox[0]+1)/(child->bbox[3]-child->bbox[1]+1); + child->compactness = sqrt(child->area)/child->perimeter; + child->num_holes = (float)(1-child->euler); + + vector m_crossings; + m_crossings.push_back(child->crossings->at((int)(child->bbox[3]-child->bbox[1]+1)/6)); + m_crossings.push_back(child->crossings->at((int)3*(child->bbox[3]-child->bbox[1]+1)/6)); + m_crossings.push_back(child->crossings->at((int)5*(child->bbox[3]-child->bbox[1]+1)/6)); + sort(m_crossings.begin(), m_crossings.end()); + child->med_crossings = (float)m_crossings.at(1); + + // free unnecessary mem + child->crossings->clear(); + delete(child->crossings); + child->crossings = NULL; + + // recover the original grey-level + child->level = child->level*thresholdDelta; + + // before saving calculate P(child|character) and filter if possible + if (classifier != NULL) + { + child->probability = classifier->eval(*child); + } + + if ( ((classifier!=NULL)?(child->probability >= minProbability):true) && + ((child->area >= (minArea*region_mask.rows*region_mask.cols)) && + (child->area <= (maxArea*region_mask.rows*region_mask.cols))) ) + { + + num_accepted_regions++; + + child->next = parent->child; + if (parent->child) + parent->child->prev = child; + parent->child = child; + child->parent = parent; + + } else { + + num_rejected_regions++; + + if (child->prev !=NULL) + child->prev->next = child->next; + + ERStat *new_child = child->child; + if (new_child != NULL) + { + while (new_child->next != NULL) + new_child = new_child->next; + new_child->next = parent->child; + if (parent->child) + parent->child->prev = new_child; + parent->child = child->child; + child->child->parent = parent; + } + + // free mem + if(child->crossings) + { + child->crossings->clear(); + delete(child->crossings); + child->crossings = NULL; + } + delete(child); + } + +} + +// recursively walk the tree and clean memory +void ERFilterNM::er_tree_clean( ERStat *stat ) +{ + for (ERStat * child = stat->child; child; child = child->next) + { + er_tree_clean(child); + } + if (stat->crossings) + { + stat->crossings->clear(); + delete(stat->crossings); + stat->crossings = NULL; + } + delete stat; +} + +// copy extracted regions into the output vector +ERStat* ERFilterNM::er_save( ERStat *er, ERStat *parent, ERStat *prev ) +{ + + regions->push_back(*er); + + regions->back().parent = parent; + if (prev != NULL) + prev->next = &(regions->back()); + else if (parent != NULL) + parent->child = &(regions->back()); + + ERStat *old_prev = NULL; + ERStat *this_er = ®ions->back(); + + if (nonMaxSuppression) + { + if (this_er->parent == NULL) + { + this_er->probability = 0; //TODO this makes sense in order to select at least one region in short tree's but is it really necessary? + this_er->max_probability_ancestor = this_er; + this_er->min_probability_ancestor = this_er; + } + else + { + this_er->max_probability_ancestor = (this_er->probability > parent->max_probability_ancestor->probability)? this_er : parent->max_probability_ancestor; + + this_er->min_probability_ancestor = (this_er->probability < parent->min_probability_ancestor->probability)? this_er : parent->min_probability_ancestor; + + if ( (this_er->max_probability_ancestor->probability > minProbability) && (this_er->max_probability_ancestor->probability - this_er->min_probability_ancestor->probability > minProbabilityDiff)) + { + + this_er->max_probability_ancestor->local_maxima = true; + //TODO check here if the last local_maxima can be also suppressed, is the following correct? + //if (this_er->min_probability_ancestor->local_maxima) + // this_er->min_probability_ancestor->local_maxima = false; + + this_er->max_probability_ancestor = this_er; + this_er->min_probability_ancestor = this_er; + } + } + } + + for (ERStat * child = er->child; child; child = child->next) + { + old_prev = er_save(child, this_er, old_prev); + } + + return this_er; +} + +// recursively walk the tree and filter (remove) regions using the callback classifier +ERStat* ERFilterNM::er_tree_filter ( cv::InputArray image, ERStat * stat, ERStat *parent, ERStat *prev ) +{ + Mat src = image.getMat(); + // assert correct image type + CV_Assert( src.type() == CV_8UC1 ); + + //Fill the region and calculate 2nd stage features + Mat region = region_mask(Rect(Point(stat->bbox[0],stat->bbox[1]),Point(stat->bbox[2]+3,stat->bbox[3]+3))); + region = Scalar(0); + int newMaskVal = 255; + int flags = 4 + (newMaskVal << 8) + FLOODFILL_FIXED_RANGE + FLOODFILL_MASK_ONLY; + Rect rect; + + floodFill( src(Rect(Point(stat->bbox[0],stat->bbox[1]),Point(stat->bbox[2]+1,stat->bbox[3]+1))), + region, Point(stat->pixel%src.cols - stat->bbox[0], stat->pixel/src.cols - stat->bbox[1]), + Scalar(255), &rect, Scalar(stat->level), Scalar(0), flags ); + rect.width += 2; + rect.height += 2; + region = region(rect); + + vector > contours; + vector contour_poly; + vector hierarchy; + findContours( region, contours, hierarchy, RETR_TREE, CHAIN_APPROX_NONE, Point(0, 0) ); + //TODO check epsilon parameter of approxPolyDP (set empirically) : we want more precission + // if the region is very small because otherwise we'll loose all the convexities + approxPolyDP( Mat(contours[0]), contour_poly, max(rect.width,rect.height)/25, true ); + + + bool was_convex = false; + int num_inflexion_points = 0; + + for (int p = 0 ; p<(int)contour_poly.size(); p++) + { + int p_prev = p-1; + int p_next = p+1; + if (p_prev == -1) + p_prev = contour_poly.size()-1; + if (p_next == (int)contour_poly.size()) + p_next = 0; + + double angle_next = atan2((contour_poly[p_next].y-contour_poly[p].y),(contour_poly[p_next].x-contour_poly[p].x)); + double angle_prev = atan2((contour_poly[p_prev].y-contour_poly[p].y),(contour_poly[p_prev].x-contour_poly[p].x)); + if ( angle_next < 0 ) + angle_next = 2.*CV_PI + angle_next; + + double angle = (angle_next - angle_prev); + if (angle > 2.*CV_PI) + angle = angle - 2.*CV_PI; + else if (angle < 0) + angle = 2.*CV_PI + std::abs(angle); + + if (p>0) + { + if ( ((angle > CV_PI)&&(!was_convex)) || ((angle < CV_PI)&&(was_convex)) ) + num_inflexion_points++; + } + was_convex = (angle > CV_PI); + + } + + floodFill(region, Point(0,0), Scalar(255), 0); + int holes_area = region.cols*region.rows-countNonZero(region); + + int hull_area = 0; + + { + + vector hull; + cv::convexHull(contours[0], hull, false); + hull_area = contourArea(hull); + } + + + stat->hole_area_ratio = (float)holes_area / stat->area; + stat->convex_hull_ratio = (float)hull_area / contourArea(contours[0]); + stat->num_inflexion_points = (float)num_inflexion_points; + + + // calculate P(child|character) and filter if possible + if ( (classifier != NULL) && (stat->parent != NULL) ) + { + stat->probability = classifier->eval(*stat); + } + + if ( ( ((classifier != NULL)?(stat->probability >= minProbability):true) && + ((stat->area >= minArea*region_mask.rows*region_mask.cols) && + (stat->area <= maxArea*region_mask.rows*region_mask.cols)) ) || + (stat->parent == NULL) ) + { + + num_accepted_regions++; + regions->push_back(*stat); + + regions->back().parent = parent; + regions->back().next = NULL; + regions->back().child = NULL; + + if (prev != NULL) + prev->next = &(regions->back()); + else if (parent != NULL) + parent->child = &(regions->back()); + + ERStat *old_prev = NULL; + ERStat *this_er = ®ions->back(); + + for (ERStat * child = stat->child; child; child = child->next) + { + old_prev = er_tree_filter(image, child, this_er, old_prev); + } + + return this_er; + + } else { + + num_rejected_regions++; + + ERStat *old_prev = prev; + + for (ERStat * child = stat->child; child; child = child->next) + { + old_prev = er_tree_filter(image, child, parent, old_prev); + } + + return old_prev; + } + +} + +// recursively walk the tree selecting only regions with local maxima probability +ERStat* ERFilterNM::er_tree_nonmax_suppression ( ERStat * stat, ERStat *parent, ERStat *prev ) +{ + + if ( ( stat->local_maxima ) || ( stat->parent == NULL ) ) + { + + regions->push_back(*stat); + + regions->back().parent = parent; + regions->back().next = NULL; + regions->back().child = NULL; + + if (prev != NULL) + prev->next = &(regions->back()); + else if (parent != NULL) + parent->child = &(regions->back()); + + ERStat *old_prev = NULL; + ERStat *this_er = ®ions->back(); + + for (ERStat * child = stat->child; child; child = child->next) + { + old_prev = er_tree_nonmax_suppression( child, this_er, old_prev ); + } + + return this_er; + + } else { + + num_rejected_regions++; + num_accepted_regions--; + + ERStat *old_prev = prev; + + for (ERStat * child = stat->child; child; child = child->next) + { + old_prev = er_tree_nonmax_suppression( child, parent, old_prev ); + } + + return old_prev; + } + +} + +void ERFilterNM::setCallback(const Ptr& cb) +{ + classifier = cb; +}; + +void ERFilterNM::setMinArea(float _minArea) +{ + CV_Assert( (_minArea >= 0) && (_minArea < maxArea) ); + minArea = _minArea; + return; +}; + +void ERFilterNM::setMaxArea(float _maxArea) +{ + CV_Assert(_maxArea <= 1); + CV_Assert(minArea < _maxArea); + maxArea = _maxArea; + return; +}; + +void ERFilterNM::setThresholdDelta(int _thresholdDelta) +{ + CV_Assert( (_thresholdDelta > 0) && (_thresholdDelta <= 128) ); + thresholdDelta = _thresholdDelta; + return; +}; + +void ERFilterNM::setMinProbability(float _minProbability) +{ + CV_Assert( (_minProbability >= 0.0) && (_minProbability <= 1.0) ); + minProbability = _minProbability; + return; +}; + +void ERFilterNM::setMinProbabilityDiff(float _minProbabilityDiff) +{ + CV_Assert( (_minProbabilityDiff >= 0.0) && (_minProbabilityDiff <= 1.0) ); + minProbabilityDiff = _minProbabilityDiff; + return; +}; + +void ERFilterNM::setNonMaxSuppression(bool _nonMaxSuppression) +{ + nonMaxSuppression = _nonMaxSuppression; + return; +}; + +int ERFilterNM::getNumRejected() +{ + return num_rejected_regions; +}; + + + + +// load default 1st stage classifier if found +ERClassifierNM1::ERClassifierNM1() +{ + + if (ifstream("./trained_classifierNM1.xml")) + { + // The file with default classifier exists + boost.load("./trained_classifierNM1.xml", "boost"); + } + else if (ifstream("./training/trained_classifierNM1.xml")) + { + // The file with default classifier exists + boost.load("./training/trained_classifierNM1.xml", "boost"); + } + else + { + // File not found + CV_Error(CV_StsBadArg, "Default classifier ./trained_classifierNM1.xml not found!"); + } +}; + +double ERClassifierNM1::eval(const ERStat& stat) +{ + //Classify + float arr[] = {0,stat.aspect_ratio, stat.compactness, stat.num_holes, stat.med_crossings}; + vector sample (arr, arr + sizeof(arr) / sizeof(arr[0]) ); + + float votes = boost.predict( Mat(sample), Mat(), Range::all(), false, true ); + + // Logistic Correction returns a probability value (in the range(0,1)) + return (double)1-(double)1/(1+exp(-2*votes)); +}; + + +// load default 2nd stage classifier if found +ERClassifierNM2::ERClassifierNM2() +{ + + if (ifstream("./trained_classifierNM2.xml")) + { + // The file with default classifier exists + boost.load("./trained_classifierNM2.xml", "boost"); + } + else if (ifstream("./training/trained_classifierNM2.xml")) + { + // The file with default classifier exists + boost.load("./training/trained_classifierNM2.xml", "boost"); + } + else + { + // File not found + CV_Error(CV_StsBadArg, "Default classifier ./trained_classifierNM2.xml not found!"); + } +}; + +double ERClassifierNM2::eval(const ERStat& stat) +{ + //Classify + float arr[] = {0,stat.aspect_ratio, stat.compactness, stat.num_holes, stat.med_crossings, + stat.hole_area_ratio, stat.convex_hull_ratio, stat.num_inflexion_points}; + vector sample (arr, arr + sizeof(arr) / sizeof(arr[0]) ); + + float votes = boost.predict( Mat(sample), Mat(), Range::all(), false, true ); + + // Logistic Correction returns a probability value (in the range(0,1)) + return (double)1-(double)1/(1+exp(-2*votes)); +}; + + +/*! + Create an Extremal Region Filter for the 1st stage classifier of N&M algorithm + Neumann L., Matas J.: Real-Time Scene Text Localization and Recognition, CVPR 2012 + + The component tree of the image is extracted by a threshold increased step by step + from 0 to 255, incrementally computable descriptors (aspect_ratio, compactness, + number of holes, and number of horizontal crossings) are computed for each ER + and used as features for a classifier which estimates the class-conditional + probability P(er|character). The value of P(er|character) is tracked using the inclusion + relation of ER across all thresholds and only the ERs which correspond to local maximum + of the probability P(er|character) are selected (if the local maximum of the + probability is above a global limit pmin and the difference between local maximum and + local minimum is greater than minProbabilityDiff). + + \param cb Callback with the classifier. + if omitted tries to load a default classifier from file trained_classifierNM1.xml + \param thresholdDelta Threshold step in subsequent thresholds when extracting the component tree + \param minArea The minimum area (% of image size) allowed for retreived ER's + \param minArea The maximum area (% of image size) allowed for retreived ER's + \param minProbability The minimum probability P(er|character) allowed for retreived ER's + \param nonMaxSuppression Whenever non-maximum suppression is done over the branch probabilities + \param minProbability The minimum probability difference between local maxima and local minima ERs +*/ +Ptr createERFilterNM1(const cv::Ptr& cb, int thresholdDelta, + float minArea, float maxArea, float minProbability, + bool nonMaxSuppression, float minProbabilityDiff) +{ + + CV_Assert( (minProbability >= 0.) && (minProbability <= 1.) ); + CV_Assert( (minArea < maxArea) && (minArea >=0.) && (maxArea <= 1.) ); + CV_Assert( (thresholdDelta >= 0) && (thresholdDelta <= 128) ); + CV_Assert( (minProbabilityDiff >= 0.) && (minProbabilityDiff <= 1.) ); + + Ptr filter = new ERFilterNM(); + + if (cb == NULL) + filter->setCallback(new ERClassifierNM1()); + else + filter->setCallback(cb); + + filter->setThresholdDelta(thresholdDelta); + filter->setMinArea(minArea); + filter->setMaxArea(maxArea); + filter->setMinProbability(minProbability); + filter->setNonMaxSuppression(nonMaxSuppression); + filter->setMinProbabilityDiff(minProbabilityDiff); + return (Ptr)filter; +} + +/*! + Create an Extremal Region Filter for the 2nd stage classifier of N&M algorithm + Neumann L., Matas J.: Real-Time Scene Text Localization and Recognition, CVPR 2012 + + In the second stage, the ERs that passed the first stage are classified into character + and non-character classes using more informative but also more computationally expensive + features. The classifier uses all the features calculated in the first stage and the following + additional features: hole area ratio, convex hull ratio, and number of outer inflexion points. + + \param cb Callback with the classifier + if omitted tries to load a default classifier from file trained_classifierNM2.xml + \param minProbability The minimum probability P(er|character) allowed for retreived ER's +*/ +Ptr createERFilterNM2(const cv::Ptr& cb, float minProbability) +{ + + CV_Assert( (minProbability >= 0.) && (minProbability <= 1.) ); + + Ptr filter = new ERFilterNM(); + + + if (cb == NULL) + filter->setCallback(new ERClassifierNM2()); + else + filter->setCallback(cb); + + filter->setMinProbability(minProbability); + return (Ptr)filter; +} + +} diff --git a/samples/cpp/erfilter.cpp b/samples/cpp/erfilter.cpp new file mode 100644 index 0000000000..f318371d70 --- /dev/null +++ b/samples/cpp/erfilter.cpp @@ -0,0 +1,120 @@ + +//-------------------------------------------------------------------------------------------------- +// A demo program of the Extremal Region Filter algorithm described in +// Neumann L., Matas J.: Real-Time Scene Text Localization and Recognition, CVPR 2012 +//-------------------------------------------------------------------------------------------------- + +#include "opencv2/opencv.hpp" +#include "opencv2/objdetect.hpp" +#include "opencv2/highgui.hpp" +#include "opencv2/imgproc.hpp" + +#include +#include +#include + +using namespace std; +using namespace cv; + +void er_draw(Mat &src, Mat &dst, ERStat& er); + +void er_draw(Mat &src, Mat &dst, ERStat& er) +{ + + if (er.parent != NULL) // deprecate the root region + { + int newMaskVal = 255; + int flags = 4 + (newMaskVal << 8) + FLOODFILL_FIXED_RANGE + FLOODFILL_MASK_ONLY; + floodFill(src,dst,Point(er.pixel%src.cols,er.pixel/src.cols),Scalar(255),0,Scalar(er.level),Scalar(0),flags); + } + +} + +int main(int argc, const char * argv[]) +{ + + + vector regions; + + if (argc < 2) { + cout << "Demo program of the Extremal Region Filter algorithm described in " << endl; + cout << "Neumann L., Matas J.: Real-Time Scene Text Localization and Recognition, CVPR 2012" << endl << endl; + cout << " Usage: " << argv[0] << " input_image " << endl; + cout << " Default classifier files (trained_classifierNM*.xml) should be in ./" << endl; + return -1; + } + + Mat original = imread(argv[1]); + Mat gt; + if (argc > 2) + { + gt = imread(argv[2]); + cvtColor(gt, gt, COLOR_RGB2GRAY); + threshold(gt, gt, 254, 255, THRESH_BINARY); + } + Mat grey(original.size(),CV_8UC1); + cvtColor(original,grey,COLOR_RGB2GRAY); + + double t = (double)getTickCount(); + + // Build ER tree and filter with the 1st stage default classifier + Ptr er_filter1 = createERFilterNM1(); + + er_filter1->run(grey, regions); + + t = (double)getTickCount() - t; + cout << " --------------------------------------------------------------------------------------------------" << endl; + cout << "\t FIRST STAGE CLASSIFIER done in " << t * 1000. / getTickFrequency() << " ms." << endl; + cout << " --------------------------------------------------------------------------------------------------" << endl; + cout << setw(9) << regions.size()+er_filter1->getNumRejected() << "\t Extremal Regions extracted " << endl; + cout << setw(9) << regions.size() << "\t Extremal Regions selected by the first stage of the sequential classifier." << endl; + cout << "\t \t (saving into out_second_stage.jpg)" << endl; + cout << " --------------------------------------------------------------------------------------------------" << endl; + + er_filter1.release(); + + // draw regions + Mat mask = Mat::zeros(grey.rows+2,grey.cols+2,CV_8UC1); + for (int r=0; r<(int)regions.size(); r++) + er_draw(grey, mask, regions.at(r)); + mask = 255-mask; + imwrite("out_first_stage.jpg", mask); + + if (argc > 2) + { + Mat tmp_mask = (255-gt) & (255-mask(Rect(Point(1,1),Size(mask.cols-2,mask.rows-2)))); + cout << "Recall for the 1st stage filter = " << (float)countNonZero(tmp_mask) / countNonZero(255-gt) << endl; + } + + t = (double)getTickCount(); + + // Default second stage classifier + Ptr er_filter2 = createERFilterNM2(); + er_filter2->run(grey, regions); + + t = (double)getTickCount() - t; + cout << " --------------------------------------------------------------------------------------------------" << endl; + cout << "\t SECOND STAGE CLASSIFIER done in " << t * 1000. / getTickFrequency() << " ms." << endl; + cout << " --------------------------------------------------------------------------------------------------" << endl; + cout << setw(9) << regions.size() << "\t Extremal Regions selected by the second stage of the sequential classifier." << endl; + cout << "\t \t (saving into out_second_stage.jpg)" << endl; + cout << " --------------------------------------------------------------------------------------------------" << endl; + + er_filter2.release(); + + // draw regions + mask = mask*0; + for (int r=0; r<(int)regions.size(); r++) + er_draw(grey, mask, regions.at(r)); + mask = 255-mask; + imwrite("out_second_stage.jpg", mask); + + if (argc > 2) + { + Mat tmp_mask = (255-gt) & (255-mask(Rect(Point(1,1),Size(mask.cols-2,mask.rows-2)))); + cout << "Recall for the 2nd stage filter = " << (float)countNonZero(tmp_mask) / countNonZero(255-gt) << endl; + } + + regions.clear(); + +} diff --git a/samples/cpp/scenetext.jpg b/samples/cpp/scenetext.jpg new file mode 100644 index 0000000000000000000000000000000000000000..6a9c6bf5e236816fdc81bc403bd9563649d29bcd GIT binary patch literal 84697 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

+M|; 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 + + + RealAdaboost + Gini + 100 + 1. + 1 + 5 + 4 + 4 + 0 + + 0 + 10 + 1 + 10 + 0 + + 1 + 2 +

d
+ + 1. 1. + + 1 + 4 +
i
+ + 1 2 3 4
+ + 0 0 0 0 + + 1 + 1 +
i
+ + 2
+ + 1 + 2 +
i
+ + 1 2
+ + <_> + -1 + + <_> + 0 + 6696 + -4.2738068875125497e-02 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + + <_>1 + 6.1327493190765381e-01 + 7.8049004077911377e-02 + <_> + 1 + 1344 + 1.4897232658416162e+00 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + 1 + 5352 + -2.8797404326299503e-01 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + -1 + + <_> + 0 + 6696 + 4.1522341120979132e-14 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + + <_>1 + 6.4094465970993042e-01 + 1.9897949695587158e-01 + <_> + 1 + 5301 + -3.6524083494067622e-01 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + 1 + 1395 + 1.1149576991343251e+00 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + -1 + + <_> + 0 + 6696 + -2.2870594307278749e-14 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + + <_>2 + 5.6980127096176147e-01 + 1.5000000000000000e+00 + <_> + 1 + 5523 + -1.7166415896295562e-01 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + 1 + 1173 + 1.1605005959787533e+00 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + -1 + + <_> + 0 + 6696 + -7.1054273576015067e-14 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + + <_>0 + 5.4822087287902832e-01 + 8.7975895404815674e-01 + <_> + 1 + 2833 + -4.2480176423068461e-01 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + 1 + 3863 + 2.4532852260825078e-01 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + -1 + + <_> + 0 + 6696 + 2.9753977059953312e-14 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + + <_>3 + 5.3140330314636230e-01 + 3. + <_> + 1 + 3996 + 1.7646926498854212e-01 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + 1 + 2700 + -3.7641896870070152e-01 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + -1 + + <_> + 0 + 6696 + -1.5543122344752435e-14 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + + <_>1 + 5.3332197666168213e-01 + 2.2678799927234650e-01 + <_> + 1 + 6524 + 7.6426114713215615e-02 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + 1 + 172 + -1.3485157356563835e+00 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + -1 + + <_> + 0 + 6696 + 1.8873791418627305e-14 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + + <_>1 + 5.1992774009704590e-01 + 9.8430499434471130e-02 + <_> + 1 + 2081 + 3.1735773403827577e-01 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + 1 + 4615 + -1.3050941677698649e-01 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + -1 + + <_> + 0 + 6696 + 1.0436096431476363e-14 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + + <_>1 + 5.1678413152694702e-01 + 2.1212799847126007e-01 + <_> + 1 + 5467 + -8.5787873301210987e-02 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + 1 + 1229 + 4.1446003655995284e-01 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + -1 + + <_> + 0 + 6696 + 2.6645352591003686e-15 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + + <_>1 + 5.1522570848464966e-01 + 4.8514001071453094e-02 + <_> + 1 + 539 + 5.7564577324623896e+00 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + 1 + 6157 + -3.0460809939285270e-02 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + -1 + + <_> + 0 + 6696 + 9.6331636897139381e-05 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + + <_>3 + 5.1313066482543945e-01 + 5. + <_> + 1 + 5925 + 4.9494433475081236e-02 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + 1 + 771 + -5.9287972929575039e-01 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + -1 + + <_> + 0 + 6696 + -6.1617377866696567e-15 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + + <_>2 + 5.1186925172805786e-01 + 4.5000000000000000e+00 + <_> + 1 + 5993 + -2.9420461509411709e-02 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + 1 + 703 + 1.1186642275618490e+00 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + -1 + + <_> + 0 + 6696 + -9.2703622556201423e-15 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + + <_>3 + 5.0727468729019165e-01 + 9. + <_> + 1 + 6456 + 1.6434634269188026e-02 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + 1 + 240 + -1.4000712292827926e+00 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + -1 + + <_> + 0 + 6696 + 7.5495165674510077e-15 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + + <_>1 + 5.0708127021789551e-01 + 1.1246799677610397e-01 + <_> + 1 + 2822 + 1.5367268082053392e-01 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + 1 + 3874 + -9.3153347245118326e-02 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + -1 + + <_> + 0 + 6696 + 1.5765166949676974e-14 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + + <_>3 + 5.0856590270996094e-01 + 3. + <_> + 1 + 3996 + 8.6645581882989806e-02 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + 1 + 2700 + -2.0087671007861391e-01 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + -1 + + <_> + 0 + 6696 + -1.6653345369377626e-14 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + + <_>0 + 5.0680923461914062e-01 + 1.1478445529937744e+00 + <_> + 1 + 5204 + -7.6986298456679980e-02 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + 1 + 1492 + 1.7913581369068632e-01 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + -1 + + <_> + 0 + 6696 + 3.9968028886505478e-15 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + + <_>1 + 5.0697994232177734e-01 + 2.3513150215148926e-01 + <_> + 1 + 6606 + 1.8205194893492923e-02 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + 1 + 90 + -1.0127354329715519e+00 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + -1 + + <_> + 0 + 6696 + -1.6930901125533924e-14 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + + <_>1 + 5.0548201799392700e-01 + 6.5295994281768799e-02 + <_> + 1 + 1017 + 6.0829163150572041e-01 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + 1 + 5679 + -2.0197118707513909e-02 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + -1 + + <_> + 0 + 6696 + 1.4876988529976877e-14 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + + <_>1 + 5.0390088558197021e-01 + 7.7498495578765869e-02 + <_> + 1 + 1331 + -2.9288428551454943e-01 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + 1 + 5365 + 2.7401920556891796e-02 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + -1 + + <_> + 0 + 6696 + 1.5987211554601999e-14 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + + <_>1 + 5.0314640998840332e-01 + 8.5879504680633545e-02 + <_> + 1 + 1585 + 1.9731826096849678e-01 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + 1 + 5111 + -3.2315549250537055e-02 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + -1 + + <_> + 0 + 6696 + -6.6613381477509432e-16 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + + <_>2 + 5.0262790918350220e-01 + 5.0000000000000000e-01 + <_> + 1 + 4065 + 4.9691828670874537e-02 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + 1 + 2631 + -1.0625426423292537e-01 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + -1 + + <_> + 0 + 6696 + -1.3267165144270797e-14 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + + <_>2 + 5.0338900089263916e-01 + 2.5000000000000000e+00 + <_> + 1 + 5768 + -1.7170808915642276e-02 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + 1 + 928 + 4.1744759002228976e-01 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + -1 + + <_> + 0 + 6696 + -1.7985612998927861e-14 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + + <_>3 + 5.0293552875518799e-01 + 7. + <_> + 1 + 6301 + 1.0888539178029287e-02 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + 1 + 395 + -6.0305085268185177e-01 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + -1 + + <_> + 0 + 6696 + 3.4638958368303685e-14 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + + <_>1 + 5.0289756059646606e-01 + 5.5853001773357391e-02 + <_> + 1 + 718 + 1.2205678809210552e+00 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + 1 + 5978 + -6.9005117704737801e-03 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + -1 + + <_> + 0 + 6696 + -2.4868995751604125e-14 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + + <_>1 + 5.0243860483169556e-01 + 2.4084049463272095e-01 + <_> + 1 + 6641 + 4.8772808782470770e-03 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + 1 + 55 + -5.7564577324601141e+00 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + -1 + + <_> + 0 + 6696 + -1.5423216747138017e-05 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + + <_>0 + 5.0226837396621704e-01 + 2.5287950038909912e-01 + <_> + 1 + 102 + 6.3884081938725468e-01 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + 1 + 6594 + -8.0577599144550840e-03 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + -1 + + <_> + 0 + 6696 + 3.5527136788004883e-15 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + + <_>0 + 5.0213474035263062e-01 + 7.7158403396606445e-01 + <_> + 1 + 2002 + -1.1284984024243835e-01 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + 1 + 4694 + 3.8011668822737661e-02 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + -1 + + <_> + 0 + 6696 + -1.6209256159527547e-14 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + + <_>0 + 5.0280165672302246e-01 + 2.2507858276367188e+00 + <_> + 1 + 6293 + 2.4730504036563516e-02 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + 1 + 403 + -2.3062669491245841e-01 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + -1 + + <_> + 0 + 6696 + 3.8191672047103927e-14 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + + <_>0 + 5.0253432989120483e-01 + 3.3653845787048340e+00 + <_> + 1 + 6503 + -1.2970930120556381e-02 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + 1 + 193 + 4.1274031243257897e-01 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + -1 + + <_> + 0 + 6696 + -2.8921309791486167e-14 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + + <_>1 + 5.0166010856628418e-01 + 2.1390999853610992e-01 + <_> + 1 + 5531 + -2.6331896149722072e-02 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + 1 + 1165 + 1.2679568803286576e-01 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + -1 + + <_> + 0 + 6696 + 8.4376949871511187e-15 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + + <_>1 + 5.0131356716156006e-01 + 1.2306049466133118e-01 + <_> + 1 + 3485 + 5.4575202207966189e-02 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + 1 + 3211 + -4.8223341249251692e-02 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + -1 + + <_> + 0 + 6696 + -1.3988810110277168e-14 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + + <_>1 + 5.0198501348495483e-01 + 7.8255996108055115e-02 + <_> + 1 + 1348 + -2.1033914009293908e-01 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + 1 + 5348 + 1.9154114250964308e-02 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + -1 + + <_> + 0 + 6696 + -1.4266365866433467e-14 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + + <_>1 + 5.0248610973358154e-01 + 7.1467995643615723e-02 + <_> + 1 + 1172 + 3.2968968312473473e-01 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + 1 + 5524 + -1.5625348431658897e-02 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + -1 + + <_> + 0 + 6696 + 2.7311486405778106e-14 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + + <_>3 + 5.0194221735000610e-01 + 3. + <_> + 1 + 3996 + 4.0295610512256365e-02 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + 1 + 2700 + -9.6752005977083597e-02 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + -1 + + <_> + 0 + 6696 + 2.2204460492503126e-16 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + + <_>1 + 5.0114709138870239e-01 + 2.3718249797821045e-01 + <_> + 1 + 6622 + -4.1635503904929108e-03 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + 1 + 74 + 6.1985783533374139e-01 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + -1 + + <_> + 0 + 6696 + -1.5543122344752215e-15 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + + <_>1 + 5.0172209739685059e-01 + 2.2217050194740295e-01 + <_> + 1 + 6227 + 1.8681120427040978e-02 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + 1 + 469 + -1.8652401242387370e-01 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + -1 + + <_> + 0 + 6696 + -1.8263168755084160e-14 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + + <_>1 + 5.0099056959152222e-01 + 4.9510002136230469e-02 + <_> + 1 + 558 + -1.2384335357514746e+00 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + 1 + 6138 + 2.3445521303984249e-03 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + -1 + + <_> + 0 + 6696 + 9.7699626167012829e-15 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + + <_>2 + 5.0089961290359497e-01 + 2.6500000000000000e+01 + <_> + 1 + 6360 + -1.7992041757429087e-03 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + 1 + 336 + 5.7564577324623896e+00 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + -1 + + <_> + 0 + 6696 + 5.6895823335701191e-06 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + + <_>2 + 5.0118094682693481e-01 + 2.5500000000000000e+01 + <_> + 1 + 6354 + 2.4166608864464967e-03 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + 1 + 342 + -2.2888465010954078e+00 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + -1 + + <_> + 0 + 6696 + 1.2212453270876572e-14 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + + <_>1 + 5.0121438503265381e-01 + 5.9582501649856567e-02 + <_> + 1 + 840 + 5.8664647966628169e-01 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + 1 + 5856 + -4.6044963433007156e-03 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + -1 + + <_> + 0 + 6696 + -3.5915714846625102e-14 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + + <_>1 + 5.0101113319396973e-01 + 1.4623999595642090e-01 + <_> + 1 + 4616 + -3.5172502282471305e-02 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + 1 + 2080 + 5.7583719480068560e-02 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + -1 + + <_> + 0 + 6696 + 1.1990408665951547e-14 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + + <_>1 + 5.0141471624374390e-01 + 1.2247450649738312e-01 + <_> + 1 + 3452 + 5.8002397978578264e-02 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + 1 + 3244 + -4.8874279877898136e-02 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + -1 + + <_> + 0 + 6696 + 1.5987211554601999e-14 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + + <_>1 + 5.0116842985153198e-01 + 7.7498495578765869e-02 + <_> + 1 + 1331 + -1.7188494142274119e-01 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + 1 + 5365 + 1.3729831506301223e-02 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + -1 + + <_> + 0 + 6696 + -1.4155343563970946e-14 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + + <_>1 + 5.0121414661407471e-01 + 8.5879504680633545e-02 + <_> + 1 + 1585 + 1.2910598338382803e-01 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + 1 + 5111 + -1.8915572816328115e-02 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + -1 + + <_> + 0 + 6696 + -9.8254737679327316e-15 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + + <_>1 + 5.0097846984863281e-01 + 1.4246150851249695e-01 + <_> + 1 + 4487 + -3.6309005742797516e-02 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + 1 + 2209 + 5.3973974005312779e-02 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + -1 + + <_> + 0 + 6696 + -3.5527136788005136e-15 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + + <_>0 + 5.0104773044586182e-01 + 2.2507858276367188e+00 + <_> + 1 + 6293 + 1.5347843260515710e-02 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + 1 + 403 + -1.3739749447098926e-01 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + -1 + + <_> + 0 + 6696 + 1.1102230246251442e-14 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + + <_>0 + 5.0123411417007446e-01 + 1.5166850090026855e+00 + <_> + 1 + 5860 + -2.3701090631262016e-02 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + 1 + 836 + 1.0454047746295661e-01 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + -1 + + <_> + 0 + 6696 + -1.2823075934420722e-14 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + + <_>0 + 5.0128591060638428e-01 + 9.4609153270721436e-01 + <_> + 1 + 4087 + 5.1776557405042833e-02 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + 1 + 2609 + -4.9756941186903984e-02 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + -1 + + <_> + 0 + 6696 + -7.3274719625260868e-15 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + + <_>0 + 5.0179207324981689e-01 + 9.0595495700836182e-01 + <_> + 1 + 3201 + -7.3543589169859577e-02 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + 1 + 3495 + 4.8861495908556145e-02 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + -1 + + <_> + 0 + 6696 + 6.2172489379008380e-15 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + + <_>0 + 5.0125002861022949e-01 + 9.4482445716857910e-01 + <_> + 1 + 4054 + 5.1511711137020161e-02 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + 1 + 2642 + -4.8614381935802115e-02 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + -1 + + <_> + 0 + 6696 + 1.1324274851176469e-14 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + + <_>1 + 5.0097835063934326e-01 + 1.9254249334335327e-01 + <_> + 1 + 5273 + 2.4249345169349911e-02 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + 1 + 1423 + -8.0884629261426991e-02 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + -1 + + <_> + 0 + 6696 + 0. + 0 + 0 + 0 + 0. + 0. + 0. + 0. + + <_>0 + 5.0128620862960815e-01 + 9.0595495700836182e-01 + <_> + 1 + 3201 + -6.1924911935004358e-02 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + 1 + 3495 + 4.1617731368296211e-02 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + -1 + + <_> + 0 + 6696 + -6.8833827526760179e-15 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + + <_>2 + 5.0084191560745239e-01 + 1.0500000000000000e+01 + <_> + 1 + 6225 + -2.3118353841113238e-03 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + 1 + 471 + 9.2521939431936440e-01 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + -1 + + <_> + 0 + 6696 + -2.8865798640254153e-15 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + + <_>2 + 5.0089126825332642e-01 + 1.5000000000000000e+00 + <_> + 1 + 5523 + 1.2785114635458802e-02 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + 1 + 1173 + -1.4034194909765221e-01 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + -1 + + <_> + 0 + 6696 + 1.4876988529976877e-14 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + + <_>0 + 5.0066828727722168e-01 + 9.4609153270721436e-01 + <_> + 1 + 4087 + 3.7042053076389733e-02 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + 1 + 2609 + -3.6115236940030694e-02 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + -1 + + <_> + 0 + 6696 + 2.4424906541753385e-15 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + + <_>1 + 5.0070559978485107e-01 + 2.1943551301956177e-01 + <_> + 1 + 5937 + -1.3556222624079359e-02 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + 1 + 759 + 1.0448586331664383e-01 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + -1 + + <_> + 0 + 6696 + 2.2204460492503126e-16 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + + <_>2 + 5.0076895952224731e-01 + 2.5000000000000000e+00 + <_> + 1 + 5768 + -7.2706716286118954e-03 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + 1 + 928 + 2.1477157646629505e-01 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + -1 + + <_> + 0 + 6696 + 3.9968028886505478e-15 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + + <_>2 + 5.0089627504348755e-01 + 5.5000000000000000e+00 + <_> + 1 + 6059 + 4.7555763245711435e-03 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + 1 + 637 + -3.9649216330408060e-01 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + -1 + + <_> + 0 + 6696 + -5.1070259132757461e-15 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + + <_>0 + 5.0070571899414062e-01 + 1.0819125175476074e+00 + <_> + 1 + 4995 + -2.7626368121990579e-02 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + 1 + 1701 + 5.1146227808315924e-02 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + -1 + + <_> + 0 + 6696 + -1.3877787807814476e-15 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + + <_>1 + 5.0076258182525635e-01 + 2.3045200109481812e-01 + <_> + 1 + 6570 + 6.0114816457133369e-03 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + 1 + 126 + -2.5936805626824372e-01 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + -1 + + <_> + 0 + 6696 + -3.8857805861880494e-16 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + + <_>1 + 5.0089013576507568e-01 + 2.2690850496292114e-01 + <_> + 1 + 6527 + -8.4053681892962469e-03 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + 1 + 169 + 2.1506217431803590e-01 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + -1 + + <_> + 0 + 6696 + 5.3290705182007230e-15 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + + <_>1 + 5.0091993808746338e-01 + 1.9974449276924133e-01 + <_> + 1 + 5306 + 2.3129710639090150e-02 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + 1 + 1390 + -7.9729164788981108e-02 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + -1 + + <_> + 0 + 6696 + -6.8833827526760179e-15 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + + <_>3 + 5.0070244073867798e-01 + 15. + <_> + 1 + 6577 + 1.4519902873964278e-03 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + 1 + 119 + -2.0528590518345577e+00 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + -1 + + <_> + 0 + 6696 + 6.6613381477509353e-16 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + + <_>1 + 5.0066137313842773e-01 + 1.5967300534248352e-01 + <_> + 1 + 4943 + -2.4632987250352092e-02 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + 1 + 1753 + 5.3762047393361698e-02 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + -1 + + <_> + 0 + 6696 + -1.1601830607333020e-14 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + + <_>2 + 5.0063061714172363e-01 + 6.5000000000000000e+00 + <_> + 1 + 6108 + -2.7833790336225339e-03 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + 1 + 588 + 4.8862416747241927e-01 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + -1 + + <_> + 0 + 6696 + 7.3274719625259795e-15 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + + <_>2 + 5.0056153535842896e-01 + 2.5500000000000000e+01 + <_> + 1 + 6354 + 1.2338724584192815e-03 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + 1 + 342 + -1.5285879647299458e+00 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + -1 + + <_> + 0 + 6696 + 1.7985612998927211e-14 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + + <_>1 + 5.0059783458709717e-01 + 6.9747999310493469e-02 + <_> + 1 + 1130 + 1.9080524927748807e-01 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + 1 + 5566 + -6.3423198578975272e-03 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + -1 + + <_> + 0 + 6696 + -1.1990408665951834e-14 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + + <_>1 + 5.0096279382705688e-01 + 6.0209497809410095e-02 + <_> + 1 + 861 + -4.0817517109117923e-01 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + 1 + 5835 + 4.9768691931133605e-03 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + -1 + + <_> + 0 + 6696 + 2.8865798640253987e-15 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + + <_>1 + 5.0055110454559326e-01 + 2.2292549908161163e-01 + <_> + 1 + 6305 + 9.6745303354929309e-03 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + 1 + 391 + -1.1442976817312843e-01 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + -1 + + <_> + 0 + 6696 + 4.6629367034256354e-15 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + + <_>0 + 5.0055730342864990e-01 + 2.0428659915924072e+00 + <_> + 1 + 6209 + 1.2165695293698981e-02 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + 1 + 487 + -9.1881742448303563e-02 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + -1 + + <_> + 0 + 6696 + -1.0880185641326652e-14 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + + <_>0 + 5.0080114603042603e-01 + 1.7432234287261963e+00 + <_> + 1 + 6040 + -1.6635134534456867e-02 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + 1 + 656 + 9.6630407896139747e-02 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + -1 + + <_> + 0 + 6696 + 7.7715611723760358e-15 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + + <_>0 + 5.0061732530593872e-01 + 2.0428659915924072e+00 + <_> + 1 + 6209 + 1.2816939066706903e-02 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + 1 + 487 + -9.6630407896139317e-02 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + -1 + + <_> + 0 + 6696 + -2.2204460492503136e-16 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + + <_>1 + 5.0048106908798218e-01 + 2.1943551301956177e-01 + <_> + 1 + 5937 + -1.1171481463132401e-02 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + 1 + 759 + 8.6341268832712953e-02 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + -1 + + <_> + 0 + 6696 + -9.7699626167014722e-15 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + + <_>0 + 5.0053101778030396e-01 + 1.7432234287261963e+00 + <_> + 1 + 6040 + -1.3543848469927067e-02 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + 1 + 656 + 7.8582931296741751e-02 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + -1 + + <_> + 0 + 6696 + -5.1070259132757461e-15 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + + <_>0 + 5.0048828125000000e-01 + 9.1913700103759766e-01 + <_> + 1 + 3647 + 3.4887448910966123e-02 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + 1 + 3049 + -2.8012044396154241e-02 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + -1 + + <_> + 0 + 6696 + 5.5511151231257519e-15 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + + <_>0 + 5.0055414438247681e-01 + 9.0595495700836182e-01 + <_> + 1 + 3201 + -4.0494401261701257e-02 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + 1 + 3495 + 2.7391089531531652e-02 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + -1 + + <_> + 0 + 6696 + -4.2188474935756130e-15 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + + <_>1 + 5.0054299831390381e-01 + 1.9254249334335327e-01 + <_> + 1 + 5273 + 1.8114158117713660e-02 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + 1 + 1423 + -6.0031734810025980e-02 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + -1 + + <_> + 0 + 6696 + 8.8817841970012444e-16 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + + <_>1 + 5.0045472383499146e-01 + 2.1390999853610992e-01 + <_> + 1 + 5531 + -1.3573468584292573e-02 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + 1 + 1165 + 6.7110013394457699e-02 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + -1 + + <_> + 0 + 6696 + 5.7731597280507809e-15 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + + <_>1 + 5.0056809186935425e-01 + 2.2181048989295959e-01 + <_> + 1 + 6195 + 1.0958949879470268e-02 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + 1 + 501 + -1.0405905416434932e-01 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + -1 + + <_> + 0 + 6696 + -8.8817841970013312e-15 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + + <_>1 + 5.0050455331802368e-01 + 2.3346549272537231e-01 + <_> + 1 + 6598 + -3.7162552864078665e-03 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + 1 + 98 + 2.7851529107598672e-01 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + -1 + + <_> + 0 + 6696 + 5.7731597280507809e-15 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + + <_>1 + 5.0067859888076782e-01 + 2.2977349162101746e-01 + <_> + 1 + 6564 + 5.9841883908755391e-03 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + 1 + 132 + -2.3081415106275815e-01 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + -1 + + <_> + 0 + 6696 + -6.7168492989822420e-15 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + + <_>1 + 5.0083827972412109e-01 + 2.2690850496292114e-01 + <_> + 1 + 6527 + -8.0783228170665522e-03 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + 1 + 169 + 2.1059902875292844e-01 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + -1 + + <_> + 0 + 6696 + 3.3306690738754586e-15 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + + <_>1 + 5.0056660175323486e-01 + 2.2977349162101746e-01 + <_> + 1 + 6564 + 5.4599483267954918e-03 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + 1 + 132 + -2.1059902875292799e-01 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + -1 + + <_> + 0 + 6696 + -5.5511151231257827e-17 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + + <_>0 + 5.0044262409210205e-01 + 5.9594953060150146e-01 + <_> + 1 + 947 + 7.4434424661432769e-02 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + 1 + 5749 + -1.1915844396920790e-02 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + -1 + + <_> + 0 + 6696 + 8.2156503822260906e-15 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + + <_>1 + 5.0045764446258545e-01 + 2.1943551301956177e-01 + <_> + 1 + 5937 + -1.0789854032467761e-02 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + 1 + 759 + 8.5034851941486828e-02 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + -1 + + <_> + 0 + 6696 + -1.7763568394002536e-15 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + + <_>1 + 5.0045067071914673e-01 + 1.0878099501132965e-01 + <_> + 1 + 2616 + 4.3888692055889571e-02 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + 1 + 4080 + -2.0552208863441928e-02 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + -1 + + <_> + 0 + 6696 + -2.2204460492503136e-16 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + + <_>1 + 5.0064951181411743e-01 + 7.8714996576309204e-02 + <_> + 1 + 1358 + -1.2807332940239827e-01 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + 1 + 5338 + 1.0198923757349111e-02 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + -1 + + <_> + 0 + 6696 + -4.4964032497319045e-15 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + + <_>1 + 5.0096720457077026e-01 + 7.1467995643615723e-02 + <_> + 1 + 1172 + 2.2610922663354846e-01 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + 1 + 5524 + -8.7007112104894625e-03 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + -1 + + <_> + 0 + 6696 + 6.4392935428258661e-15 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + + <_>1 + 5.0050342082977295e-01 + 7.7498495578765869e-02 + <_> + 1 + 1331 + -1.1596157752301800e-01 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + 1 + 5365 + 8.7217073487711374e-03 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + -1 + + <_> + 0 + 6696 + -3.9968028886505793e-15 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + + <_>1 + 5.0044137239456177e-01 + 9.2569001019001007e-02 + <_> + 1 + 1806 + 6.5049069533991741e-02 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + 1 + 4890 + -1.3590045945499412e-02 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + -1 + + <_> + 0 + 6696 + -6.6613381477509834e-15 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + + <_>3 + 5.0045472383499146e-01 + 3. + <_> + 1 + 3996 + 1.9372403332724102e-02 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + 1 + 2700 + -4.6983655893048516e-02 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + -1 + + <_> + 0 + 6696 + -1.9984014443252857e-15 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + + <_>0 + 5.0038576126098633e-01 + 1.6262821197509766e+01 + <_> + 1 + 6672 + -7.7151022484104465e-04 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + 1 + 24 + 5.7564577324623896e+00 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + -1 + + <_> + 0 + 6696 + 2.4397360458841918e-06 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + + <_>0 + 5.0039798021316528e-01 + 4.2022142410278320e+00 + <_> + 1 + 6568 + 3.5478094143947562e-03 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + 1 + 128 + -2.2840957942555040e-01 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + -1 + + <_> + 0 + 6696 + -1.3877787807814476e-15 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + + <_>0 + 5.0070858001708984e-01 + 3.6316020488739014e+00 + <_> + 1 + 6533 + -6.0271504793015986e-03 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + 1 + 163 + 2.3962237729233701e-01 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + -1 + + <_> + 0 + 6696 + 5.5511151231257519e-15 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + + <_>0 + 5.0043815374374390e-01 + 4.2022142410278320e+00 + <_> + 1 + 6568 + 3.7270150937976335e-03 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + 1 + 128 + -2.3962237729233693e-01 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + -1 + + <_> + 0 + 6696 + -4.3853809472693873e-15 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + + <_>0 + 5.0041538476943970e-01 + 5.0116462707519531e+00 + <_> + 1 + 6605 + -3.0578445307874662e-03 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + 1 + 91 + 2.7868955243849686e-01 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + -1 + + <_> + 0 + 6696 + -6.2727600891321739e-15 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + + <_>0 + 5.0037473440170288e-01 + 1.4896666526794434e+01 + <_> + 1 + 6670 + 7.5413849870097256e-04 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + 1 + 26 + -2.8921490337872560e+00 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + -1 + + <_> + 0 + 6696 + -5.5511151231257827e-17 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + + <_>0 + 5.0054270029067993e-01 + 1.2005734443664551e+01 + <_> + 1 + 6665 + -1.1638027534938869e-03 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + 1 + 31 + 1.6786149859003261e+00 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + -1 + + <_> + 0 + 6696 + 4.6629367034256354e-15 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + + <_>0 + 5.0044608116149902e-01 + 4.2022142410278320e+00 + <_> + 1 + 6568 + 3.4675087855743224e-03 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + 1 + 128 + -2.6321539599441751e-01 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + -1 + + <_> + 0 + 6696 + 4.2188474935755767e-15 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + + <_>2 + 5.0035691261291504e-01 + 1.0500000000000000e+01 + <_> + 1 + 6225 + -1.0399202570737451e-03 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + 1 + 471 + 8.4121798274828596e-01 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + -1 + + <_> + 0 + 6696 + -3.7747582837255464e-15 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + + <_>2 + 5.0044542551040649e-01 + 5.5000000000000000e+00 + <_> + 1 + 6059 + 3.0397076453332855e-03 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + 1 + 637 + -3.0190805541684723e-01 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + diff --git a/samples/cpp/trained_classifierNM2.xml b/samples/cpp/trained_classifierNM2.xml new file mode 100644 index 0000000000..4dc259f635 --- /dev/null +++ b/samples/cpp/trained_classifierNM2.xml @@ -0,0 +1,4046 @@ + + + + RealAdaboost + Gini + 100 + 1. + 1 + 8 + 7 + 7 + 0 + + 0 + 10 + 1 + 10 + 0 + + 1 + 2 +
d
+ + 1. 1.
+ + 1 + 7 +
i
+ + 1 2 3 4 5 6 7
+ + 0 0 0 0 0 0 0 + + 1 + 1 +
i
+ + 2
+ + 1 + 2 +
i
+ + 1 2
+ + <_> + -1 + + <_> + 0 + 85052 + -2.0851517666418171e-01 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + + <_>1 + 8.0945491790771484e-01 + 1.4282399415969849e-01 + <_> + 1 + 51211 + -1.1655815615009795e+00 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + 1 + 33841 + 9.2576486302104599e-01 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + -1 + + <_> + 0 + 85052 + -4.0434322556864549e-13 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + + <_>0 + 5.5560266971588135e-01 + 1.1992645263671875e+00 + <_> + 1 + 53830 + -2.7774940068788956e-01 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + 1 + 31222 + 4.3636095679254611e-01 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + -1 + + <_> + 0 + 85052 + -5.5244697705378314e-13 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + + <_>6 + 5.6166672706604004e-01 + 8.5000000000000000e+00 + <_> + 1 + 77849 + -1.9387850902953174e-01 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + 1 + 7203 + 7.6512998048339842e-01 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + -1 + + <_> + 0 + 85052 + 1.1137757383027165e-12 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + + <_>5 + 5.3432768583297729e-01 + 1.0000740289688110e+00 + <_> + 1 + 9695 + 1.0093966120501190e+00 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + 1 + 75357 + -8.9927193923099238e-02 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + -1 + + <_> + 0 + 85052 + -5.6671334292023235e-13 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + + <_>5 + 5.2853655815124512e-01 + 1.9998995065689087e+00 + <_> + 1 + 68496 + -1.3284462220844204e-01 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + 1 + 16556 + 4.6253459906468258e-01 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + -1 + + <_> + 0 + 85052 + 1.5987211554599700e-13 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + + <_>1 + 5.3614515066146851e-01 + 1.1410850286483765e-01 + <_> + 1 + 37005 + -4.3322351556582656e-01 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + 1 + 48047 + 1.7906662718891103e-01 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + -1 + + <_> + 0 + 85052 + -2.5979218776229338e-14 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + + <_>5 + 5.2565670013427734e-01 + 1.1428444385528564e+00 + <_> + 1 + 28123 + -2.9299227512780235e-01 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + 1 + 56929 + 1.8210542749456476e-01 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + -1 + + <_> + 0 + 85052 + -6.6169292267663710e-14 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + + <_>2 + 5.1728218793869019e-01 + 2.5000000000000000e+00 + <_> + 1 + 84594 + -3.5132932294418412e-02 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + 1 + 458 + 2.4171615055929991e+00 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + -1 + + <_> + 0 + 85052 + -4.4853010194858337e-14 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + + <_>1 + 5.2121073007583618e-01 + 1.7495599389076233e-01 + <_> + 1 + 59074 + -1.6093402696177866e-01 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + 1 + 25978 + 2.7241130230718985e-01 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + -1 + + <_> + 0 + 85052 + 1.3811174426335039e-13 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + + <_>5 + 5.1690614223480225e-01 + 1.4999510049819946e+00 + <_> + 1 + 48787 + -1.5569102806697110e-01 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + 1 + 36265 + 2.2252947017737912e-01 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + -1 + + <_> + 0 + 85052 + -8.1934459217343267e-14 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + + <_>1 + 5.1266878843307495e-01 + 1.2102149426937103e-01 + <_> + 1 + 42059 + -2.2672787671659753e-01 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + 1 + 42993 + 1.1415487554925473e-01 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + -1 + + <_> + 0 + 85052 + -9.1093799170502387e-14 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + + <_>4 + 5.1520520448684692e-01 + 1.5279999934136868e-03 + <_> + 1 + 68702 + -7.3421607355411075e-02 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + 1 + 16350 + 4.4155451359037357e-01 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + -1 + + <_> + 0 + 85052 + 1.8229862064341748e-13 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + + <_>5 + 5.1154321432113647e-01 + 2.4999566078186035e+00 + <_> + 1 + 79214 + -4.8683110415928377e-02 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + 1 + 5838 + 5.1598158925116355e-01 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + -1 + + <_> + 0 + 85052 + -9.2592600253746626e-14 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + + <_>1 + 5.1093620061874390e-01 + 1.0245949774980545e-01 + <_> + 1 + 26510 + -3.0550267219933458e-01 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + 1 + 58542 + 7.3942734827146334e-02 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + -1 + + <_> + 0 + 85052 + -8.9761531540951959e-14 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + + <_>6 + 5.0920587778091431e-01 + 5.0000000000000000e-01 + <_> + 1 + 11135 + -3.1755783174672919e-01 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + 1 + 73917 + 5.9987198000351898e-02 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + -1 + + <_> + 0 + 85052 + 1.1635137298070287e-13 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + + <_>5 + 5.1026338338851929e-01 + 9.6662950515747070e-01 + <_> + 1 + 2959 + 1.8170860205295931e+00 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + 1 + 82093 + -2.1643576105994013e-02 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + -1 + + <_> + 0 + 85052 + -5.8619775700211698e-14 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + + <_>0 + 5.1050859689712524e-01 + 4.2910051345825195e-01 + <_> + 1 + 1142 + 6.1481242791051749e-01 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + 1 + 83910 + -3.8405933276937039e-02 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + -1 + + <_> + 0 + 85052 + -3.9968028886507232e-14 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + + <_>0 + 5.1034581661224365e-01 + 3.1224999427795410e+00 + <_> + 1 + 83931 + -3.4360295599506332e-02 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + 1 + 1121 + 6.9695853321977042e-01 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + -1 + + <_> + 0 + 85052 + -2.2110091535414882e-13 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + + <_>1 + 5.0685334205627441e-01 + 1.6315400600433350e-01 + <_> + 1 + 56302 + -1.0536507458437382e-01 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + 1 + 28750 + 1.3131876124230615e-01 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + -1 + + <_> + 0 + 85052 + 4.2632564145604194e-14 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + + <_>5 + 5.1097369194030762e-01 + 1.3333054780960083e+00 + <_> + 1 + 39585 + -1.3980281702427369e-01 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + 1 + 45467 + 1.5934471638769365e-01 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + -1 + + <_> + 0 + 85052 + -1.5365486660814527e-13 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + + <_>1 + 5.0712108612060547e-01 + 5.4749999195337296e-02 + <_> + 1 + 268 + 2.0102810951501930e+00 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + 1 + 84784 + -1.4763722474947673e-02 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + -1 + + <_> + 0 + 85052 + 5.3068660577079668e-14 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + + <_>1 + 5.0855076313018799e-01 + 1.8632251024246216e-01 + <_> + 1 + 62257 + -9.8863683143064443e-02 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + 1 + 22795 + 1.7531854005917147e-01 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + -1 + + <_> + 0 + 85052 + -2.1010970741035503e-13 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + + <_>6 + 5.0839239358901978e-01 + 2.1500000000000000e+01 + <_> + 1 + 84180 + 3.3709711253908758e-02 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + 1 + 872 + -5.4678827729280677e-01 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + -1 + + <_> + 0 + 85052 + 5.1070259132756941e-15 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + + <_>6 + 5.1185333728790283e-01 + 4.5000000000000000e+00 + <_> + 1 + 54850 + -1.3957538523591986e-01 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + 1 + 30202 + 1.7264526939599670e-01 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + -1 + + <_> + 0 + 85052 + -1.0724754417880162e-13 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + + <_>4 + 5.0670981407165527e-01 + 1.5279999934136868e-03 + <_> + 1 + 68702 + -4.6140615158621334e-02 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + 1 + 16350 + 2.9971095384690405e-01 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + -1 + + <_> + 0 + 85052 + 5.9729998724829850e-14 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + + <_>3 + 5.0741368532180786e-01 + 3. + <_> + 1 + 64284 + 5.3257435738342171e-02 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + 1 + 20768 + -2.8624303413816726e-01 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + -1 + + <_> + 0 + 85052 + 5.3290705182004674e-14 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + + <_>1 + 5.0632566213607788e-01 + 2.3696850240230560e-01 + <_> + 1 + 84618 + 1.5950331395399531e-02 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + 1 + 434 + -1.0801049499585134e+00 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + -1 + + <_> + 0 + 85052 + -9.1870955287740148e-14 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + + <_>5 + 5.0532805919647217e-01 + 3.7046184539794922e+00 + <_> + 1 + 84455 + -1.2273968085806013e-02 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + 1 + 597 + 1.3258536030843857e+00 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + -1 + + <_> + 0 + 85052 + -2.8421709430404815e-14 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + + <_>0 + 5.0496006011962891e-01 + 1.1423504352569580e+00 + <_> + 1 + 49633 + -8.4710336395360977e-02 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + 1 + 35419 + 1.1792957927648873e-01 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + -1 + + <_> + 0 + 85052 + -3.5305092183081228e-14 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + + <_>0 + 5.0832629203796387e-01 + 1.0025000572204590e+00 + <_> + 1 + 38800 + 1.3411668655420397e-01 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + 1 + 46252 + -1.2556436569616300e-01 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + -1 + + <_> + 0 + 85052 + 1.0880185641326416e-14 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + + <_>0 + 5.0588506460189819e-01 + 9.9288249015808105e-01 + <_> + 1 + 29974 + -1.5381446520138317e-01 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + 1 + 55078 + 7.7277560960516981e-02 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + -1 + + <_> + 0 + 85052 + -5.0848214527834757e-14 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + + <_>4 + 5.0448471307754517e-01 + 9.2855751514434814e-01 + <_> + 1 + 84350 + -1.0398941556026050e-02 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + 1 + 702 + 1.3032575620501816e+00 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + -1 + + <_> + 0 + 85052 + 1.1457501614130303e-13 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + + <_>4 + 5.0515556335449219e-01 + 1.5001350641250610e-01 + <_> + 1 + 73655 + 2.2778889851791131e-02 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + 1 + 11397 + -4.8814155956114441e-01 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + -1 + + <_> + 0 + 85052 + -4.8017145815040324e-14 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + + <_>0 + 5.0434845685958862e-01 + 1.0927449911832809e-01 + <_> + 1 + 38 + 2.9257485805403145e+00 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + 1 + 85014 + -8.7472424605780971e-03 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + -1 + + <_> + 0 + 85052 + 9.9920072216263095e-15 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + + <_>5 + 5.0396436452865601e-01 + 1.1111010313034058e+00 + <_> + 1 + 24025 + -1.1425222651510533e-01 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + 1 + 61027 + 6.9811502406169512e-02 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + -1 + + <_> + 0 + 85052 + 3.1752378504278467e-14 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + + <_>1 + 5.0685292482376099e-01 + 1.6534850001335144e-01 + <_> + 1 + 56789 + -1.0639676270038445e-01 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + 1 + 28263 + 1.3003218037837008e-01 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + -1 + + <_> + 0 + 85052 + 1.1768364061026520e-14 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + + <_>4 + 5.0667446851730347e-01 + 2.5204999838024378e-03 + <_> + 1 + 68803 + -4.4902369408092585e-02 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + 1 + 16249 + 3.0676249251706372e-01 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + -1 + + <_> + 0 + 85052 + 1.0436096431476363e-14 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + + <_>5 + 5.0544035434722900e-01 + 1.6999830007553101e+00 + <_> + 1 + 58001 + -6.3192712659493902e-02 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + 1 + 27051 + 1.7415191131728372e-01 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + -1 + + <_> + 0 + 85052 + -7.1553873937096463e-14 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + + <_>1 + 5.0740957260131836e-01 + 9.0433999896049500e-02 + <_> + 1 + 14655 + -3.5563455686562018e-01 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + 1 + 70397 + 4.3438834127815081e-02 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + -1 + + <_> + 0 + 85052 + 5.3290705182004674e-14 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + + <_>0 + 5.0522023439407349e-01 + 7.6169013977050781e+00 + <_> + 1 + 84964 + -1.0982105673326964e-02 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + 1 + 88 + 1.8392352279970514e+00 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + -1 + + <_> + 0 + 85052 + 5.9952043329758090e-15 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + + <_>2 + 5.0350898504257202e-01 + 1.5000000000000000e+00 + <_> + 1 + 83116 + -1.3544875378839269e-02 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + 1 + 1936 + 5.7382380004662314e-01 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + -1 + + <_> + 0 + 85052 + 1.1324274851176469e-14 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + + <_>1 + 5.0382590293884277e-01 + 1.9760949909687042e-01 + <_> + 1 + 66636 + -5.8693205183840469e-02 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + 1 + 18416 + 1.3126738509498842e-01 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + -1 + + <_> + 0 + 85052 + -3.9412917374193215e-15 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + + <_>5 + 5.0635123252868652e-01 + 1.1999764442443848e+00 + <_> + 1 + 32171 + -1.2031088209549005e-01 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + 1 + 52881 + 1.0648972918122487e-01 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + -1 + + <_> + 0 + 85052 + -3.8247183198338107e-14 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + + <_>1 + 5.0506365299224854e-01 + 1.5712898969650269e-01 + <_> + 1 + 54755 + -1.0068970021652925e-01 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + 1 + 30297 + 1.0126393532049692e-01 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + -1 + + <_> + 0 + 85052 + 4.0412118096354064e-14 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + + <_>6 + 5.0421619415283203e-01 + 1.5500000000000000e+01 + <_> + 1 + 83015 + 3.4846015981025179e-02 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + 1 + 2037 + -2.4699253563606235e-01 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + -1 + + <_> + 0 + 85052 + -5.0681681074140965e-14 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + + <_>5 + 5.0354343652725220e-01 + 1.7777650356292725e+00 + <_> + 1 + 61156 + -4.6966726001940580e-02 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + 1 + 23896 + 1.5216614445371685e-01 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + -1 + + <_> + 0 + 85052 + -4.2188474935756130e-15 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + + <_>4 + 5.0353568792343140e-01 + 6.1677896976470947e-01 + <_> + 1 + 82886 + -1.0550569860998281e-02 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + 1 + 2166 + 8.1121927736733479e-01 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + -1 + + <_> + 0 + 85052 + -1.4155343563970946e-14 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + + <_>1 + 5.0356847047805786e-01 + 7.9045504331588745e-02 + <_> + 1 + 6487 + -3.5699349596991936e-01 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + 1 + 78565 + 2.0836955059488720e-02 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + -1 + + <_> + 0 + 85052 + 5.9729998724829850e-14 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + + <_>0 + 5.0237894058227539e-01 + 1.0025000572204590e+00 + <_> + 1 + 38800 + 7.2461344985504356e-02 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + 1 + 46252 + -6.5870382159515656e-02 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + -1 + + <_> + 0 + 85052 + 1.1990408665951547e-14 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + + <_>0 + 5.0478190183639526e-01 + 1.1423504352569580e+00 + <_> + 1 + 49633 + -8.5161166573258451e-02 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + 1 + 35419 + 1.1305297421197989e-01 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + -1 + + <_> + 0 + 85052 + 1.4876988529976877e-14 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + + <_>0 + 5.0333338975906372e-01 + 1.0025000572204590e+00 + <_> + 1 + 38800 + 8.5161166573246114e-02 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + 1 + 46252 + -7.8635547273571457e-02 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + -1 + + <_> + 0 + 85052 + 2.5979218776227988e-14 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + + <_>0 + 5.0263774394989014e-01 + 1.1107280254364014e+00 + <_> + 1 + 47606 + -6.6027160206561755e-02 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + 1 + 37446 + 8.0186860022252365e-02 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + -1 + + <_> + 0 + 85052 + -3.7692071686025484e-14 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + + <_>5 + 5.0207757949829102e-01 + 2.3332970142364502e+00 + <_> + 1 + 77151 + -2.0113928185465708e-02 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + 1 + 7901 + 2.0962879229306902e-01 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + -1 + + <_> + 0 + 85052 + 4.7295500849029435e-14 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + + <_>1 + 5.0277924537658691e-01 + 1.8632251024246216e-01 + <_> + 1 + 62257 + -5.6181028479834562e-02 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + 1 + 22795 + 9.9369395636073957e-02 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + -1 + + <_> + 0 + 85052 + 5.3068660577079668e-14 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + + <_>5 + 5.0377154350280762e-01 + 1.0908994674682617e+00 + <_> + 1 + 21657 + -1.2235976924685764e-01 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + 1 + 63395 + 6.2033199693086141e-02 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + -1 + + <_> + 0 + 85052 + -4.2243986086988992e-14 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + + <_>4 + 5.0277858972549438e-01 + 1.6349999932572246e-03 + <_> + 1 + 68726 + -2.9097883587926674e-02 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + 1 + 16326 + 1.9341358661672844e-01 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + -1 + + <_> + 0 + 85052 + 6.9055872131679966e-14 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + + <_>1 + 5.0421267747879028e-01 + 1.2819899618625641e-01 + <_> + 1 + 46067 + -1.2594108243625032e-01 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + 1 + 38985 + 6.7353720972212330e-02 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + -1 + + <_> + 0 + 85052 + -1.9317880628478096e-14 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + + <_>1 + 5.0289511680603027e-01 + 1.4286199212074280e-01 + <_> + 1 + 51280 + 8.6671779352972975e-02 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + 1 + 33772 + -6.7074073857332259e-02 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + -1 + + <_> + 0 + 85052 + -2.3592239273285132e-14 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + + <_>1 + 5.0369596481323242e-01 + 1.7319199442863464e-01 + <_> + 1 + 58763 + -7.3006421478824995e-02 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + 1 + 26289 + 1.0177967483556853e-01 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + -1 + + <_> + 0 + 85052 + -1.3100631690577019e-14 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + + <_>5 + 5.0306421518325806e-01 + 1.2499785423278809e+00 + <_> + 1 + 35374 + -7.9979696078564338e-02 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + 1 + 49678 + 7.6940071933976520e-02 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + -1 + + <_> + 0 + 85052 + -7.9936057773011918e-15 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + + <_>5 + 5.0323289632797241e-01 + 1.0000740289688110e+00 + <_> + 1 + 9695 + 2.5098996930572409e-01 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + 1 + 75357 + -2.6306141460250100e-02 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + -1 + + <_> + 0 + 85052 + -3.9412917374193215e-15 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + + <_>1 + 5.0252068042755127e-01 + 2.2588250041007996e-01 + <_> + 1 + 82565 + 1.5733416991173494e-02 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + 1 + 2487 + -3.3215282405704583e-01 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + -1 + + <_> + 0 + 85052 + -1.1990408665951834e-14 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + + <_>0 + 5.0204354524612427e-01 + 2.1103200316429138e-01 + <_> + 1 + 160 + 6.4126003896868689e-01 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + 1 + 84892 + -7.2243147271573143e-03 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + -1 + + <_> + 0 + 85052 + 4.0190073491429051e-14 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + + <_>1 + 5.0215661525726318e-01 + 1.9760949909687042e-01 + <_> + 1 + 66636 + -4.2589838763189808e-02 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + 1 + 18416 + 1.0168498794066831e-01 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + -1 + + <_> + 0 + 85052 + -6.2172489379009153e-15 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + + <_>6 + 5.0249111652374268e-01 + 5.0000000000000000e-01 + <_> + 1 + 11135 + -1.6441321811536030e-01 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + 1 + 73917 + 3.0585312630211685e-02 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + -1 + + <_> + 0 + 85052 + -6.6058269965197248e-15 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + + <_>4 + 5.0215303897857666e-01 + 1.0776715278625488e+00 + <_> + 1 + 84672 + -5.6388275069845758e-03 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + 1 + 380 + 1.0049291635506168e+00 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + -1 + + <_> + 0 + 85052 + -8.2156503822262262e-15 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + + <_>2 + 5.0214546918869019e-01 + 4.5000000000000000e+00 + <_> + 1 + 84762 + -4.7074724126887832e-03 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + 1 + 290 + 1.5364953776259493e+00 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + -1 + + <_> + 0 + 85052 + 4.3964831775154268e-14 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + + <_>0 + 5.0186127424240112e-01 + 8.0047404766082764e-01 + <_> + 1 + 13817 + 1.1296368310029067e-01 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + 1 + 71235 + -3.3105517731571561e-02 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + -1 + + <_> + 0 + 85052 + -4.0911718457438691e-14 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + + <_>0 + 5.0217723846435547e-01 + 9.9569547176361084e-01 + <_> + 1 + 30092 + -9.1953614829004077e-02 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + 1 + 54960 + 4.7523977482353826e-02 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + -1 + + <_> + 0 + 85052 + -1.4266365866433467e-14 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + + <_>0 + 5.0252795219421387e-01 + 1.0025000572204590e+00 + <_> + 1 + 38800 + 7.3948472735219248e-02 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + 1 + 46252 + -6.8603406682960111e-02 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + -1 + + <_> + 0 + 85052 + -1.6209256159527547e-14 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + + <_>0 + 5.0187754631042480e-01 + 1.6649659872055054e+00 + <_> + 1 + 76105 + -2.7163854236781887e-02 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + 1 + 8947 + 1.3916396934022576e-01 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + -1 + + <_> + 0 + 85052 + 3.9968028886504039e-14 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + + <_>5 + 5.0173968076705933e-01 + 9.3725448846817017e-01 + <_> + 1 + 2236 + 5.7564577324623896e+00 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + 1 + 82816 + -3.4794146453991938e-03 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + -1 + + <_> + 0 + 85052 + 1.1002831319136790e-05 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + + <_>5 + 5.0150018930435181e-01 + 4.4167485237121582e+00 + <_> + 1 + 84808 + -3.0631182442574004e-03 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + 1 + 244 + 2.2056778285539491e+00 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + -1 + + <_> + 0 + 85052 + 6.9944050551379965e-14 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + + <_>1 + 5.0130033493041992e-01 + 2.4999150633811951e-01 + <_> + 1 + 84939 + -3.4716427389281618e-03 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + 1 + 113 + 9.7093231837124805e-01 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + -1 + + <_> + 0 + 85052 + -5.8841820305136755e-14 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + + <_>6 + 5.0120884180068970e-01 + 4.5000000000000000e+00 + <_> + 1 + 54850 + -4.3917603750727487e-02 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + 1 + 30202 + 5.5141521118265716e-02 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + -1 + + <_> + 0 + 85052 + 5.7953641885429814e-14 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + + <_>1 + 5.0135135650634766e-01 + 7.7053502202033997e-02 + <_> + 1 + 5412 + -2.5104707620991440e-01 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + 1 + 79640 + 1.0991190965793670e-02 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + -1 + + <_> + 0 + 85052 + -2.6201263381154382e-14 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + + <_>4 + 5.0119042396545410e-01 + 2.4375000502914190e-03 + <_> + 1 + 68799 + -1.8447462139746709e-02 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + 1 + 16253 + 1.2979697405626092e-01 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + -1 + + <_> + 0 + 85052 + -2.7311486405779596e-14 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + + <_>2 + 5.0275564193725586e-01 + 5.0000000000000000e-01 + <_> + 1 + 68789 + 2.5887555264941547e-02 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + 1 + 16263 + -2.1624936968950229e-01 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + -1 + + <_> + 0 + 85052 + 8.2156503822260906e-15 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + + <_>4 + 5.0209683179855347e-01 + 2.3050000891089439e-03 + <_> + 1 + 68789 + -2.4185695127928449e-02 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + 1 + 16263 + 1.7520109539705506e-01 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + -1 + + <_> + 0 + 85052 + -1.6375789613221327e-14 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + + <_>2 + 5.0160211324691772e-01 + 5.0000000000000000e-01 + <_> + 1 + 68789 + 1.9668790239766646e-02 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + 1 + 16263 + -1.6439227878979559e-01 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + -1 + + <_> + 0 + 85052 + 3.3306690738753585e-14 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + + <_>4 + 5.0134861469268799e-01 + 1.3124999823048711e-03 + <_> + 1 + 68658 + -1.9484094067575643e-02 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + 1 + 16394 + 1.3934403248888891e-01 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + -1 + + <_> + 0 + 85052 + -7.1054273576010523e-15 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + + <_>0 + 5.0120306015014648e-01 + 9.8865385055541992e+00 + <_> + 1 + 84993 + -2.6104574450754830e-03 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + 1 + 59 + 1.6004161066548563e+00 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + -1 + + <_> + 0 + 85052 + -2.7589042161935900e-14 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + + <_>2 + 5.0108444690704346e-01 + 5.0000000000000000e-01 + <_> + 1 + 68789 + 1.6151863528992876e-02 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + 1 + 16263 + -1.3510965487524393e-01 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + -1 + + <_> + 0 + 85052 + 3.1086244689504288e-15 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + + <_>2 + 5.0131279230117798e-01 + 1.5000000000000000e+00 + <_> + 1 + 83116 + -8.0778572565855487e-03 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + 1 + 1936 + 3.3727111742802862e-01 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + -1 + + <_> + 0 + 85052 + 1.8873791418627305e-14 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + + <_>2 + 5.0103312730789185e-01 + 2.5000000000000000e+00 + <_> + 1 + 84594 + 3.8029937513384339e-03 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + 1 + 458 + -6.0887851298498918e-01 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + -1 + + <_> + 0 + 85052 + -2.3758772726978915e-14 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + + <_>5 + 5.0099849700927734e-01 + 9.7220098972320557e-01 + <_> + 1 + 3077 + -5.4351424484613675e-01 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + 1 + 81975 + 4.0289990820170799e-03 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + -1 + + <_> + 0 + 85052 + 5.1070259132754594e-14 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + + <_>5 + 5.0115483999252319e-01 + 1.0344899892807007e+00 + <_> + 1 + 13889 + 1.0892680124765002e-01 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + 1 + 71163 + -2.1291274675960266e-02 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + -1 + + <_> + 0 + 85052 + -1.3322676295501896e-15 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + + <_>5 + 5.0145024061203003e-01 + 1.1111010313034058e+00 + <_> + 1 + 24025 + -6.8346686898487788e-02 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + 1 + 61027 + 4.2528805195165366e-02 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + -1 + + <_> + 0 + 85052 + -2.8421709430404815e-14 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + + <_>1 + 5.0177717208862305e-01 + 1.6315400600433350e-01 + <_> + 1 + 56302 + -5.6245799309189812e-02 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + 1 + 28750 + 6.3343675591851709e-02 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + -1 + + <_> + 0 + 85052 + -1.2434497875801908e-14 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + + <_>1 + 5.0208932161331177e-01 + 1.4286199212074280e-01 + <_> + 1 + 51280 + 7.5358139474863167e-02 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + 1 + 33772 + -5.5612512614143753e-02 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + -1 + + <_> + 0 + 85052 + 9.1038288019262000e-15 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + + <_>1 + 5.0196045637130737e-01 + 1.2856450676918030e-01 + <_> + 1 + 46248 + -8.7022283814818316e-02 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + 1 + 38804 + 4.5200684874115597e-02 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + -1 + + <_> + 0 + 85052 + -1.6042722705833771e-14 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + + <_>1 + 5.0139349699020386e-01 + 1.4261949062347412e-01 + <_> + 1 + 51186 + 6.1859795823686392e-02 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + 1 + 33866 + -4.5142273813481217e-02 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + -1 + + <_> + 0 + 85052 + 1.9761969838327395e-14 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + + <_>1 + 5.0168019533157349e-01 + 1.5712898969650269e-01 + <_> + 1 + 54755 + -5.8367092253270893e-02 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + 1 + 30297 + 5.7703294804839218e-02 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + -1 + + <_> + 0 + 85052 + 2.6201263381153006e-14 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + + <_>5 + 5.0144690275192261e-01 + 1.3999834060668945e+00 + <_> + 1 + 43654 + -4.5656675409124443e-02 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + 1 + 41398 + 6.3510157848739535e-02 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + -1 + + <_> + 0 + 85052 + -4.1244785364826269e-14 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + + <_>4 + 5.0109869241714478e-01 + 1.3124999823048711e-03 + <_> + 1 + 68658 + -1.7085179862837221e-02 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + 1 + 16394 + 1.2934327532462270e-01 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + -1 + + <_> + 0 + 85052 + -2.7311486405779596e-14 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + + <_>1 + 5.0149405002593994e-01 + 1.8632251024246216e-01 + <_> + 1 + 62257 + -4.2766528221073324e-02 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + 1 + 22795 + 7.0027469712770588e-02 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + -1 + + <_> + 0 + 85052 + 2.9531932455028293e-14 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + + <_>5 + 5.0122207403182983e-01 + 1.1999764442443848e+00 + <_> + 1 + 32171 + -5.3124706145868887e-02 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + 1 + 52881 + 4.6083691543733984e-02 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + -1 + + <_> + 0 + 85052 + -4.4908521346089602e-14 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + + <_>1 + 5.0111490488052368e-01 + 1.3103100657463074e-01 + <_> + 1 + 47305 + -6.3576995089739186e-02 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + 1 + 37747 + 3.5133390876482422e-02 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + -1 + + <_> + 0 + 85052 + -3.1752378504280487e-14 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + + <_>1 + 5.0101691484451294e-01 + 1.4286199212074280e-01 + <_> + 1 + 51280 + 5.2824618715263574e-02 + 1 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + 1 + 33772 + -3.8555442653898958e-02 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + -1 + + <_> + 0 + 85052 + -5.2735593669695212e-15 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + + <_>1 + 5.0127285718917847e-01 + 1.5590050816535950e-01 + <_> + 1 + 54453 + -5.1638816859316518e-02 + 0 + 0 + 0 + 0. + 0. + 0. + 0. + <_> + 1 + 30599 + 4.9382797139634914e-02 + 1 + 0 + 0 + 0. + 0. + 0. + 0.
+