├── .gitignore
├── 01_get_elements.py
├── 02_get_stats.py
├── 03_build_ways_data.py
├── 04_download_satellite.py
├── 05_build_samplesfile.py
├── 05_draw_bbox.py
├── 06_get_negatives.py
├── 07_fit_min_neighbors.py
├── 08_plot_fit.py
├── 09_draw_results.py
├── LICENSE
├── Makefile
├── README.md
├── baseball.xml
├── basketball.xml
├── data
└── .gitignore
├── detector.py
├── empty_satellite.png
├── fit
├── cascade-2000.png
├── cascade-4000-2000_negative.csv
├── cascade-4000-2000_positive.csv
├── cascade-4000.png
├── cascade-6000-3000_negative.csv
├── cascade-6000-3000_positive.csv
├── cascade-6000.png
├── cascade-8000-4000_negative.csv
├── cascade-8000-4000_positive.csv
├── cascade-8000.png
├── cascade-default_negative.csv
└── cascade-default_positive.csv
├── info_baseball.dat
├── info_baseball.vec
├── info_basketball.dat
├── info_basketball.vec
├── info_tennis.dat
├── info_tennis.vec
├── negative.txt
├── output
├── cascade-4000-2000.xml
├── cascade-4000-2000_negative.csv
├── cascade-4000-2000_positive.csv
├── cascade-6000-3000.xml
├── cascade-6000-3000_negative.csv
├── cascade-6000-3000_positive.csv
├── cascade-8000-4000.xml
├── cascade-8000-4000_negative.csv
├── cascade-8000-4000_positive.csv
├── cascade-default.xml
├── cascade-default_negative.csv
└── cascade-default_positive.csv
├── readme_images
├── image00.jpg
├── image01.png
├── image02.png
├── image03.png
├── image04.png
├── image05.jpg
├── image06.png
├── image07.png
├── image08.jpg
├── image09.png
├── image10.png
├── image11.png
└── image12.png
├── restwice
├── samples-4000
└── log.txt
├── satellite
└── .gitignore
├── tennis.xml
└── utils
├── __init__.py
├── geo.py
├── mapbox_static.py
└── overpass_client.py
/.gitignore:
--------------------------------------------------------------------------------
1 | # Byte-compiled / optimized / DLL files
2 | __pycache__/
3 | *.py[cod]
4 | *$py.class
5 |
6 | # C extensions
7 | *.so
8 |
9 | # Distribution / packaging
10 | .Python
11 | env/
12 | build/
13 | develop-eggs/
14 | dist/
15 | downloads/
16 | eggs/
17 | .eggs/
18 | lib/
19 | lib64/
20 | parts/
21 | sdist/
22 | var/
23 | *.egg-info/
24 | .installed.cfg
25 | *.egg
26 |
27 | # PyInstaller
28 | # Usually these files are written by a python script from a template
29 | # before PyInstaller builds the exe, so as to inject date/other infos into it.
30 | *.manifest
31 | *.spec
32 |
33 | # Installer logs
34 | pip-log.txt
35 | pip-delete-this-directory.txt
36 |
37 | # Unit test / coverage reports
38 | htmlcov/
39 | .tox/
40 | .coverage
41 | .coverage.*
42 | .cache
43 | nosetests.xml
44 | coverage.xml
45 | *,cover
46 |
47 | # Translations
48 | *.mo
49 | *.pot
50 |
51 | # Django stuff:
52 | *.log
53 |
54 | # Sphinx documentation
55 | docs/_build/
56 |
57 | # PyBuilder
58 | target/
59 |
60 | #sample satellite images
61 | samples-4000/*.png
62 |
--------------------------------------------------------------------------------
/01_get_elements.py:
--------------------------------------------------------------------------------
1 | '''
2 | We're gonna download every pitch in the US (leisure=pitch) that is defined
3 | as a way (we want to be able to compute a bounding box and centroid to
4 | improve the CV analysis).
5 | '''
6 |
7 | from utils.geo import ELEMENTS_FILENAME
8 | from utils.overpass_client import OverpassClient
9 | import json
10 |
11 | # The operator (._;>;); asks for the nodes and ways that are referred by
12 | # the relations and ways in the result.
13 | ql_pitch = '''\
14 | way
15 | [leisure=pitch]
16 | ({query_bb_s},{query_bb_w},{query_bb_n},{query_bb_e});
17 | (._;>;);
18 | out;
19 | '''
20 |
21 | # For the continental US bbox we use the one provided by:
22 | # https://www.flickr.com/places/info/24875662
23 | us_s = 24.9493
24 | us_w = -125.0011
25 | us_n = 49.5904
26 | us_e = -66.9326
27 |
28 | # Overpass requires a bbox in the SWNE format. Because the continental US is
29 | # too big for a single query (it timeouts), we're gonna split in a smaller
30 | # queries. This means (samples-1)^2 boxes.
31 | samples = 11 # 100 boxes
32 |
33 | # Total = 1,435,427
34 | overpass_client = OverpassClient(endpoint='fr')
35 | elements = overpass_client.get_bbox_elements(
36 | ql_template=ql_pitch,
37 | bb_s=us_s, bb_w=us_w, bb_n=us_n, bb_e=us_e,
38 | samples=samples)
39 | print 'Total elements found: %d' % len(elements)
40 |
41 | # Cache the result
42 | with open(ELEMENTS_FILENAME, 'w') as f:
43 | json.dump(elements, f)
44 |
--------------------------------------------------------------------------------
/02_get_stats.py:
--------------------------------------------------------------------------------
1 | '''
2 | Print some stats on all the elements we've found
3 | '''
4 |
5 | from utils.geo import ELEMENTS_FILENAME
6 | import json
7 | import operator
8 |
9 | # Load the file
10 | print 'Loading %s...' % ELEMENTS_FILENAME
11 | with open(ELEMENTS_FILENAME, 'r') as f:
12 | elements = json.load(f)
13 |
14 | #Total elements found:
15 |
16 | # Total = 1,435,427
17 | print 'Total elements found: %d' % len(elements)
18 |
19 | # Stats
20 | sport_stats = {}
21 | elements_stats = {}
22 | for element in elements:
23 | element_type = element.get('type')
24 |
25 | # Find the most popular sport pitches
26 | if element_type == 'way':
27 | sport = element.get('tags', {}).get('sport', 'unknown').lower()
28 | sport_stats[sport] = (sport_stats[sport] + 1) \
29 | if sport in sport_stats else 1
30 |
31 | # Build type stats (nodes and ways)
32 | elements_stats[element_type] = (elements_stats[element_type] + 1) \
33 | if element_type in elements_stats else 1
34 |
35 | # Elements stats: {u'node': 1,265,357, u'way': 170,070}
36 | # Percentages, node: 88%, way: 12%
37 | # About 7.5 nodes per way
38 | print elements_stats
39 |
40 | # Sort the sports by value, and reverse (descending values)
41 | sport_stats = sorted(sport_stats.items(), key=operator.itemgetter(1))
42 | sport_stats = list(reversed(sport_stats))
43 |
44 | # Top 10:
45 | # 1. baseball = 61,573 ways
46 | # 2. tennis = 38,482 ways
47 | # 3. soccer = 19,129 ways
48 | # 4. basketball = 15,797 ways
49 | # 5. unknown = 11,914 ways
50 | # 6. golf = 6,826 ways
51 | # 7. american_football = 6,266 ways
52 | # 8. volleyball = 2,127 ways
53 | # 9. multi = 1,423 ways
54 | # 10. softball = 695 ways
55 | for sport_stat in sport_stats[:10]:
56 | print sport_stat
57 |
--------------------------------------------------------------------------------
/03_build_ways_data.py:
--------------------------------------------------------------------------------
1 | from utils.geo import ELEMENTS_FILENAME, WAYS_DATA_FILENAME
2 | from utils.geo import get_ways_data
3 | import json
4 | import operator
5 |
6 | # We need the elements
7 | print 'Loading %s...' % ELEMENTS_FILENAME
8 | with open(ELEMENTS_FILENAME, 'r') as f:
9 | elements = json.load(f)
10 |
11 | # And we need the coordinates for all the nodes
12 | coords = {}
13 | for element in elements:
14 | if element.get('type') == 'node':
15 | element_id = element.get('id')
16 | coords[element_id] = {
17 | 'lat': element.get('lat'),
18 | 'lon': element.get('lon')}
19 |
20 | # Now we can get the dict
21 | print 'Building %s...' % WAYS_DATA_FILENAME
22 | ways_data = get_ways_data(elements=elements, coords=coords)
23 |
24 | # Finally, cache the file
25 | with open(WAYS_DATA_FILENAME, 'w') as f:
26 | json.dump(ways_data, f)
27 |
--------------------------------------------------------------------------------
/04_download_satellite.py:
--------------------------------------------------------------------------------
1 | '''
2 | Usage:
3 |
4 | 04_download_satellite.py [-h] [--sport SPORT] [--count COUNT]
5 |
6 | optional arguments:
7 | -h, --help show this help message and exit
8 | --sport SPORT Sport tag, for example: baseball, tennis, or soccer.
9 | --count COUNT The total number of images to download.
10 |
11 | For example:
12 |
13 | $ python 04_download_satellite.py --sport soccer --count 5
14 | '''
15 |
16 | from random import shuffle
17 | from utils.geo import ELEMENTS_FILENAME, WAYS_DATA_FILENAME
18 | from utils.mapbox_static import MapboxStatic
19 | import argparse
20 | import json
21 |
22 | parser = argparse.ArgumentParser(add_help=True)
23 |
24 | parser.add_argument('--sport',
25 | type=str, default='baseball',
26 | help='Sport tag, for example: baseball, tennis, or soccer.')
27 | parser.add_argument('--count',
28 | type=int, default=5,
29 | help='The total number of images to download.')
30 |
31 | args = vars(parser.parse_args())
32 | count = args.get('count')
33 | target_sport = args.get('sport')
34 | print 'We are gonna download %d random pics of %s pitches.' \
35 | % (count, target_sport)
36 |
37 | # We need the elements
38 | print 'Loading %s...' % ELEMENTS_FILENAME
39 | with open(ELEMENTS_FILENAME, 'r') as f:
40 | elements = json.load(f)
41 |
42 | # We need the elements
43 | print 'Loading %s...' % WAYS_DATA_FILENAME
44 | with open(WAYS_DATA_FILENAME, 'r') as f:
45 | ways_data = json.load(f)
46 |
47 | # Randomize elements list to make sure we don't download all pics from the
48 | # same sample
49 | shuffle(elements)
50 |
51 | # Now we're gonna download the satellite images for these locations
52 | mapbox_static = MapboxStatic(
53 | namespace='pitch',
54 | root_folder='satellite')
55 |
56 | total_downloaded = 0
57 | for element in elements:
58 | # They're strings in the dict now
59 | element_id_str = unicode(element.get('id'))
60 | sport = element.get('tags', {}).get('sport', 'unknown').lower()
61 | if element_id_str in ways_data and sport == target_sport:
62 | if total_downloaded >= count:
63 | break
64 | print '> Element: %s (%s)' % (element.get('id'), sport)
65 | url = mapbox_static.get_url(
66 | latitude=ways_data[element_id_str].get('lat'),
67 | longitude=ways_data[element_id_str].get('lon'))
68 | print url
69 | element_id_sport = '%s_%s' % (sport, element_id_str)
70 | success = mapbox_static.download_tile(
71 | element_id=element_id_sport,
72 | url=url)
73 | if success:
74 | total_downloaded += 1
75 |
--------------------------------------------------------------------------------
/05_build_samplesfile.py:
--------------------------------------------------------------------------------
1 | from utils.geo import get_rectangle
2 | from utils.geo import WAYS_DATA_FILENAME
3 | import json
4 | import os
5 |
6 | # We need the elements
7 | print 'Loading %s...' % WAYS_DATA_FILENAME
8 | with open(WAYS_DATA_FILENAME, 'r') as f:
9 | ways_data = json.load(f)
10 |
11 | samples_data = {}
12 |
13 | image_files = [f for f in os.listdir('satellite/gray') if f.endswith('.png')]
14 | for image_file in image_files:
15 | print 'Processing %s...' % image_file
16 |
17 | # Find the category
18 | sport = image_file[image_file.find('_')+1:image_file.rfind('_')]
19 | if sport not in samples_data:
20 | samples_data[sport] = []
21 |
22 | # The ID is between the last underscore and the extension dot
23 | # For example: pitch_volleyball_268478401.png -> 268478401
24 | way_id = image_file[image_file.rfind('_') + 1:image_file.find('.')]
25 | bounds = ways_data[way_id]['bounds']
26 |
27 | # Add a rectangle with the feature
28 | x, y, w, h = get_rectangle(bounds=bounds)
29 | if w <= 25 or h <= 25:
30 | print 'Pic not added'
31 | continue
32 | if x <= 0 or y <= 0 or w <= 0 or h <= 0:
33 | print 'Pic not added'
34 | continue
35 | entry = 'satellite/gray/%s\t1\t%d\t%d\t%d\t%d\n' % (image_file, x, y, w, h)
36 | samples_data[sport].append(entry)
37 |
38 | for sport in samples_data.keys():
39 | datafile = 'info_%s.dat' % sport
40 | print 'Saving data file: %s' % datafile
41 | with open(datafile, 'w') as f:
42 | print len(samples_data[sport])
43 | for entry in samples_data[sport]:
44 | f.write(entry)
45 |
--------------------------------------------------------------------------------
/05_draw_bbox.py:
--------------------------------------------------------------------------------
1 | '''
2 | We're gonna use the bbox info from OSM to draw a box around the pitch, we
3 | will use this box to better train our ML algo.
4 | '''
5 |
6 | from utils.geo import get_rectangle
7 | from utils.geo import WAYS_DATA_FILENAME
8 | import cv2
9 | import json
10 | import os
11 |
12 | # We need the elements
13 | # print 'Loading %s...' % WAYS_DATA_FILENAME
14 | # with open(WAYS_DATA_FILENAME, 'r') as f:
15 | # ways_data = json.load(f)
16 |
17 | image_files = [f for f in os.listdir('satellite') if f.endswith('.png')]
18 | print len(image_files)
19 |
20 | for image_file in image_files:
21 | print 'Processing %s...' % image_file
22 | # The ID is between the last underscore and the extension dot
23 | # For example: pitch_volleyball_268478401.png -> 268478401
24 | # way_id = image_file[image_file.rfind('_') + 1:image_file.find('.')]
25 | # bounds = ways_data[way_id]['bounds']
26 |
27 | # Add a rectangle with the feature
28 | # x, y, w, h = get_rectangle(bounds=bounds)
29 | # img = cv2.imread(os.path.join('satellite', image_file))
30 | # cv2.rectangle(img,(x,y),(x+w,y+h),(255,0,0),2)
31 | # cv2.imwrite(os.path.join('satellite/rectangle', image_file), img)
32 |
33 | # To show the image
34 | # cv2.imshow('img',img)
35 | # cv2.waitKey(0)
36 | # cv2.destroyAllWindows()
37 |
38 | # Generate a grayscale version
39 | img_gray = cv2.imread(os.path.join('satellite', image_file), 0)
40 | cv2.imwrite(os.path.join('satellite/gray', image_file), img_gray)
41 |
--------------------------------------------------------------------------------
/06_get_negatives.py:
--------------------------------------------------------------------------------
1 | '''
2 | Let's download a few negative images to train the algo.
3 |
4 | Usage:
5 | python 06_get_negatives.py [-h] [--count COUNT]
6 |
7 | optional arguments:
8 | -h, --help show this help message and exit
9 | --count COUNT The total number of negative images to download.
10 | '''
11 |
12 | from random import shuffle
13 | from utils.geo import ELEMENTS_FILENAME
14 | from utils.mapbox_static import MapboxStatic
15 | import argparse
16 | import json
17 | import random
18 |
19 | parser = argparse.ArgumentParser(add_help=True)
20 |
21 | parser.add_argument('--count',
22 | type=int, default=5,
23 | help='The total number of negative images to download.')
24 |
25 | args = vars(parser.parse_args())
26 | count = args.get('count')
27 | print 'We are gonna download %d negative images' % count
28 |
29 | # We need the elements
30 | print 'Loading %s...' % ELEMENTS_FILENAME
31 | with open(ELEMENTS_FILENAME, 'r') as f:
32 | elements = json.load(f)
33 |
34 | # Randomize elements list to make sure we don't download all pics from the
35 | # same sample. Then cut it.
36 | shuffle(elements)
37 |
38 | # Now we're gonna download the satellite images for these locations
39 | mapbox_static = MapboxStatic(
40 | namespace='negative',
41 | root_folder='satellite/negative')
42 |
43 | total_downloaded = 0
44 | for element in elements:
45 | if total_downloaded >= count:
46 | break
47 | if element.get('type') != 'node':
48 | continue
49 | # Move the latlon a random amount, random() is in the range [0.0, 1.0)
50 | target_lat = element.get('lat') + (random.random() - 0.5)
51 | target_lon = element.get('lon') + (random.random() - 0.5)
52 | url = mapbox_static.get_url(latitude=target_lat, longitude=target_lon)
53 | print url
54 | success = mapbox_static.download_tile(
55 | element_id=element.get('id'),
56 | url=url)
57 | if success:
58 | total_downloaded += 1
59 |
--------------------------------------------------------------------------------
/07_fit_min_neighbors.py:
--------------------------------------------------------------------------------
1 | from __future__ import division
2 | import csv
3 | import cv2
4 | import numpy as np
5 | import os
6 |
7 | tennis_cascade_files = [
8 | 'output/cascade-default.xml',
9 | 'output/cascade-4000-2000.xml',
10 | 'output/cascade-6000-3000.xml',
11 | 'output/cascade-8000-4000.xml']
12 |
13 | positive_files = [os.path.join('satellite/fit', f) \
14 | for f in os.listdir('satellite/fit') if f.endswith('.png')]
15 |
16 | negative_files = [os.path.join('satellite/fit/negative', f) \
17 | for f in os.listdir('satellite/fit/negative') if f.endswith('.png')]
18 |
19 | def get_total_pitches(tennis_cascade, filename, min_neighbors):
20 | img = cv2.imread(filename, 0)
21 | pitches = tennis_cascade.detectMultiScale(
22 | img, minNeighbors=min_neighbors)
23 | return len(pitches)
24 |
25 | for tennis_cascade_file in tennis_cascade_files:
26 | print tennis_cascade_file
27 | tennis_cascade = cv2.CascadeClassifier(tennis_cascade_file)
28 |
29 | # Open
30 | positive_f = open(tennis_cascade_file[:-4] + '_positive.csv', 'w')
31 | negative_f = open(tennis_cascade_file[:-4] + '_negative.csv', 'w')
32 | positive_writer = csv.writer(positive_f)
33 | negative_writer = csv.writer(negative_f)
34 |
35 | for min_neighbors in range(0, 501, 10):
36 | print min_neighbors
37 |
38 | # Pos
39 | total_set = 0
40 | for positive_file in positive_files:
41 | total_pitches = get_total_pitches(
42 | tennis_cascade=tennis_cascade,
43 | filename=positive_file,
44 | min_neighbors=min_neighbors)
45 | total_set += total_pitches
46 | total_average = total_set / len(positive_files)
47 | positive_writer.writerow([total_average, min_neighbors])
48 |
49 | # Neg
50 | total_set = 0
51 | for negative_file in negative_files:
52 | total_pitches = get_total_pitches(
53 | tennis_cascade=tennis_cascade,
54 | filename=negative_file,
55 | min_neighbors=min_neighbors)
56 | total_set += total_pitches
57 | total_average = total_set / len(negative_files)
58 | negative_writer.writerow([total_average, min_neighbors])
59 |
60 | # Close
61 | positive_f.close()
62 | negative_f.close()
63 |
--------------------------------------------------------------------------------
/08_plot_fit.py:
--------------------------------------------------------------------------------
1 | import csv
2 | import matplotlib.pyplot as plt
3 |
4 | csv_files = {
5 | '4000_negative': 'fit/cascade-4000-2000_negative.csv',
6 | '4000_positive': 'fit/cascade-4000-2000_positive.csv',
7 | '6000_negative': 'fit/cascade-6000-3000_negative.csv',
8 | '6000_positive': 'fit/cascade-6000-3000_positive.csv',
9 | '8000_negative': 'fit/cascade-8000-4000_negative.csv',
10 | '8000_positive': 'fit/cascade-8000-4000_positive.csv',
11 | '2000_negative': 'fit/cascade-default_negative.csv',
12 | '2000_positive': 'fit/cascade-default_positive.csv'}
13 |
14 | cases = ['2000', '4000', '6000', '8000']
15 |
16 | for case in cases:
17 | with open(csv_files[case + '_positive'], 'r') as csv_file:
18 | csv_reader = csv.reader(csv_file)
19 | values = [row for row in csv_reader]
20 | y_pos_values = [entry[0] for entry in values]
21 | x_pos_values = [entry[1] for entry in values]
22 |
23 | with open(csv_files[case + '_negative'], 'r') as csv_file:
24 | csv_reader = csv.reader(csv_file)
25 | values = [row for row in csv_reader]
26 | y_neg_values = [entry[0] for entry in values]
27 | x_neg_values = [entry[1] for entry in values]
28 |
29 | plt.clf()
30 | plt.plot(x_pos_values, y_pos_values, color='b', label='positives')
31 | plt.plot(x_neg_values, y_neg_values, color='r', label='negatives')
32 | plt.plot([0, 500], [1, 1], color='g', linestyle='--')
33 | plt.axis([0, 500, 0, 10]) # [xmin, xmax, ymin, ymax]
34 | plt.xlabel('min neighbors')
35 | plt.ylabel('pitches')
36 | plt.title('Finding the optimum min neighbors value')
37 | plt.legend()
38 | plt.grid(True)
39 | plt.savefig('fit/cascade-%s.png' % case)
40 |
--------------------------------------------------------------------------------
/09_draw_results.py:
--------------------------------------------------------------------------------
1 | from __future__ import division
2 | import cv2
3 | import os
4 |
5 | # Threshold
6 | min_neighbors = 1750
7 | print min_neighbors
8 |
9 | tennis_cascade_files = [
10 | 'output/cascade-default.xml',
11 | 'output/cascade-4000-2000.xml',
12 | 'output/cascade-6000-3000.xml',
13 | 'output/cascade-8000-4000.xml']
14 |
15 | positive_files = [os.path.join('satellite/fit', f) \
16 | for f in os.listdir('satellite/fit') if f.endswith('.png')]
17 |
18 | negative_files = [os.path.join('satellite/fit/negative', f) \
19 | for f in os.listdir('satellite/fit/negative') if f.endswith('.png')]
20 |
21 | def get_total_pitches(tennis_cascade, filename, min_neighbors):
22 | img = cv2.imread(filename)
23 | gray = cv2.imread(filename, 0)
24 | if 'negative' in filename:
25 | target = filename.replace(
26 | 'satellite/fit/negative',
27 | 'satellite/fit/negative/bbox')
28 | else:
29 | target = filename.replace(
30 | 'satellite/fit',
31 | 'satellite/fit/bbox')
32 | pitches = tennis_cascade.detectMultiScale(
33 | gray, minNeighbors=min_neighbors)
34 | for (x,y,w,h) in pitches:
35 | if 'negative' in filename:
36 | cv2.rectangle(img,(x,y),(x+w,y+h),(0,0,255),5)
37 | else:
38 | cv2.rectangle(img,(x,y),(x+w,y+h),(0,255,0),5)
39 | cv2.imwrite(target, img)
40 | return len(pitches)
41 |
42 | tennis_cascade_file = tennis_cascade_files[3]
43 | tennis_cascade = cv2.CascadeClassifier(tennis_cascade_file)
44 | print tennis_cascade_file
45 |
46 | total_files = 100
47 |
48 | # Pos
49 | pos_success = 0
50 | for positive_file in positive_files[:total_files]:
51 | print positive_file
52 | total_pitches = get_total_pitches(
53 | tennis_cascade=tennis_cascade,
54 | filename=positive_file,
55 | min_neighbors=min_neighbors)
56 | if total_pitches >= 1:
57 | pos_success += 1
58 |
59 | # Neg
60 | neg_success = 0
61 | for negative_file in negative_files[:total_files]:
62 | print negative_file
63 | total_pitches = get_total_pitches(
64 | tennis_cascade=tennis_cascade,
65 | filename=negative_file,
66 | min_neighbors=min_neighbors)
67 | if total_pitches < 1:
68 | neg_success += 1
69 | else:
70 | print '** negative file %s has %s pitches **' % (
71 | negative_file, total_pitches)
72 |
73 | pos_percentage = 100 * pos_success / total_files
74 | neg_percentage = 100 * neg_success / total_files
75 | print 'pos_percentage = %s' % pos_percentage
76 | print 'neg_percentage = %s' % neg_percentage
77 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2017 World Bank Group
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/Makefile:
--------------------------------------------------------------------------------
1 | all:
2 | @echo See Makefile for options
3 |
4 | step1:
5 | # Builds the data/elements.json file
6 | python 01_get_elements.py
7 |
8 | step2:
9 | # Print some stats
10 | python 02_get_stats.py
11 |
12 | step3:
13 | # Builds the data/ways.json file
14 | python 03_build_ways_data.py
15 |
16 | step4:
17 | # Downloads 10 sample photos of the top 10 sports
18 | python 04_download_satellite.py --sport baseball --count 10
19 | python 04_download_satellite.py --sport tennis --count 10
20 | python 04_download_satellite.py --sport soccer --count 10
21 | python 04_download_satellite.py --sport basketball --count 10
22 | python 04_download_satellite.py --sport unknown --count 10
23 | python 04_download_satellite.py --sport golf --count 10
24 | python 04_download_satellite.py --sport american_football --count 10
25 | python 04_download_satellite.py --sport volleyball --count 10
26 | python 04_download_satellite.py --sport multi --count 10
27 | python 04_download_satellite.py --sport softball --count 10
28 | # mv satellite/*png satellite/training/
29 | # mv satellite/*png satellite/testing/
30 |
31 | step5:
32 | # Draw the bbox on the test files
33 | python 05_draw_bbox.py
34 |
35 | step6:
36 | # Get some random images
37 | python 06_get_negatives.py --count 25
38 | find satellite/negative -type f > negative.txt
39 |
40 | createsamples:
41 | opencv_createsamples -info info_baseball.dat -num 99 -vec info_baseball.vec
42 | opencv_createsamples -info info_basketball.dat -num 100 -vec info_basketball.vec
43 | opencv_createsamples -info info_tennis.dat -num 9998 -vec info_tennis.vec
44 | opencv_traincascade -data output -vec info_baseball.vec -bg negative.txt -numPos 99 -numNeg 100
45 | opencv_traincascade -data output -vec info_basketball.vec -bg negative.txt -numPos 100 -numNeg 100
46 | opencv_traincascade -data output -vec info_tennis.vec -bg negative.txt -numPos 9998 -numNeg 5000
47 |
48 |
--------------------------------------------------------------------------------
/baseball.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | BOOST
5 | HAAR
6 | 24
7 | 24
8 |
9 | GAB
10 | 9.9500000476837158e-01
11 | 5.0000000000000000e-01
12 | 9.4999999999999996e-01
13 | 1
14 | 100
15 |
16 | 0
17 | 1
18 | BASIC
19 | 20
20 |
21 |
22 | <_>
23 | 5
24 | -6.3604068756103516e-01
25 |
26 | <_>
27 |
28 | 0 -1 54 3.6189504899084568e-03
29 |
30 | 3.0555555224418640e-01 -8.1818181276321411e-01
31 | <_>
32 |
33 | 0 -1 94 4.4270888902246952e-03
34 |
35 | 2.6856291294097900e-01 -8.2471865415573120e-01
36 | <_>
37 |
38 | 0 -1 96 6.6340056946501136e-04
39 |
40 | 2.6301088929176331e-01 -8.5882681608200073e-01
41 | <_>
42 |
43 | 0 -1 8 -2.5026169605553150e-03
44 |
45 | -6.5318608283996582e-01 4.1457188129425049e-01
46 | <_>
47 |
48 | 0 -1 38 -1.5839729458093643e-03
49 |
50 | -7.6400458812713623e-01 4.0742766857147217e-01
51 |
52 | <_>
53 | 3
54 | -2.3400855064392090e-01
55 |
56 | <_>
57 |
58 | 0 -1 5 7.8575555235147476e-03
59 |
60 | 3.9849624037742615e-01 -8.1818181276321411e-01
61 | <_>
62 |
63 | 0 -1 93 -5.4683196358382702e-03
64 |
65 | -9.1144174337387085e-01 2.6954546570777893e-01
66 | <_>
67 |
68 | 0 -1 69 -6.4477673731744289e-04
69 |
70 | -7.4499976634979248e-01 3.1462779641151428e-01
71 |
72 | <_>
73 | 3
74 | -5.2666819095611572e-01
75 |
76 | <_>
77 |
78 | 0 -1 7 -2.2421196103096008e-02
79 |
80 | -1. 2.6923078298568726e-01
81 | <_>
82 |
83 | 0 -1 23 4.6711652539670467e-03
84 |
85 | 1.9427742063999176e-01 -9.6244287490844727e-01
86 | <_>
87 |
88 | 0 -1 12 4.7801379114389420e-03
89 |
90 | 1.6654391586780548e-01 -1.
91 |
92 | <_>
93 | 3
94 | -3.1461432576179504e-01
95 |
96 | <_>
97 |
98 | 0 -1 29 -8.7874494493007660e-03
99 |
100 | -9.6296298503875732e-01 3.5172414779663086e-01
101 | <_>
102 |
103 | 0 -1 24 4.6931738033890724e-03
104 |
105 | 2.7264618873596191e-01 -8.8870871067047119e-01
106 | <_>
107 |
108 | 0 -1 97 -2.3153130896389484e-03
109 |
110 | -7.7279490232467651e-01 3.7570244073867798e-01
111 |
112 | <_>
113 | 3
114 | 3.3827330917119980e-02
115 |
116 | <_>
117 |
118 | 0 -1 48 -1.3884595595300198e-02
119 |
120 | -9.6296298503875732e-01 3.5172414779663086e-01
121 | <_>
122 |
123 | 0 -1 85 1.2195473536849022e-03
124 |
125 | 1.7897287011146545e-01 -1.
126 | <_>
127 |
128 | 0 -1 52 3.0046328902244568e-02
129 |
130 | -3.6612820625305176e-01 8.1781744956970215e-01
131 |
132 | <_>
133 | 4
134 | -4.3325673788785934e-02
135 |
136 | <_>
137 |
138 | 0 -1 76 4.3933773413300514e-03
139 |
140 | 3.1914892792701721e-01 -7.9310345649719238e-01
141 | <_>
142 |
143 | 0 -1 88 1.9170431187376380e-03
144 |
145 | 2.2898155450820923e-01 -8.3764249086380005e-01
146 | <_>
147 |
148 | 0 -1 47 3.3035492524504662e-03
149 |
150 | 3.0476438999176025e-01 -7.8931552171707153e-01
151 | <_>
152 |
153 | 0 -1 37 -2.2500259801745415e-03
154 |
155 | -8.9622056484222412e-01 2.5401794910430908e-01
156 |
157 | <_>
158 | 5
159 | -1.4771027863025665e-01
160 |
161 | <_>
162 |
163 | 0 -1 14 -1.1669922620058060e-02
164 |
165 | 7.5000000000000000e-01 -2.4503311514854431e-01
166 | <_>
167 |
168 | 0 -1 44 -3.4252158366143703e-03
169 |
170 | -8.3116120100021362e-01 2.7865168452262878e-01
171 | <_>
172 |
173 | 0 -1 49 4.4674746692180634e-02
174 |
175 | -3.0990695953369141e-01 7.1378201246261597e-01
176 | <_>
177 |
178 | 0 -1 41 3.3698044717311859e-02
179 |
180 | -3.3624082803726196e-01 5.9759616851806641e-01
181 | <_>
182 |
183 | 0 -1 101 -2.7662748470902443e-04
184 |
185 | 5.7959872484207153e-01 -3.4860873222351074e-01
186 |
187 | <_>
188 | 6
189 | -8.5684454441070557e-01
190 |
191 | <_>
192 |
193 | 0 -1 86 2.0238712895661592e-03
194 |
195 | 3.1884059309959412e-01 -7.3770493268966675e-01
196 | <_>
197 |
198 | 0 -1 92 -5.7792784646153450e-03
199 |
200 | -7.0631277561187744e-01 2.6477372646331787e-01
201 | <_>
202 |
203 | 0 -1 51 -4.4972975738346577e-03
204 |
205 | -8.7326443195343018e-01 2.8956824541091919e-01
206 | <_>
207 |
208 | 0 -1 46 6.7562147974967957e-02
209 |
210 | -2.9889929294586182e-01 9.7080510854721069e-01
211 | <_>
212 |
213 | 0 -1 50 -9.4466289738193154e-04
214 |
215 | -6.5998601913452148e-01 3.6035156250000000e-01
216 | <_>
217 |
218 | 0 -1 60 -2.3549818433821201e-03
219 |
220 | -7.1649110317230225e-01 2.8540372848510742e-01
221 |
222 | <_>
223 | 6
224 | -3.5518622398376465e-01
225 |
226 | <_>
227 |
228 | 0 -1 73 -2.1491611842066050e-03
229 |
230 | -6.7272728681564331e-01 2.5000000000000000e-01
231 | <_>
232 |
233 | 0 -1 103 -1.3927842956036329e-03
234 |
235 | 4.6724259853363037e-01 -3.7989661097526550e-01
236 | <_>
237 |
238 | 0 -1 81 6.1295200139284134e-03
239 |
240 | 2.6969149708747864e-01 -6.5715968608856201e-01
241 | <_>
242 |
243 | 0 -1 15 -1.3479174231179059e-04
244 |
245 | 5.0098317861557007e-01 -3.6102029681205750e-01
246 | <_>
247 |
248 | 0 -1 17 -7.3818152304738760e-04
249 |
250 | 7.4765533208847046e-01 -2.9966327548027039e-01
251 | <_>
252 |
253 | 0 -1 27 1.5453578904271126e-02
254 |
255 | 3.5117822885513306e-01 -6.8143677711486816e-01
256 |
257 | <_>
258 | 5
259 | -6.0551446676254272e-01
260 |
261 | <_>
262 |
263 | 0 -1 71 -1.4686654321849346e-03
264 |
265 | -9.1489362716674805e-01 2.7631577849388123e-01
266 | <_>
267 |
268 | 0 -1 1 -8.7735019624233246e-03
269 |
270 | -8.0729770660400391e-01 2.1482656896114349e-01
271 | <_>
272 |
273 | 0 -1 39 -3.9561837911605835e-03
274 |
275 | -9.0132576227188110e-01 2.6892369985580444e-01
276 | <_>
277 |
278 | 0 -1 99 9.7257707966491580e-04
279 |
280 | 2.8991922736167908e-01 -7.0496159791946411e-01
281 | <_>
282 |
283 | 0 -1 26 -7.0180499460548162e-04
284 |
285 | -6.3337546586990356e-01 3.9741706848144531e-01
286 |
287 | <_>
288 | 5
289 | -8.3740592002868652e-01
290 |
291 | <_>
292 |
293 | 0 -1 80 2.5223952252417803e-04
294 |
295 | 3.8888889551162720e-01 -4.7252747416496277e-01
296 | <_>
297 |
298 | 0 -1 67 9.0657118707895279e-03
299 |
300 | 2.5331446528434753e-01 -8.4104710817337036e-01
301 | <_>
302 |
303 | 0 -1 63 1.5723677352070808e-03
304 |
305 | 3.5839036107063293e-01 -6.2987589836120605e-01
306 | <_>
307 |
308 | 0 -1 66 4.6024072915315628e-02
309 |
310 | -2.5302127003669739e-01 8.7146615982055664e-01
311 | <_>
312 |
313 | 0 -1 55 1.4265929348766804e-03
314 |
315 | 2.6470425724983215e-01 -7.9083943367004395e-01
316 |
317 | <_>
318 | 5
319 | -6.3837289810180664e-01
320 |
321 | <_>
322 |
323 | 0 -1 87 4.1554905474185944e-03
324 |
325 | 2.2292993962764740e-01 -8.5714286565780640e-01
326 | <_>
327 |
328 | 0 -1 77 -1.5662882942706347e-03
329 |
330 | -6.8315720558166504e-01 2.3992703855037689e-01
331 | <_>
332 |
333 | 0 -1 53 6.2472501304000616e-04
334 |
335 | 2.9342862963676453e-01 -6.6436868906021118e-01
336 | <_>
337 |
338 | 0 -1 90 1.1392151936888695e-03
339 |
340 | 2.6167923212051392e-01 -8.5826611518859863e-01
341 | <_>
342 |
343 | 0 -1 25 3.2524254638701677e-03
344 |
345 | 2.8158137202262878e-01 -7.3325347900390625e-01
346 |
347 | <_>
348 | 7
349 | -5.5235737562179565e-01
350 |
351 | <_>
352 |
353 | 0 -1 72 -7.5930180028080940e-03
354 |
355 | -8.4210526943206787e-01 1.9254659116268158e-01
356 | <_>
357 |
358 | 0 -1 65 -8.0020502209663391e-03
359 |
360 | -6.2501406669616699e-01 2.2807431221008301e-01
361 | <_>
362 |
363 | 0 -1 22 -2.0070372149348259e-02
364 |
365 | 8.4054899215698242e-01 -2.0888084173202515e-01
366 | <_>
367 |
368 | 0 -1 32 -5.1144650205969810e-03
369 |
370 | 8.4225267171859741e-01 -1.8106052279472351e-01
371 | <_>
372 |
373 | 0 -1 31 -1.6453832387924194e-02
374 |
375 | -6.7113345861434937e-01 2.8983289003372192e-01
376 | <_>
377 |
378 | 0 -1 3 -9.0157754719257355e-02
379 |
380 | 5.4730337858200073e-01 -3.9392501115798950e-01
381 | <_>
382 |
383 | 0 -1 13 -2.1618367172777653e-03
384 |
385 | 5.5750137567520142e-01 -3.8552135229110718e-01
386 |
387 | <_>
388 | 5
389 | -3.3820408582687378e-01
390 |
391 | <_>
392 |
393 | 0 -1 84 -8.4076365455985069e-03
394 |
395 | -8.5365855693817139e-01 2.1518987417221069e-01
396 | <_>
397 |
398 | 0 -1 19 -7.0654749870300293e-03
399 |
400 | 9.3765091896057129e-01 -2.2787246108055115e-01
401 | <_>
402 |
403 | 0 -1 33 -1.3024022802710533e-02
404 |
405 | -6.8196260929107666e-01 2.8843322396278381e-01
406 | <_>
407 |
408 | 0 -1 42 -2.6671905070543289e-02
409 |
410 | -8.1571304798126221e-01 1.9660328328609467e-01
411 | <_>
412 |
413 | 0 -1 56 -1.6444643260911107e-03
414 |
415 | -7.6599645614624023e-01 2.5829043984413147e-01
416 |
417 | <_>
418 | 7
419 | -5.9797173738479614e-01
420 |
421 | <_>
422 |
423 | 0 -1 43 -9.1984691098332405e-03
424 |
425 | 1. -1.6959063708782196e-01
426 | <_>
427 |
428 | 0 -1 61 1.9063577055931091e-03
429 |
430 | -2.1028988063335419e-01 7.3263967037200928e-01
431 | <_>
432 |
433 | 0 -1 83 -1.4674148987978697e-03
434 |
435 | -6.5895175933837891e-01 2.6856675744056702e-01
436 | <_>
437 |
438 | 0 -1 82 -7.5612859800457954e-03
439 |
440 | -7.1141386032104492e-01 2.2921475768089294e-01
441 | <_>
442 |
443 | 0 -1 68 -7.7614411711692810e-03
444 |
445 | -8.2904589176177979e-01 2.6022711396217346e-01
446 | <_>
447 |
448 | 0 -1 98 -1.0680342093110085e-03
449 |
450 | 8.2713603973388672e-01 -2.7918177843093872e-01
451 | <_>
452 |
453 | 0 -1 78 -1.8412770004943013e-03
454 |
455 | -5.2506893873214722e-01 3.9235493540763855e-01
456 |
457 | <_>
458 | 7
459 | -7.7474081516265869e-01
460 |
461 | <_>
462 |
463 | 0 -1 0 5.4187383502721786e-03
464 |
465 | -2.1518987417221069e-01 8.0487805604934692e-01
466 | <_>
467 |
468 | 0 -1 16 2.1942052990198135e-03
469 |
470 | -2.7046325802803040e-01 5.9775817394256592e-01
471 | <_>
472 |
473 | 0 -1 70 -2.2977215703576803e-03
474 |
475 | -7.1530699729919434e-01 2.4818022549152374e-01
476 | <_>
477 |
478 | 0 -1 18 -9.3552432954311371e-03
479 |
480 | 1. -2.0942753553390503e-01
481 | <_>
482 |
483 | 0 -1 95 5.9671653434634209e-04
484 |
485 | -1.9917269051074982e-01 8.2277739048004150e-01
486 | <_>
487 |
488 | 0 -1 79 4.3764729052782059e-03
489 |
490 | 3.7138998508453369e-01 -7.2497868537902832e-01
491 | <_>
492 |
493 | 0 -1 58 -2.8535192832350731e-03
494 |
495 | 9.1078090667724609e-01 -3.3037328720092773e-01
496 |
497 | <_>
498 | 7
499 | -1.0320498943328857e+00
500 |
501 | <_>
502 |
503 | 0 -1 20 1.3709938153624535e-02
504 |
505 | -3.9655172824859619e-01 5.4216867685317993e-01
506 | <_>
507 |
508 | 0 -1 100 -1.1670717503875494e-03
509 |
510 | 6.9387942552566528e-01 -2.4925677478313446e-01
511 | <_>
512 |
513 | 0 -1 34 3.6660120822489262e-03
514 |
515 | -2.5071409344673157e-01 7.5922888517379761e-01
516 | <_>
517 |
518 | 0 -1 6 1.7964579164981842e-02
519 |
520 | -2.4067564308643341e-01 6.8334460258483887e-01
521 | <_>
522 |
523 | 0 -1 64 -3.5893814638257027e-03
524 |
525 | 6.0088574886322021e-01 -3.0677574872970581e-01
526 | <_>
527 |
528 | 0 -1 9 5.3939589997753501e-04
529 |
530 | -3.2673665881156921e-01 5.7504040002822876e-01
531 | <_>
532 |
533 | 0 -1 10 -2.3759929463267326e-02
534 |
535 | 9.5232027769088745e-01 -2.0005965232849121e-01
536 |
537 | <_>
538 | 6
539 | -5.3817921876907349e-01
540 |
541 | <_>
542 |
543 | 0 -1 102 -6.5275956876575947e-03
544 |
545 | 7.5609755516052246e-01 -2.0253165066242218e-01
546 | <_>
547 |
548 | 0 -1 30 8.9238880900666118e-04
549 |
550 | 3.5406857728958130e-01 -4.7926509380340576e-01
551 | <_>
552 |
553 | 0 -1 28 -8.2401558756828308e-03
554 |
555 | 8.2461619377136230e-01 -2.6304385066032410e-01
556 | <_>
557 |
558 | 0 -1 74 -1.3060313358437270e-04
559 |
560 | 5.7518470287322998e-01 -3.2282403111457825e-01
561 | <_>
562 |
563 | 0 -1 89 7.1172793395817280e-03
564 |
565 | 2.8129318356513977e-01 -8.0004805326461792e-01
566 | <_>
567 |
568 | 0 -1 75 1.2860705610364676e-03
569 |
570 | -2.6242944598197937e-01 5.9923452138900757e-01
571 |
572 | <_>
573 | 6
574 | -5.0237333774566650e-01
575 |
576 | <_>
577 |
578 | 0 -1 91 -3.1791046261787415e-02
579 |
580 | 8.8571429252624512e-01 -1.9512194395065308e-01
581 | <_>
582 |
583 | 0 -1 62 -2.0227319328114390e-04
584 |
585 | 5.5899459123611450e-01 -2.6028454303741455e-01
586 | <_>
587 |
588 | 0 -1 45 3.4311695490032434e-03
589 |
590 | -2.3542959988117218e-01 6.8777346611022949e-01
591 | <_>
592 |
593 | 0 -1 40 4.5481383800506592e-02
594 |
595 | -2.1707123517990112e-01 7.5849521160125732e-01
596 | <_>
597 |
598 | 0 -1 59 -1.0143149644136429e-02
599 |
600 | 7.6919478178024292e-01 -2.4218258261680603e-01
601 | <_>
602 |
603 | 0 -1 11 1.5518108010292053e-01
604 |
605 | -1.7156255245208740e-01 8.3546113967895508e-01
606 |
607 | <_>
608 | 6
609 | -6.4802247285842896e-01
610 |
611 | <_>
612 |
613 | 0 -1 2 -1.8567752838134766e-01
614 |
615 | 9.1836732625961304e-01 -3.0666667222976685e-01
616 | <_>
617 |
618 | 0 -1 35 1.2122542411088943e-01
619 |
620 | -3.4806641936302185e-01 9.4579738378524780e-01
621 | <_>
622 |
623 | 0 -1 36 -1.3680353760719299e-01
624 |
625 | 9.6842563152313232e-01 -1.7889560759067535e-01
626 | <_>
627 |
628 | 0 -1 21 4.9220122396945953e-02
629 |
630 | -3.1284290552139282e-01 8.2727807760238647e-01
631 | <_>
632 |
633 | 0 -1 57 2.0690128207206726e-02
634 |
635 | -2.3883603513240814e-01 8.1306642293930054e-01
636 | <_>
637 |
638 | 0 -1 4 1.3047927618026733e-01
639 |
640 | -3.1461736559867859e-01 8.8718694448471069e-01
641 |
642 | <_>
643 |
644 | <_>
645 | 0 0 15 3 -1.
646 | <_>
647 | 0 1 15 1 3.
648 | 0
649 | <_>
650 |
651 | <_>
652 | 0 3 21 2 -1.
653 | <_>
654 | 0 4 21 1 2.
655 | 0
656 | <_>
657 |
658 | <_>
659 | 0 5 24 18 -1.
660 | <_>
661 | 0 14 24 9 2.
662 | 0
663 | <_>
664 |
665 | <_>
666 | 0 6 22 18 -1.
667 | <_>
668 | 0 15 22 9 2.
669 | 0
670 | <_>
671 |
672 | <_>
673 | 0 8 23 16 -1.
674 | <_>
675 | 0 16 23 8 2.
676 | 0
677 | <_>
678 |
679 | <_>
680 | 0 9 9 3 -1.
681 | <_>
682 | 0 10 9 1 3.
683 | 0
684 | <_>
685 |
686 | <_>
687 | 0 9 22 6 -1.
688 | <_>
689 | 0 11 22 2 3.
690 | 0
691 | <_>
692 |
693 | <_>
694 | 0 12 23 3 -1.
695 | <_>
696 | 0 13 23 1 3.
697 | 0
698 | <_>
699 |
700 | <_>
701 | 0 13 7 3 -1.
702 | <_>
703 | 0 14 7 1 3.
704 | 0
705 | <_>
706 |
707 | <_>
708 | 0 17 3 3 -1.
709 | <_>
710 | 1 17 1 3 3.
711 | 0
712 | <_>
713 |
714 | <_>
715 | 0 18 20 4 -1.
716 | <_>
717 | 0 20 20 2 2.
718 | 0
719 | <_>
720 |
721 | <_>
722 | 1 2 15 22 -1.
723 | <_>
724 | 6 2 5 22 3.
725 | 0
726 | <_>
727 |
728 | <_>
729 | 1 6 7 2 -1.
730 | <_>
731 | 1 7 7 1 2.
732 | 0
733 | <_>
734 |
735 | <_>
736 | 1 7 2 12 -1.
737 | <_>
738 | 2 7 1 12 2.
739 | 0
740 | <_>
741 |
742 | <_>
743 | 1 16 10 6 -1.
744 | <_>
745 | 1 16 5 3 2.
746 | <_>
747 | 6 19 5 3 2.
748 | 0
749 | <_>
750 |
751 | <_>
752 | 1 17 5 2 -1.
753 | <_>
754 | 1 18 5 1 2.
755 | 0
756 | <_>
757 |
758 | <_>
759 | 1 19 16 3 -1.
760 | <_>
761 | 1 20 16 1 3.
762 | 0
763 | <_>
764 |
765 | <_>
766 | 1 20 2 2 -1.
767 | <_>
768 | 1 20 1 1 2.
769 | <_>
770 | 2 21 1 1 2.
771 | 0
772 | <_>
773 |
774 | <_>
775 | 2 0 12 3 -1.
776 | <_>
777 | 2 1 12 1 3.
778 | 0
779 | <_>
780 |
781 | <_>
782 | 2 1 12 3 -1.
783 | <_>
784 | 2 2 12 1 3.
785 | 0
786 | <_>
787 |
788 | <_>
789 | 2 7 12 13 -1.
790 | <_>
791 | 6 7 4 13 3.
792 | 0
793 | <_>
794 |
795 | <_>
796 | 2 9 14 13 -1.
797 | <_>
798 | 9 9 7 13 2.
799 | 0
800 | <_>
801 |
802 | <_>
803 | 2 17 15 6 -1.
804 | <_>
805 | 2 19 15 2 3.
806 | 0
807 | <_>
808 |
809 | <_>
810 | 3 5 4 3 -1.
811 | <_>
812 | 3 6 4 1 3.
813 | 0
814 | <_>
815 |
816 | <_>
817 | 3 5 9 3 -1.
818 | <_>
819 | 3 6 9 1 3.
820 | 0
821 | <_>
822 |
823 | <_>
824 | 3 5 12 3 -1.
825 | <_>
826 | 3 6 12 1 3.
827 | 0
828 | <_>
829 |
830 | <_>
831 | 3 6 2 2 -1.
832 | <_>
833 | 3 7 2 1 2.
834 | 0
835 | <_>
836 |
837 | <_>
838 | 4 0 8 5 -1.
839 | <_>
840 | 8 0 4 5 2.
841 | 0
842 | <_>
843 |
844 | <_>
845 | 4 1 15 3 -1.
846 | <_>
847 | 4 2 15 1 3.
848 | 0
849 | <_>
850 |
851 | <_>
852 | 4 15 12 3 -1.
853 | <_>
854 | 4 16 12 1 3.
855 | 0
856 | <_>
857 |
858 | <_>
859 | 4 17 4 1 -1.
860 | <_>
861 | 6 17 2 1 2.
862 | 0
863 | <_>
864 |
865 | <_>
866 | 4 19 12 4 -1.
867 | <_>
868 | 8 19 4 4 3.
869 | 0
870 | <_>
871 |
872 | <_>
873 | 4 22 12 2 -1.
874 | <_>
875 | 4 22 6 1 2.
876 | <_>
877 | 10 23 6 1 2.
878 | 0
879 | <_>
880 |
881 | <_>
882 | 5 0 6 7 -1.
883 | <_>
884 | 8 0 3 7 2.
885 | 0
886 | <_>
887 |
888 | <_>
889 | 5 0 6 3 -1.
890 | <_>
891 | 5 1 6 1 3.
892 | 0
893 | <_>
894 |
895 | <_>
896 | 5 0 18 22 -1.
897 | <_>
898 | 5 11 18 11 2.
899 | 0
900 | <_>
901 |
902 | <_>
903 | 5 3 18 20 -1.
904 | <_>
905 | 14 3 9 20 2.
906 | 0
907 | <_>
908 |
909 | <_>
910 | 5 5 3 3 -1.
911 | <_>
912 | 6 5 1 3 3.
913 | 0
914 | <_>
915 |
916 | <_>
917 | 5 7 3 5 -1.
918 | <_>
919 | 6 7 1 5 3.
920 | 0
921 | <_>
922 |
923 | <_>
924 | 5 8 7 2 -1.
925 | <_>
926 | 5 9 7 1 2.
927 | 0
928 | <_>
929 |
930 | <_>
931 | 5 9 14 6 -1.
932 | <_>
933 | 5 12 14 3 2.
934 | 0
935 | <_>
936 |
937 | <_>
938 | 5 10 10 12 -1.
939 | <_>
940 | 5 14 10 4 3.
941 | 0
942 | <_>
943 |
944 | <_>
945 | 5 14 8 10 -1.
946 | <_>
947 | 9 14 4 10 2.
948 | 0
949 | <_>
950 |
951 | <_>
952 | 5 21 14 3 -1.
953 | <_>
954 | 5 22 14 1 3.
955 | 0
956 | <_>
957 |
958 | <_>
959 | 6 0 2 10 -1.
960 | <_>
961 | 7 0 1 10 2.
962 | 0
963 | <_>
964 |
965 | <_>
966 | 6 0 16 3 -1.
967 | <_>
968 | 6 1 16 1 3.
969 | 0
970 | <_>
971 |
972 | <_>
973 | 6 3 18 6 -1.
974 | <_>
975 | 12 3 6 6 3.
976 | 0
977 | <_>
978 |
979 | <_>
980 | 6 4 4 3 -1.
981 | <_>
982 | 6 5 4 1 3.
983 | 0
984 | <_>
985 |
986 | <_>
987 | 6 14 18 3 -1.
988 | <_>
989 | 6 15 18 1 3.
990 | 0
991 | <_>
992 |
993 | <_>
994 | 7 3 15 12 -1.
995 | <_>
996 | 7 7 15 4 3.
997 | 0
998 | <_>
999 |
1000 | <_>
1001 | 7 18 2 2 -1.
1002 | <_>
1003 | 8 18 1 2 2.
1004 | 0
1005 | <_>
1006 |
1007 | <_>
1008 | 8 7 8 3 -1.
1009 | <_>
1010 | 8 8 8 1 3.
1011 | 0
1012 | <_>
1013 |
1014 | <_>
1015 | 8 16 16 8 -1.
1016 | <_>
1017 | 8 16 8 4 2.
1018 | <_>
1019 | 16 20 8 4 2.
1020 | 0
1021 | <_>
1022 |
1023 | <_>
1024 | 8 18 2 1 -1.
1025 | <_>
1026 | 9 18 1 1 2.
1027 | 0
1028 | <_>
1029 |
1030 | <_>
1031 | 9 14 7 2 -1.
1032 | <_>
1033 | 9 15 7 1 2.
1034 | 0
1035 | <_>
1036 |
1037 | <_>
1038 | 9 16 4 2 -1.
1039 | <_>
1040 | 9 16 2 1 2.
1041 | <_>
1042 | 11 17 2 1 2.
1043 | 0
1044 | <_>
1045 |
1046 | <_>
1047 | 9 16 6 2 -1.
1048 | <_>
1049 | 9 16 3 1 2.
1050 | <_>
1051 | 12 17 3 1 2.
1052 | 0
1053 | <_>
1054 |
1055 | <_>
1056 | 10 0 11 12 -1.
1057 | <_>
1058 | 10 4 11 4 3.
1059 | 0
1060 | <_>
1061 |
1062 | <_>
1063 | 10 20 2 3 -1.
1064 | <_>
1065 | 10 21 2 1 3.
1066 | 0
1067 | <_>
1068 |
1069 | <_>
1070 | 11 7 3 10 -1.
1071 | <_>
1072 | 11 12 3 5 2.
1073 | 0
1074 | <_>
1075 |
1076 | <_>
1077 | 11 9 3 6 -1.
1078 | <_>
1079 | 12 9 1 6 3.
1080 | 0
1081 | <_>
1082 |
1083 | <_>
1084 | 11 21 3 3 -1.
1085 | <_>
1086 | 11 22 3 1 3.
1087 | 0
1088 | <_>
1089 |
1090 | <_>
1091 | 12 2 2 2 -1.
1092 | <_>
1093 | 12 2 1 1 2.
1094 | <_>
1095 | 13 3 1 1 2.
1096 | 0
1097 | <_>
1098 |
1099 | <_>
1100 | 12 7 3 3 -1.
1101 | <_>
1102 | 12 8 3 1 3.
1103 | 0
1104 | <_>
1105 |
1106 | <_>
1107 | 12 7 3 9 -1.
1108 | <_>
1109 | 12 10 3 3 3.
1110 | 0
1111 | <_>
1112 |
1113 | <_>
1114 | 12 8 8 3 -1.
1115 | <_>
1116 | 16 8 4 3 2.
1117 | 0
1118 | <_>
1119 |
1120 | <_>
1121 | 12 13 12 10 -1.
1122 | <_>
1123 | 12 13 6 5 2.
1124 | <_>
1125 | 18 18 6 5 2.
1126 | 0
1127 | <_>
1128 |
1129 | <_>
1130 | 13 1 4 12 -1.
1131 | <_>
1132 | 13 1 2 6 2.
1133 | <_>
1134 | 15 7 2 6 2.
1135 | 0
1136 | <_>
1137 |
1138 | <_>
1139 | 13 8 6 4 -1.
1140 | <_>
1141 | 15 8 2 4 3.
1142 | 0
1143 | <_>
1144 |
1145 | <_>
1146 | 13 18 2 2 -1.
1147 | <_>
1148 | 13 18 1 1 2.
1149 | <_>
1150 | 14 19 1 1 2.
1151 | 0
1152 | <_>
1153 |
1154 | <_>
1155 | 14 1 2 12 -1.
1156 | <_>
1157 | 14 1 1 6 2.
1158 | <_>
1159 | 15 7 1 6 2.
1160 | 0
1161 | <_>
1162 |
1163 | <_>
1164 | 14 5 2 2 -1.
1165 | <_>
1166 | 14 6 2 1 2.
1167 | 0
1168 | <_>
1169 |
1170 | <_>
1171 | 14 6 4 8 -1.
1172 | <_>
1173 | 14 6 2 4 2.
1174 | <_>
1175 | 16 10 2 4 2.
1176 | 0
1177 | <_>
1178 |
1179 | <_>
1180 | 14 9 4 2 -1.
1181 | <_>
1182 | 16 9 2 2 2.
1183 | 0
1184 | <_>
1185 |
1186 | <_>
1187 | 15 0 1 3 -1.
1188 | <_>
1189 | 15 1 1 1 3.
1190 | 0
1191 | <_>
1192 |
1193 | <_>
1194 | 15 1 2 3 -1.
1195 | <_>
1196 | 15 2 2 1 3.
1197 | 0
1198 | <_>
1199 |
1200 | <_>
1201 | 15 4 3 10 -1.
1202 | <_>
1203 | 16 4 1 10 3.
1204 | 0
1205 | <_>
1206 |
1207 | <_>
1208 | 15 6 2 3 -1.
1209 | <_>
1210 | 16 6 1 3 2.
1211 | 0
1212 | <_>
1213 |
1214 | <_>
1215 | 15 6 2 18 -1.
1216 | <_>
1217 | 15 6 1 9 2.
1218 | <_>
1219 | 16 15 1 9 2.
1220 | 0
1221 | <_>
1222 |
1223 | <_>
1224 | 15 7 4 4 -1.
1225 | <_>
1226 | 17 7 2 4 2.
1227 | 0
1228 | <_>
1229 |
1230 | <_>
1231 | 15 15 4 2 -1.
1232 | <_>
1233 | 15 15 2 1 2.
1234 | <_>
1235 | 17 16 2 1 2.
1236 | 0
1237 | <_>
1238 |
1239 | <_>
1240 | 16 1 4 15 -1.
1241 | <_>
1242 | 18 1 2 15 2.
1243 | 0
1244 | <_>
1245 |
1246 | <_>
1247 | 16 3 6 9 -1.
1248 | <_>
1249 | 18 3 2 9 3.
1250 | 0
1251 | <_>
1252 |
1253 | <_>
1254 | 16 5 2 8 -1.
1255 | <_>
1256 | 16 5 1 4 2.
1257 | <_>
1258 | 17 9 1 4 2.
1259 | 0
1260 | <_>
1261 |
1262 | <_>
1263 | 16 9 4 5 -1.
1264 | <_>
1265 | 18 9 2 5 2.
1266 | 0
1267 | <_>
1268 |
1269 | <_>
1270 | 16 10 3 1 -1.
1271 | <_>
1272 | 17 10 1 1 3.
1273 | 0
1274 | <_>
1275 |
1276 | <_>
1277 | 16 12 4 2 -1.
1278 | <_>
1279 | 16 13 4 1 2.
1280 | 0
1281 | <_>
1282 |
1283 | <_>
1284 | 17 4 2 13 -1.
1285 | <_>
1286 | 18 4 1 13 2.
1287 | 0
1288 | <_>
1289 |
1290 | <_>
1291 | 17 6 2 8 -1.
1292 | <_>
1293 | 17 6 1 4 2.
1294 | <_>
1295 | 18 10 1 4 2.
1296 | 0
1297 | <_>
1298 |
1299 | <_>
1300 | 17 7 4 5 -1.
1301 | <_>
1302 | 19 7 2 5 2.
1303 | 0
1304 | <_>
1305 |
1306 | <_>
1307 | 17 8 3 1 -1.
1308 | <_>
1309 | 18 8 1 1 3.
1310 | 0
1311 | <_>
1312 |
1313 | <_>
1314 | 18 7 2 16 -1.
1315 | <_>
1316 | 18 15 2 8 2.
1317 | 0
1318 | <_>
1319 |
1320 | <_>
1321 | 18 8 4 4 -1.
1322 | <_>
1323 | 18 10 4 2 2.
1324 | 0
1325 | <_>
1326 |
1327 | <_>
1328 | 18 10 6 3 -1.
1329 | <_>
1330 | 18 11 6 1 3.
1331 | 0
1332 | <_>
1333 |
1334 | <_>
1335 | 18 15 5 3 -1.
1336 | <_>
1337 | 18 16 5 1 3.
1338 | 0
1339 | <_>
1340 |
1341 | <_>
1342 | 18 21 2 2 -1.
1343 | <_>
1344 | 18 21 1 1 2.
1345 | <_>
1346 | 19 22 1 1 2.
1347 | 0
1348 | <_>
1349 |
1350 | <_>
1351 | 19 10 1 2 -1.
1352 | <_>
1353 | 19 11 1 1 2.
1354 | 0
1355 | <_>
1356 |
1357 | <_>
1358 | 19 11 3 3 -1.
1359 | <_>
1360 | 19 12 3 1 3.
1361 | 0
1362 | <_>
1363 |
1364 | <_>
1365 | 20 7 3 1 -1.
1366 | <_>
1367 | 21 7 1 1 3.
1368 | 0
1369 | <_>
1370 |
1371 | <_>
1372 | 20 12 2 2 -1.
1373 | <_>
1374 | 20 13 2 1 2.
1375 | 0
1376 | <_>
1377 |
1378 | <_>
1379 | 20 18 3 2 -1.
1380 | <_>
1381 | 21 18 1 2 3.
1382 | 0
1383 | <_>
1384 |
1385 | <_>
1386 | 21 0 2 3 -1.
1387 | <_>
1388 | 21 1 2 1 3.
1389 | 0
1390 | <_>
1391 |
1392 | <_>
1393 | 21 7 3 9 -1.
1394 | <_>
1395 | 22 7 1 9 3.
1396 | 0
1397 | <_>
1398 |
1399 | <_>
1400 | 21 10 3 5 -1.
1401 | <_>
1402 | 22 10 1 5 3.
1403 | 0
1404 |
1405 |
--------------------------------------------------------------------------------
/basketball.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | BOOST
5 | HAAR
6 | 24
7 | 24
8 |
9 | GAB
10 | 9.9500000476837158e-01
11 | 5.0000000000000000e-01
12 | 9.4999999999999996e-01
13 | 1
14 | 100
15 |
16 | 0
17 | 1
18 | BASIC
19 | 20
20 |
21 |
22 | <_>
23 | 6
24 | -4.7597497701644897e-01
25 |
26 | <_>
27 |
28 | 0 -1 108 -1.0823157615959644e-02
29 |
30 | 1. -2.4223601818084717e-01
31 | <_>
32 |
33 | 0 -1 38 5.4417038336396217e-03
34 |
35 | 3.6022597551345825e-01 -7.5359100103378296e-01
36 | <_>
37 |
38 | 0 -1 52 -6.8400977179408073e-03
39 |
40 | -7.4481379985809326e-01 2.6115188002586365e-01
41 | <_>
42 |
43 | 0 -1 93 -7.0984559133648872e-03
44 |
45 | -5.7210916280746460e-01 3.5207945108413696e-01
46 | <_>
47 |
48 | 0 -1 25 1.2103762477636337e-02
49 |
50 | -4.2472201585769653e-01 5.9060972929000854e-01
51 | <_>
52 |
53 | 0 -1 87 1.3340183068066835e-03
54 |
55 | 3.7710744142532349e-01 -7.8247421979904175e-01
56 |
57 | <_>
58 | 4
59 | -8.6342954635620117e-01
60 |
61 | <_>
62 |
63 | 0 -1 68 2.5386670604348183e-02
64 |
65 | 3.6296296119689941e-01 -7.5384616851806641e-01
66 | <_>
67 |
68 | 0 -1 7 2.7300720103085041e-03
69 |
70 | 2.6845660805702209e-01 -8.2790905237197876e-01
71 | <_>
72 |
73 | 0 -1 5 9.7525734454393387e-03
74 |
75 | 3.8971549272537231e-01 -7.6692593097686768e-01
76 | <_>
77 |
78 | 0 -1 53 4.9450173974037170e-03
79 |
80 | 3.2101461291313171e-01 -7.6775550842285156e-01
81 |
82 | <_>
83 | 5
84 | -7.9703176021575928e-01
85 |
86 | <_>
87 |
88 | 0 -1 91 5.8140754699707031e-03
89 |
90 | 3.5714286565780640e-01 -8.3333331346511841e-01
91 | <_>
92 |
93 | 0 -1 58 1.2077574618160725e-02
94 |
95 | -3.4666132926940918e-01 8.8087177276611328e-01
96 | <_>
97 |
98 | 0 -1 105 -1.8798094242811203e-03
99 |
100 | -8.0115097761154175e-01 4.0014418959617615e-01
101 | <_>
102 |
103 | 0 -1 28 6.7325509153306484e-03
104 |
105 | 2.7014407515525818e-01 -8.3123600482940674e-01
106 | <_>
107 |
108 | 0 -1 8 -3.6689940840005875e-02
109 |
110 | 9.5899039506912231e-01 -3.7642151117324829e-01
111 |
112 | <_>
113 | 5
114 | -8.5749357938766479e-01
115 |
116 | <_>
117 |
118 | 0 -1 48 -9.8623596131801605e-03
119 |
120 | 9.5121949911117554e-01 -2.4528302252292633e-01
121 | <_>
122 |
123 | 0 -1 31 1.8658849876374006e-03
124 |
125 | 3.8806939125061035e-01 -6.6500157117843628e-01
126 | <_>
127 |
128 | 0 -1 82 8.0802403390407562e-03
129 |
130 | 2.7582770586013794e-01 -8.3085596561431885e-01
131 | <_>
132 |
133 | 0 -1 1 -1.0223798453807831e-02
134 |
135 | -8.1811839342117310e-01 2.7540746331214905e-01
136 | <_>
137 |
138 | 0 -1 35 2.8328891843557358e-02
139 |
140 | -4.5798924565315247e-01 5.3942173719406128e-01
141 |
142 | <_>
143 | 4
144 | -4.2888607829809189e-02
145 |
146 | <_>
147 |
148 | 0 -1 55 -1.6441892832517624e-02
149 |
150 | 8.8235294818878174e-01 -3.0201342701911926e-01
151 | <_>
152 |
153 | 0 -1 40 -2.8612779453396797e-02
154 |
155 | -1. 2.7568709850311279e-01
156 | <_>
157 |
158 | 0 -1 2 9.3124276027083397e-03
159 |
160 | -2.7158308029174805e-01 8.6632996797561646e-01
161 | <_>
162 |
163 | 0 -1 42 -7.7709113247692585e-03
164 |
165 | -8.4451156854629517e-01 2.5502079725265503e-01
166 |
167 | <_>
168 | 4
169 | -3.4740304946899414e-01
170 |
171 | <_>
172 |
173 | 0 -1 86 -1.1325627565383911e-02
174 |
175 | -1. 3.1578946113586426e-01
176 | <_>
177 |
178 | 0 -1 3 5.0757713615894318e-02
179 |
180 | -3.1893905997276306e-01 1.
181 | <_>
182 |
183 | 0 -1 17 5.7469774037599564e-03
184 |
185 | 3.6201265454292297e-01 -7.4303013086318970e-01
186 | <_>
187 |
188 | 0 -1 39 -1.8098382279276848e-03
189 |
190 | -4.9960258603096008e-01 3.9877671003341675e-01
191 |
192 | <_>
193 | 5
194 | -8.8800150156021118e-01
195 |
196 | <_>
197 |
198 | 0 -1 18 -8.0157496035099030e-02
199 |
200 | 9.0476191043853760e-01 -2.4050633609294891e-01
201 | <_>
202 |
203 | 0 -1 100 -1.3517031446099281e-02
204 |
205 | -8.6742866039276123e-01 2.6374411582946777e-01
206 | <_>
207 |
208 | 0 -1 67 3.6167728248983622e-03
209 |
210 | -3.9062148332595825e-01 4.9983975291252136e-01
211 | <_>
212 |
213 | 0 -1 96 -3.9216675795614719e-03
214 |
215 | -7.8098487854003906e-01 2.3834140598773956e-01
216 | <_>
217 |
218 | 0 -1 62 8.6375838145613670e-03
219 |
220 | 2.4546359479427338e-01 -7.5895923376083374e-01
221 |
222 | <_>
223 | 5
224 | -6.4275991916656494e-01
225 |
226 | <_>
227 |
228 | 0 -1 27 -2.8219817206263542e-02
229 |
230 | -8.7999999523162842e-01 2.9333332180976868e-01
231 | <_>
232 |
233 | 0 -1 83 -2.8147697448730469e-03
234 |
235 | -7.6636958122253418e-01 2.3645147681236267e-01
236 | <_>
237 |
238 | 0 -1 92 7.9591143876314163e-03
239 |
240 | 3.2747977972030640e-01 -7.3815172910690308e-01
241 | <_>
242 |
243 | 0 -1 102 1.8773726187646389e-03
244 |
245 | 3.3865311741828918e-01 -7.6629698276519775e-01
246 | <_>
247 |
248 | 0 -1 71 -2.5004325434565544e-03
249 |
250 | -6.7691355943679810e-01 3.3190402388572693e-01
251 |
252 | <_>
253 | 8
254 | -8.2868993282318115e-01
255 |
256 | <_>
257 |
258 | 0 -1 45 -2.5992784649133682e-03
259 |
260 | 1. -2.1951219439506531e-01
261 | <_>
262 |
263 | 0 -1 49 1.0873684659600258e-03
264 |
265 | -1.8421480059623718e-01 8.5085248947143555e-01
266 | <_>
267 |
268 | 0 -1 79 -2.0262597128748894e-02
269 |
270 | 7.7049940824508667e-01 -2.5153702497482300e-01
271 | <_>
272 |
273 | 0 -1 51 -1.0913488455116749e-02
274 |
275 | -8.7069219350814819e-01 2.3641471564769745e-01
276 | <_>
277 |
278 | 0 -1 16 -1.6301891300827265e-03
279 |
280 | 6.4886188507080078e-01 -3.7876316905021667e-01
281 | <_>
282 |
283 | 0 -1 0 1.9454451976343989e-03
284 |
285 | -2.7520745992660522e-01 7.6119959354400635e-01
286 | <_>
287 |
288 | 0 -1 101 2.1891784854233265e-03
289 |
290 | -4.3633055686950684e-01 5.1092147827148438e-01
291 | <_>
292 |
293 | 0 -1 57 2.6728515513241291e-03
294 |
295 | -3.5460674762725830e-01 7.5471377372741699e-01
296 |
297 | <_>
298 | 6
299 | -1.1453697681427002e+00
300 |
301 | <_>
302 |
303 | 0 -1 88 -8.5625266656279564e-03
304 |
305 | -7.4545454978942871e-01 2.8275862336158752e-01
306 | <_>
307 |
308 | 0 -1 11 6.8307900801301003e-03
309 |
310 | -2.9436719417572021e-01 8.5919845104217529e-01
311 | <_>
312 |
313 | 0 -1 21 1.4838553033769131e-02
314 |
315 | 3.5180905461311340e-01 -6.3107603788375854e-01
316 | <_>
317 |
318 | 0 -1 24 2.2056849673390388e-02
319 |
320 | -4.2534193396568298e-01 5.9262037277221680e-01
321 | <_>
322 |
323 | 0 -1 107 -6.9118309766054153e-03
324 |
325 | 7.3447579145431519e-01 -3.5615247488021851e-01
326 | <_>
327 |
328 | 0 -1 99 2.6985979638993740e-03
329 |
330 | 2.7880933880805969e-01 -9.3744188547134399e-01
331 |
332 | <_>
333 | 6
334 | -9.4645537436008453e-02
335 |
336 | <_>
337 |
338 | 0 -1 63 1.3328310102224350e-02
339 |
340 | 3.1914892792701721e-01 -7.6271188259124756e-01
341 | <_>
342 |
343 | 0 -1 30 -1.5663281083106995e-02
344 |
345 | -8.0327981710433960e-01 2.1709962189197540e-01
346 | <_>
347 |
348 | 0 -1 46 1.9292540848255157e-02
349 |
350 | 2.6591342687606812e-01 -7.8623926639556885e-01
351 | <_>
352 |
353 | 0 -1 90 -1.5373840928077698e-02
354 |
355 | -8.5558581352233887e-01 2.2937850654125214e-01
356 | <_>
357 |
358 | 0 -1 81 -5.7425573468208313e-03
359 |
360 | -7.7981346845626831e-01 2.9890120029449463e-01
361 | <_>
362 |
363 | 0 -1 13 4.4629164040088654e-03
364 |
365 | -3.4012287855148315e-01 7.4656939506530762e-01
366 |
367 | <_>
368 | 6
369 | -3.7390497326850891e-01
370 |
371 | <_>
372 |
373 | 0 -1 4 -2.5770184397697449e-01
374 |
375 | 7.7049177885055542e-01 -3.3812949061393738e-01
376 | <_>
377 |
378 | 0 -1 70 1.2474964605644345e-03
379 |
380 | 4.2654907703399658e-01 -7.2070342302322388e-01
381 | <_>
382 |
383 | 0 -1 34 -1.7538757994771004e-02
384 |
385 | 7.3396492004394531e-01 -3.5288563370704651e-01
386 | <_>
387 |
388 | 0 -1 15 1.0541453957557678e-03
389 |
390 | 4.3569973111152649e-01 -5.6406933069229126e-01
391 | <_>
392 |
393 | 0 -1 72 1.1915677227079868e-02
394 |
395 | 2.9618388414382935e-01 -9.2421209812164307e-01
396 | <_>
397 |
398 | 0 -1 97 8.5935799870640039e-04
399 |
400 | 3.0592995882034302e-01 -7.9033017158508301e-01
401 |
402 | <_>
403 | 7
404 | -3.2370227575302124e-01
405 |
406 | <_>
407 |
408 | 0 -1 20 5.4709024727344513e-02
409 |
410 | -2.2981366515159607e-01 9.4871795177459717e-01
411 | <_>
412 |
413 | 0 -1 43 9.7257923334836960e-03
414 |
415 | 2.5621762871742249e-01 -8.1782233715057373e-01
416 | <_>
417 |
418 | 0 -1 41 -4.0161274373531342e-02
419 |
420 | -8.9385849237442017e-01 1.6712459921836853e-01
421 | <_>
422 |
423 | 0 -1 80 2.2796192206442356e-03
424 |
425 | 2.2648620605468750e-01 -7.0254182815551758e-01
426 | <_>
427 |
428 | 0 -1 6 -2.9961007833480835e-01
429 |
430 | 9.2527151107788086e-01 -2.8673151135444641e-01
431 | <_>
432 |
433 | 0 -1 94 9.1537600383162498e-04
434 |
435 | 3.9575988054275513e-01 -5.0929832458496094e-01
436 | <_>
437 |
438 | 0 -1 54 -1.2030085781589150e-03
439 |
440 | -8.0848205089569092e-01 2.2129458189010620e-01
441 |
442 | <_>
443 | 6
444 | -4.5046490430831909e-01
445 |
446 | <_>
447 |
448 | 0 -1 75 1.6544839367270470e-02
449 |
450 | -3.1914892792701721e-01 7.6271188259124756e-01
451 | <_>
452 |
453 | 0 -1 32 -4.2299907654523849e-03
454 |
455 | 6.9182586669921875e-01 -2.7047938108444214e-01
456 | <_>
457 |
458 | 0 -1 23 -1.7008729279041290e-02
459 |
460 | -6.6187423467636108e-01 3.2656148076057434e-01
461 | <_>
462 |
463 | 0 -1 47 2.5731239467859268e-02
464 |
465 | 2.2085145115852356e-01 -8.3860749006271362e-01
466 | <_>
467 |
468 | 0 -1 77 -2.9140065889805555e-03
469 |
470 | -5.5369919538497925e-01 3.6615499854087830e-01
471 | <_>
472 |
473 | 0 -1 104 -4.1446747491136193e-04
474 |
475 | -6.2547653913497925e-01 2.8505441546440125e-01
476 |
477 | <_>
478 | 7
479 | -3.8963723182678223e-01
480 |
481 | <_>
482 |
483 | 0 -1 65 1.3974602334201336e-02
484 |
485 | -3.0612245202064514e-01 8.4905660152435303e-01
486 | <_>
487 |
488 | 0 -1 84 1.3324014144018292e-03
489 |
490 | -1.5840251743793488e-01 9.1494053602218628e-01
491 | <_>
492 |
493 | 0 -1 59 5.3529877215623856e-02
494 |
495 | 2.4004304409027100e-01 -8.7604486942291260e-01
496 | <_>
497 |
498 | 0 -1 74 -1.7416093032807112e-03
499 |
500 | 1. -2.2138826549053192e-01
501 | <_>
502 |
503 | 0 -1 12 1.0204706341028214e-03
504 |
505 | -1.6470405459403992e-01 9.6111398935317993e-01
506 | <_>
507 |
508 | 0 -1 50 -1.1157851666212082e-02
509 |
510 | 8.8802105188369751e-01 -1.7165091633796692e-01
511 | <_>
512 |
513 | 0 -1 76 1.6385899856686592e-02
514 |
515 | 3.9258792996406555e-01 -6.7140811681747437e-01
516 |
517 | <_>
518 | 5
519 | -3.0934354662895203e-01
520 |
521 | <_>
522 |
523 | 0 -1 66 2.8078930918127298e-03
524 |
525 | -2.4050633609294891e-01 9.0476191043853760e-01
526 | <_>
527 |
528 | 0 -1 14 -1.4879014343023300e-02
529 |
530 | 1. -1.5434892475605011e-01
531 | <_>
532 |
533 | 0 -1 64 1.9937667530030012e-03
534 |
535 | -1.4509378373622894e-01 9.1099256277084351e-01
536 | <_>
537 |
538 | 0 -1 78 -4.2190374806523323e-03
539 |
540 | 9.5812320709228516e-01 -1.9768768548965454e-01
541 | <_>
542 |
543 | 0 -1 85 -1.6166676068678498e-03
544 |
545 | 4.2829316854476929e-01 -5.1051706075668335e-01
546 |
547 | <_>
548 | 5
549 | -2.5130021572113037e-01
550 |
551 | <_>
552 |
553 | 0 -1 61 3.8916327059268951e-02
554 |
555 | -2.1951219439506531e-01 1.
556 | <_>
557 |
558 | 0 -1 69 1.2666927650570869e-02
559 |
560 | 2.3845413327217102e-01 -7.9395198822021484e-01
561 | <_>
562 |
563 | 0 -1 60 5.9914672747254372e-03
564 |
565 | -2.1239688992500305e-01 8.9606088399887085e-01
566 | <_>
567 |
568 | 0 -1 10 -1.1311018466949463e-01
569 |
570 | -6.3874661922454834e-01 2.7240410447120667e-01
571 | <_>
572 |
573 | 0 -1 89 -3.2653203234076500e-03
574 |
575 | 5.8954650163650513e-01 -3.3024936914443970e-01
576 |
577 | <_>
578 | 6
579 | -2.7167060971260071e-01
580 |
581 | <_>
582 |
583 | 0 -1 19 5.6047476828098297e-02
584 |
585 | -1.9277107715606689e-01 9.4117647409439087e-01
586 | <_>
587 |
588 | 0 -1 33 -6.1136912554502487e-03
589 |
590 | 7.8868430852890015e-01 -2.0548237860202789e-01
591 | <_>
592 |
593 | 0 -1 73 -3.5564132034778595e-02
594 |
595 | 4.7274741530418396e-01 -5.0141942501068115e-01
596 | <_>
597 |
598 | 0 -1 103 -1.3572145253419876e-03
599 |
600 | 6.9473713636398315e-01 -2.9448932409286499e-01
601 | <_>
602 |
603 | 0 -1 44 2.5960044004023075e-03
604 |
605 | 3.8520523905754089e-01 -4.7437289357185364e-01
606 | <_>
607 |
608 | 0 -1 109 -1.4241813914850354e-04
609 |
610 | 5.3728640079498291e-01 -3.6473828554153442e-01
611 |
612 | <_>
613 | 4
614 | -4.6910294890403748e-01
615 |
616 | <_>
617 |
618 | 0 -1 37 -1.4215521514415741e-01
619 |
620 | 9.6610170602798462e-01 -4.0425533056259155e-01
621 | <_>
622 |
623 | 0 -1 9 5.8893203735351562e-02
624 |
625 | -2.8384315967559814e-01 8.2678616046905518e-01
626 | <_>
627 |
628 | 0 -1 26 -1.9078843251918443e-05
629 |
630 | 6.6871613264083862e-01 -4.7787678241729736e-01
631 | <_>
632 |
633 | 0 -1 22 3.3262418583035469e-03
634 |
635 | -3.4441235661506653e-01 6.9687229394912720e-01
636 |
637 | <_>
638 | 6
639 | -2.5020360946655273e-01
640 |
641 | <_>
642 |
643 | 0 -1 36 5.6253485381603241e-02
644 |
645 | -3.1297710537910461e-01 5.9420287609100342e-01
646 | <_>
647 |
648 | 0 -1 98 -4.7048539854586124e-03
649 |
650 | -7.1292710304260254e-01 2.4402815103530884e-01
651 | <_>
652 |
653 | 0 -1 95 2.8117710724473000e-02
654 |
655 | 2.0275187492370605e-01 -7.7736133337020874e-01
656 | <_>
657 |
658 | 0 -1 106 -2.6528859962127171e-05
659 |
660 | 3.7652033567428589e-01 -4.2158430814743042e-01
661 | <_>
662 |
663 | 0 -1 29 6.5848743543028831e-03
664 |
665 | 1.9885590672492981e-01 -8.3662730455398560e-01
666 | <_>
667 |
668 | 0 -1 56 1.4224922284483910e-02
669 |
670 | 1.8357154726982117e-01 -8.3107960224151611e-01
671 |
672 | <_>
673 |
674 | <_>
675 | 0 1 3 6 -1.
676 | <_>
677 | 1 1 1 6 3.
678 | 0
679 | <_>
680 |
681 | <_>
682 | 0 4 24 2 -1.
683 | <_>
684 | 0 5 24 1 2.
685 | 0
686 | <_>
687 |
688 | <_>
689 | 0 6 2 17 -1.
690 | <_>
691 | 1 6 1 17 2.
692 | 0
693 | <_>
694 |
695 | <_>
696 | 0 6 8 11 -1.
697 | <_>
698 | 4 6 4 11 2.
699 | 0
700 | <_>
701 |
702 | <_>
703 | 0 6 24 18 -1.
704 | <_>
705 | 0 15 24 9 2.
706 | 0
707 | <_>
708 |
709 | <_>
710 | 0 8 19 3 -1.
711 | <_>
712 | 0 9 19 1 3.
713 | 0
714 | <_>
715 |
716 | <_>
717 | 0 8 23 16 -1.
718 | <_>
719 | 0 16 23 8 2.
720 | 0
721 | <_>
722 |
723 | <_>
724 | 0 9 4 3 -1.
725 | <_>
726 | 0 10 4 1 3.
727 | 0
728 | <_>
729 |
730 | <_>
731 | 0 11 12 8 -1.
732 | <_>
733 | 4 11 4 8 3.
734 | 0
735 | <_>
736 |
737 | <_>
738 | 0 11 24 10 -1.
739 | <_>
740 | 8 11 8 10 3.
741 | 0
742 | <_>
743 |
744 | <_>
745 | 0 11 24 12 -1.
746 | <_>
747 | 12 11 12 12 2.
748 | 0
749 | <_>
750 |
751 | <_>
752 | 0 13 2 9 -1.
753 | <_>
754 | 1 13 1 9 2.
755 | 0
756 | <_>
757 |
758 | <_>
759 | 0 17 2 2 -1.
760 | <_>
761 | 0 17 1 1 2.
762 | <_>
763 | 1 18 1 1 2.
764 | 0
765 | <_>
766 |
767 | <_>
768 | 0 18 6 1 -1.
769 | <_>
770 | 3 18 3 1 2.
771 | 0
772 | <_>
773 |
774 | <_>
775 | 0 20 18 3 -1.
776 | <_>
777 | 0 21 18 1 3.
778 | 0
779 | <_>
780 |
781 | <_>
782 | 1 0 8 1 -1.
783 | <_>
784 | 5 0 4 1 2.
785 | 0
786 | <_>
787 |
788 | <_>
789 | 1 11 5 2 -1.
790 | <_>
791 | 1 12 5 1 2.
792 | 0
793 | <_>
794 |
795 | <_>
796 | 1 13 18 2 -1.
797 | <_>
798 | 1 14 18 1 2.
799 | 0
800 | <_>
801 |
802 | <_>
803 | 1 15 15 8 -1.
804 | <_>
805 | 1 19 15 4 2.
806 | 0
807 | <_>
808 |
809 | <_>
810 | 2 0 17 4 -1.
811 | <_>
812 | 2 2 17 2 2.
813 | 0
814 | <_>
815 |
816 | <_>
817 | 2 0 22 4 -1.
818 | <_>
819 | 2 2 22 2 2.
820 | 0
821 | <_>
822 |
823 | <_>
824 | 2 5 13 6 -1.
825 | <_>
826 | 2 7 13 2 3.
827 | 0
828 | <_>
829 |
830 | <_>
831 | 3 0 2 6 -1.
832 | <_>
833 | 3 2 2 2 3.
834 | 0
835 | <_>
836 |
837 | <_>
838 | 3 0 4 24 -1.
839 | <_>
840 | 5 0 2 24 2.
841 | 0
842 | <_>
843 |
844 | <_>
845 | 3 3 21 5 -1.
846 | <_>
847 | 10 3 7 5 3.
848 | 0
849 | <_>
850 |
851 | <_>
852 | 3 6 6 9 -1.
853 | <_>
854 | 6 6 3 9 2.
855 | 0
856 | <_>
857 |
858 | <_>
859 | 3 7 2 2 -1.
860 | <_>
861 | 3 7 1 1 2.
862 | <_>
863 | 4 8 1 1 2.
864 | 0
865 | <_>
866 |
867 | <_>
868 | 3 14 16 6 -1.
869 | <_>
870 | 3 16 16 2 3.
871 | 0
872 | <_>
873 |
874 | <_>
875 | 3 17 17 2 -1.
876 | <_>
877 | 3 18 17 1 2.
878 | 0
879 | <_>
880 |
881 | <_>
882 | 3 22 6 2 -1.
883 | <_>
884 | 5 22 2 2 3.
885 | 0
886 | <_>
887 |
888 | <_>
889 | 4 5 7 6 -1.
890 | <_>
891 | 4 7 7 2 3.
892 | 0
893 | <_>
894 |
895 | <_>
896 | 4 7 3 3 -1.
897 | <_>
898 | 4 8 3 1 3.
899 | 0
900 | <_>
901 |
902 | <_>
903 | 4 9 16 3 -1.
904 | <_>
905 | 4 10 16 1 3.
906 | 0
907 | <_>
908 |
909 | <_>
910 | 4 9 18 3 -1.
911 | <_>
912 | 4 10 18 1 3.
913 | 0
914 | <_>
915 |
916 | <_>
917 | 4 18 10 6 -1.
918 | <_>
919 | 4 21 10 3 2.
920 | 0
921 | <_>
922 |
923 | <_>
924 | 5 0 3 21 -1.
925 | <_>
926 | 5 7 3 7 3.
927 | 0
928 | <_>
929 |
930 | <_>
931 | 5 0 17 12 -1.
932 | <_>
933 | 5 6 17 6 2.
934 | 0
935 | <_>
936 |
937 | <_>
938 | 5 6 15 18 -1.
939 | <_>
940 | 5 15 15 9 2.
941 | 0
942 | <_>
943 |
944 | <_>
945 | 5 14 11 2 -1.
946 | <_>
947 | 5 15 11 1 2.
948 | 0
949 | <_>
950 |
951 | <_>
952 | 6 2 2 8 -1.
953 | <_>
954 | 6 6 2 4 2.
955 | 0
956 | <_>
957 |
958 | <_>
959 | 6 2 18 3 -1.
960 | <_>
961 | 6 3 18 1 3.
962 | 0
963 | <_>
964 |
965 | <_>
966 | 6 6 12 5 -1.
967 | <_>
968 | 12 6 6 5 2.
969 | 0
970 | <_>
971 |
972 | <_>
973 | 6 11 14 3 -1.
974 | <_>
975 | 6 12 14 1 3.
976 | 0
977 | <_>
978 |
979 | <_>
980 | 6 12 16 1 -1.
981 | <_>
982 | 14 12 8 1 2.
983 | 0
984 | <_>
985 |
986 | <_>
987 | 6 19 6 5 -1.
988 | <_>
989 | 9 19 3 5 2.
990 | 0
991 | <_>
992 |
993 | <_>
994 | 6 20 2 3 -1.
995 | <_>
996 | 6 21 2 1 3.
997 | 0
998 | <_>
999 |
1000 | <_>
1001 | 7 5 14 6 -1.
1002 | <_>
1003 | 7 7 14 2 3.
1004 | 0
1005 | <_>
1006 |
1007 | <_>
1008 | 7 6 14 4 -1.
1009 | <_>
1010 | 14 6 7 4 2.
1011 | 0
1012 | <_>
1013 |
1014 | <_>
1015 | 7 18 2 6 -1.
1016 | <_>
1017 | 7 21 2 3 2.
1018 | 0
1019 | <_>
1020 |
1021 | <_>
1022 | 7 20 1 3 -1.
1023 | <_>
1024 | 7 21 1 1 3.
1025 | 0
1026 | <_>
1027 |
1028 | <_>
1029 | 7 20 16 3 -1.
1030 | <_>
1031 | 7 21 16 1 3.
1032 | 0
1033 | <_>
1034 |
1035 | <_>
1036 | 8 1 12 2 -1.
1037 | <_>
1038 | 12 1 4 2 3.
1039 | 0
1040 | <_>
1041 |
1042 | <_>
1043 | 8 5 13 3 -1.
1044 | <_>
1045 | 8 6 13 1 3.
1046 | 0
1047 | <_>
1048 |
1049 | <_>
1050 | 8 7 8 3 -1.
1051 | <_>
1052 | 8 8 8 1 3.
1053 | 0
1054 | <_>
1055 |
1056 | <_>
1057 | 8 9 2 2 -1.
1058 | <_>
1059 | 9 9 1 2 2.
1060 | 0
1061 | <_>
1062 |
1063 | <_>
1064 | 8 14 2 10 -1.
1065 | <_>
1066 | 8 19 2 5 2.
1067 | 0
1068 | <_>
1069 |
1070 | <_>
1071 | 8 14 4 10 -1.
1072 | <_>
1073 | 10 14 2 10 2.
1074 | 0
1075 | <_>
1076 |
1077 | <_>
1078 | 8 20 6 3 -1.
1079 | <_>
1080 | 8 21 6 1 3.
1081 | 0
1082 | <_>
1083 |
1084 | <_>
1085 | 9 0 4 4 -1.
1086 | <_>
1087 | 9 2 4 2 2.
1088 | 0
1089 | <_>
1090 |
1091 | <_>
1092 | 9 0 12 6 -1.
1093 | <_>
1094 | 13 0 4 6 3.
1095 | 0
1096 | <_>
1097 |
1098 | <_>
1099 | 9 0 6 3 -1.
1100 | <_>
1101 | 9 1 6 1 3.
1102 | 0
1103 | <_>
1104 |
1105 | <_>
1106 | 9 0 12 4 -1.
1107 | <_>
1108 | 9 2 12 2 2.
1109 | 0
1110 | <_>
1111 |
1112 | <_>
1113 | 9 7 9 2 -1.
1114 | <_>
1115 | 12 7 3 2 3.
1116 | 0
1117 | <_>
1118 |
1119 | <_>
1120 | 9 9 8 8 -1.
1121 | <_>
1122 | 9 13 8 4 2.
1123 | 0
1124 | <_>
1125 |
1126 | <_>
1127 | 9 20 1 3 -1.
1128 | <_>
1129 | 9 21 1 1 3.
1130 | 0
1131 | <_>
1132 |
1133 | <_>
1134 | 10 0 5 4 -1.
1135 | <_>
1136 | 10 2 5 2 2.
1137 | 0
1138 | <_>
1139 |
1140 | <_>
1141 | 10 1 4 3 -1.
1142 | <_>
1143 | 10 2 4 1 3.
1144 | 0
1145 | <_>
1146 |
1147 | <_>
1148 | 10 1 4 4 -1.
1149 | <_>
1150 | 10 3 4 2 2.
1151 | 0
1152 | <_>
1153 |
1154 | <_>
1155 | 10 2 6 22 -1.
1156 | <_>
1157 | 10 13 6 11 2.
1158 | 0
1159 | <_>
1160 |
1161 | <_>
1162 | 10 6 2 12 -1.
1163 | <_>
1164 | 10 12 2 6 2.
1165 | 0
1166 | <_>
1167 |
1168 | <_>
1169 | 10 7 2 3 -1.
1170 | <_>
1171 | 11 7 1 3 2.
1172 | 0
1173 | <_>
1174 |
1175 | <_>
1176 | 10 8 6 2 -1.
1177 | <_>
1178 | 12 8 2 2 3.
1179 | 0
1180 | <_>
1181 |
1182 | <_>
1183 | 10 8 8 6 -1.
1184 | <_>
1185 | 10 8 4 3 2.
1186 | <_>
1187 | 14 11 4 3 2.
1188 | 0
1189 | <_>
1190 |
1191 | <_>
1192 | 10 8 14 16 -1.
1193 | <_>
1194 | 10 16 14 8 2.
1195 | 0
1196 | <_>
1197 |
1198 | <_>
1199 | 10 19 1 3 -1.
1200 | <_>
1201 | 10 20 1 1 3.
1202 | 0
1203 | <_>
1204 |
1205 | <_>
1206 | 11 0 9 4 -1.
1207 | <_>
1208 | 11 2 9 2 2.
1209 | 0
1210 | <_>
1211 |
1212 | <_>
1213 | 11 5 6 14 -1.
1214 | <_>
1215 | 11 5 3 7 2.
1216 | <_>
1217 | 14 12 3 7 2.
1218 | 0
1219 | <_>
1220 |
1221 | <_>
1222 | 11 9 10 1 -1.
1223 | <_>
1224 | 16 9 5 1 2.
1225 | 0
1226 | <_>
1227 |
1228 | <_>
1229 | 12 1 3 3 -1.
1230 | <_>
1231 | 12 2 3 1 3.
1232 | 0
1233 | <_>
1234 |
1235 | <_>
1236 | 12 16 4 8 -1.
1237 | <_>
1238 | 12 20 4 4 2.
1239 | 0
1240 | <_>
1241 |
1242 | <_>
1243 | 13 8 6 1 -1.
1244 | <_>
1245 | 15 8 2 1 3.
1246 | 0
1247 | <_>
1248 |
1249 | <_>
1250 | 13 8 4 10 -1.
1251 | <_>
1252 | 13 8 2 5 2.
1253 | <_>
1254 | 15 13 2 5 2.
1255 | 0
1256 | <_>
1257 |
1258 | <_>
1259 | 13 8 11 3 -1.
1260 | <_>
1261 | 13 9 11 1 3.
1262 | 0
1263 | <_>
1264 |
1265 | <_>
1266 | 13 18 4 3 -1.
1267 | <_>
1268 | 13 19 4 1 3.
1269 | 0
1270 | <_>
1271 |
1272 | <_>
1273 | 14 0 1 3 -1.
1274 | <_>
1275 | 14 1 1 1 3.
1276 | 0
1277 | <_>
1278 |
1279 | <_>
1280 | 14 8 10 10 -1.
1281 | <_>
1282 | 19 8 5 10 2.
1283 | 0
1284 | <_>
1285 |
1286 | <_>
1287 | 14 8 8 3 -1.
1288 | <_>
1289 | 14 9 8 1 3.
1290 | 0
1291 | <_>
1292 |
1293 | <_>
1294 | 14 9 2 3 -1.
1295 | <_>
1296 | 14 10 2 1 3.
1297 | 0
1298 | <_>
1299 |
1300 | <_>
1301 | 14 12 3 6 -1.
1302 | <_>
1303 | 14 14 3 2 3.
1304 | 0
1305 | <_>
1306 |
1307 | <_>
1308 | 14 12 8 12 -1.
1309 | <_>
1310 | 14 12 4 6 2.
1311 | <_>
1312 | 18 18 4 6 2.
1313 | 0
1314 | <_>
1315 |
1316 | <_>
1317 | 15 4 8 4 -1.
1318 | <_>
1319 | 15 6 8 2 2.
1320 | 0
1321 | <_>
1322 |
1323 | <_>
1324 | 15 5 8 3 -1.
1325 | <_>
1326 | 15 6 8 1 3.
1327 | 0
1328 | <_>
1329 |
1330 | <_>
1331 | 15 10 8 4 -1.
1332 | <_>
1333 | 15 12 8 2 2.
1334 | 0
1335 | <_>
1336 |
1337 | <_>
1338 | 15 12 5 6 -1.
1339 | <_>
1340 | 15 14 5 2 3.
1341 | 0
1342 | <_>
1343 |
1344 | <_>
1345 | 16 0 2 3 -1.
1346 | <_>
1347 | 17 0 1 3 2.
1348 | 0
1349 | <_>
1350 |
1351 | <_>
1352 | 16 0 6 16 -1.
1353 | <_>
1354 | 18 0 2 16 3.
1355 | 0
1356 | <_>
1357 |
1358 | <_>
1359 | 16 1 3 12 -1.
1360 | <_>
1361 | 17 1 1 12 3.
1362 | 0
1363 | <_>
1364 |
1365 | <_>
1366 | 16 6 2 2 -1.
1367 | <_>
1368 | 16 7 2 1 2.
1369 | 0
1370 | <_>
1371 |
1372 | <_>
1373 | 16 15 8 3 -1.
1374 | <_>
1375 | 16 16 8 1 3.
1376 | 0
1377 | <_>
1378 |
1379 | <_>
1380 | 16 22 4 1 -1.
1381 | <_>
1382 | 18 22 2 1 2.
1383 | 0
1384 | <_>
1385 |
1386 | <_>
1387 | 17 4 4 20 -1.
1388 | <_>
1389 | 17 4 2 10 2.
1390 | <_>
1391 | 19 14 2 10 2.
1392 | 0
1393 | <_>
1394 |
1395 | <_>
1396 | 18 0 1 21 -1.
1397 | <_>
1398 | 18 7 1 7 3.
1399 | 0
1400 | <_>
1401 |
1402 | <_>
1403 | 18 5 2 3 -1.
1404 | <_>
1405 | 18 6 2 1 3.
1406 | 0
1407 | <_>
1408 |
1409 | <_>
1410 | 19 8 3 2 -1.
1411 | <_>
1412 | 20 8 1 2 3.
1413 | 0
1414 | <_>
1415 |
1416 | <_>
1417 | 19 9 2 2 -1.
1418 | <_>
1419 | 19 9 1 1 2.
1420 | <_>
1421 | 20 10 1 1 2.
1422 | 0
1423 | <_>
1424 |
1425 | <_>
1426 | 20 5 2 3 -1.
1427 | <_>
1428 | 20 6 2 1 3.
1429 | 0
1430 | <_>
1431 |
1432 | <_>
1433 | 21 17 2 1 -1.
1434 | <_>
1435 | 22 17 1 1 2.
1436 | 0
1437 | <_>
1438 |
1439 | <_>
1440 | 22 0 2 17 -1.
1441 | <_>
1442 | 23 0 1 17 2.
1443 | 0
1444 | <_>
1445 |
1446 | <_>
1447 | 22 6 2 16 -1.
1448 | <_>
1449 | 23 6 1 16 2.
1450 | 0
1451 | <_>
1452 |
1453 | <_>
1454 | 22 8 2 2 -1.
1455 | <_>
1456 | 22 8 1 1 2.
1457 | <_>
1458 | 23 9 1 1 2.
1459 | 0
1460 |
1461 |
--------------------------------------------------------------------------------
/data/.gitignore:
--------------------------------------------------------------------------------
1 | *json
2 |
--------------------------------------------------------------------------------
/detector.py:
--------------------------------------------------------------------------------
1 | import numpy as np
2 | import cv2
3 |
4 | baseball_cascade = cv2.CascadeClassifier('baseball.xml')
5 | basketball_cascade = cv2.CascadeClassifier('basketball.xml')
6 | tennis_cascade = cv2.CascadeClassifier('tennis.xml')
7 |
8 | # testfile = 'satellite/training/pitch_baseball_220727025.png'
9 | # testfile = 'satellite/training/pitch_baseball_222703638.png'
10 | # testfile = 'satellite/training/pitch_baseball_223914194.png'
11 | # testfile = 'satellite/training/pitch_baseball_226905824.png'
12 | # testfile = 'satellite/training/pitch_baseball_227372226.png'
13 | # testfile = 'satellite/training/pitch_baseball_227683244.png'
14 |
15 | # testfile = 'satellite/detection/pitch_baseball_133230978.png'
16 | # testfile = 'satellite/detection/pitch_baseball_133593974.png'
17 | # testfile = 'satellite/detection/pitch_baseball_134874855.png'
18 | # testfile = 'satellite/detection/pitch_baseball_199130202.png'
19 | # testfile = 'satellite/detection/pitch_baseball_284527697.png'
20 | # testfile = 'satellite/detection/pitch_baseball_317137177.png'
21 | # testfile = 'satellite/detection/pitch_baseball_48331085.png'
22 | # testfile = 'satellite/detection/pitch_baseball_68467399.png'
23 | # testfile = 'satellite/detection/pitch_baseball_81189377.png'
24 | # testfile = 'satellite/detection/pitch_baseball_97575184.png'
25 |
26 | # testfile = 'satellite/detection/pitch_tennis_105660674.png'
27 | # testfile = 'satellite/detection/pitch_tennis_120231577.png'
28 | # testfile = 'satellite/detection/pitch_tennis_172547292.png'
29 | # testfile = 'satellite/detection/pitch_tennis_177425633.png'
30 | # testfile = 'satellite/detection/pitch_tennis_224740547.png'
31 | # testfile = 'satellite/detection/pitch_tennis_250911604.png'
32 | # testfile = 'satellite/detection/pitch_tennis_285058169.png'
33 | # testfile = 'satellite/detection/pitch_tennis_290182837.png'
34 | # testfile = 'satellite/detection/pitch_tennis_302813940.png'
35 | # testfile = 'satellite/detection/pitch_tennis_343232913.png'
36 |
37 | # testfile = 'satellite/detection/pitch_basketball_139165791.png'
38 | # testfile = 'satellite/detection/pitch_basketball_156416713.png'
39 | testfile = 'satellite/detection/pitch_basketball_242894925.png'
40 | # testfile = 'satellite/detection/pitch_basketball_256427642.png'
41 | # testfile = 'satellite/detection/pitch_basketball_271825251.png'
42 | # testfile = 'satellite/detection/pitch_basketball_276916820.png'
43 | # testfile = 'satellite/detection/pitch_basketball_302422677.png'
44 | # testfile = 'satellite/detection/pitch_basketball_331162643.png'
45 | # testfile = 'satellite/detection/pitch_basketball_332627356.png'
46 | # testfile = 'satellite/detection/pitch_basketball_48665083.png'
47 |
48 | img = cv2.imread(testfile)
49 | gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
50 |
51 | pitches = basketball_cascade.detectMultiScale(gray, minNeighbors=200)
52 | print 'Pitches found: %d' % len(pitches)
53 | for (x,y,w,h) in pitches:
54 | cv2.rectangle(img,(x,y),(x+w,y+h),(255,0,0),2)
55 |
56 | cv2.imshow('img', img)
57 | cv2.waitKey(0)
58 | cv2.destroyAllWindows()
59 |
--------------------------------------------------------------------------------
/empty_satellite.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/worldbank/ml4dev/d91f1b2a08067da31364dee60f07274d66929fa5/empty_satellite.png
--------------------------------------------------------------------------------
/fit/cascade-2000.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/worldbank/ml4dev/d91f1b2a08067da31364dee60f07274d66929fa5/fit/cascade-2000.png
--------------------------------------------------------------------------------
/fit/cascade-4000-2000_negative.csv:
--------------------------------------------------------------------------------
1 | 5057.94,0
2 | 49.76,10
3 | 28.83,20
4 | 20.04,30
5 | 15.16,40
6 | 11.81,50
7 | 9.7,60
8 | 7.83,70
9 | 6.83,80
10 | 5.88,90
11 | 5.15,100
12 | 4.55,110
13 | 4.1,120
14 | 3.72,130
15 | 3.32,140
16 | 3.06,150
17 | 2.81,160
18 | 2.55,170
19 | 2.32,180
20 | 2.06,190
21 | 1.9,200
22 | 1.8,210
23 | 1.68,220
24 | 1.57,230
25 | 1.5,240
26 | 1.38,250
27 | 1.3,260
28 | 1.21,270
29 | 1.13,280
30 | 1.03,290
31 | 0.97,300
32 | 0.94,310
33 | 0.94,320
34 | 0.9,330
35 | 0.86,340
36 | 0.8,350
37 | 0.78,360
38 | 0.76,370
39 | 0.72,380
40 | 0.67,390
41 | 0.66,400
42 | 0.62,410
43 | 0.6,420
44 | 0.59,430
45 | 0.54,440
46 | 0.53,450
47 | 0.51,460
48 | 0.5,470
49 | 0.47,480
50 | 0.45,490
51 | 0.43,500
52 |
--------------------------------------------------------------------------------
/fit/cascade-4000-2000_positive.csv:
--------------------------------------------------------------------------------
1 | 13466.23,0
2 | 109.29,10
3 | 67.82,20
4 | 50.15,30
5 | 39.99,40
6 | 32.95,50
7 | 27.75,60
8 | 24.05,70
9 | 21.12,80
10 | 18.66,90
11 | 16.78,100
12 | 15.29,110
13 | 14.03,120
14 | 12.86,130
15 | 11.86,140
16 | 10.81,150
17 | 9.96,160
18 | 9.25,170
19 | 8.7,180
20 | 8.22,190
21 | 7.73,200
22 | 7.18,210
23 | 6.77,220
24 | 6.38,230
25 | 6.09,240
26 | 5.8,250
27 | 5.56,260
28 | 5.42,270
29 | 5.28,280
30 | 5.08,290
31 | 4.87,300
32 | 4.72,310
33 | 4.51,320
34 | 4.36,330
35 | 4.18,340
36 | 4.0,350
37 | 3.88,360
38 | 3.78,370
39 | 3.64,380
40 | 3.51,390
41 | 3.4,400
42 | 3.35,410
43 | 3.22,420
44 | 3.1,430
45 | 3.02,440
46 | 2.91,450
47 | 2.82,460
48 | 2.76,470
49 | 2.68,480
50 | 2.56,490
51 | 2.48,500
52 |
--------------------------------------------------------------------------------
/fit/cascade-4000.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/worldbank/ml4dev/d91f1b2a08067da31364dee60f07274d66929fa5/fit/cascade-4000.png
--------------------------------------------------------------------------------
/fit/cascade-6000-3000_negative.csv:
--------------------------------------------------------------------------------
1 | 7430.73,0
2 | 65.97,10
3 | 39.4,20
4 | 28.63,30
5 | 22.14,40
6 | 18.02,50
7 | 14.84,60
8 | 12.67,70
9 | 11.06,80
10 | 9.76,90
11 | 8.72,100
12 | 7.93,110
13 | 7.1,120
14 | 6.35,130
15 | 5.83,140
16 | 5.42,150
17 | 5.06,160
18 | 4.72,170
19 | 4.39,180
20 | 4.13,190
21 | 3.9,200
22 | 3.71,210
23 | 3.5,220
24 | 3.28,230
25 | 2.99,240
26 | 2.84,250
27 | 2.64,260
28 | 2.47,270
29 | 2.38,280
30 | 2.29,290
31 | 2.17,300
32 | 2.07,310
33 | 1.99,320
34 | 1.88,330
35 | 1.79,340
36 | 1.75,350
37 | 1.71,360
38 | 1.66,370
39 | 1.63,380
40 | 1.57,390
41 | 1.52,400
42 | 1.47,410
43 | 1.42,420
44 | 1.37,430
45 | 1.33,440
46 | 1.29,450
47 | 1.25,460
48 | 1.22,470
49 | 1.17,480
50 | 1.11,490
51 | 1.08,500
52 |
--------------------------------------------------------------------------------
/fit/cascade-6000-3000_positive.csv:
--------------------------------------------------------------------------------
1 | 18992.17,0
2 | 137.03,10
3 | 88.17,20
4 | 66.64,30
5 | 53.23,40
6 | 44.6,50
7 | 38.23,60
8 | 33.3,70
9 | 29.57,80
10 | 26.49,90
11 | 24.08,100
12 | 22.14,110
13 | 20.36,120
14 | 18.73,130
15 | 17.51,140
16 | 16.33,150
17 | 15.31,160
18 | 14.23,170
19 | 13.4,180
20 | 12.41,190
21 | 11.8,200
22 | 11.15,210
23 | 10.63,220
24 | 10.06,230
25 | 9.65,240
26 | 9.21,250
27 | 8.76,260
28 | 8.37,270
29 | 8.06,280
30 | 7.79,290
31 | 7.52,300
32 | 7.27,310
33 | 7.0,320
34 | 6.81,330
35 | 6.56,340
36 | 6.43,350
37 | 6.23,360
38 | 6.07,370
39 | 5.92,380
40 | 5.72,390
41 | 5.57,400
42 | 5.36,410
43 | 5.16,420
44 | 5.05,430
45 | 4.91,440
46 | 4.81,450
47 | 4.7,460
48 | 4.56,470
49 | 4.46,480
50 | 4.35,490
51 | 4.28,500
52 |
--------------------------------------------------------------------------------
/fit/cascade-6000.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/worldbank/ml4dev/d91f1b2a08067da31364dee60f07274d66929fa5/fit/cascade-6000.png
--------------------------------------------------------------------------------
/fit/cascade-8000-4000_negative.csv:
--------------------------------------------------------------------------------
1 | 12576.92,0
2 | 97.56,10
3 | 58.73,20
4 | 42.08,30
5 | 33.08,40
6 | 27.63,50
7 | 23.78,60
8 | 20.72,70
9 | 18.13,80
10 | 16.11,90
11 | 14.49,100
12 | 13.31,110
13 | 12.18,120
14 | 11.22,130
15 | 10.41,140
16 | 9.7,150
17 | 9.11,160
18 | 8.48,170
19 | 7.92,180
20 | 7.47,190
21 | 7.1,200
22 | 6.75,210
23 | 6.38,220
24 | 6.15,230
25 | 5.84,240
26 | 5.71,250
27 | 5.52,260
28 | 5.28,270
29 | 5.11,280
30 | 4.88,290
31 | 4.69,300
32 | 4.55,310
33 | 4.38,320
34 | 4.19,330
35 | 4.03,340
36 | 3.89,350
37 | 3.78,360
38 | 3.63,370
39 | 3.5,380
40 | 3.35,390
41 | 3.21,400
42 | 3.15,410
43 | 3.07,420
44 | 2.93,430
45 | 2.8,440
46 | 2.73,450
47 | 2.66,460
48 | 2.58,470
49 | 2.51,480
50 | 2.43,490
51 | 2.38,500
52 |
--------------------------------------------------------------------------------
/fit/cascade-8000-4000_positive.csv:
--------------------------------------------------------------------------------
1 | 28539.15,0
2 | 177.79,10
3 | 116.51,20
4 | 87.85,30
5 | 71.7,40
6 | 61.28,50
7 | 53.09,60
8 | 46.99,70
9 | 42.09,80
10 | 38.42,90
11 | 35.26,100
12 | 32.67,110
13 | 30.35,120
14 | 28.03,130
15 | 26.11,140
16 | 24.44,150
17 | 23.18,160
18 | 21.91,170
19 | 20.64,180
20 | 19.56,190
21 | 18.56,200
22 | 17.8,210
23 | 17.03,220
24 | 16.45,230
25 | 15.83,240
26 | 15.01,250
27 | 14.42,260
28 | 13.79,270
29 | 13.2,280
30 | 12.75,290
31 | 12.18,300
32 | 11.83,310
33 | 11.48,320
34 | 11.15,330
35 | 10.74,340
36 | 10.51,350
37 | 10.25,360
38 | 9.92,370
39 | 9.7,380
40 | 9.48,390
41 | 9.21,400
42 | 8.96,410
43 | 8.74,420
44 | 8.53,430
45 | 8.3,440
46 | 8.14,450
47 | 7.98,460
48 | 7.8,470
49 | 7.57,480
50 | 7.35,490
51 | 7.13,500
52 |
--------------------------------------------------------------------------------
/fit/cascade-8000.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/worldbank/ml4dev/d91f1b2a08067da31364dee60f07274d66929fa5/fit/cascade-8000.png
--------------------------------------------------------------------------------
/fit/cascade-default_negative.csv:
--------------------------------------------------------------------------------
1 | 6401.81,0
2 | 57.13,10
3 | 33.34,20
4 | 23.18,30
5 | 17.48,40
6 | 14.03,50
7 | 11.67,60
8 | 9.68,70
9 | 8.17,80
10 | 7.08,90
11 | 6.32,100
12 | 5.7,110
13 | 5.0,120
14 | 4.48,130
15 | 4.12,140
16 | 3.71,150
17 | 3.38,160
18 | 3.08,170
19 | 2.88,180
20 | 2.67,190
21 | 2.47,200
22 | 2.26,210
23 | 2.11,220
24 | 2.01,230
25 | 1.92,240
26 | 1.8,250
27 | 1.73,260
28 | 1.63,270
29 | 1.59,280
30 | 1.53,290
31 | 1.51,300
32 | 1.43,310
33 | 1.35,320
34 | 1.3,330
35 | 1.24,340
36 | 1.21,350
37 | 1.15,360
38 | 1.15,370
39 | 1.13,380
40 | 1.08,390
41 | 1.04,400
42 | 0.97,410
43 | 0.93,420
44 | 0.88,430
45 | 0.88,440
46 | 0.86,450
47 | 0.82,460
48 | 0.82,470
49 | 0.8,480
50 | 0.79,490
51 | 0.77,500
52 |
--------------------------------------------------------------------------------
/fit/cascade-default_positive.csv:
--------------------------------------------------------------------------------
1 | 15427.75,0
2 | 117.57,10
3 | 74.51,20
4 | 55.29,30
5 | 44.16,40
6 | 36.79,50
7 | 30.96,60
8 | 26.74,70
9 | 23.33,80
10 | 20.94,90
11 | 19.2,100
12 | 17.47,110
13 | 16.07,120
14 | 14.75,130
15 | 13.69,140
16 | 12.7,150
17 | 11.73,160
18 | 10.97,170
19 | 10.3,180
20 | 9.56,190
21 | 9.0,200
22 | 8.53,210
23 | 8.08,220
24 | 7.71,230
25 | 7.43,240
26 | 7.09,250
27 | 6.8,260
28 | 6.46,270
29 | 6.11,280
30 | 5.98,290
31 | 5.76,300
32 | 5.54,310
33 | 5.33,320
34 | 5.11,330
35 | 4.85,340
36 | 4.69,350
37 | 4.54,360
38 | 4.39,370
39 | 4.31,380
40 | 4.15,390
41 | 4.05,400
42 | 3.91,410
43 | 3.81,420
44 | 3.73,430
45 | 3.6,440
46 | 3.56,450
47 | 3.47,460
48 | 3.36,470
49 | 3.25,480
50 | 3.22,490
51 | 3.18,500
52 |
--------------------------------------------------------------------------------
/info_baseball.dat:
--------------------------------------------------------------------------------
1 | satellite/training/pitch_baseball_107246803.png 1 528 482 223 314
2 | satellite/training/pitch_baseball_111720514.png 1 403 388 472 503
3 | satellite/training/pitch_baseball_120290722.png 1 356 385 567 508
4 | satellite/training/pitch_baseball_120479904.png 1 364 352 551 575
5 | satellite/training/pitch_baseball_121644198.png 1 401 398 477 483
6 | satellite/training/pitch_baseball_128547206.png 1 451 418 377 442
7 | satellite/training/pitch_baseball_133113533.png 1 442 463 395 353
8 | satellite/training/pitch_baseball_133114594.png 1 421 315 436 649
9 | satellite/training/pitch_baseball_133440716.png 1 490 495 298 288
10 | satellite/training/pitch_baseball_133609422.png 1 391 352 496 574
11 | satellite/training/pitch_baseball_133721103.png 1 493 465 292 348
12 | satellite/training/pitch_baseball_133721232.png 1 399 342 481 594
13 | satellite/training/pitch_baseball_133810421.png 1 476 478 326 322
14 | satellite/training/pitch_baseball_133836036.png 1 536 508 207 263
15 | satellite/training/pitch_baseball_134152312.png 1 433 381 413 517
16 | satellite/training/pitch_baseball_134200362.png 1 477 488 325 303
17 | satellite/training/pitch_baseball_134242990.png 1 567 553 145 172
18 | satellite/training/pitch_baseball_134279527.png 1 424 285 431 708
19 | satellite/training/pitch_baseball_134780019.png 1 447 508 384 263
20 | satellite/training/pitch_baseball_136902436.png 1 466 385 346 508
21 | satellite/training/pitch_baseball_137596887.png 1 535 539 209 201
22 | satellite/training/pitch_baseball_138557381.png 1 517 482 245 314
23 | satellite/training/pitch_baseball_140302296.png 1 432 480 414 318
24 | satellite/training/pitch_baseball_141444700.png 1 322 364 634 550
25 | satellite/training/pitch_baseball_153235092.png 1 552 555 175 168
26 | satellite/training/pitch_baseball_153738387.png 1 500 451 278 377
27 | satellite/training/pitch_baseball_164954919.png 1 479 473 320 333
28 | satellite/training/pitch_baseball_165166737.png 1 593 591 93 97
29 | satellite/training/pitch_baseball_165784389.png 1 411 414 456 451
30 | satellite/training/pitch_baseball_166624156.png 1 414 399 451 481
31 | satellite/training/pitch_baseball_166793886.png 1 442 396 394 487
32 | satellite/training/pitch_baseball_176080273.png 1 458 387 363 504
33 | satellite/training/pitch_baseball_178540274.png 1 544 542 191 195
34 | satellite/training/pitch_baseball_178555379.png 1 518 468 243 343
35 | satellite/training/pitch_baseball_186685981.png 1 545 542 188 195
36 | satellite/training/pitch_baseball_188044630.png 1 422 322 435 634
37 | satellite/training/pitch_baseball_191224073.png 1 423 396 433 486
38 | satellite/training/pitch_baseball_196934574.png 1 408 403 463 473
39 | satellite/training/pitch_baseball_201355439.png 1 434 454 411 371
40 | satellite/training/pitch_baseball_205108732.png 1 314 312 650 655
41 | satellite/training/pitch_baseball_207867553.png 1 320 311 638 656
42 | satellite/training/pitch_baseball_209272526.png 1 500 472 279 334
43 | satellite/training/pitch_baseball_212810110.png 1 410 375 458 529
44 | satellite/training/pitch_baseball_216508400.png 1 356 428 567 422
45 | satellite/training/pitch_baseball_220727025.png 1 443 392 393 495
46 | satellite/training/pitch_baseball_222703638.png 1 431 344 417 591
47 | satellite/training/pitch_baseball_223914194.png 1 487 477 305 324
48 | satellite/training/pitch_baseball_226905824.png 1 464 440 351 399
49 | satellite/training/pitch_baseball_227372226.png 1 418 449 442 381
50 | satellite/training/pitch_baseball_227683244.png 1 479 486 321 306
51 | satellite/training/pitch_baseball_230159625.png 1 422 444 434 390
52 | satellite/training/pitch_baseball_235011049.png 1 458 467 362 345
53 | satellite/training/pitch_baseball_236307887.png 1 473 475 332 328
54 | satellite/training/pitch_baseball_242002491.png 1 505 509 269 261
55 | satellite/training/pitch_baseball_243995482.png 1 391 400 497 478
56 | satellite/training/pitch_baseball_246076003.png 1 553 546 173 187
57 | satellite/training/pitch_baseball_251218152.png 1 515 509 248 260
58 | satellite/training/pitch_baseball_254148854.png 1 400 390 479 498
59 | satellite/training/pitch_baseball_256659486.png 1 404 365 471 548
60 | satellite/training/pitch_baseball_259122146.png 1 399 320 480 639
61 | satellite/training/pitch_baseball_260500955.png 1 385 402 509 474
62 | satellite/training/pitch_baseball_262562167.png 1 371 363 537 552
63 | satellite/training/pitch_baseball_264338949.png 1 478 470 322 338
64 | satellite/training/pitch_baseball_270764397.png 1 479 492 320 294
65 | satellite/training/pitch_baseball_272744408.png 1 420 452 439 374
66 | satellite/training/pitch_baseball_288866534.png 1 477 465 325 349
67 | satellite/training/pitch_baseball_289833708.png 1 452 472 374 335
68 | satellite/training/pitch_baseball_292657208.png 1 337 359 605 561
69 | satellite/training/pitch_baseball_298203410.png 1 477 432 325 414
70 | satellite/training/pitch_baseball_299872191.png 1 466 360 347 559
71 | satellite/training/pitch_baseball_30420773.png 1 536 532 206 214
72 | satellite/training/pitch_baseball_307074889.png 1 517 520 245 238
73 | satellite/training/pitch_baseball_315408364.png 1 385 359 508 561
74 | satellite/training/pitch_baseball_316111437.png 1 499 408 281 462
75 | satellite/training/pitch_baseball_316385418.png 1 480 483 319 313
76 | satellite/training/pitch_baseball_316895843.png 1 551 549 177 181
77 | satellite/training/pitch_baseball_32160472.png 1 442 461 395 356
78 | satellite/training/pitch_baseball_322785027.png 1 384 380 511 518
79 | satellite/training/pitch_baseball_324900146.png 1 506 531 267 216
80 | satellite/training/pitch_baseball_326314889.png 1 466 403 346 473
81 | satellite/training/pitch_baseball_329484982.png 1 404 403 471 472
82 | satellite/training/pitch_baseball_32985606.png 1 369 340 541 598
83 | satellite/training/pitch_baseball_333883615.png 1 512 507 254 265
84 | satellite/training/pitch_baseball_334800909.png 1 461 449 356 380
85 | satellite/training/pitch_baseball_338712760.png 1 398 327 483 625
86 | satellite/training/pitch_baseball_341005914.png 1 468 473 343 332
87 | satellite/training/pitch_baseball_42958100.png 1 330 300 619 678
88 | satellite/training/pitch_baseball_47389698.png 1 446 392 387 494
89 | satellite/training/pitch_baseball_49589413.png 1 335 315 609 648
90 | satellite/training/pitch_baseball_60012635.png 1 424 404 431 470
91 | satellite/training/pitch_baseball_60747512.png 1 405 408 469 463
92 | satellite/training/pitch_baseball_61263354.png 1 422 365 435 549
93 | satellite/training/pitch_baseball_62256321.png 1 486 467 306 344
94 | satellite/training/pitch_baseball_67286842.png 1 489 463 300 353
95 | satellite/training/pitch_baseball_81104552.png 1 463 437 353 404
96 | satellite/training/pitch_baseball_82863154.png 1 558 562 162 154
97 | satellite/training/pitch_baseball_93457006.png 1 395 387 488 505
98 | satellite/training/pitch_baseball_93630770.png 1 553 533 173 213
99 | satellite/training/pitch_baseball_97359147.png 1 450 406 378 467
100 |
--------------------------------------------------------------------------------
/info_baseball.vec:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/worldbank/ml4dev/d91f1b2a08067da31364dee60f07274d66929fa5/info_baseball.vec
--------------------------------------------------------------------------------
/info_basketball.dat:
--------------------------------------------------------------------------------
1 | satellite/training/pitch_basketball_106446325.png 1 573 587 132 105
2 | satellite/training/pitch_basketball_107298687.png 1 599 566 80 147
3 | satellite/training/pitch_basketball_108402022.png 1 596 574 87 130
4 | satellite/training/pitch_basketball_111646637.png 1 598 558 83 163
5 | satellite/training/pitch_basketball_112014160.png 1 573 539 132 201
6 | satellite/training/pitch_basketball_114449945.png 1 552 545 174 188
7 | satellite/training/pitch_basketball_117760909.png 1 570 586 138 106
8 | satellite/training/pitch_basketball_119294193.png 1 486 562 306 155
9 | satellite/training/pitch_basketball_120317673.png 1 592 582 95 114
10 | satellite/training/pitch_basketball_126670636.png 1 598 609 83 61
11 | satellite/training/pitch_basketball_128823561.png 1 570 549 139 181
12 | satellite/training/pitch_basketball_129011803.png 1 578 594 123 90
13 | satellite/training/pitch_basketball_132500356.png 1 594 559 90 161
14 | satellite/training/pitch_basketball_143294260.png 1 582 581 114 116
15 | satellite/training/pitch_basketball_147396028.png 1 596 545 86 189
16 | satellite/training/pitch_basketball_152094998.png 1 594 566 90 146
17 | satellite/training/pitch_basketball_154215337.png 1 573 553 132 173
18 | satellite/training/pitch_basketball_155946503.png 1 424 378 431 522
19 | satellite/training/pitch_basketball_161658427.png 1 608 579 63 121
20 | satellite/training/pitch_basketball_161806329.png 1 602 580 75 118
21 | satellite/training/pitch_basketball_162684646.png 1 609 581 61 117
22 | satellite/training/pitch_basketball_163045429.png 1 582 598 115 83
23 | satellite/training/pitch_basketball_164487339.png 1 598 587 83 104
24 | satellite/training/pitch_basketball_171794556.png 1 577 570 125 139
25 | satellite/training/pitch_basketball_177114011.png 1 564 579 151 121
26 | satellite/training/pitch_basketball_179883714.png 1 586 605 107 69
27 | satellite/training/pitch_basketball_179899060.png 1 606 584 67 111
28 | satellite/training/pitch_basketball_184134934.png 1 574 571 131 136
29 | satellite/training/pitch_basketball_184692349.png 1 599 569 81 141
30 | satellite/training/pitch_basketball_184708011.png 1 463 540 352 198
31 | satellite/training/pitch_basketball_186987449.png 1 530 522 218 234
32 | satellite/training/pitch_basketball_189579890.png 1 564 564 151 151
33 | satellite/training/pitch_basketball_191523635.png 1 440 408 398 462
34 | satellite/training/pitch_basketball_193020909.png 1 569 573 140 132
35 | satellite/training/pitch_basketball_195035706.png 1 560 546 158 187
36 | satellite/training/pitch_basketball_198680115.png 1 570 580 138 118
37 | satellite/training/pitch_basketball_199955238.png 1 590 588 98 102
38 | satellite/training/pitch_basketball_202062257.png 1 615 582 48 114
39 | satellite/training/pitch_basketball_215170696.png 1 582 601 115 77
40 | satellite/training/pitch_basketball_218186050.png 1 592 575 94 129
41 | satellite/training/pitch_basketball_225173924.png 1 587 580 105 119
42 | satellite/training/pitch_basketball_229030196.png 1 610 590 59 99
43 | satellite/training/pitch_basketball_229477453.png 1 597 607 85 65
44 | satellite/training/pitch_basketball_230289327.png 1 606 575 67 128
45 | satellite/training/pitch_basketball_230492173.png 1 574 580 130 118
46 | satellite/training/pitch_basketball_230586350.png 1 556 563 167 153
47 | satellite/training/pitch_basketball_230976787.png 1 593 564 93 151
48 | satellite/training/pitch_basketball_233699108.png 1 532 537 214 204
49 | satellite/training/pitch_basketball_237183806.png 1 618 595 42 88
50 | satellite/training/pitch_basketball_239944668.png 1 553 563 173 152
51 | satellite/training/pitch_basketball_245538094.png 1 614 593 50 93
52 | satellite/training/pitch_basketball_255451684.png 1 607 575 65 129
53 | satellite/training/pitch_basketball_263433037.png 1 579 577 121 125
54 | satellite/training/pitch_basketball_264070499.png 1 603 616 72 47
55 | satellite/training/pitch_basketball_264693650.png 1 603 597 73 84
56 | satellite/training/pitch_basketball_268716080.png 1 577 580 125 118
57 | satellite/training/pitch_basketball_274458165.png 1 571 576 136 127
58 | satellite/training/pitch_basketball_275288643.png 1 576 599 127 81
59 | satellite/training/pitch_basketball_278139726.png 1 586 581 107 116
60 | satellite/training/pitch_basketball_280234267.png 1 620 608 38 62
61 | satellite/training/pitch_basketball_280672447.png 1 567 542 144 194
62 | satellite/training/pitch_basketball_281978729.png 1 551 571 177 137
63 | satellite/training/pitch_basketball_284328109.png 1 593 576 92 126
64 | satellite/training/pitch_basketball_284738497.png 1 565 549 149 180
65 | satellite/training/pitch_basketball_284879632.png 1 568 580 143 118
66 | satellite/training/pitch_basketball_286973173.png 1 585 601 109 76
67 | satellite/training/pitch_basketball_288139956.png 1 575 584 128 111
68 | satellite/training/pitch_basketball_289664354.png 1 603 589 73 101
69 | satellite/training/pitch_basketball_290206698.png 1 564 543 151 193
70 | satellite/training/pitch_basketball_291496970.png 1 604 605 70 69
71 | satellite/training/pitch_basketball_298111881.png 1 593 550 93 178
72 | satellite/training/pitch_basketball_30031692.png 1 536 535 206 208
73 | satellite/training/pitch_basketball_304866406.png 1 602 594 74 91
74 | satellite/training/pitch_basketball_305185086.png 1 576 603 126 73
75 | satellite/training/pitch_basketball_309747119.png 1 593 558 92 163
76 | satellite/training/pitch_basketball_310359939.png 1 611 594 56 91
77 | satellite/training/pitch_basketball_310477052.png 1 592 565 94 149
78 | satellite/training/pitch_basketball_312341229.png 1 566 617 146 45
79 | satellite/training/pitch_basketball_319188645.png 1 609 605 61 69
80 | satellite/training/pitch_basketball_321320386.png 1 609 589 60 100
81 | satellite/training/pitch_basketball_326481936.png 1 579 564 120 151
82 | satellite/training/pitch_basketball_336472888.png 1 588 581 102 116
83 | satellite/training/pitch_basketball_339656072.png 1 574 600 130 79
84 | satellite/training/pitch_basketball_344846859.png 1 611 585 57 108
85 | satellite/training/pitch_basketball_348046491.png 1 580 559 118 160
86 | satellite/training/pitch_basketball_348082048.png 1 604 602 70 75
87 | satellite/training/pitch_basketball_349239716.png 1 587 574 104 131
88 | satellite/training/pitch_basketball_351044062.png 1 603 594 73 91
89 | satellite/training/pitch_basketball_353387249.png 1 511 480 257 319
90 | satellite/training/pitch_basketball_50093745.png 1 556 531 166 217
91 | satellite/training/pitch_basketball_52584218.png 1 607 567 64 144
92 | satellite/training/pitch_basketball_59780194.png 1 602 561 75 156
93 | satellite/training/pitch_basketball_60785704.png 1 475 409 328 460
94 | satellite/training/pitch_basketball_62262943.png 1 575 574 128 130
95 | satellite/training/pitch_basketball_68790150.png 1 567 591 145 97
96 | satellite/training/pitch_basketball_72499002.png 1 523 608 233 63
97 | satellite/training/pitch_basketball_76723013.png 1 498 527 283 224
98 | satellite/training/pitch_basketball_87662533.png 1 534 564 211 151
99 | satellite/training/pitch_basketball_95345705.png 1 574 584 130 110
100 | satellite/training/pitch_basketball_96744594.png 1 571 569 136 141
101 |
--------------------------------------------------------------------------------
/info_basketball.vec:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/worldbank/ml4dev/d91f1b2a08067da31364dee60f07274d66929fa5/info_basketball.vec
--------------------------------------------------------------------------------
/info_tennis.vec:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/worldbank/ml4dev/d91f1b2a08067da31364dee60f07274d66929fa5/info_tennis.vec
--------------------------------------------------------------------------------
/output/cascade-4000-2000_negative.csv:
--------------------------------------------------------------------------------
1 | 10.0,0
2 | 10.0,10
3 | 10.0,20
4 | 10.0,30
5 | 10.0,40
6 | 10.0,50
7 | 10.0,60
8 | 10.0,70
9 | 10.0,80
10 | 10.0,90
11 | 10.0,100
12 | 10.0,110
13 | 10.0,120
14 | 10.0,130
15 | 10.0,140
16 | 10.0,150
17 | 10.0,160
18 | 10.0,170
19 | 10.0,180
20 | 10.0,190
21 | 10.0,200
22 | 10.0,210
23 | 10.0,220
24 | 10.0,230
25 | 10.0,240
26 | 10.0,250
27 | 10.0,260
28 | 10.0,270
29 | 10.0,280
30 | 10.0,290
31 | 10.0,300
32 | 10.0,310
33 | 10.0,320
34 | 10.0,330
35 | 10.0,340
36 | 10.0,350
37 | 10.0,360
38 | 10.0,370
39 | 10.0,380
40 | 10.0,390
41 | 10.0,400
42 | 10.0,410
43 | 10.0,420
44 | 10.0,430
45 | 10.0,440
46 | 10.0,450
47 | 10.0,460
48 | 10.0,470
49 | 10.0,480
50 | 10.0,490
51 | 10.0,500
52 |
--------------------------------------------------------------------------------
/output/cascade-4000-2000_positive.csv:
--------------------------------------------------------------------------------
1 | 2.0,0
2 | 2.0,10
3 | 2.0,20
4 | 2.0,30
5 | 2.0,40
6 | 2.0,50
7 | 2.0,60
8 | 2.0,70
9 | 2.0,80
10 | 2.0,90
11 | 2.0,100
12 | 2.0,110
13 | 2.0,120
14 | 2.0,130
15 | 2.0,140
16 | 2.0,150
17 | 2.0,160
18 | 2.0,170
19 | 2.0,180
20 | 2.0,190
21 | 2.0,200
22 | 2.0,210
23 | 2.0,220
24 | 2.0,230
25 | 2.0,240
26 | 2.0,250
27 | 2.0,260
28 | 2.0,270
29 | 2.0,280
30 | 2.0,290
31 | 2.0,300
32 | 2.0,310
33 | 2.0,320
34 | 2.0,330
35 | 2.0,340
36 | 2.0,350
37 | 2.0,360
38 | 2.0,370
39 | 2.0,380
40 | 2.0,390
41 | 2.0,400
42 | 2.0,410
43 | 2.0,420
44 | 2.0,430
45 | 2.0,440
46 | 2.0,450
47 | 2.0,460
48 | 2.0,470
49 | 2.0,480
50 | 2.0,490
51 | 2.0,500
52 |
--------------------------------------------------------------------------------
/output/cascade-6000-3000_negative.csv:
--------------------------------------------------------------------------------
1 | 10.0,0
2 | 10.0,10
3 | 10.0,20
4 | 10.0,30
5 | 10.0,40
6 | 10.0,50
7 | 10.0,60
8 | 10.0,70
9 | 10.0,80
10 | 10.0,90
11 | 10.0,100
12 | 10.0,110
13 | 10.0,120
14 | 10.0,130
15 | 10.0,140
16 | 10.0,150
17 | 10.0,160
18 | 10.0,170
19 | 10.0,180
20 | 10.0,190
21 | 10.0,200
22 | 10.0,210
23 | 10.0,220
24 | 10.0,230
25 | 10.0,240
26 | 10.0,250
27 | 10.0,260
28 | 10.0,270
29 | 10.0,280
30 | 10.0,290
31 | 10.0,300
32 | 10.0,310
33 | 10.0,320
34 | 10.0,330
35 | 10.0,340
36 | 10.0,350
37 | 10.0,360
38 | 10.0,370
39 | 10.0,380
40 | 10.0,390
41 | 10.0,400
42 | 10.0,410
43 | 10.0,420
44 | 10.0,430
45 | 10.0,440
46 | 10.0,450
47 | 10.0,460
48 | 10.0,470
49 | 10.0,480
50 | 10.0,490
51 | 10.0,500
52 |
--------------------------------------------------------------------------------
/output/cascade-6000-3000_positive.csv:
--------------------------------------------------------------------------------
1 | 2.0,0
2 | 2.0,10
3 | 2.0,20
4 | 2.0,30
5 | 2.0,40
6 | 2.0,50
7 | 2.0,60
8 | 2.0,70
9 | 2.0,80
10 | 2.0,90
11 | 2.0,100
12 | 2.0,110
13 | 2.0,120
14 | 2.0,130
15 | 2.0,140
16 | 2.0,150
17 | 2.0,160
18 | 2.0,170
19 | 2.0,180
20 | 2.0,190
21 | 2.0,200
22 | 2.0,210
23 | 2.0,220
24 | 2.0,230
25 | 2.0,240
26 | 2.0,250
27 | 2.0,260
28 | 2.0,270
29 | 2.0,280
30 | 2.0,290
31 | 2.0,300
32 | 2.0,310
33 | 2.0,320
34 | 2.0,330
35 | 2.0,340
36 | 2.0,350
37 | 2.0,360
38 | 2.0,370
39 | 2.0,380
40 | 2.0,390
41 | 2.0,400
42 | 2.0,410
43 | 2.0,420
44 | 2.0,430
45 | 2.0,440
46 | 2.0,450
47 | 2.0,460
48 | 2.0,470
49 | 2.0,480
50 | 2.0,490
51 | 2.0,500
52 |
--------------------------------------------------------------------------------
/output/cascade-8000-4000_negative.csv:
--------------------------------------------------------------------------------
1 | 10.0,0
2 | 10.0,10
3 | 10.0,20
4 | 10.0,30
5 | 10.0,40
6 | 10.0,50
7 | 10.0,60
8 | 10.0,70
9 | 10.0,80
10 | 10.0,90
11 | 10.0,100
12 | 10.0,110
13 | 10.0,120
14 | 10.0,130
15 | 10.0,140
16 | 10.0,150
17 | 10.0,160
18 | 10.0,170
19 | 10.0,180
20 | 10.0,190
21 | 10.0,200
22 | 10.0,210
23 | 10.0,220
24 | 10.0,230
25 | 10.0,240
26 | 10.0,250
27 | 10.0,260
28 | 10.0,270
29 | 10.0,280
30 | 10.0,290
31 | 10.0,300
32 | 10.0,310
33 | 10.0,320
34 | 10.0,330
35 | 10.0,340
36 | 10.0,350
37 | 10.0,360
38 | 10.0,370
39 | 10.0,380
40 | 10.0,390
41 | 10.0,400
42 | 10.0,410
43 | 10.0,420
44 | 10.0,430
45 | 10.0,440
46 | 10.0,450
47 | 10.0,460
48 | 10.0,470
49 | 10.0,480
50 | 10.0,490
51 | 10.0,500
52 |
--------------------------------------------------------------------------------
/output/cascade-8000-4000_positive.csv:
--------------------------------------------------------------------------------
1 | 2.0,0
2 | 2.0,10
3 | 2.0,20
4 | 2.0,30
5 | 2.0,40
6 | 2.0,50
7 | 2.0,60
8 | 2.0,70
9 | 2.0,80
10 | 2.0,90
11 | 2.0,100
12 | 2.0,110
13 | 2.0,120
14 | 2.0,130
15 | 2.0,140
16 | 2.0,150
17 | 2.0,160
18 | 2.0,170
19 | 2.0,180
20 | 2.0,190
21 | 2.0,200
22 | 2.0,210
23 | 2.0,220
24 | 2.0,230
25 | 2.0,240
26 | 2.0,250
27 | 2.0,260
28 | 2.0,270
29 | 2.0,280
30 | 2.0,290
31 | 2.0,300
32 | 2.0,310
33 | 2.0,320
34 | 2.0,330
35 | 2.0,340
36 | 2.0,350
37 | 2.0,360
38 | 2.0,370
39 | 2.0,380
40 | 2.0,390
41 | 2.0,400
42 | 2.0,410
43 | 2.0,420
44 | 2.0,430
45 | 2.0,440
46 | 2.0,450
47 | 2.0,460
48 | 2.0,470
49 | 2.0,480
50 | 2.0,490
51 | 2.0,500
52 |
--------------------------------------------------------------------------------
/output/cascade-default_negative.csv:
--------------------------------------------------------------------------------
1 | 10.0,0
2 | 10.0,10
3 | 10.0,20
4 | 10.0,30
5 | 10.0,40
6 | 10.0,50
7 | 10.0,60
8 | 10.0,70
9 | 10.0,80
10 | 10.0,90
11 | 10.0,100
12 | 10.0,110
13 | 10.0,120
14 | 10.0,130
15 | 10.0,140
16 | 10.0,150
17 | 10.0,160
18 | 10.0,170
19 | 10.0,180
20 | 10.0,190
21 | 10.0,200
22 | 10.0,210
23 | 10.0,220
24 | 10.0,230
25 | 10.0,240
26 | 10.0,250
27 | 10.0,260
28 | 10.0,270
29 | 10.0,280
30 | 10.0,290
31 | 10.0,300
32 | 10.0,310
33 | 10.0,320
34 | 10.0,330
35 | 10.0,340
36 | 10.0,350
37 | 10.0,360
38 | 10.0,370
39 | 10.0,380
40 | 10.0,390
41 | 10.0,400
42 | 10.0,410
43 | 10.0,420
44 | 10.0,430
45 | 10.0,440
46 | 10.0,450
47 | 10.0,460
48 | 10.0,470
49 | 10.0,480
50 | 10.0,490
51 | 10.0,500
52 |
--------------------------------------------------------------------------------
/output/cascade-default_positive.csv:
--------------------------------------------------------------------------------
1 | 2.0,0
2 | 2.0,10
3 | 2.0,20
4 | 2.0,30
5 | 2.0,40
6 | 2.0,50
7 | 2.0,60
8 | 2.0,70
9 | 2.0,80
10 | 2.0,90
11 | 2.0,100
12 | 2.0,110
13 | 2.0,120
14 | 2.0,130
15 | 2.0,140
16 | 2.0,150
17 | 2.0,160
18 | 2.0,170
19 | 2.0,180
20 | 2.0,190
21 | 2.0,200
22 | 2.0,210
23 | 2.0,220
24 | 2.0,230
25 | 2.0,240
26 | 2.0,250
27 | 2.0,260
28 | 2.0,270
29 | 2.0,280
30 | 2.0,290
31 | 2.0,300
32 | 2.0,310
33 | 2.0,320
34 | 2.0,330
35 | 2.0,340
36 | 2.0,350
37 | 2.0,360
38 | 2.0,370
39 | 2.0,380
40 | 2.0,390
41 | 2.0,400
42 | 2.0,410
43 | 2.0,420
44 | 2.0,430
45 | 2.0,440
46 | 2.0,450
47 | 2.0,460
48 | 2.0,470
49 | 2.0,480
50 | 2.0,490
51 | 2.0,500
52 |
--------------------------------------------------------------------------------
/readme_images/image00.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/worldbank/ml4dev/d91f1b2a08067da31364dee60f07274d66929fa5/readme_images/image00.jpg
--------------------------------------------------------------------------------
/readme_images/image01.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/worldbank/ml4dev/d91f1b2a08067da31364dee60f07274d66929fa5/readme_images/image01.png
--------------------------------------------------------------------------------
/readme_images/image02.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/worldbank/ml4dev/d91f1b2a08067da31364dee60f07274d66929fa5/readme_images/image02.png
--------------------------------------------------------------------------------
/readme_images/image03.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/worldbank/ml4dev/d91f1b2a08067da31364dee60f07274d66929fa5/readme_images/image03.png
--------------------------------------------------------------------------------
/readme_images/image04.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/worldbank/ml4dev/d91f1b2a08067da31364dee60f07274d66929fa5/readme_images/image04.png
--------------------------------------------------------------------------------
/readme_images/image05.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/worldbank/ml4dev/d91f1b2a08067da31364dee60f07274d66929fa5/readme_images/image05.jpg
--------------------------------------------------------------------------------
/readme_images/image06.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/worldbank/ml4dev/d91f1b2a08067da31364dee60f07274d66929fa5/readme_images/image06.png
--------------------------------------------------------------------------------
/readme_images/image07.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/worldbank/ml4dev/d91f1b2a08067da31364dee60f07274d66929fa5/readme_images/image07.png
--------------------------------------------------------------------------------
/readme_images/image08.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/worldbank/ml4dev/d91f1b2a08067da31364dee60f07274d66929fa5/readme_images/image08.jpg
--------------------------------------------------------------------------------
/readme_images/image09.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/worldbank/ml4dev/d91f1b2a08067da31364dee60f07274d66929fa5/readme_images/image09.png
--------------------------------------------------------------------------------
/readme_images/image10.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/worldbank/ml4dev/d91f1b2a08067da31364dee60f07274d66929fa5/readme_images/image10.png
--------------------------------------------------------------------------------
/readme_images/image11.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/worldbank/ml4dev/d91f1b2a08067da31364dee60f07274d66929fa5/readme_images/image11.png
--------------------------------------------------------------------------------
/readme_images/image12.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/worldbank/ml4dev/d91f1b2a08067da31364dee60f07274d66929fa5/readme_images/image12.png
--------------------------------------------------------------------------------
/restwice:
--------------------------------------------------------------------------------
1 | ../restwice/restwice
--------------------------------------------------------------------------------
/samples-4000/log.txt:
--------------------------------------------------------------------------------
1 | 500
2 | output/cascade-4000-2000.xml
3 | satellite/fit/pitch_tennis_110313406.png
4 | satellite/fit/pitch_tennis_114723221.png
5 | satellite/fit/pitch_tennis_120326835.png
6 | satellite/fit/pitch_tennis_133651567.png
7 | satellite/fit/pitch_tennis_136824352.png
8 | satellite/fit/pitch_tennis_141691478.png
9 | satellite/fit/pitch_tennis_148413088.png
10 | satellite/fit/pitch_tennis_152285384.png
11 | satellite/fit/pitch_tennis_155380778.png
12 | satellite/fit/pitch_tennis_162504845.png
13 | satellite/fit/pitch_tennis_171450043.png
14 | satellite/fit/pitch_tennis_171734081.png
15 | satellite/fit/pitch_tennis_175512456.png
16 | satellite/fit/pitch_tennis_178311659.png
17 | satellite/fit/pitch_tennis_181133109.png
18 | satellite/fit/pitch_tennis_186239861.png
19 | satellite/fit/pitch_tennis_186995695.png
20 | satellite/fit/pitch_tennis_189930499.png
21 | satellite/fit/pitch_tennis_192560171.png
22 | satellite/fit/pitch_tennis_193861733.png
23 | satellite/fit/pitch_tennis_199751729.png
24 | satellite/fit/pitch_tennis_202064298.png
25 | satellite/fit/pitch_tennis_204662567.png
26 | satellite/fit/pitch_tennis_205818631.png
27 | satellite/fit/pitch_tennis_208546347.png
28 | satellite/fit/pitch_tennis_217387183.png
29 | satellite/fit/pitch_tennis_219033849.png
30 | satellite/fit/pitch_tennis_220743556.png
31 | satellite/fit/pitch_tennis_222723259.png
32 | satellite/fit/pitch_tennis_223630209.png
33 | satellite/fit/pitch_tennis_229234470.png
34 | satellite/fit/pitch_tennis_230522646.png
35 | satellite/fit/pitch_tennis_230523671.png
36 | satellite/fit/pitch_tennis_232532179.png
37 | satellite/fit/pitch_tennis_234063526.png
38 | satellite/fit/pitch_tennis_235954361.png
39 | satellite/fit/pitch_tennis_237694607.png
40 | satellite/fit/pitch_tennis_237719392.png
41 | satellite/fit/pitch_tennis_237960927.png
42 | satellite/fit/pitch_tennis_242166981.png
43 | satellite/fit/pitch_tennis_250480344.png
44 | satellite/fit/pitch_tennis_251357341.png
45 | satellite/fit/pitch_tennis_256261837.png
46 | satellite/fit/pitch_tennis_256658317.png
47 | satellite/fit/pitch_tennis_258578285.png
48 | satellite/fit/pitch_tennis_260823098.png
49 | satellite/fit/pitch_tennis_263289776.png
50 | satellite/fit/pitch_tennis_264313994.png
51 | satellite/fit/pitch_tennis_264517970.png
52 | satellite/fit/pitch_tennis_264851435.png
53 | satellite/fit/pitch_tennis_271954387.png
54 | satellite/fit/pitch_tennis_272161149.png
55 | satellite/fit/pitch_tennis_273065523.png
56 | satellite/fit/pitch_tennis_277814673.png
57 | satellite/fit/pitch_tennis_28523251.png
58 | satellite/fit/pitch_tennis_286076116.png
59 | satellite/fit/pitch_tennis_288472306.png
60 | satellite/fit/pitch_tennis_288495807.png
61 | satellite/fit/pitch_tennis_289676878.png
62 | satellite/fit/pitch_tennis_289926168.png
63 | satellite/fit/pitch_tennis_29657956.png
64 | satellite/fit/pitch_tennis_301415967.png
65 | satellite/fit/pitch_tennis_304124445.png
66 | satellite/fit/pitch_tennis_304374262.png
67 | satellite/fit/pitch_tennis_304616585.png
68 | satellite/fit/pitch_tennis_30588350.png
69 | satellite/fit/pitch_tennis_309839154.png
70 | satellite/fit/pitch_tennis_311197666.png
71 | satellite/fit/pitch_tennis_313041115.png
72 | satellite/fit/pitch_tennis_313195008.png
73 | satellite/fit/pitch_tennis_313741459.png
74 | satellite/fit/pitch_tennis_314919709.png
75 | satellite/fit/pitch_tennis_31542911.png
76 | satellite/fit/pitch_tennis_318716897.png
77 | satellite/fit/pitch_tennis_320856728.png
78 | satellite/fit/pitch_tennis_323380205.png
79 | satellite/fit/pitch_tennis_330176606.png
80 | satellite/fit/pitch_tennis_331078930.png
81 | satellite/fit/pitch_tennis_333933280.png
82 | satellite/fit/pitch_tennis_333933310.png
83 | satellite/fit/pitch_tennis_33565582.png
84 | satellite/fit/pitch_tennis_338406171.png
85 | satellite/fit/pitch_tennis_339751828.png
86 | satellite/fit/pitch_tennis_341500460.png
87 | satellite/fit/pitch_tennis_342222952.png
88 | satellite/fit/pitch_tennis_352442831.png
89 | satellite/fit/pitch_tennis_38084929.png
90 | satellite/fit/pitch_tennis_45749574.png
91 | satellite/fit/pitch_tennis_55880285.png
92 | satellite/fit/pitch_tennis_55942334.png
93 | satellite/fit/pitch_tennis_56235510.png
94 | satellite/fit/pitch_tennis_60945125.png
95 | satellite/fit/pitch_tennis_65768084.png
96 | satellite/fit/pitch_tennis_75505105.png
97 | satellite/fit/pitch_tennis_76345300.png
98 | satellite/fit/pitch_tennis_76793132.png
99 | satellite/fit/pitch_tennis_90086315.png
100 | satellite/fit/pitch_tennis_91466119.png
101 | satellite/fit/pitch_tennis_92813225.png
102 | satellite/fit/pitch_tennis_95750002.png
103 | satellite/fit/negative/negative_1054448059.png
104 | ** negative file satellite/fit/negative/negative_1054448059.png has 1 pitches **
105 | satellite/fit/negative/negative_1123551733.png
106 | satellite/fit/negative/negative_1176350899.png
107 | satellite/fit/negative/negative_1321111981.png
108 | satellite/fit/negative/negative_1396432199.png
109 | satellite/fit/negative/negative_1457414351.png
110 | satellite/fit/negative/negative_1457850650.png
111 | satellite/fit/negative/negative_1461464772.png
112 | satellite/fit/negative/negative_1464686382.png
113 | satellite/fit/negative/negative_1465167344.png
114 | ** negative file satellite/fit/negative/negative_1465167344.png has 2 pitches **
115 | satellite/fit/negative/negative_1467378302.png
116 | ** negative file satellite/fit/negative/negative_1467378302.png has 1 pitches **
117 | satellite/fit/negative/negative_1470640677.png
118 | satellite/fit/negative/negative_1470661051.png
119 | satellite/fit/negative/negative_1471745309.png
120 | satellite/fit/negative/negative_1473297824.png
121 | satellite/fit/negative/negative_1474989746.png
122 | ** negative file satellite/fit/negative/negative_1474989746.png has 1 pitches **
123 | satellite/fit/negative/negative_1475365715.png
124 | satellite/fit/negative/negative_1476702013.png
125 | satellite/fit/negative/negative_1477084773.png
126 | satellite/fit/negative/negative_1477730452.png
127 | satellite/fit/negative/negative_1480184230.png
128 | satellite/fit/negative/negative_1480459239.png
129 | satellite/fit/negative/negative_1482118514.png
130 | satellite/fit/negative/negative_1513152192.png
131 | ** negative file satellite/fit/negative/negative_1513152192.png has 1 pitches **
132 | satellite/fit/negative/negative_1627501413.png
133 | ** negative file satellite/fit/negative/negative_1627501413.png has 4 pitches **
134 | satellite/fit/negative/negative_1653734705.png
135 | satellite/fit/negative/negative_1655419340.png
136 | satellite/fit/negative/negative_1661852789.png
137 | ** negative file satellite/fit/negative/negative_1661852789.png has 1 pitches **
138 | satellite/fit/negative/negative_1747358322.png
139 | satellite/fit/negative/negative_1772769027.png
140 | satellite/fit/negative/negative_1805579443.png
141 | satellite/fit/negative/negative_1825833634.png
142 | ** negative file satellite/fit/negative/negative_1825833634.png has 2 pitches **
143 | satellite/fit/negative/negative_1843480795.png
144 | satellite/fit/negative/negative_1974809346.png
145 | ** negative file satellite/fit/negative/negative_1974809346.png has 5 pitches **
146 | satellite/fit/negative/negative_2003535811.png
147 | satellite/fit/negative/negative_2030882909.png
148 | ** negative file satellite/fit/negative/negative_2030882909.png has 1 pitches **
149 | satellite/fit/negative/negative_2043189819.png
150 | ** negative file satellite/fit/negative/negative_2043189819.png has 6 pitches **
151 | satellite/fit/negative/negative_2113073282.png
152 | satellite/fit/negative/negative_2121212355.png
153 | satellite/fit/negative/negative_2211175154.png
154 | satellite/fit/negative/negative_2258839703.png
155 | satellite/fit/negative/negative_2274413835.png
156 | satellite/fit/negative/negative_2287905808.png
157 | satellite/fit/negative/negative_2305834780.png
158 | satellite/fit/negative/negative_2309374042.png
159 | satellite/fit/negative/negative_2358136413.png
160 | satellite/fit/negative/negative_2360771443.png
161 | satellite/fit/negative/negative_2361112097.png
162 | satellite/fit/negative/negative_2406350247.png
163 | satellite/fit/negative/negative_2421237405.png
164 | satellite/fit/negative/negative_2422081925.png
165 | satellite/fit/negative/negative_2429711238.png
166 | satellite/fit/negative/negative_2466582036.png
167 | satellite/fit/negative/negative_2471258367.png
168 | satellite/fit/negative/negative_2477241031.png
169 | satellite/fit/negative/negative_2531551300.png
170 | satellite/fit/negative/negative_2540800194.png
171 | satellite/fit/negative/negative_2555875397.png
172 | satellite/fit/negative/negative_2572171759.png
173 | satellite/fit/negative/negative_2624359214.png
174 | satellite/fit/negative/negative_2693088779.png
175 | satellite/fit/negative/negative_2705330394.png
176 | satellite/fit/negative/negative_2757467115.png
177 | ** negative file satellite/fit/negative/negative_2757467115.png has 8 pitches **
178 | satellite/fit/negative/negative_276105906.png
179 | satellite/fit/negative/negative_2822820412.png
180 | ** negative file satellite/fit/negative/negative_2822820412.png has 1 pitches **
181 | satellite/fit/negative/negative_2830774341.png
182 | satellite/fit/negative/negative_2834915561.png
183 | satellite/fit/negative/negative_2880112018.png
184 | satellite/fit/negative/negative_2896187992.png
185 | satellite/fit/negative/negative_3014461260.png
186 | satellite/fit/negative/negative_3040929470.png
187 | satellite/fit/negative/negative_3051212556.png
188 | satellite/fit/negative/negative_3056166261.png
189 | ** negative file satellite/fit/negative/negative_3056166261.png has 1 pitches **
190 | satellite/fit/negative/negative_3071078175.png
191 | satellite/fit/negative/negative_3077264733.png
192 | satellite/fit/negative/negative_3088028046.png
193 | satellite/fit/negative/negative_3102549337.png
194 | satellite/fit/negative/negative_3103076564.png
195 | satellite/fit/negative/negative_3111950952.png
196 | satellite/fit/negative/negative_3126925358.png
197 | satellite/fit/negative/negative_3169835867.png
198 | satellite/fit/negative/negative_3225222626.png
199 | satellite/fit/negative/negative_3225294715.png
200 | satellite/fit/negative/negative_3235605810.png
201 | satellite/fit/negative/negative_3246662073.png
202 | satellite/fit/negative/negative_3277437529.png
203 | ** negative file satellite/fit/negative/negative_3277437529.png has 2 pitches **
204 | satellite/fit/negative/negative_3283011137.png
205 | ** negative file satellite/fit/negative/negative_3283011137.png has 2 pitches **
206 | satellite/fit/negative/negative_335718524.png
207 | satellite/fit/negative/negative_3366871779.png
208 | satellite/fit/negative/negative_3378482002.png
209 | satellite/fit/negative/negative_339267309.png
210 | satellite/fit/negative/negative_3409823100.png
211 | ** negative file satellite/fit/negative/negative_3409823100.png has 1 pitches **
212 | satellite/fit/negative/negative_3419669977.png
213 | satellite/fit/negative/negative_3447521151.png
214 | satellite/fit/negative/negative_3462627717.png
215 | satellite/fit/negative/negative_3487901286.png
216 | ** negative file satellite/fit/negative/negative_3487901286.png has 3 pitches **
217 | satellite/fit/negative/negative_417268643.png
218 | satellite/fit/negative/negative_428997728.png
219 | satellite/fit/negative/negative_596013538.png
220 | satellite/fit/negative/negative_637533520.png
221 | pos_percentage = 73.0
222 | neg_percentage = 82.0
--------------------------------------------------------------------------------
/satellite/.gitignore:
--------------------------------------------------------------------------------
1 | gray
2 | rectangle
3 | fit
4 |
--------------------------------------------------------------------------------
/tennis.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | BOOST
5 | HAAR
6 | 24
7 | 24
8 |
9 | GAB
10 | 9.9500000476837158e-01
11 | 5.0000000000000000e-01
12 | 9.4999999999999996e-01
13 | 1
14 | 100
15 |
16 | 0
17 | 1
18 | BASIC
19 | 20
20 |
21 |
22 | <_>
23 | 5
24 | -1.1640619039535522e+00
25 |
26 | <_>
27 |
28 | 0 -1 33 1.1681558564305305e-02
29 |
30 | 3.8931298255920410e-01 -7.3913043737411499e-01
31 | <_>
32 |
33 | 0 -1 103 -1.5116635710000992e-02
34 |
35 | 1. -3.2888874411582947e-01
36 | <_>
37 |
38 | 0 -1 29 4.9462635070085526e-03
39 |
40 | -4.8610672354698181e-01 5.6969720125198364e-01
41 | <_>
42 |
43 | 0 -1 74 -5.3125363774597645e-03
44 |
45 | 4.5896476507186890e-01 -5.0278729200363159e-01
46 | <_>
47 |
48 | 0 -1 42 -2.1839805413037539e-04
49 |
50 | -4.3603751063346863e-01 5.8558005094528198e-01
51 |
52 | <_>
53 | 4
54 | -3.7658688426017761e-01
55 |
56 | <_>
57 |
58 | 0 -1 102 -1.5126217156648636e-02
59 |
60 | 7.1875000000000000e-01 -3.3823528885841370e-01
61 | <_>
62 |
63 | 0 -1 41 4.4124433770775795e-03
64 |
65 | 3.7614840269088745e-01 -7.3065555095672607e-01
66 | <_>
67 |
68 | 0 -1 38 4.2576372623443604e-02
69 |
70 | -4.6844714879989624e-01 5.3638738393783569e-01
71 | <_>
72 |
73 | 0 -1 23 3.3694929443299770e-03
74 |
75 | 2.9951420426368713e-01 -9.0106874704360962e-01
76 |
77 | <_>
78 | 3
79 | -2.1598662436008453e-01
80 |
81 | <_>
82 |
83 | 0 -1 44 6.2543012201786041e-02
84 |
85 | 3.0612245202064514e-01 -8.4905660152435303e-01
86 | <_>
87 |
88 | 0 -1 95 -7.2181649738922715e-04
89 |
90 | -7.7753198146820068e-01 3.2637751102447510e-01
91 | <_>
92 |
93 | 0 -1 51 4.1792765259742737e-03
94 |
95 | 3.1587913632392883e-01 -8.4848660230636597e-01
96 |
97 | <_>
98 | 5
99 | -1.0134205818176270e+00
100 |
101 | <_>
102 |
103 | 0 -1 1 3.3501468598842621e-02
104 |
105 | -3.1506848335266113e-01 8.5185188055038452e-01
106 | <_>
107 |
108 | 0 -1 32 -9.8212044686079025e-03
109 |
110 | -7.1905797719955444e-01 4.2926022410392761e-01
111 | <_>
112 |
113 | 0 -1 22 2.5910846889019012e-03
114 |
115 | 3.9328503608703613e-01 -6.7553454637527466e-01
116 | <_>
117 |
118 | 0 -1 49 -4.6781208366155624e-03
119 |
120 | -8.6602169275283813e-01 3.3895102143287659e-01
121 | <_>
122 |
123 | 0 -1 63 -1.6893994063138962e-02
124 |
125 | -7.2980999946594238e-01 3.5728940367698669e-01
126 |
127 | <_>
128 | 5
129 | -6.4797937870025635e-01
130 |
131 | <_>
132 |
133 | 0 -1 25 8.7428595870733261e-03
134 |
135 | 3.2413792610168457e-01 -8.5454547405242920e-01
136 | <_>
137 |
138 | 0 -1 3 3.4483239054679871e-02
139 |
140 | -3.7265339493751526e-01 9.5655983686447144e-01
141 | <_>
142 |
143 | 0 -1 101 -7.5408713892102242e-03
144 |
145 | 8.9761185646057129e-01 -2.1655647456645966e-01
146 | <_>
147 |
148 | 0 -1 98 8.0099666956812143e-04
149 |
150 | 4.0968009829521179e-01 -6.3825011253356934e-01
151 | <_>
152 |
153 | 0 -1 90 -8.2727870903909206e-04
154 |
155 | -7.9258751869201660e-01 3.4814986586570740e-01
156 |
157 | <_>
158 | 4
159 | -2.9686239361763000e-01
160 |
161 | <_>
162 |
163 | 0 -1 10 3.8368768990039825e-02
164 |
165 | -3.7815126776695251e-01 5.5555558204650879e-01
166 | <_>
167 |
168 | 0 -1 92 1.3158582150936127e-03
169 |
170 | 2.9091122746467590e-01 -8.0650782585144043e-01
171 | <_>
172 |
173 | 0 -1 18 -1.0047808289527893e-02
174 |
175 | 8.2183551788330078e-01 -2.9375362396240234e-01
176 | <_>
177 |
178 | 0 -1 14 -3.8002122193574905e-02
179 |
180 | -9.6160548925399780e-01 2.4784348905086517e-01
181 |
182 | <_>
183 | 5
184 | -9.3237146735191345e-02
185 |
186 | <_>
187 |
188 | 0 -1 89 -1.3365160673856735e-02
189 |
190 | -8.7234044075012207e-01 2.6797387003898621e-01
191 | <_>
192 |
193 | 0 -1 35 -8.7273523211479187e-02
194 |
195 | 6.8873530626296997e-01 -3.6366090178489685e-01
196 | <_>
197 |
198 | 0 -1 16 8.5515584796667099e-03
199 |
200 | 2.9401195049285889e-01 -8.3291792869567871e-01
201 | <_>
202 |
203 | 0 -1 80 9.7663654014468193e-04
204 |
205 | 2.9579332470893860e-01 -7.1285861730575562e-01
206 | <_>
207 |
208 | 0 -1 75 -1.4379353960976005e-03
209 |
210 | 5.5295890569686890e-01 -4.3762439489364624e-01
211 |
212 | <_>
213 | 6
214 | -3.2959663867950439e-01
215 |
216 | <_>
217 |
218 | 0 -1 4 2.2715985774993896e-02
219 |
220 | -2.7516779303550720e-01 8.0392158031463623e-01
221 | <_>
222 |
223 | 0 -1 12 -4.1582368314266205e-02
224 |
225 | -1. 2.5362113118171692e-01
226 | <_>
227 |
228 | 0 -1 20 8.9399743592366576e-04
229 |
230 | -4.0668159723281860e-01 5.0226598978042603e-01
231 | <_>
232 |
233 | 0 -1 45 1.6769368201494217e-02
234 |
235 | 2.7153766155242920e-01 -8.3526921272277832e-01
236 | <_>
237 |
238 | 0 -1 105 -7.3682060465216637e-03
239 |
240 | 8.8047313690185547e-01 -3.2458457350730896e-01
241 | <_>
242 |
243 | 0 -1 26 3.3160118618980050e-04
244 |
245 | 3.4953778982162476e-01 -6.3981556892395020e-01
246 |
247 | <_>
248 | 5
249 | -7.4937635660171509e-01
250 |
251 | <_>
252 |
253 | 0 -1 5 1.1346900835633278e-02
254 |
255 | 2.8476822376251221e-01 -8.7755101919174194e-01
256 | <_>
257 |
258 | 0 -1 39 -3.1789947301149368e-02
259 |
260 | 6.3205736875534058e-01 -3.5834541916847229e-01
261 | <_>
262 |
263 | 0 -1 7 1.2484284117817879e-02
264 |
265 | -2.0320907235145569e-01 9.7946733236312866e-01
266 | <_>
267 |
268 | 0 -1 24 3.7448781076818705e-03
269 |
270 | 3.0101835727691650e-01 -7.5529855489730835e-01
271 | <_>
272 |
273 | 0 -1 17 -8.0439355224370956e-03
274 |
275 | -7.3950600624084473e-01 2.8270849585533142e-01
276 |
277 | <_>
278 | 6
279 | -6.5158718824386597e-01
280 |
281 | <_>
282 |
283 | 0 -1 85 -6.8622105754911900e-04
284 |
285 | 7.0491802692413330e-01 -3.0935251712799072e-01
286 | <_>
287 |
288 | 0 -1 68 -1.1146757751703262e-03
289 |
290 | 8.3373832702636719e-01 -2.3269703984260559e-01
291 | <_>
292 |
293 | 0 -1 54 -4.7340214252471924e-02
294 |
295 | -8.8586682081222534e-01 2.6785829663276672e-01
296 | <_>
297 |
298 | 0 -1 27 1.3323458842933178e-03
299 |
300 | -3.4816879034042358e-01 7.5150179862976074e-01
301 | <_>
302 |
303 | 0 -1 82 -2.6519806124269962e-04
304 |
305 | 6.7985582351684570e-01 -2.8646948933601379e-01
306 | <_>
307 |
308 | 0 -1 71 1.7102790996432304e-02
309 |
310 | -5.6962835788726807e-01 4.3864628672599792e-01
311 |
312 | <_>
313 | 4
314 | 5.0523418933153152e-02
315 |
316 | <_>
317 |
318 | 0 -1 72 -7.1852326393127441e-02
319 |
320 | -8.2608693838119507e-01 2.4675324559211731e-01
321 | <_>
322 |
323 | 0 -1 67 -1.3480332680046558e-02
324 |
325 | 1. -2.5744530558586121e-01
326 | <_>
327 |
328 | 0 -1 0 9.6167057752609253e-02
329 |
330 | -2.5264292955398560e-01 8.3449047803878784e-01
331 | <_>
332 |
333 | 0 -1 94 -1.6135612968355417e-03
334 |
335 | -7.7327501773834229e-01 3.8724520802497864e-01
336 |
337 | <_>
338 | 6
339 | -7.3693144321441650e-01
340 |
341 | <_>
342 |
343 | 0 -1 50 -1.1656967923045158e-02
344 |
345 | -6.8253970146179199e-01 3.1386861205101013e-01
346 | <_>
347 |
348 | 0 -1 36 -1.4506639540195465e-01
349 |
350 | 7.0928388833999634e-01 -2.8950649499893188e-01
351 | <_>
352 |
353 | 0 -1 55 -1.0831365361809731e-03
354 |
355 | -5.4722821712493896e-01 3.8307803869247437e-01
356 | <_>
357 |
358 | 0 -1 40 -2.1527539938688278e-03
359 |
360 | -5.6925010681152344e-01 4.4359770417213440e-01
361 | <_>
362 |
363 | 0 -1 43 1.8821869045495987e-02
364 |
365 | 1.7862588167190552e-01 -9.1195327043533325e-01
366 | <_>
367 |
368 | 0 -1 62 9.5327303279191256e-04
369 |
370 | 2.4266096949577332e-01 -8.6960333585739136e-01
371 |
372 | <_>
373 | 6
374 | -1.0292720049619675e-01
375 |
376 | <_>
377 |
378 | 0 -1 73 -5.5775772780179977e-03
379 |
380 | -7.8260868787765503e-01 2.3376622796058655e-01
381 | <_>
382 |
383 | 0 -1 59 -1.0585242882370949e-02
384 |
385 | 8.4594124555587769e-01 -2.5922471284866333e-01
386 | <_>
387 |
388 | 0 -1 28 -4.5046541839838028e-02
389 |
390 | -8.8048446178436279e-01 2.4453166127204895e-01
391 | <_>
392 |
393 | 0 -1 30 2.1537087857723236e-02
394 |
395 | 2.9553532600402832e-01 -6.5645653009414673e-01
396 | <_>
397 |
398 | 0 -1 96 -2.9621655121445656e-03
399 |
400 | -8.2057124376296997e-01 2.5677043199539185e-01
401 | <_>
402 |
403 | 0 -1 57 -4.0834895335137844e-03
404 |
405 | -7.4782925844192505e-01 2.5070998072624207e-01
406 |
407 | <_>
408 | 7
409 | -8.4188145399093628e-01
410 |
411 | <_>
412 |
413 | 0 -1 81 -4.3216776102781296e-03
414 |
415 | 9.4594591856002808e-01 -2.1472392976284027e-01
416 | <_>
417 |
418 | 0 -1 83 -4.0692733600735664e-03
419 |
420 | 4.8861014842987061e-01 -3.4524291753768921e-01
421 | <_>
422 |
423 | 0 -1 93 1.1181144509464502e-03
424 |
425 | 2.8369456529617310e-01 -6.6008645296096802e-01
426 | <_>
427 |
428 | 0 -1 56 5.6018959730863571e-03
429 |
430 | -5.1339274644851685e-01 4.1860267519950867e-01
431 | <_>
432 |
433 | 0 -1 100 5.6627916637808084e-04
434 |
435 | -4.4390973448753357e-01 5.1977807283401489e-01
436 | <_>
437 |
438 | 0 -1 79 -7.0447619073092937e-03
439 |
440 | -7.8773522377014160e-01 3.1759202480316162e-01
441 | <_>
442 |
443 | 0 -1 86 1.8758473917841911e-02
444 |
445 | 2.4743311107158661e-01 -7.9334342479705811e-01
446 |
447 | <_>
448 | 7
449 | -2.2490398585796356e-01
450 |
451 | <_>
452 |
453 | 0 -1 58 -1.1130325496196747e-02
454 |
455 | 1. -2.1951219439506531e-01
456 | <_>
457 |
458 | 0 -1 99 -8.9831469813361764e-04
459 |
460 | 8.2124012708663940e-01 -1.8876339495182037e-01
461 | <_>
462 |
463 | 0 -1 70 1.0493537411093712e-02
464 |
465 | -1.9151304662227631e-01 9.5686608552932739e-01
466 | <_>
467 |
468 | 0 -1 69 -8.6161121726036072e-03
469 |
470 | 1. -1.8956424295902252e-01
471 | <_>
472 |
473 | 0 -1 60 -1.8535149283707142e-03
474 |
475 | -7.0859819650650024e-01 3.4819221496582031e-01
476 | <_>
477 |
478 | 0 -1 87 -2.9809945262968540e-03
479 |
480 | 8.9510697126388550e-01 -2.6152491569519043e-01
481 | <_>
482 |
483 | 0 -1 104 -1.6868398233782500e-04
484 |
485 | 4.7778162360191345e-01 -4.5996445417404175e-01
486 |
487 | <_>
488 | 5
489 | -2.5662693381309509e-01
490 |
491 | <_>
492 |
493 | 0 -1 46 5.4382961243391037e-03
494 |
495 | 4.1176471114158630e-01 -6.0493826866149902e-01
496 | <_>
497 |
498 | 0 -1 52 9.2327985912561417e-03
499 |
500 | -2.8452718257904053e-01 7.8337907791137695e-01
501 | <_>
502 |
503 | 0 -1 48 8.5762166418135166e-04
504 |
505 | 3.8786894083023071e-01 -5.8932077884674072e-01
506 | <_>
507 |
508 | 0 -1 15 3.1990455463528633e-03
509 |
510 | -3.4624251723289490e-01 7.3934096097946167e-01
511 | <_>
512 |
513 | 0 -1 97 -9.3830469995737076e-04
514 |
515 | -3.8617530465126038e-01 5.9121209383010864e-01
516 |
517 | <_>
518 | 5
519 | -3.0965808033943176e-01
520 |
521 | <_>
522 |
523 | 0 -1 31 1.7638070508837700e-02
524 |
525 | 3.1884059309959412e-01 -7.0967739820480347e-01
526 | <_>
527 |
528 | 0 -1 11 3.5573192872107029e-03
529 |
530 | -5.0379365682601929e-01 4.2939853668212891e-01
531 | <_>
532 |
533 | 0 -1 84 -3.2306175853591412e-05
534 |
535 | 4.3441912531852722e-01 -5.3755253553390503e-01
536 | <_>
537 |
538 | 0 -1 6 2.1091590169817209e-03
539 |
540 | -1.9579777121543884e-01 9.2411965131759644e-01
541 | <_>
542 |
543 | 0 -1 77 4.8846997320652008e-02
544 |
545 | -2.6800051331520081e-01 7.4032223224639893e-01
546 |
547 | <_>
548 | 7
549 | -1.7703385651111603e-01
550 |
551 | <_>
552 |
553 | 0 -1 13 -6.9871813058853149e-02
554 |
555 | 8.4848487377166748e-01 -4.1791045665740967e-01
556 | <_>
557 |
558 | 0 -1 76 1.6979828476905823e-02
559 |
560 | -2.3390157520771027e-01 8.1354135274887085e-01
561 | <_>
562 |
563 | 0 -1 64 1.6343483701348305e-02
564 |
565 | -3.4272706508636475e-01 7.8413832187652588e-01
566 | <_>
567 |
568 | 0 -1 34 3.1059611588716507e-02
569 |
570 | -2.7163100242614746e-01 6.9821691513061523e-01
571 | <_>
572 |
573 | 0 -1 9 1.9315062090754509e-03
574 |
575 | -5.5630272626876831e-01 5.1116693019866943e-01
576 | <_>
577 |
578 | 0 -1 21 -5.3244471549987793e-02
579 |
580 | 9.4948369264602661e-01 -2.3906594514846802e-01
581 | <_>
582 |
583 | 0 -1 91 -4.2280651628971100e-02
584 |
585 | 9.4390666484832764e-01 -2.1220839023590088e-01
586 |
587 | <_>
588 | 6
589 | -4.0548816323280334e-01
590 |
591 | <_>
592 |
593 | 0 -1 61 -2.0328260958194733e-02
594 |
595 | 8.4615385532379150e-01 -2.0496894419193268e-01
596 | <_>
597 |
598 | 0 -1 88 1.2388465926051140e-02
599 |
600 | -2.2337950766086578e-01 7.6592004299163818e-01
601 | <_>
602 |
603 | 0 -1 53 -6.5271817147731781e-03
604 |
605 | -5.5357021093368530e-01 3.3035978674888611e-01
606 | <_>
607 |
608 | 0 -1 19 2.5900995358824730e-02
609 |
610 | -1.9824235141277313e-01 9.6766436100006104e-01
611 | <_>
612 |
613 | 0 -1 65 -7.5893187895417213e-03
614 |
615 | 8.3125269412994385e-01 -1.8382994830608368e-01
616 | <_>
617 |
618 | 0 -1 2 -8.3082821220159531e-03
619 |
620 | -9.4050985574722290e-01 2.2854590415954590e-01
621 |
622 | <_>
623 | 5
624 | -6.3720279932022095e-01
625 |
626 | <_>
627 |
628 | 0 -1 8 1.9287271425127983e-03
629 |
630 | -2.7631577849388123e-01 8.7500000000000000e-01
631 | <_>
632 |
633 | 0 -1 47 8.8485628366470337e-03
634 |
635 | -3.8179510831832886e-01 5.9248179197311401e-01
636 | <_>
637 |
638 | 0 -1 78 -6.2163383699953556e-04
639 |
640 | 6.1896896362304688e-01 -3.7254068255424500e-01
641 | <_>
642 |
643 | 0 -1 66 2.8953570872545242e-03
644 |
645 | -3.3218365907669067e-01 6.1866450309753418e-01
646 | <_>
647 |
648 | 0 -1 37 -9.7732059657573700e-03
649 |
650 | 8.9368152618408203e-01 -2.2521571815013885e-01
651 |
652 | <_>
653 |
654 | <_>
655 | 0 2 24 8 -1.
656 | <_>
657 | 8 2 8 8 3.
658 | 0
659 | <_>
660 |
661 | <_>
662 | 0 3 9 13 -1.
663 | <_>
664 | 3 3 3 13 3.
665 | 0
666 | <_>
667 |
668 | <_>
669 | 0 3 10 4 -1.
670 | <_>
671 | 0 3 5 2 2.
672 | <_>
673 | 5 5 5 2 2.
674 | 0
675 | <_>
676 |
677 | <_>
678 | 0 5 9 8 -1.
679 | <_>
680 | 3 5 3 8 3.
681 | 0
682 | <_>
683 |
684 | <_>
685 | 0 6 8 6 -1.
686 | <_>
687 | 4 6 4 6 2.
688 | 0
689 | <_>
690 |
691 | <_>
692 | 0 8 23 2 -1.
693 | <_>
694 | 0 9 23 1 2.
695 | 0
696 | <_>
697 |
698 | <_>
699 | 0 9 3 1 -1.
700 | <_>
701 | 1 9 1 1 3.
702 | 0
703 | <_>
704 |
705 | <_>
706 | 0 9 2 10 -1.
707 | <_>
708 | 1 9 1 10 2.
709 | 0
710 | <_>
711 |
712 | <_>
713 | 0 16 2 2 -1.
714 | <_>
715 | 1 16 1 2 2.
716 | 0
717 | <_>
718 |
719 | <_>
720 | 1 1 6 14 -1.
721 | <_>
722 | 3 1 2 14 3.
723 | 0
724 | <_>
725 |
726 | <_>
727 | 1 1 14 12 -1.
728 | <_>
729 | 1 5 14 4 3.
730 | 0
731 | <_>
732 |
733 | <_>
734 | 1 2 14 4 -1.
735 | <_>
736 | 1 4 14 2 2.
737 | 0
738 | <_>
739 |
740 | <_>
741 | 1 7 22 4 -1.
742 | <_>
743 | 1 9 22 2 2.
744 | 0
745 | <_>
746 |
747 | <_>
748 | 1 14 14 10 -1.
749 | <_>
750 | 1 19 14 5 2.
751 | 0
752 | <_>
753 |
754 | <_>
755 | 2 4 13 6 -1.
756 | <_>
757 | 2 6 13 2 3.
758 | 0
759 | <_>
760 |
761 | <_>
762 | 2 8 3 4 -1.
763 | <_>
764 | 3 8 1 4 3.
765 | 0
766 | <_>
767 |
768 | <_>
769 | 2 9 22 1 -1.
770 | <_>
771 | 13 9 11 1 2.
772 | 0
773 | <_>
774 |
775 | <_>
776 | 2 14 21 2 -1.
777 | <_>
778 | 2 15 21 1 2.
779 | 0
780 | <_>
781 |
782 | <_>
783 | 2 20 3 4 -1.
784 | <_>
785 | 2 22 3 2 2.
786 | 0
787 | <_>
788 |
789 | <_>
790 | 2 20 19 3 -1.
791 | <_>
792 | 2 21 19 1 3.
793 | 0
794 | <_>
795 |
796 | <_>
797 | 3 0 1 6 -1.
798 | <_>
799 | 3 2 1 2 3.
800 | 0
801 | <_>
802 |
803 | <_>
804 | 3 0 7 18 -1.
805 | <_>
806 | 3 9 7 9 2.
807 | 0
808 | <_>
809 |
810 | <_>
811 | 3 5 4 3 -1.
812 | <_>
813 | 3 6 4 1 3.
814 | 0
815 | <_>
816 |
817 | <_>
818 | 3 6 3 3 -1.
819 | <_>
820 | 3 7 3 1 3.
821 | 0
822 | <_>
823 |
824 | <_>
825 | 3 13 10 2 -1.
826 | <_>
827 | 3 14 10 1 2.
828 | 0
829 | <_>
830 |
831 | <_>
832 | 3 13 14 3 -1.
833 | <_>
834 | 3 14 14 1 3.
835 | 0
836 | <_>
837 |
838 | <_>
839 | 3 15 1 2 -1.
840 | <_>
841 | 3 16 1 1 2.
842 | 0
843 | <_>
844 |
845 | <_>
846 | 3 21 2 3 -1.
847 | <_>
848 | 3 22 2 1 3.
849 | 0
850 | <_>
851 |
852 | <_>
853 | 4 3 12 7 -1.
854 | <_>
855 | 10 3 6 7 2.
856 | 0
857 | <_>
858 |
859 | <_>
860 | 4 3 19 4 -1.
861 | <_>
862 | 4 5 19 2 2.
863 | 0
864 | <_>
865 |
866 | <_>
867 | 4 4 16 15 -1.
868 | <_>
869 | 12 4 8 15 2.
870 | 0
871 | <_>
872 |
873 | <_>
874 | 4 8 16 4 -1.
875 | <_>
876 | 12 8 8 4 2.
877 | 0
878 | <_>
879 |
880 | <_>
881 | 4 9 19 3 -1.
882 | <_>
883 | 4 10 19 1 3.
884 | 0
885 | <_>
886 |
887 | <_>
888 | 4 9 20 6 -1.
889 | <_>
890 | 4 11 20 2 3.
891 | 0
892 | <_>
893 |
894 | <_>
895 | 4 11 8 12 -1.
896 | <_>
897 | 4 15 8 4 3.
898 | 0
899 | <_>
900 |
901 | <_>
902 | 4 14 15 10 -1.
903 | <_>
904 | 4 19 15 5 2.
905 | 0
906 | <_>
907 |
908 | <_>
909 | 5 8 16 16 -1.
910 | <_>
911 | 5 16 16 8 2.
912 | 0
913 | <_>
914 |
915 | <_>
916 | 5 10 14 3 -1.
917 | <_>
918 | 5 11 14 1 3.
919 | 0
920 | <_>
921 |
922 | <_>
923 | 5 10 15 12 -1.
924 | <_>
925 | 5 14 15 4 3.
926 | 0
927 | <_>
928 |
929 | <_>
930 | 5 14 5 10 -1.
931 | <_>
932 | 5 19 5 5 2.
933 | 0
934 | <_>
935 |
936 | <_>
937 | 5 23 8 1 -1.
938 | <_>
939 | 9 23 4 1 2.
940 | 0
941 | <_>
942 |
943 | <_>
944 | 6 9 15 2 -1.
945 | <_>
946 | 6 10 15 1 2.
947 | 0
948 | <_>
949 |
950 | <_>
951 | 6 12 6 12 -1.
952 | <_>
953 | 6 12 3 6 2.
954 | <_>
955 | 9 18 3 6 2.
956 | 0
957 | <_>
958 |
959 | <_>
960 | 6 20 9 4 -1.
961 | <_>
962 | 9 20 3 4 3.
963 | 0
964 | <_>
965 |
966 | <_>
967 | 7 1 9 22 -1.
968 | <_>
969 | 7 12 9 11 2.
970 | 0
971 | <_>
972 |
973 | <_>
974 | 7 3 2 9 -1.
975 | <_>
976 | 7 6 2 3 3.
977 | 0
978 | <_>
979 |
980 | <_>
981 | 7 3 10 3 -1.
982 | <_>
983 | 12 3 5 3 2.
984 | 0
985 | <_>
986 |
987 | <_>
988 | 7 6 14 6 -1.
989 | <_>
990 | 7 8 14 2 3.
991 | 0
992 | <_>
993 |
994 | <_>
995 | 7 10 4 2 -1.
996 | <_>
997 | 9 10 2 2 2.
998 | 0
999 | <_>
1000 |
1001 | <_>
1002 | 7 13 5 3 -1.
1003 | <_>
1004 | 7 14 5 1 3.
1005 | 0
1006 | <_>
1007 |
1008 | <_>
1009 | 7 13 12 6 -1.
1010 | <_>
1011 | 7 13 6 3 2.
1012 | <_>
1013 | 13 16 6 3 2.
1014 | 0
1015 | <_>
1016 |
1017 | <_>
1018 | 7 18 10 2 -1.
1019 | <_>
1020 | 7 19 10 1 2.
1021 | 0
1022 | <_>
1023 |
1024 | <_>
1025 | 7 21 17 3 -1.
1026 | <_>
1027 | 7 22 17 1 3.
1028 | 0
1029 | <_>
1030 |
1031 | <_>
1032 | 8 1 3 21 -1.
1033 | <_>
1034 | 9 1 1 21 3.
1035 | 0
1036 | <_>
1037 |
1038 | <_>
1039 | 8 1 8 21 -1.
1040 | <_>
1041 | 12 1 4 21 2.
1042 | 0
1043 | <_>
1044 |
1045 | <_>
1046 | 8 2 10 9 -1.
1047 | <_>
1048 | 8 5 10 3 3.
1049 | 0
1050 | <_>
1051 |
1052 | <_>
1053 | 8 9 8 12 -1.
1054 | <_>
1055 | 8 13 8 4 3.
1056 | 0
1057 | <_>
1058 |
1059 | <_>
1060 | 8 11 10 1 -1.
1061 | <_>
1062 | 13 11 5 1 2.
1063 | 0
1064 | <_>
1065 |
1066 | <_>
1067 | 9 0 9 3 -1.
1068 | <_>
1069 | 9 1 9 1 3.
1070 | 0
1071 | <_>
1072 |
1073 | <_>
1074 | 9 0 15 3 -1.
1075 | <_>
1076 | 9 1 15 1 3.
1077 | 0
1078 | <_>
1079 |
1080 | <_>
1081 | 9 1 2 7 -1.
1082 | <_>
1083 | 10 1 1 7 2.
1084 | 0
1085 | <_>
1086 |
1087 | <_>
1088 | 9 1 9 6 -1.
1089 | <_>
1090 | 9 3 9 2 3.
1091 | 0
1092 | <_>
1093 |
1094 | <_>
1095 | 9 4 3 1 -1.
1096 | <_>
1097 | 10 4 1 1 3.
1098 | 0
1099 | <_>
1100 |
1101 | <_>
1102 | 9 5 4 12 -1.
1103 | <_>
1104 | 9 11 4 6 2.
1105 | 0
1106 | <_>
1107 |
1108 | <_>
1109 | 9 19 10 4 -1.
1110 | <_>
1111 | 9 21 10 2 2.
1112 | 0
1113 | <_>
1114 |
1115 | <_>
1116 | 9 20 5 3 -1.
1117 | <_>
1118 | 9 21 5 1 3.
1119 | 0
1120 | <_>
1121 |
1122 | <_>
1123 | 10 0 14 1 -1.
1124 | <_>
1125 | 17 0 7 1 2.
1126 | 0
1127 | <_>
1128 |
1129 | <_>
1130 | 10 5 3 18 -1.
1131 | <_>
1132 | 11 5 1 18 3.
1133 | 0
1134 | <_>
1135 |
1136 | <_>
1137 | 10 15 3 1 -1.
1138 | <_>
1139 | 11 15 1 1 3.
1140 | 0
1141 | <_>
1142 |
1143 | <_>
1144 | 10 21 10 3 -1.
1145 | <_>
1146 | 10 22 10 1 3.
1147 | 0
1148 | <_>
1149 |
1150 | <_>
1151 | 10 21 12 3 -1.
1152 | <_>
1153 | 10 22 12 1 3.
1154 | 0
1155 | <_>
1156 |
1157 | <_>
1158 | 11 0 6 24 -1.
1159 | <_>
1160 | 11 8 6 8 3.
1161 | 0
1162 | <_>
1163 |
1164 | <_>
1165 | 11 7 13 9 -1.
1166 | <_>
1167 | 11 10 13 3 3.
1168 | 0
1169 | <_>
1170 |
1171 | <_>
1172 | 11 10 4 6 -1.
1173 | <_>
1174 | 11 10 2 3 2.
1175 | <_>
1176 | 13 13 2 3 2.
1177 | 0
1178 | <_>
1179 |
1180 | <_>
1181 | 11 12 2 12 -1.
1182 | <_>
1183 | 11 18 2 6 2.
1184 | 0
1185 | <_>
1186 |
1187 | <_>
1188 | 11 16 9 2 -1.
1189 | <_>
1190 | 14 16 3 2 3.
1191 | 0
1192 | <_>
1193 |
1194 | <_>
1195 | 12 0 1 24 -1.
1196 | <_>
1197 | 12 8 1 8 3.
1198 | 0
1199 | <_>
1200 |
1201 | <_>
1202 | 12 4 12 16 -1.
1203 | <_>
1204 | 16 4 4 16 3.
1205 | 0
1206 | <_>
1207 |
1208 | <_>
1209 | 12 11 3 1 -1.
1210 | <_>
1211 | 13 11 1 1 3.
1212 | 0
1213 | <_>
1214 |
1215 | <_>
1216 | 12 12 6 6 -1.
1217 | <_>
1218 | 12 12 3 3 2.
1219 | <_>
1220 | 15 15 3 3 2.
1221 | 0
1222 | <_>
1223 |
1224 | <_>
1225 | 12 19 3 1 -1.
1226 | <_>
1227 | 13 19 1 1 3.
1228 | 0
1229 | <_>
1230 |
1231 | <_>
1232 | 13 0 2 3 -1.
1233 | <_>
1234 | 13 1 2 1 3.
1235 | 0
1236 | <_>
1237 |
1238 | <_>
1239 | 13 6 1 3 -1.
1240 | <_>
1241 | 13 7 1 1 3.
1242 | 0
1243 | <_>
1244 |
1245 | <_>
1246 | 13 8 9 6 -1.
1247 | <_>
1248 | 13 10 9 2 3.
1249 | 0
1250 | <_>
1251 |
1252 | <_>
1253 | 13 9 1 6 -1.
1254 | <_>
1255 | 13 11 1 2 3.
1256 | 0
1257 | <_>
1258 |
1259 | <_>
1260 | 13 10 1 3 -1.
1261 | <_>
1262 | 13 11 1 1 3.
1263 | 0
1264 | <_>
1265 |
1266 | <_>
1267 | 13 17 9 5 -1.
1268 | <_>
1269 | 16 17 3 5 3.
1270 | 0
1271 | <_>
1272 |
1273 | <_>
1274 | 13 19 2 3 -1.
1275 | <_>
1276 | 13 20 2 1 3.
1277 | 0
1278 | <_>
1279 |
1280 | <_>
1281 | 14 0 3 6 -1.
1282 | <_>
1283 | 14 3 3 3 2.
1284 | 0
1285 | <_>
1286 |
1287 | <_>
1288 | 14 6 8 6 -1.
1289 | <_>
1290 | 14 8 8 2 3.
1291 | 0
1292 | <_>
1293 |
1294 | <_>
1295 | 14 7 2 2 -1.
1296 | <_>
1297 | 14 7 1 1 2.
1298 | <_>
1299 | 15 8 1 1 2.
1300 | 0
1301 | <_>
1302 |
1303 | <_>
1304 | 14 8 10 8 -1.
1305 | <_>
1306 | 19 8 5 8 2.
1307 | 0
1308 | <_>
1309 |
1310 | <_>
1311 | 14 12 1 3 -1.
1312 | <_>
1313 | 14 13 1 1 3.
1314 | 0
1315 | <_>
1316 |
1317 | <_>
1318 | 14 19 2 5 -1.
1319 | <_>
1320 | 15 19 1 5 2.
1321 | 0
1322 | <_>
1323 |
1324 | <_>
1325 | 15 8 2 8 -1.
1326 | <_>
1327 | 15 8 1 4 2.
1328 | <_>
1329 | 16 12 1 4 2.
1330 | 0
1331 | <_>
1332 |
1333 | <_>
1334 | 15 12 1 2 -1.
1335 | <_>
1336 | 15 13 1 1 2.
1337 | 0
1338 | <_>
1339 |
1340 | <_>
1341 | 16 0 3 4 -1.
1342 | <_>
1343 | 17 0 1 4 3.
1344 | 0
1345 | <_>
1346 |
1347 | <_>
1348 | 16 5 6 14 -1.
1349 | <_>
1350 | 16 5 3 7 2.
1351 | <_>
1352 | 19 12 3 7 2.
1353 | 0
1354 | <_>
1355 |
1356 | <_>
1357 | 17 15 1 3 -1.
1358 | <_>
1359 | 17 16 1 1 3.
1360 | 0
1361 | <_>
1362 |
1363 | <_>
1364 | 18 10 1 3 -1.
1365 | <_>
1366 | 18 11 1 1 3.
1367 | 0
1368 | <_>
1369 |
1370 | <_>
1371 | 19 0 4 3 -1.
1372 | <_>
1373 | 19 1 4 1 3.
1374 | 0
1375 | <_>
1376 |
1377 | <_>
1378 | 19 5 4 4 -1.
1379 | <_>
1380 | 21 5 2 4 2.
1381 | 0
1382 | <_>
1383 |
1384 | <_>
1385 | 20 5 4 16 -1.
1386 | <_>
1387 | 22 5 2 16 2.
1388 | 0
1389 | <_>
1390 |
1391 | <_>
1392 | 20 13 4 9 -1.
1393 | <_>
1394 | 22 13 2 9 2.
1395 | 0
1396 | <_>
1397 |
1398 | <_>
1399 | 21 7 1 6 -1.
1400 | <_>
1401 | 21 10 1 3 2.
1402 | 0
1403 | <_>
1404 |
1405 | <_>
1406 | 22 2 2 11 -1.
1407 | <_>
1408 | 23 2 1 11 2.
1409 | 0
1410 |
1411 |
--------------------------------------------------------------------------------
/utils/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/worldbank/ml4dev/d91f1b2a08067da31364dee60f07274d66929fa5/utils/__init__.py
--------------------------------------------------------------------------------
/utils/geo.py:
--------------------------------------------------------------------------------
1 | from shapely.geometry import Polygon
2 | import math
3 |
4 | image_width = 1280
5 | image_height = 1280
6 |
7 | ELEMENTS_FILENAME = 'data/elements.json'
8 | WAYS_DATA_FILENAME = 'data/ways.json'
9 |
10 | # Go through the ways, build the polygon, and compute the centroid that we'll
11 | # use to download the mapbox satellite image
12 | def get_ways_data(elements, coords):
13 | ways_data = {}
14 | for element in elements:
15 | # Only process ways
16 | if element.get('type') != 'way':
17 | continue
18 | # Only process ways with 3 or more nodes, otherwise
19 | # Shapely will complain.
20 | nodes = element.get('nodes')
21 | if len(nodes) < 3:
22 | continue
23 | exterior = [(coords[node].get('lat'), coords[node].get('lon')) \
24 | for node in nodes]
25 | # Build the polygon and compute its bbox and centroid
26 | way_polygon = Polygon(exterior)
27 | ways_data[element.get('id')] = {
28 | 'bounds': way_polygon.bounds,
29 | 'lat': way_polygon.centroid.x,
30 | 'lon': way_polygon.centroid.y}
31 |
32 | # Done
33 | return ways_data
34 |
35 | def get_rectangle(bounds):
36 | # This converts a latitude delta into an image delta. For USA, at zoom
37 | # level 19, we know that we have 0.21 meters/pixel. So, an image is showing
38 | # about 1280 pixels * 0.21 meters/pixel = 268.8 meters.
39 | # On the other hand we know that at the same angle, a degress in latlon is:
40 | # https://en.wikipedia.org/wiki/Latitude
41 | # latitude = 111,132 m
42 | # longitude = 78,847 m
43 | latitude_factor = 111132.0 / 0.21
44 | longitude_factor = 78847.0 / 0.21
45 |
46 | # Feature size
47 | feature_width = longitude_factor * math.fabs(bounds[1] - bounds[3])
48 | feature_height = latitude_factor * math.fabs(bounds[0] - bounds[2])
49 | if feature_width > image_width or feature_height > image_height:
50 | print '** Warning ** The feature is bigger than the image.'
51 |
52 | # CV params (int required)
53 | x = int((image_width / 2) - (feature_width / 2))
54 | y = int((image_height / 2) - (feature_height / 2))
55 | w = int(feature_width)
56 | h = int(feature_height)
57 | if w <= 25 or h <= 25:
58 | print '** Warning ** This image has very narrow bounds.'
59 | print bounds
60 | print x, y, w, h
61 | if x <= 0 or y <= 0 or w <= 0 or h <= 0:
62 | print '** Warning ** There is something wrong with this image bounds.'
63 | print bounds
64 | print x, y, w, h
65 | return x, y, w, h
66 |
--------------------------------------------------------------------------------
/utils/mapbox_static.py:
--------------------------------------------------------------------------------
1 | '''
2 | See this for some meta info about the basemap:
3 | http://api.tiles.mapbox.com/v4/${MAPBOX_MAPID}.json?access_token=${MAPBOX_ACCESS_TOKEN}
4 | '''
5 |
6 | import os
7 | import urllib
8 |
9 | # Base URL
10 | MAPBOX_ENDPOINT = (
11 | 'http://api.tiles.mapbox.com/v4/{mapid}/{lon},{lat},{zoom}'
12 | '/{width}x{height}.{format}?access_token={access_token}')
13 |
14 | # Params
15 | MAPBOX_MAPID = 'zugaldia.mfecmd32'
16 | MAPBOX_ACCESS_TOKEN = os.environ["mapbox_token"]
17 | MAPBOX_FORMAT = 'png'
18 | MAPBOX_WIDTH = '1280'
19 | MAPBOX_HEIGHT = '1280'
20 | MAPBOX_ZOOM = 19 # Max zoom
21 |
22 |
23 | class MapboxStatic(object):
24 |
25 | def __init__(self, namespace=None, root_folder=None):
26 | self._namespace = namespace or 'mapbox'
27 | self._root_folder = root_folder or '/tmp'
28 | if not os.path.isdir(self._root_folder):
29 | try:
30 | os.mkdir(self._root_folder)
31 | print '[mapbox static] Root folder created: %s' \
32 | % self._root_folder
33 | except Exception as e:
34 | print '[mapbox static] Failed to create the root folder \
35 | (%s): %s' % (self._root_folder, unicode(e))
36 |
37 | def _get_filepath(self, element_id):
38 | filename = '%s_%s.%s' % (self._namespace, element_id, MAPBOX_FORMAT)
39 | return os.path.join(self._root_folder, filename)
40 |
41 | def _get_filesize(self, filepath):
42 | statinfo = os.stat(filepath)
43 | return statinfo.st_size
44 |
45 | def get_url(self, latitude, longitude):
46 | return MAPBOX_ENDPOINT.format(
47 | mapid=MAPBOX_MAPID,
48 | lon=longitude,
49 | lat=latitude,
50 | zoom=MAPBOX_ZOOM,
51 | width=MAPBOX_WIDTH,
52 | height=MAPBOX_HEIGHT,
53 | format=MAPBOX_FORMAT,
54 | access_token=MAPBOX_ACCESS_TOKEN)
55 |
56 | def download_tile(self, element_id, url):
57 | filepath = self._get_filepath(element_id=element_id)
58 | if os.path.isfile(filepath):
59 | print '[mapbox static] Tile already downloaded (%s).' % filepath
60 | return
61 | print '[mapbox static] Donwloading tile (%s).' % filepath
62 | urllib.urlretrieve(url=url, filename=filepath)
63 |
64 | # Detect if we have actual imagery here
65 | filesize = self._get_filesize(filepath=filepath)
66 | if filesize < 50000:
67 | print 'Deleting downloaded file, it looks like an empty image.'
68 | os.remove(filepath)
69 | return False
70 | return True
71 |
--------------------------------------------------------------------------------
/utils/overpass_client.py:
--------------------------------------------------------------------------------
1 | from restwice import RestClient
2 | from restwice import MemcacheLocal
3 | import numpy as np
4 |
5 | OVERPASS_ENDPOINTS = {
6 | 'de': 'http://overpass-api.de/api/interpreter',
7 | 'ru': 'http://overpass.osm.rambler.ru/cgi/',
8 | 'fr': 'http://api.openstreetmap.fr/oapi/interpreter'}
9 |
10 | OVERPASS_MEMCACHE_NAMESPACE = 'overpass'
11 | OVERPASS_REQUESTS_TIMEOUT = 60 * 5 # 5 minutes
12 |
13 |
14 | class OverpassClient(object):
15 | def __init__(self, endpoint='de'):
16 | self._rest_client = RestClient()
17 |
18 | # The DE endpoint was randomly failing to us, and RU never worked.
19 | # From this option we can better control the endpoint, and the queries
20 | # will be automatically cached independently.
21 | endpoint_url = OVERPASS_ENDPOINTS.get(endpoint)
22 | self._rest_client.set_endpoint(endpoint=endpoint_url)
23 |
24 | # Set better timeout value
25 | self._client_settings = {'timeout': OVERPASS_REQUESTS_TIMEOUT}
26 |
27 | # Set local caching
28 | memcache_client = MemcacheLocal(root_folder='_cache_overpass')
29 | self._rest_client.enable_cache(
30 | memcache_client=memcache_client,
31 | memcache_namespace=OVERPASS_MEMCACHE_NAMESPACE)
32 |
33 | def _get_data(self, ql_text=None):
34 | return '[out:json];' + ql_text
35 |
36 | def do_query(self, ql_text=None):
37 | data = self._get_data(ql_text=ql_text)
38 | self._rest_client.set_data(data={'data': data})
39 | result, _ = self._rest_client.do_get(
40 | json_response=True,
41 | json_request=False,
42 | client_settings=self._client_settings)
43 | return result
44 |
45 | def get_bbox_elements(self, ql_template, bb_s, bb_w, bb_n, bb_e, samples=2):
46 | # Samples subdivides the bbox into smaller bboxes to make sure the
47 | # request doesn't timeout. For linspace below to work, we need this
48 | # number to be 2 or greater.
49 | assert samples >= 2
50 |
51 | # Track iterations
52 | total_iterations = (samples - 1) ** 2
53 | current_iteration = 0
54 |
55 | # Build ranges
56 | lat_range = np.linspace(bb_s, bb_n, num=samples)
57 | lon_range = np.linspace(bb_w, bb_e, num=samples)
58 |
59 | # Build the array
60 | elements = []
61 | for lat_index in range(samples - 1):
62 | for lon_index in range(samples - 1):
63 | current_iteration += 1
64 | print 'Iteration %d/%d...' % (
65 | current_iteration, total_iterations)
66 |
67 | # Get the values and build query
68 | query_bb_s = lat_range[lat_index]
69 | query_bb_n = lat_range[lat_index + 1]
70 | query_bb_w = lon_range[lon_index]
71 | query_bb_e = lon_range[lon_index + 1]
72 | ql_text = ql_template.format(
73 | query_bb_s=query_bb_s, query_bb_w=query_bb_w,
74 | query_bb_n=query_bb_n, query_bb_e=query_bb_e)
75 |
76 | # Safe to run multimple times, results are cached
77 | result = self.do_query(ql_text=ql_text)
78 | partial_elements = result.get('elements', [])
79 | print 'Partials elements found: %d' % len(partial_elements)
80 | elements += partial_elements
81 |
82 | # Done
83 | return elements
84 |
--------------------------------------------------------------------------------