728x90
반응형

Object detection

직사각형 안에 무엇이 있는지 찾는 것

Multi-Labeled Classification + Bounding Box Regression(Localization)

여러 물체에 대해 어떤 물체인지 분류하는 Classification문제와 그 물체가 어디 있는지

박스(Bounding box)를 통해 위치 정보를 나타내는 Localization문제 둘 다를 해내야 하는 분야

Object dection paper flow

R-CNN은 object detection 문제에서 CNN을 활용한 최초의 논문이다

Localization

객체라고 판단되는 곳에 직사각형(bounding box)를 그려주는 작업

Segmentation

모든 픽셀의 label을 예측한다

1. Semantic segmentation

- 모든 픽셀을 미리 지정된 개수의 class 분류하는

- 동일한 객체들끼리는 번에 masking을 수행한다

2. Instance segmentation

- sematic segmentation와 유사하지만 같은 class이더라도 다른 것으로 분류한다

- 동일한 객체들이여도 개별로 masking을 수행한다

Naive approach

물체가 존재할 수 있는 모든 크기의 영역에 대해 sliding window 방식으로 이미지를 모두 탐색하면서 classificaion을 수행하는 방식
탐색해야 할 영역이 많기 때문에 연산 시간이 오래걸리고 비효율적인 방법이다

Sliding window

일정 크기의 Window를 이미지 위에서 조금씩 옮기면서 값을 비교하는 알고리즘

Region proposals

sliding window 방식의 비효율성을 개선하기 위해 입력 영상에서 '물체가 있을 법한' 영역을 빠른 속도로 찾아내는 알고리즘

객체의 주변 간의 색감, 질감 차이, 다른 물체에 둘러 쌓여 있는지 여부 등을 파악해서

다양한 전략으로 물체의 위치를 파악할 수 있도록 하는 알고리즘

 

Bounding box들을 Random하게 많이 생성을 하고 이들을 조금씩 Merge해나가면서 물체를 인식해 나간다

 

!pip install selective-search
!pip install selectivesearch
!pip install -U opencv-contrib-python
import selective_search
import selectivesearch

import skimage
from skimage import data
import matplotlib.pyplot as plt
import matplotlib.patches as pts

dir(selective_search)
# ['__builtins__',
 '__cached__',
 '__doc__',
 '__file__',
 '__loader__',
 '__name__',
 '__package__',
 '__path__',
 '__spec__',
 'box_filter',
 'core',
 'measure',
 'selective_search',
 'structure',
 'util']
plt.imshow(data.astronaut())

plt.imshow(data.rocket())

im = data.rocket()

ss = selective_search.selective_search(im) # 좌표값을 list로 찾아준다 

len(ss)
# 489
boxes = selective_search.box_filter(ss, topN=30)

fig, ax = plt.subplots(1,1)
ax.imshow(im)
for b in boxes:
  box = pts.Rectangle((b[0],b[1]), b[2]-b[0], b[3]-b[1], fill=None, edgecolor='red') # xy(원점), width, height
  ax.add_patch(box)

ss2 = selective_search.selective_search(im, mode='fast')

boxes = selective_search.box_filter(ss2, topN=30)

fig, ax = plt.subplots(1,1)
ax.imshow(im)
for b in boxes:
  box = pts.Rectangle((b[0],b[1]), b[2]-b[0], b[3]-b[1], fill=None, edgecolor='red') 
  ax.add_patch(box)

 

im2 = data.astronaut()

ss = selective_search.selective_search(im2)
boxes = selective_search.box_filter(ss, topN=20)

fig, ax = plt.subplots(1,1)
ax.imshow(im2)
for b in boxes:
  box = pts.Rectangle((b[0],b[1]), b[2]-b[0], b[3]-b[1], fill=None, edgecolor='red') # xy(원점), width, height
  ax.add_patch(box)

sss = selectivesearch.selective_search(im, min_size=500) # numpy로 찾아준다 

sss[1] # 영역 
[{'labels': [0.0], 'rect': (0, 0, 18, 7), 'size': 121},
 {'labels': [1.0], 'rect': (19, 0, 9, 8), 'size': 65},
 {'labels': [2.0], 'rect': (16, 0, 32, 15), 'size': 207},
 {'labels': [3.0], 'rect': (45, 0, 14, 35), 'size': 223},
 {'labels': [4.0], 'rect': (57, 0, 34, 10), 'size': 300},
 {'labels': [5.0], 'rect': (88, 0, 29, 65), 'size': 209},
 {'labels': [6.0], 'rect': (89, 0, 49, 7), 'size': 217},
 {'labels': [7.0], 'rect': (133, 0, 42, 15), 'size': 242},
 {'labels': [8.0], 'rect': (152, 0, 68, 8), 'size': 292},
 {'labels': [9.0], 'rect': (214, 0, 22, 7), 'size': 96},
 {'labels': [10.0], 'rect': (232, 0, 32, 8), 'size': 189},
 {'labels': [11.0], 'rect': (265, 0, 20, 9), 'size': 114},
 {'labels': [12.0], 'rect': (269, 0, 26, 5), 'size': 118},
 {'labels': [13.0], 'rect': (291, 0, 22, 15), 'size': 218},
 {'labels': [14.0], 'rect': (307, 0, 20, 15), 'size': 145},
 {'labels': [15.0], 'rect': (312, 0, 18, 6), 'size': 81},
 {'labels': [16.0], 'rect': (325, 0, 28, 9), 'size': 115},
 {'labels': [17.0], 'rect': (339, 0, 19, 7), 'size': 93},
 {'labels': [18.0], 'rect': (358, 0, 25, 5), 'size': 92},
 {'labels': [19.0], 'rect': (384, 0, 11, 5), 'size': 55},
 {'labels': [20.0], 'rect': (384, 0, 18, 12), 'size': 126},
 {'labels': [21.0], 'rect': (398, 0, 27, 8), 'size': 163},
 {'labels': [22.0], 'rect': (402, 0, 31, 15), 'size': 191},
 {'labels': [23.0], 'rect': (429, 0, 15, 9), 'size': 142},
 {'labels': [24.0], 'rect': (432, 0, 19, 15), 'size': 136},
 {'labels': [25.0], 'rect': (447, 0, 22, 15), 'size': 161},
 {'labels': [26.0], 'rect': (456, 0, 26, 10), 'size': 206},
 {'labels': [27.0], 'rect': (472, 0, 16, 7), 'size': 72},
 {'labels': [28.0], 'rect': (487, 0, 16, 17), 'size': 139},
 {'labels': [29.0], 'rect': (493, 0, 37, 28), 'size': 503},
 {'labels': [30.0], 'rect': (529, 0, 16, 24), 'size': 234},
 {'labels': [31.0], 'rect': (546, 0, 12, 11), 'size': 118},
 {'labels': [32.0], 'rect': (539, 0, 21, 61), 'size': 209},
 {'labels': [33.0], 'rect': (560, 0, 11, 10), 'size': 97},
 {'labels': [34.0], 'rect': (567, 0, 14, 26), 'size': 107},
 {'labels': [35.0], 'rect': (579, 0, 19, 17), 'size': 225},
 {'labels': [36.0], 'rect': (591, 0, 31, 20), 'size': 232},
 {'labels': [37.0], 'rect': (613, 0, 18, 10), 'size': 94},
 {'labels': [38.0], 'rect': (626, 0, 13, 13), 'size': 124},
 {'labels': [39.0], 'rect': (10, 2, 14, 9), 'size': 70},
 {'labels': [40.0], 'rect': (114, 2, 21, 9), 'size': 131},
 {'labels': [41.0], 'rect': (221, 2, 16, 10), 'size': 107},
 {'labels': [42.0], 'rect': (354, 2, 43, 14), 'size': 224},
 {'labels': [43.0], 'rect': (90, 3, 13, 12), 'size': 95},
 {'labels': [44.0], 'rect': (199, 3, 36, 23), 'size': 365},
 {'labels': [45.0], 'rect': (320, 3, 17, 9), 'size': 90},
 {'labels': [46.0], 'rect': (160, 4, 39, 11), 'size': 125},
 {'labels': [47.0], 'rect': (280, 4, 19, 11), 'size': 122},
 {'labels': [48.0], 'rect': (336, 4, 23, 11), 'size': 132},
 {'labels': [49.0], 'rect': (0, 5, 51, 18), 'size': 243},
 {'labels': [50.0], 'rect': (99, 5, 14, 6), 'size': 71},
 {'labels': [51.0], 'rect': (208, 5, 14, 10), 'size': 75},
 {'labels': [52.0], 'rect': (236, 5, 33, 7), 'size': 124},
 {'labels': [53.0], 'rect': (479, 5, 25, 18), 'size': 184},
 {'labels': [54.0], 'rect': (496, 5, 23, 17), 'size': 171},
 {'labels': [55.0], 'rect': (89, 6, 22, 22), 'size': 280},
 {'labels': [56.0], 'rect': (104, 6, 44, 17), 'size': 402},
 {'labels': [57.0], 'rect': (169, 6, 29, 8), 'size': 170},
 {'labels': [58.0], 'rect': (600, 6, 21, 40), 'size': 270},
 {'labels': [59.0], 'rect': (0, 7, 15, 11), 'size': 129},
 {'labels': [60.0], 'rect': (358, 7, 15, 5), 'size': 60},
 {'labels': [61.0], 'rect': (549, 7, 9, 16), 'size': 67},
 {'labels': [62.0], 'rect': (574, 7, 26, 27), 'size': 140},
 {'labels': [63.0], 'rect': (146, 8, 22, 14), 'size': 165},
 {'labels': [64.0], 'rect': (160, 8, 35, 12), 'size': 163},
 {'labels': [65.0], 'rect': (238, 8, 47, 9), 'size': 241},
 {'labels': [66.0], 'rect': (470, 8, 15, 12), 'size': 81},
 {'labels': [67.0], 'rect': (527, 8, 9, 13), 'size': 69},
 {'labels': [68.0], 'rect': (576, 8, 13, 20), 'size': 139},
 {'labels': [69.0], 'rect': (62, 9, 25, 45), 'size': 226},
 {'labels': [70.0], 'rect': (540, 9, 12, 6), 'size': 62},
 {'labels': [71.0], 'rect': (560, 9, 11, 46), 'size': 175},
 {'labels': [72.0], 'rect': (611, 9, 20, 15), 'size': 104},
 {'labels': [73.0], 'rect': (622, 9, 17, 14), 'size': 149},
 {'labels': [74.0], 'rect': (31, 10, 19, 20), 'size': 134},
 {'labels': [75.0], 'rect': (53, 10, 15, 30), 'size': 195},
 {'labels': [76.0], 'rect': (342, 10, 44, 13), 'size': 351},
 {'labels': [77.0], 'rect': (394, 10, 38, 6), 'size': 102},
 {'labels': [78.0], 'rect': (454, 11, 24, 10), 'size': 131},
 {'labels': [79.0], 'rect': (62, 12, 22, 21), 'size': 273},
 {'labels': [80.0], 'rect': (313, 12, 30, 11), 'size': 232},
 {'labels': [81.0], 'rect': (544, 12, 14, 19), 'size': 175},
 {'labels': [82.0], 'rect': (231, 13, 16, 7), 'size': 76},
 {'labels': [83.0], 'rect': (236, 13, 25, 5), 'size': 57},
 {'labels': [84.0], 'rect': (249, 13, 31, 6), 'size': 75},
 {'labels': [85.0], 'rect': (282, 13, 30, 15), 'size': 226},
 {'labels': [86.0], 'rect': (408, 13, 20, 13), 'size': 127},
 {'labels': [87.0], 'rect': (440, 13, 17, 12), 'size': 97},
 {'labels': [88.0], 'rect': (156, 14, 56, 13), 'size': 233},
 {'labels': [89.0], 'rect': (296, 14, 17, 9), 'size': 122},
 {'labels': [90.0], 'rect': (392, 14, 16, 9), 'size': 101},
 {'labels': [91.0], 'rect': (588, 14, 9, 13), 'size': 76},
 {'labels': [92.0], 'rect': (429, 15, 10, 8), 'size': 56},
 {'labels': [93.0], 'rect': (450, 15, 34, 14), 'size': 223},
 {'labels': [94.0], 'rect': (0, 16, 23, 12), 'size': 141},
 {'labels': [95.0], 'rect': (247, 16, 16, 8), 'size': 63},
 {'labels': [96.0], 'rect': (339, 16, 18, 7), 'size': 100},
 {'labels': [97.0], 'rect': (384, 16, 17, 12), 'size': 83},
 {'labels': [98.0], 'rect': (515, 16, 12, 28), 'size': 146},
 {'labels': [99.0], 'rect': (561, 16, 11, 27), 'size': 201},
 {'labels': [100.0], 'rect': (575, 16, 8, 11), 'size': 58},
 {'labels': [101.0], 'rect': (621, 16, 18, 15), 'size': 148},
 {'labels': [102.0], 'rect': (32, 17, 16, 27), 'size': 182},
 {'labels': [103.0], 'rect': (606, 17, 13, 11), 'size': 91},
 {'labels': [104.0], 'rect': (48, 18, 8, 45), 'size': 202},
 {'labels': [105.0], 'rect': (106, 18, 21, 8), 'size': 113},
 {'labels': [106.0], 'rect': (262, 18, 26, 9), 'size': 168},
 {'labels': [107.0], 'rect': (400, 18, 15, 9), 'size': 95},
 {'labels': [108.0], 'rect': (432, 18, 13, 8), 'size': 65},
 {'labels': [109.0], 'rect': (493, 18, 23, 17), 'size': 190},
 {'labels': [110.0], 'rect': (536, 18, 7, 13), 'size': 78},
 {'labels': [111.0], 'rect': (5, 19, 34, 12), 'size': 182},
 {'labels': [112.0], 'rect': (59, 19, 12, 20), 'size': 139},
 {'labels': [113.0], 'rect': (129, 19, 22, 4), 'size': 70},
 {'labels': [114.0], 'rect': (166, 19, 40, 6), 'size': 123},
 {'labels': [115.0], 'rect': (226, 19, 31, 10), 'size': 169},
 {'labels': [116.0], 'rect': (310, 19, 25, 9), 'size': 134},
 {'labels': [117.0], 'rect': (409, 19, 16, 7), 'size': 58},
 {'labels': [118.0], 'rect': (335, 20, 32, 22), 'size': 266},
 {'labels': [119.0], 'rect': (485, 20, 30, 18), 'size': 170},
 {'labels': [120.0], 'rect': (528, 20, 9, 11), 'size': 72},
 {'labels': [121.0], 'rect': (355, 21, 29, 11), 'size': 163},
 {'labels': [122.0], 'rect': (440, 21, 13, 10), 'size': 74},
 {'labels': [123.0], 'rect': (127, 22, 23, 9), 'size': 64},
 {'labels': [124.0], 'rect': (136, 22, 17, 6), 'size': 62},
 {'labels': [125.0], 'rect': (136, 22, 21, 9), 'size': 106},
 {'labels': [126.0], 'rect': (156, 22, 37, 13), 'size': 249},
 {'labels': [127.0], 'rect': (198, 22, 22, 9), 'size': 93},
 {'labels': [128.0], 'rect': (384, 22, 13, 8), 'size': 57},
 {'labels': [129.0], 'rect': (536, 22, 22, 25), 'size': 192},
 {'labels': [130.0], 'rect': (593, 22, 7, 11), 'size': 64},
 {'labels': [131.0], 'rect': (240, 23, 45, 13), 'size': 342},
 {'labels': [132.0], 'rect': (343, 23, 18, 6), 'size': 61},
 {'labels': [133.0], 'rect': (380, 23, 15, 18), 'size': 108},
 {'labels': [134.0], 'rect': (428, 23, 21, 14), 'size': 143},
 {'labels': [135.0], 'rect': (483, 23, 7, 10), 'size': 61},
 {'labels': [136.0], 'rect': (120, 24, 10, 7), 'size': 54},
 {'labels': [137.0], 'rect': (395, 24, 20, 18), 'size': 169},
 {'labels': [138.0], 'rect': (416, 24, 15, 11), 'size': 95},
 {'labels': [139.0], 'rect': (452, 24, 11, 8), 'size': 53},
 {'labels': [140.0], 'rect': (456, 24, 26, 13), 'size': 164},
 {'labels': [141.0], 'rect': (604, 24, 20, 32), 'size': 331},
 {'labels': [142.0], 'rect': (613, 24, 26, 31), 'size': 395},
 {'labels': [143.0], 'rect': (185, 25, 32, 9), 'size': 168},
 {'labels': [144.0], 'rect': (219, 25, 12, 6), 'size': 61},
 {'labels': [145.0], 'rect': (329, 25, 30, 17), 'size': 165},
 {'labels': [146.0], 'rect': (0, 26, 12, 9), 'size': 99},
 {'labels': [147.0], 'rect': (13, 26, 14, 9), 'size': 82},
 {'labels': [148.0], 'rect': (89, 26, 22, 15), 'size': 136},
 {'labels': [149.0], 'rect': (91, 26, 28, 8), 'size': 86},
 {'labels': [150.0], 'rect': (166, 26, 26, 8), 'size': 106},
 {'labels': [151.0], 'rect': (224, 26, 23, 10), 'size': 101},
 {'labels': [152.0], 'rect': (303, 26, 25, 6), 'size': 95},
 {'labels': [153.0], 'rect': (526, 26, 17, 18), 'size': 154},
 {'labels': [154.0], 'rect': (575, 26, 11, 14), 'size': 126},
 {'labels': [155.0], 'rect': (361, 27, 15, 11), 'size': 100},
 {'labels': [156.0], 'rect': (519, 27, 12, 12), 'size': 64},
 {'labels': [157.0], 'rect': (561, 27, 13, 38), 'size': 304},
 {'labels': [158.0], 'rect': (65, 28, 21, 26), 'size': 294},
 {'labels': [159.0], 'rect': (102, 28, 20, 7), 'size': 98},
 {'labels': [160.0], 'rect': (112, 28, 23, 8), 'size': 84},
 {'labels': [161.0], 'rect': (209, 28, 22, 13), 'size': 144},
 {'labels': [162.0], 'rect': (242, 28, 19, 10), 'size': 82},
 {'labels': [163.0], 'rect': (280, 28, 31, 7), 'size': 113},
 {'labels': [164.0], 'rect': (444, 28, 19, 18), 'size': 149},
 {'labels': [165.0], 'rect': (8, 29, 33, 18), 'size': 149},
 {'labels': [166.0], 'rect': (96, 29, 7, 8), 'size': 51},
 {'labels': [167.0], 'rect': (120, 29, 41, 6), 'size': 75},
 {'labels': [168.0], 'rect': (309, 29, 44, 18), 'size': 270},
 {'labels': [169.0], 'rect': (406, 29, 13, 14), 'size': 132},
 {'labels': [170.0], 'rect': (417, 29, 21, 9), 'size': 100},
 {'labels': [171.0], 'rect': (15, 30, 30, 12), 'size': 223},
 {'labels': [172.0], 'rect': (191, 30, 21, 8), 'size': 72},
 {'labels': [173.0], 'rect': (454, 30, 26, 19), 'size': 241},
 {'labels': [174.0], 'rect': (592, 30, 11, 19), 'size': 86},
 {'labels': [175.0], 'rect': (128, 31, 33, 7), 'size': 82},
 {'labels': [176.0], 'rect': (53, 32, 14, 24), 'size': 155},
 {'labels': [177.0], 'rect': (136, 32, 30, 9), 'size': 91},
 {'labels': [178.0], 'rect': (169, 32, 39, 9), 'size': 147},
 {'labels': [179.0], 'rect': (238, 32, 33, 14), 'size': 215},
 {'labels': [180.0], 'rect': (289, 32, 39, 11), 'size': 214},
 {'labels': [181.0], 'rect': (374, 32, 11, 8), 'size': 62},
 {'labels': [182.0], 'rect': (488, 32, 15, 9), 'size': 67},
 {'labels': [183.0], 'rect': (278, 33, 34, 15), 'size': 224},
 {'labels': [184.0], 'rect': (582, 33, 22, 21), 'size': 170},
 {'labels': [185.0], 'rect': (232, 34, 15, 8), 'size': 72},
 {'labels': [186.0], 'rect': (320, 34, 23, 7), 'size': 56},
 {'labels': [187.0], 'rect': (480, 34, 30, 18), 'size': 317},
 {'labels': [188.0], 'rect': (583, 34, 8, 13), 'size': 74},
 {'labels': [189.0], 'rect': (165, 35, 19, 4), 'size': 72},
 {'labels': [190.0], 'rect': (368, 35, 26, 9), 'size': 160},
 {'labels': [191.0], 'rect': (428, 35, 21, 8), 'size': 97},
 {'labels': [192.0], 'rect': (0, 36, 10, 7), 'size': 76},
 {'labels': [193.0], 'rect': (89, 36, 45, 10), 'size': 169},
 {'labels': [194.0], 'rect': (97, 36, 50, 13), 'size': 167},
 {'labels': [195.0], 'rect': (262, 36, 17, 9), 'size': 102},
 {'labels': [196.0], 'rect': (414, 36, 41, 24), 'size': 422},
 {'labels': [197.0], 'rect': (508, 36, 15, 11), 'size': 109},
 {'labels': [198.0], 'rect': (190, 37, 40, 7), 'size': 94},
 {'labels': [199.0], 'rect': (214, 37, 33, 9), 'size': 97},
 {'labels': [200.0], 'rect': (302, 37, 33, 11), 'size': 159},
 {'labels': [201.0], 'rect': (536, 37, 17, 13), 'size': 110},
 {'labels': [202.0], 'rect': (562, 37, 16, 54), 'size': 273},
 {'labels': [203.0], 'rect': (128, 38, 38, 6), 'size': 152},
 {'labels': [204.0], 'rect': (547, 38, 11, 14), 'size': 70},
 {'labels': [205.0], 'rect': (25, 39, 22, 22), 'size': 165},
 {'labels': [206.0], 'rect': (160, 39, 28, 12), 'size': 214},
 {'labels': [207.0], 'rect': (526, 39, 17, 18), 'size': 145},
 {'labels': [208.0], 'rect': (23, 40, 17, 6), 'size': 64},
 {'labels': [209.0], 'rect': (347, 40, 22, 7), 'size': 106},
 {'labels': [210.0], 'rect': (394, 40, 15, 7), 'size': 88},
 {'labels': [211.0], 'rect': (478, 40, 19, 13), 'size': 118},
 {'labels': [212.0], 'rect': (576, 40, 27, 30), 'size': 369},
 {'labels': [213.0], 'rect': (616, 40, 15, 23), 'size': 233},
 {'labels': [214.0], 'rect': (184, 41, 16, 4), 'size': 51},
 {'labels': [215.0], 'rect': (211, 41, 28, 9), 'size': 133},
 {'labels': [216.0], 'rect': (462, 41, 13, 7), 'size': 60},
 {'labels': [217.0], 'rect': (292, 42, 26, 9), 'size': 72},
 {'labels': [218.0], 'rect': (504, 42, 30, 18), 'size': 231},
 {'labels': [219.0], 'rect': (0, 43, 11, 12), 'size': 95},
 {'labels': [220.0], 'rect': (128, 43, 34, 6), 'size': 103},
 {'labels': [221.0], 'rect': (274, 43, 37, 12), 'size': 201},
 {'labels': [222.0], 'rect': (354, 43, 29, 11), 'size': 182},
 {'labels': [223.0], 'rect': (374, 43, 19, 8), 'size': 112},
 {'labels': [224.0], 'rect': (408, 43, 25, 22), 'size': 222},
 {'labels': [225.0], 'rect': (444, 43, 30, 13), 'size': 151},
 {'labels': [226.0], 'rect': (0, 44, 25, 15), 'size': 246},
 {'labels': [227.0], 'rect': (23, 44, 21, 17), 'size': 155},
 {'labels': [228.0], 'rect': (89, 44, 30, 7), 'size': 73},
 {'labels': [229.0], 'rect': (89, 44, 46, 17), 'size': 232},
 {'labels': [230.0], 'rect': (180, 44, 36, 6), 'size': 115},
 {'labels': [231.0], 'rect': (238, 44, 35, 9), 'size': 164},
 {'labels': [232.0], 'rect': (392, 44, 20, 18), 'size': 150},
 {'labels': [233.0], 'rect': (408, 44, 14, 9), 'size': 96},
 {'labels': [234.0], 'rect': (68, 45, 17, 16), 'size': 99},
 {'labels': [235.0], 'rect': (78, 45, 6, 12), 'size': 58},
 {'labels': [236.0], 'rect': (198, 45, 21, 11), 'size': 110},
 {'labels': [237.0], 'rect': (329, 45, 24, 7), 'size': 125},
 {'labels': [238.0], 'rect': (136, 46, 25, 9), 'size': 172},
 {'labels': [239.0], 'rect': (59, 47, 24, 22), 'size': 317},
 {'labels': [240.0], 'rect': (167, 47, 32, 5), 'size': 78},
 {'labels': [241.0], 'rect': (216, 47, 21, 10), 'size': 123},
 {'labels': [242.0], 'rect': (262, 47, 37, 16), 'size': 165},
 {'labels': [243.0], 'rect': (107, 48, 33, 18), 'size': 259},
 {'labels': [244.0], 'rect': (160, 48, 48, 11), 'size': 219},
 {'labels': [245.0], 'rect': (207, 48, 20, 13), 'size': 115},
 {'labels': [246.0], 'rect': (236, 48, 52, 10), 'size': 208},
 {'labels': [247.0], 'rect': (307, 48, 44, 23), 'size': 276},
 {'labels': [248.0], 'rect': (315, 48, 29, 9), 'size': 100},
 {'labels': [249.0], 'rect': (469, 48, 36, 23), 'size': 180},
 {'labels': [250.0], 'rect': (488, 48, 43, 17), 'size': 181},
 {'labels': [251.0], 'rect': (607, 48, 14, 22), 'size': 110},
 {'labels': [252.0], 'rect': (344, 49, 28, 10), 'size': 65},
 {'labels': [253.0], 'rect': (607, 49, 32, 46), 'size': 747},
 {'labels': [254.0], 'rect': (384, 50, 27, 15), 'size': 154},
 {'labels': [255.0], 'rect': (428, 50, 14, 13), 'size': 104},
 {'labels': [256.0], 'rect': (477, 50, 35, 19), 'size': 183},
 {'labels': [257.0], 'rect': (531, 50, 18, 25), 'size': 218},
 {'labels': [258.0], 'rect': (230, 51, 17, 6), 'size': 57},
 {'labels': [259.0], 'rect': (359, 51, 24, 13), 'size': 110},
 {'labels': [260.0], 'rect': (578, 51, 14, 24), 'size': 118},
 {'labels': [261.0], 'rect': (136, 52, 35, 7), 'size': 162},
 {'labels': [262.0], 'rect': (456, 52, 17, 13), 'size': 120},
 {'labels': [263.0], 'rect': (272, 53, 26, 11), 'size': 103},
 {'labels': [264.0], 'rect': (297, 53, 41, 15), 'size': 174},
 {'labels': [265.0], 'rect': (376, 53, 23, 11), 'size': 138},
 {'labels': [266.0], 'rect': (471, 53, 7, 14), 'size': 52},
 {'labels': [267.0], 'rect': (40, 54, 9, 43), 'size': 167},
 {'labels': [268.0], 'rect': (340, 54, 41, 11), 'size': 187},
 {'labels': [269.0], 'rect': (82, 55, 4, 33), 'size': 61},
 {'labels': [270.0], 'rect': (87, 55, 25, 48), 'size': 284},
 {'labels': [271.0], 'rect': (223, 55, 72, 16), 'size': 470},
 {'labels': [272.0], 'rect': (512, 55, 13, 14), 'size': 149},
 {'labels': [273.0], 'rect': (592, 55, 17, 30), 'size': 174},
 {'labels': [274.0], 'rect': (0, 56, 15, 6), 'size': 69},
 {'labels': [275.0], 'rect': (16, 56, 27, 11), 'size': 204},
 {'labels': [276.0], 'rect': (54, 56, 9, 12), 'size': 63},
 {'labels': [277.0], 'rect': (54, 56, 14, 25), 'size': 160},
 {'labels': [278.0], 'rect': (168, 56, 23, 6), 'size': 104},
 {'labels': [279.0], 'rect': (446, 56, 8, 18), 'size': 121},
 {'labels': [280.0], 'rect': (454, 56, 33, 17), 'size': 175},
 {'labels': [281.0], 'rect': (480, 56, 15, 10), 'size': 83},
 {'labels': [282.0], 'rect': (524, 56, 19, 18), 'size': 104},
 {'labels': [283.0], 'rect': (546, 56, 15, 51), 'size': 230},
 {'labels': [284.0], 'rect': (630, 56, 9, 11), 'size': 90},
 {'labels': [285.0], 'rect': (141, 57, 13, 9), 'size': 79},
 {'labels': [286.0], 'rect': (420, 57, 13, 6), 'size': 59},
 {'labels': [287.0], 'rect': (599, 57, 7, 13), 'size': 74},
 {'labels': [288.0], 'rect': (96, 58, 10, 8), 'size': 72},
 {'labels': [289.0], 'rect': (102, 58, 19, 10), 'size': 135},
 {'labels': [290.0], 'rect': (176, 58, 52, 13), 'size': 221},
 {'labels': [291.0], 'rect': (340, 58, 50, 17), 'size': 351},
 {'labels': [292.0], 'rect': (548, 58, 11, 12), 'size': 86},
 {'labels': [293.0], 'rect': (550, 58, 10, 34), 'size': 164},
 {'labels': [294.0], 'rect': (128, 59, 15, 9), 'size': 107},
 {'labels': [295.0], 'rect': (150, 59, 17, 9), 'size': 86},
 {'labels': [296.0], 'rect': (291, 59, 53, 15), 'size': 262},
 {'labels': [297.0], 'rect': (46, 60, 13, 32), 'size': 179},
 {'labels': [298.0], 'rect': (243, 60, 20, 9), 'size': 118},
 {'labels': [299.0], 'rect': (411, 60, 30, 11), 'size': 125},
 {'labels': [300.0], 'rect': (453, 60, 18, 14), 'size': 148},
 {'labels': [301.0], 'rect': (0, 61, 24, 7), 'size': 119},
 {'labels': [302.0], 'rect': (25, 61, 18, 18), 'size': 135},
 {'labels': [303.0], 'rect': (142, 61, 25, 11), 'size': 117},
 {'labels': [304.0], 'rect': (156, 61, 27, 17), 'size': 187},
 {'labels': [305.0], 'rect': (320, 61, 14, 4), 'size': 52},
 {'labels': [306.0], 'rect': (392, 61, 23, 12), 'size': 134},
 {'labels': [307.0], 'rect': (433, 61, 26, 23), 'size': 293},
 {'labels': [308.0], 'rect': (88, 62, 15, 10), 'size': 94},
 {'labels': [309.0], 'rect': (174, 63, 26, 9), 'size': 131},
 {'labels': [310.0], 'rect': (196, 63, 21, 5), 'size': 66},
 {'labels': [311.0], 'rect': (266, 63, 24, 3), 'size': 51},
 {'labels': [312.0], 'rect': (382, 63, 30, 14), 'size': 139},
 {'labels': [313.0], 'rect': (503, 63, 25, 22), 'size': 202},
 {'labels': [314.0], 'rect': (0, 64, 31, 15), 'size': 238},
 {'labels': [315.0], 'rect': (67, 64, 17, 24), 'size': 162},
 {'labels': [316.0], 'rect': (104, 64, 45, 11), 'size': 232},
 {'labels': [317.0], 'rect': (218, 64, 25, 20), 'size': 155},
 {'labels': [318.0], 'rect': (258, 64, 10, 11), 'size': 82},
 {'labels': [319.0], 'rect': (478, 64, 12, 7), 'size': 55},
 {'labels': [320.0], 'rect': (523, 64, 18, 20), 'size': 218},
 {'labels': [321.0], 'rect': (579, 64, 11, 12), 'size': 98},
 {'labels': [322.0], 'rect': (234, 65, 24, 12), 'size': 203},
 {'labels': [323.0], 'rect': (268, 65, 28, 9), 'size': 84},
 {'labels': [324.0], 'rect': (294, 65, 23, 15), 'size': 106},
 {'labels': [325.0], 'rect': (426, 65, 14, 14), 'size': 149},
 {'labels': [326.0], 'rect': (266, 66, 31, 13), 'size': 95},
 {'labels': [327.0], 'rect': (304, 66, 23, 9), 'size': 114},
 {'labels': [328.0], 'rect': (344, 66, 15, 5), 'size': 77},
 {'labels': [329.0], 'rect': (75, 67, 8, 10), 'size': 59},
 {'labels': [330.0], 'rect': (273, 67, 36, 13), 'size': 140},
 {'labels': [331.0], 'rect': (410, 67, 16, 19), 'size': 152},
 {'labels': [332.0], 'rect': (421, 67, 42, 39), 'size': 340},
 {'labels': [333.0], 'rect': (490, 67, 13, 20), 'size': 140},
 {'labels': [334.0], 'rect': (10, 68, 21, 11), 'size': 96},
 {'labels': [335.0], 'rect': (180, 68, 27, 7), 'size': 113},
 {'labels': [336.0], 'rect': (204, 68, 19, 6), 'size': 92},
 {'labels': [337.0], 'rect': (88, 69, 23, 17), 'size': 179},
 {'labels': [338.0], 'rect': (585, 69, 18, 17), 'size': 164},
 {'labels': [339.0], 'rect': (123, 70, 34, 5), 'size': 75},
 {'labels': [340.0], 'rect': (343, 71, 17, 5), 'size': 62},
 {'labels': [341.0], 'rect': (385, 71, 22, 16), 'size': 112},
 {'labels': [342.0], 'rect': (472, 71, 20, 8), 'size': 120},
 {'labels': [343.0], 'rect': (563, 71, 13, 59), 'size': 369},
 {'labels': [344.0], 'rect': (565, 71, 15, 46), 'size': 299},
 {'labels': [345.0], 'rect': (17, 72, 24, 14), 'size': 77},
 {'labels': [346.0], 'rect': (102, 72, 28, 6), 'size': 82},
 {'labels': [347.0], 'rect': (137, 72, 30, 7), 'size': 122},
 {'labels': [348.0], 'rect': (269, 72, 18, 9), 'size': 81},
 {'labels': [349.0], 'rect': (340, 72, 45, 17), 'size': 204},
 {'labels': [350.0], 'rect': (352, 72, 32, 12), 'size': 165},
 {'labels': [351.0], 'rect': (392, 72, 18, 10), 'size': 108},
 {'labels': [352.0], 'rect': (448, 72, 17, 20), 'size': 128},
 {'labels': [353.0], 'rect': (496, 72, 19, 15), 'size': 210},
 {'labels': [354.0], 'rect': (539, 72, 16, 13), 'size': 135},
 {'labels': [355.0], 'rect': (17, 73, 24, 18), 'size': 180},
 {'labels': [356.0], 'rect': (102, 73, 39, 12), 'size': 272},
 {'labels': [357.0], 'rect': (136, 73, 42, 16), 'size': 274},
 {'labels': [358.0], 'rect': (202, 73, 21, 6), 'size': 88},
 {'labels': [359.0], 'rect': (231, 73, 53, 14), 'size': 312},
 {'labels': [360.0], 'rect': (314, 73, 29, 23), 'size': 198},
 {'labels': [361.0], 'rect': (378, 73, 28, 17), 'size': 68},
 {'labels': [362.0], 'rect': (461, 73, 15, 18), 'size': 162},
 {'labels': [363.0], 'rect': (182, 74, 13, 4), 'size': 60},
 {'labels': [364.0], 'rect': (184, 74, 36, 14), 'size': 221},
 {'labels': [365.0], 'rect': (65, 76, 19, 24), 'size': 167},
 {'labels': [366.0], 'rect': (284, 76, 27, 7), 'size': 109},
 {'labels': [367.0], 'rect': (477, 76, 15, 12), 'size': 113},
 {'labels': [368.0], 'rect': (579, 76, 22, 32), 'size': 337},
 {'labels': [369.0], 'rect': (613, 76, 18, 34), 'size': 230},
 {'labels': [370.0], 'rect': (46, 77, 16, 19), 'size': 145},
 {'labels': [371.0], 'rect': (306, 77, 16, 13), 'size': 160},
 {'labels': [372.0], 'rect': (315, 77, 19, 16), 'size': 131},
 {'labels': [373.0], 'rect': (339, 77, 47, 25), 'size': 450},
 {'labels': [374.0], 'rect': (0, 78, 25, 12), 'size': 172},
 {'labels': [375.0], 'rect': (177, 78, 18, 11), 'size': 95},
 {'labels': [376.0], 'rect': (84, 79, 1, 48), 'size': 68},
 {'labels': [377.0], 'rect': (35, 80, 20, 54), 'size': 246},
 {'labels': [378.0], 'rect': (156, 80, 25, 11), 'size': 209},
 {'labels': [379.0], 'rect': (218, 80, 17, 17), 'size': 155},
 {'labels': [380.0], 'rect': (280, 80, 14, 15), 'size': 111},
 {'labels': [381.0], 'rect': (408, 80, 37, 25), 'size': 128},
 {'labels': [382.0], 'rect': (512, 80, 22, 24), 'size': 295},
 {'labels': [383.0], 'rect': (531, 80, 25, 15), 'size': 234},
 {'labels': [384.0], 'rect': (599, 80, 11, 19), 'size': 158},
 {'labels': [385.0], 'rect': (615, 80, 16, 54), 'size': 372},
 {'labels': [386.0], 'rect': (76, 81, 7, 12), 'size': 64},
 {'labels': [387.0], 'rect': (232, 81, 31, 8), 'size': 172},
 {'labels': [388.0], 'rect': (296, 81, 26, 12), 'size': 101},
 {'labels': [389.0], 'rect': (340, 81, 13, 17), 'size': 99},
 {'labels': [390.0], 'rect': (391, 81, 25, 7), 'size': 73},
 {'labels': [391.0], 'rect': (0, 82, 17, 18), 'size': 193},
 {'labels': [392.0], 'rect': (55, 82, 26, 24), 'size': 367},
 {'labels': [393.0], 'rect': (138, 82, 13, 5), 'size': 59},
 {'labels': [394.0], 'rect': (192, 82, 23, 7), 'size': 96},
 {'labels': [395.0], 'rect': (285, 82, 10, 8), 'size': 61},
 {'labels': [396.0], 'rect': (385, 82, 42, 21), 'size': 327},
 {'labels': [397.0], 'rect': (435, 82, 36, 16), 'size': 187},
 {'labels': [398.0], 'rect': (504, 82, 19, 13), 'size': 130},
 {'labels': [399.0], 'rect': (629, 82, 10, 28), 'size': 159},
 {'labels': [400.0], 'rect': (112, 83, 21, 6), 'size': 85},
 {'labels': [401.0], 'rect': (470, 83, 14, 9), 'size': 66},
 {'labels': [402.0], 'rect': (23, 84, 16, 22), 'size': 105},
 {'labels': [403.0], 'rect': (177, 84, 41, 11), 'size': 186},
 {'labels': [404.0], 'rect': (267, 84, 15, 9), 'size': 72},
 {'labels': [405.0], 'rect': (288, 84, 46, 16), 'size': 253},
 {'labels': [406.0], 'rect': (114, 85, 34, 10), 'size': 227},
 {'labels': [407.0], 'rect': (231, 85, 32, 11), 'size': 197},
 {'labels': [408.0], 'rect': (463, 85, 24, 14), 'size': 113},
 {'labels': [409.0], 'rect': (474, 85, 15, 12), 'size': 95},
 {'labels': [410.0], 'rect': (491, 85, 31, 23), 'size': 200},
 {'labels': [411.0], 'rect': (325, 86, 8, 10), 'size': 67},
 {'labels': [412.0], 'rect': (96, 87, 19, 7), 'size': 94},
 {'labels': [413.0], 'rect': (408, 87, 15, 11), 'size': 100},
 {'labels': [414.0], 'rect': (0, 88, 37, 20), 'size': 346},
 {'labels': [415.0], 'rect': (127, 88, 34, 12), 'size': 209},
 {'labels': [416.0], 'rect': (241, 88, 56, 10), 'size': 273},
 {'labels': [417.0], 'rect': (346, 88, 21, 10), 'size': 186},
 {'labels': [418.0], 'rect': (424, 88, 24, 16), 'size': 126},
 {'labels': [419.0], 'rect': (490, 88, 22, 20), 'size': 142},
 {'labels': [420.0], 'rect': (581, 88, 15, 14), 'size': 92},
 {'labels': [421.0], 'rect': (86, 89, 9, 66), 'size': 139},
 {'labels': [422.0], 'rect': (170, 89, 13, 6), 'size': 64},
 {'labels': [423.0], 'rect': (184, 89, 23, 9), 'size': 140},
 {'labels': [424.0], 'rect': (219, 89, 20, 14), 'size': 133},
 {'labels': [425.0], 'rect': (158, 90, 14, 9), 'size': 87},
 {'labels': [426.0], 'rect': (531, 90, 21, 16), 'size': 118},
 {'labels': [427.0], 'rect': (424, 91, 7, 12), 'size': 73},
 {'labels': [428.0], 'rect': (605, 91, 8, 19), 'size': 110},
 {'labels': [429.0], 'rect': (49, 92, 8, 9), 'size': 53},
 {'labels': [430.0], 'rect': (93, 92, 18, 11), 'size': 96},
 {'labels': [431.0], 'rect': (333, 92, 31, 24), 'size': 241},
 {'labels': [432.0], 'rect': (532, 92, 30, 38), 'size': 532},
 {'labels': [433.0], 'rect': (98, 93, 21, 16), 'size': 156},
 {'labels': [434.0], 'rect': (166, 93, 20, 12), 'size': 123},
 {'labels': [435.0], 'rect': (208, 93, 13, 10), 'size': 101},
 {'labels': [436.0], 'rect': (488, 93, 15, 11), 'size': 101},
 {'labels': [437.0], 'rect': (112, 94, 18, 8), 'size': 83},
 {'labels': [438.0], 'rect': (184, 95, 25, 12), 'size': 157},
 {'labels': [439.0], 'rect': (462, 95, 17, 18), 'size': 130},
 {'labels': [440.0], 'rect': (129, 96, 48, 12), 'size': 267},
 {'labels': [441.0], 'rect': (238, 96, 16, 7), 'size': 64},
 {'labels': [442.0], 'rect': (297, 96, 20, 13), 'size': 135},
 {'labels': [443.0], 'rect': (376, 96, 41, 15), 'size': 288},
 {'labels': [444.0], 'rect': (444, 96, 16, 17), 'size': 116},
 {'labels': [445.0], 'rect': (254, 97, 24, 14), 'size': 140},
 {'labels': [446.0], 'rect': (15, 98, 22, 18), 'size': 193},
 {'labels': [447.0], 'rect': (49, 98, 17, 18), 'size': 145},
 {'labels': [448.0], 'rect': (210, 98, 37, 29), 'size': 422},
 {'labels': [449.0], 'rect': (235, 98, 24, 22), 'size': 159},
 {'labels': [450.0], 'rect': (267, 98, 26, 11), 'size': 167},
 {'labels': [451.0], 'rect': (280, 98, 17, 5), 'size': 72},
 {'labels': [452.0], 'rect': (309, 98, 26, 6), 'size': 97},
 {'labels': [453.0], 'rect': (342, 98, 24, 5), 'size': 88},
 {'labels': [454.0], 'rect': (373, 98, 34, 28), 'size': 432},
 {'labels': [455.0], 'rect': (432, 98, 14, 11), 'size': 54},
 {'labels': [456.0], 'rect': (470, 98, 23, 9), 'size': 159},
 {'labels': [457.0], 'rect': (581, 98, 24, 21), 'size': 243},
 {'labels': [458.0], 'rect': (422, 99, 24, 18), 'size': 117},
 {'labels': [459.0], 'rect': (462, 99, 19, 23), 'size': 118},
 {'labels': [460.0], 'rect': (58, 100, 25, 36), 'size': 223},
 {'labels': [461.0], 'rect': (87, 100, 16, 17), 'size': 169},
 {'labels': [462.0], 'rect': (117, 100, 12, 8), 'size': 79},
 {'labels': [463.0], 'rect': (43, 101, 14, 17), 'size': 143},
 {'labels': [464.0], 'rect': (192, 101, 23, 27), 'size': 337},
 {'labels': [465.0], 'rect': (205, 101, 18, 14), 'size': 154},
 {'labels': [466.0], 'rect': (313, 101, 22, 22), 'size': 261},
 {'labels': [467.0], 'rect': (359, 101, 11, 8), 'size': 70},
 {'labels': [468.0], 'rect': (410, 101, 28, 22), 'size': 262},
 {'labels': [469.0], 'rect': (505, 101, 16, 10), 'size': 61},
 {'labels': [470.0], 'rect': (73, 102, 10, 12), 'size': 88},
 {'labels': [471.0], 'rect': (161, 102, 38, 22), 'size': 352},
 {'labels': [472.0], 'rect': (360, 102, 23, 25), 'size': 332},
 {'labels': [473.0], 'rect': (507, 102, 32, 22), 'size': 368},
 {'labels': [474.0], 'rect': (0, 104, 27, 17), 'size': 210},
 {'labels': [475.0], 'rect': (126, 104, 17, 15), 'size': 123},
 {'labels': [476.0], 'rect': (134, 104, 11, 5), 'size': 56},
 {'labels': [477.0], 'rect': (235, 104, 17, 12), 'size': 103},
 {'labels': [478.0], 'rect': (255, 104, 10, 13), 'size': 77},
 {'labels': [479.0], 'rect': (287, 104, 27, 23), 'size': 165},
 {'labels': [480.0], 'rect': (293, 104, 29, 24), 'size': 252},
 {'labels': [481.0], 'rect': (330, 104, 29, 16), 'size': 192},
 {'labels': [482.0], 'rect': (393, 104, 16, 8), 'size': 66},
 {'labels': [483.0], 'rect': (456, 104, 14, 16), 'size': 131},
 {'labels': [484.0], 'rect': (477, 104, 12, 16), 'size': 68},
 {'labels': [485.0], 'rect': (481, 104, 22, 16), 'size': 187},
 {'labels': [486.0], 'rect': (496, 104, 29, 24), 'size': 221},
 {'labels': [487.0], 'rect': (96, 105, 23, 12), 'size': 107},
 {'labels': [488.0], 'rect': (110, 105, 24, 18), 'size': 271},
 {'labels': [489.0], 'rect': (150, 105, 11, 6), 'size': 62},
 {'labels': [490.0], 'rect': (618, 105, 21, 26), 'size': 273},
 {'labels': [491.0], 'rect': (282, 106, 20, 17), 'size': 201},
 {'labels': [492.0], 'rect': (589, 106, 22, 14), 'size': 189},
 {'labels': [493.0], 'rect': (440, 107, 19, 17), 'size': 128},
 {'labels': [494.0], 'rect': (566, 107, 13, 27), 'size': 214},
 {'labels': [495.0], 'rect': (142, 108, 9, 13), 'size': 91},
 {'labels': [496.0], 'rect': (264, 108, 19, 13), 'size': 115},
 {'labels': [497.0], 'rect': (390, 108, 17, 11), 'size': 123},
 {'labels': [498.0], 'rect': (158, 109, 26, 15), 'size': 240},
 {'labels': [499.0], 'rect': (312, 109, 7, 10), 'size': 53},
 {'labels': [500.0], 'rect': (322, 109, 22, 27), 'size': 283},
 {'labels': [501.0], 'rect': (567, 109, 14, 47), 'size': 277},
 {'labels': [502.0], 'rect': (581, 109, 2, 31), 'size': 57},
 {'labels': [503.0], 'rect': (7, 110, 28, 29), 'size': 281},
 {'labels': [504.0], 'rect': (69, 110, 14, 15), 'size': 77},
 {'labels': [505.0], 'rect': (400, 110, 46, 23), 'size': 423},
 {'labels': [506.0], 'rect': (433, 110, 13, 13), 'size': 103},
 {'labels': [507.0], 'rect': (606, 110, 9, 13), 'size': 85},
 {'labels': [508.0], 'rect': (0, 112, 23, 17), 'size': 254},
 {'labels': [509.0], 'rect': (92, 112, 19, 15), 'size': 159},
 {'labels': [510.0], 'rect': (130, 112, 36, 18), 'size': 290},
 {'labels': [511.0], 'rect': (223, 112, 32, 15), 'size': 339},
 {'labels': [512.0], 'rect': (526, 112, 27, 26), 'size': 244},
 {'labels': [513.0], 'rect': (585, 112, 31, 28), 'size': 463},
 {'labels': [514.0], 'rect': (87, 113, 8, 12), 'size': 67},
 {'labels': [515.0], 'rect': (176, 113, 21, 20), 'size': 206},
 {'labels': [516.0], 'rect': (495, 113, 14, 13), 'size': 103},
 {'labels': [517.0], 'rect': (260, 114, 17, 12), 'size': 159},
 {'labels': [518.0], 'rect': (41, 115, 18, 16), 'size': 161},
 {'labels': [519.0], 'rect': (82, 115, 2, 48), 'size': 85},
 {'labels': [520.0], 'rect': (344, 115, 24, 10), 'size': 141},
 {'labels': [521.0], 'rect': (64, 116, 18, 15), 'size': 88},
 {'labels': [522.0], 'rect': (584, 116, 19, 34), 'size': 144},
 {'labels': [523.0], 'rect': (32, 117, 9, 47), 'size': 168},
 {'labels': [524.0], 'rect': (106, 117, 29, 15), 'size': 212},
 {'labels': [525.0], 'rect': (474, 117, 17, 13), 'size': 134},
 {'labels': [526.0], 'rect': (564, 117, 14, 20), 'size': 82},
 {'labels': [527.0], 'rect': (620, 117, 19, 40), 'size': 366},
 {'labels': [528.0], 'rect': (73, 118, 9, 11), 'size': 70},
 {'labels': [529.0], 'rect': (453, 118, 26, 11), 'size': 160},
 {'labels': [530.0], 'rect': (542, 118, 20, 20), 'size': 142},
 {'labels': [531.0], 'rect': (50, 119, 30, 25), 'size': 440},
 {'labels': [532.0], 'rect': (278, 120, 12, 7), 'size': 74},
 {'labels': [533.0], 'rect': (288, 120, 19, 7), 'size': 91},
 {'labels': [534.0], 'rect': (334, 120, 27, 8), 'size': 116},
 {'labels': [535.0], 'rect': (486, 120, 26, 15), 'size': 174},
 {'labels': [536.0], 'rect': (564, 120, 4, 46), 'size': 89},
 {'labels': [537.0], 'rect': (247, 121, 19, 7), 'size': 87},
 {'labels': [538.0], 'rect': (87, 122, 21, 16), 'size': 199},
 {'labels': [539.0], 'rect': (271, 122, 29, 19), 'size': 216},
 {'labels': [540.0], 'rect': (447, 122, 30, 69), 'size': 515},
 {'labels': [541.0], 'rect': (475, 122, 12, 16), 'size': 89},
 {'labels': [542.0], 'rect': (501, 122, 33, 16), 'size': 195},
 {'labels': [543.0], 'rect': (525, 122, 27, 28), 'size': 240},
 {'labels': [544.0], 'rect': (120, 123, 23, 16), 'size': 204},
 {'labels': [545.0], 'rect': (136, 123, 23, 19), 'size': 196},
 {'labels': [546.0], 'rect': (447, 123, 2, 67), 'size': 70},
 {'labels': [547.0], 'rect': (580, 123, 7, 64), 'size': 165},
 {'labels': [548.0], 'rect': (155, 124, 12, 9), 'size': 73},
 {'labels': [549.0], 'rect': (166, 124, 14, 11), 'size': 111},
 {'labels': [550.0], 'rect': (197, 124, 7, 68), 'size': 220},
 {'labels': [551.0], 'rect': (444, 124, 4, 65), 'size': 135},
 {'labels': [552.0], 'rect': (455, 124, 14, 15), 'size': 124},
 {'labels': [553.0], 'rect': (216, 125, 18, 12), 'size': 154},
 {'labels': [554.0], 'rect': (356, 125, 16, 11), 'size': 121},
 {'labels': [555.0], 'rect': (429, 125, 13, 12), 'size': 95},
 {'labels': [556.0], 'rect': (415, 125, 28, 29), 'size': 376},
 {'labels': [557.0], 'rect': (412, 125, 32, 57), 'size': 369},
 {'labels': [558.0], 'rect': (419, 125, 27, 80), 'size': 498},
 {'labels': [559.0], 'rect': (205, 126, 15, 12), 'size': 126},
 {'labels': [560.0], 'rect': (421, 126, 10, 10), 'size': 58},
 {'labels': [561.0], 'rect': (585, 126, 13, 14), 'size': 93},
 {'labels': [562.0], 'rect': (0, 127, 15, 13), 'size': 121},
 {'labels': [563.0], 'rect': (10, 127, 14, 10), 'size': 116},
 {'labels': [564.0], 'rect': (104, 127, 10, 7), 'size': 55},
 {'labels': [565.0], 'rect': (176, 127, 21, 62), 'size': 281},
 {'labels': [566.0], 'rect': (204, 127, 18, 40), 'size': 201},
 {'labels': [567.0], 'rect': (235, 127, 20, 13), 'size': 138},
 {'labels': [568.0], 'rect': (248, 127, 22, 23), 'size': 211},
 {'labels': [569.0], 'rect': (261, 127, 16, 11), 'size': 128},
 {'labels': [570.0], 'rect': (296, 127, 23, 31), 'size': 271},
 {'labels': [571.0], 'rect': (312, 127, 20, 34), 'size': 372},
 {'labels': [572.0], 'rect': (369, 127, 13, 7), 'size': 68},
 {'labels': [573.0], 'rect': (368, 127, 26, 14), 'size': 196},
 {'labels': [574.0], 'rect': (385, 127, 19, 26), 'size': 193},
 {'labels': [575.0], 'rect': (398, 127, 18, 21), 'size': 252},
 {'labels': [576.0], 'rect': (462, 127, 19, 11), 'size': 100},
 {'labels': [577.0], 'rect': (21, 128, 11, 44), 'size': 201},
 {'labels': [578.0], 'rect': (85, 128, 26, 55), 'size': 377},
 {'labels': [579.0], 'rect': (203, 128, 28, 74), 'size': 412},
 {'labels': [580.0], 'rect': (330, 128, 13, 38), 'size': 191},
 {'labels': [581.0], 'rect': (341, 128, 20, 23), 'size': 327},
 {'labels': [582.0], 'rect': (416, 128, 9, 10), 'size': 64},
 {'labels': [583.0], 'rect': (36, 129, 23, 41), 'size': 287},
 {'labels': [584.0], 'rect': (46, 129, 10, 13), 'size': 76},
 {'labels': [585.0], 'rect': (42, 129, 19, 23), 'size': 159},
 {'labels': [586.0], 'rect': (172, 129, 21, 13), 'size': 91},
 {'labels': [587.0], 'rect': (197, 129, 4, 61), 'size': 120},
 {'labels': [588.0], 'rect': (231, 129, 14, 12), 'size': 94},
 {'labels': [589.0], 'rect': (601, 129, 16, 15), 'size': 52},
 {'labels': [590.0], 'rect': (152, 130, 19, 15), 'size': 127},
 {'labels': [591.0], 'rect': (275, 130, 13, 12), 'size': 92},
 {'labels': [592.0], 'rect': (2, 131, 24, 12), 'size': 129},
 {'labels': [593.0], 'rect': (488, 131, 25, 14), 'size': 176},
 {'labels': [594.0], 'rect': (536, 131, 27, 35), 'size': 358},
 {'labels': [595.0], 'rect': (622, 131, 13, 54), 'size': 364},
 {'labels': [596.0], 'rect': (512, 132, 14, 11), 'size': 122},
 {'labels': [597.0], 'rect': (96, 133, 21, 5), 'size': 78},
 {'labels': [598.0], 'rect': (111, 133, 13, 8), 'size': 64},
 {'labels': [599.0], 'rect': (359, 133, 26, 22), 'size': 206},
 {'labels': [600.0], 'rect': (504, 133, 10, 9), 'size': 66},
 {'labels': [601.0], 'rect': (546, 133, 16, 22), 'size': 208},
 {'labels': [602.0], 'rect': (605, 133, 14, 12), 'size': 120},
 {'labels': [603.0], 'rect': (118, 134, 40, 27), 'size': 414},
 {'labels': [604.0], 'rect': (155, 134, 20, 19), 'size': 184},
 {'labels': [605.0], 'rect': (260, 134, 13, 11), 'size': 64},
 {'labels': [606.0], 'rect': (408, 134, 12, 8), 'size': 66},
 {'labels': [607.0], 'rect': (205, 135, 18, 14), 'size': 172},
 {'labels': [608.0], 'rect': (223, 135, 18, 14), 'size': 138},
 {'labels': [609.0], 'rect': (475, 135, 29, 25), 'size': 290},
 {'labels': [610.0], 'rect': (242, 136, 13, 11), 'size': 80},
 {'labels': [611.0], 'rect': (267, 136, 21, 25), 'size': 283},
 {'labels': [612.0], 'rect': (467, 136, 18, 9), 'size': 101},
 {'labels': [613.0], 'rect': (64, 137, 18, 34), 'size': 161},
 {'labels': [614.0], 'rect': (88, 137, 21, 15), 'size': 116},
 {'labels': [615.0], 'rect': (105, 138, 6, 8), 'size': 56},
 {'labels': [616.0], 'rect': (384, 138, 9, 12), 'size': 81},
 {'labels': [617.0], 'rect': (526, 138, 17, 11), 'size': 75},
 {'labels': [618.0], 'rect': (111, 139, 13, 11), 'size': 81},
 {'labels': [619.0], 'rect': (286, 139, 23, 18), 'size': 300},
 {'labels': [620.0], 'rect': (65, 140, 16, 11), 'size': 108},
 {'labels': [621.0], 'rect': (216, 140, 13, 7), 'size': 63},
 {'labels': [622.0], 'rect': (334, 140, 17, 35), 'size': 177},
 {'labels': [623.0], 'rect': (352, 140, 27, 29), 'size': 393},
 {'labels': [624.0], 'rect': (372, 140, 14, 12), 'size': 95},
 {'labels': [625.0], 'rect': (586, 140, 13, 10), 'size': 102},
 {'labels': [626.0], 'rect': (0, 141, 13, 14), 'size': 101},
 {'labels': [627.0], 'rect': (88, 141, 14, 7), 'size': 58},
 {'labels': [628.0], 'rect': (572, 141, 11, 21), 'size': 123},
 {'labels': [629.0], 'rect': (0, 142, 24, 15), 'size': 119},
 {'labels': [630.0], 'rect': (398, 142, 13, 11), 'size': 83},
 {'labels': [631.0], 'rect': (493, 142, 28, 42), 'size': 397},
 {'labels': [632.0], 'rect': (509, 142, 17, 8), 'size': 94},
 {'labels': [633.0], 'rect': (565, 142, 12, 65), 'size': 245},
 {'labels': [634.0], 'rect': (109, 143, 24, 19), 'size': 246},
 {'labels': [635.0], 'rect': (525, 143, 18, 13), 'size': 161},
 {'labels': [636.0], 'rect': (165, 144, 19, 18), 'size': 229},
 {'labels': [637.0], 'rect': (178, 144, 18, 46), 'size': 332},
 {'labels': [638.0], 'rect': (205, 144, 33, 12), 'size': 237},
 {'labels': [639.0], 'rect': (233, 144, 26, 15), 'size': 204},
 {'labels': [640.0], 'rect': (315, 144, 18, 32), 'size': 201},
 {'labels': [641.0], 'rect': (603, 144, 19, 17), 'size': 158},
 {'labels': [642.0], 'rect': (0, 145, 27, 30), 'size': 260},
 {'labels': [643.0], 'rect': (55, 145, 26, 29), 'size': 206},
 {'labels': [644.0], 'rect': (423, 145, 20, 16), 'size': 173},
 {'labels': [645.0], 'rect': (505, 145, 17, 10), 'size': 75},
 {'labels': [646.0], 'rect': (593, 145, 18, 14), 'size': 138},
 {'labels': [647.0], 'rect': (316, 146, 13, 7), 'size': 101},
 {'labels': [648.0], 'rect': (378, 146, 23, 27), 'size': 268},
 {'labels': [649.0], 'rect': (475, 146, 12, 8), 'size': 54},
 {'labels': [650.0], 'rect': (149, 147, 20, 10), 'size': 107},
 {'labels': [651.0], 'rect': (264, 147, 13, 14), 'size': 108},
 {'labels': [652.0], 'rect': (408, 147, 17, 12), 'size': 142},
 {'labels': [653.0], 'rect': (10, 148, 19, 29), 'size': 242},
 {'labels': [654.0], 'rect': (86, 148, 24, 19), 'size': 245},
 {'labels': [655.0], 'rect': (256, 148, 10, 19), 'size': 150},
 {'labels': [656.0], 'rect': (516, 148, 23, 26), 'size': 226},
 {'labels': [657.0], 'rect': (464, 149, 28, 25), 'size': 347},
 {'labels': [658.0], 'rect': (586, 149, 11, 12), 'size': 64},
 {'labels': [659.0], 'rect': (280, 150, 30, 36), 'size': 241},
 {'labels': [660.0], 'rect': (524, 150, 8, 13), 'size': 51},
 {'labels': [661.0], 'rect': (219, 151, 19, 14), 'size': 178},
 {'labels': [662.0], 'rect': (452, 151, 19, 38), 'size': 203},
 {'labels': [663.0], 'rect': (41, 152, 17, 12), 'size': 62},
 {'labels': [664.0], 'rect': (130, 152, 18, 11), 'size': 131},
 {'labels': [665.0], 'rect': (240, 152, 15, 14), 'size': 100},
 {'labels': [666.0], 'rect': (335, 152, 14, 7), 'size': 87},
 {'labels': [667.0], 'rect': (98, 153, 16, 12), 'size': 130},
 {'labels': [668.0], 'rect': (144, 153, 14, 9), 'size': 93},
 {'labels': [669.0], 'rect': (150, 153, 33, 24), 'size': 373},
 {'labels': [670.0], 'rect': (311, 153, 17, 22), 'size': 169},
 {'labels': [671.0], 'rect': (396, 153, 18, 10), 'size': 128},
 {'labels': [672.0], 'rect': (568, 153, 14, 21), 'size': 176},
 {'labels': [673.0], 'rect': (628, 153, 11, 14), 'size': 133},
 {'labels': [674.0], 'rect': (237, 154, 24, 20), 'size': 209},
 {'labels': [675.0], 'rect': (333, 154, 22, 37), 'size': 334},
 {'labels': [676.0], 'rect': (610, 154, 13, 13), 'size': 82},
 {'labels': [677.0], 'rect': (29, 155, 6, 44), 'size': 128},
 {'labels': [678.0], 'rect': (509, 155, 21, 28), 'size': 218},
 {'labels': [679.0], 'rect': (588, 155, 34, 25), 'size': 461},
 {'labels': [680.0], 'rect': (0, 156, 16, 19), 'size': 130},
 {'labels': [681.0], 'rect': (41, 156, 12, 7), 'size': 56},
 {'labels': [682.0], 'rect': (62, 156, 16, 16), 'size': 57},
 {'labels': [683.0], 'rect': (71, 156, 9, 12), 'size': 75},
 {'labels': [684.0], 'rect': (172, 156, 20, 15), 'size': 154},
 {'labels': [685.0], 'rect': (414, 156, 26, 12), 'size': 159},
 {'labels': [686.0], 'rect': (530, 156, 15, 20), 'size': 151},
 {'labels': [687.0], 'rect': (44, 157, 24, 25), 'size': 306},
 {'labels': [688.0], 'rect': (278, 157, 19, 21), 'size': 141},
 {'labels': [689.0], 'rect': (391, 157, 10, 9), 'size': 53},
 {'labels': [690.0], 'rect': (124, 158, 22, 9), 'size': 88},
 {'labels': [691.0], 'rect': (344, 158, 17, 7), 'size': 80},
 {'labels': [692.0], 'rect': (269, 159, 10, 21), 'size': 136},
 {'labels': [693.0], 'rect': (286, 159, 21, 21), 'size': 302},
 {'labels': [694.0], 'rect': (104, 160, 21, 23), 'size': 260},
 {'labels': [695.0], 'rect': (261, 160, 15, 27), 'size': 192},
 {'labels': [696.0], 'rect': (396, 160, 22, 17), 'size': 140},
 {'labels': [697.0], 'rect': (222, 161, 19, 10), 'size': 72},
 {'labels': [698.0], 'rect': (404, 161, 21, 11), 'size': 125},
 {'labels': [699.0], 'rect': (492, 161, 9, 16), 'size': 109},
 {'labels': [700.0], 'rect': (549, 161, 14, 14), 'size': 120},
 {'labels': [701.0], 'rect': (587, 161, 20, 20), 'size': 62},
 {'labels': [702.0], 'rect': (143, 162, 22, 21), 'size': 224},
 {'labels': [703.0], 'rect': (367, 162, 27, 18), 'size': 171},
 {'labels': [704.0], 'rect': (453, 162, 11, 14), 'size': 89},
 {'labels': [705.0], 'rect': (569, 162, 15, 25), 'size': 192},
 {'labels': [706.0], 'rect': (59, 163, 20, 17), 'size': 213},
 {'labels': [707.0], 'rect': (205, 163, 21, 9), 'size': 97},
 {'labels': [708.0], 'rect': (457, 163, 20, 12), 'size': 110},
 {'labels': [709.0], 'rect': (538, 163, 10, 17), 'size': 54},
 {'labels': [710.0], 'rect': (578, 163, 19, 66), 'size': 238},
 {'labels': [711.0], 'rect': (80, 164, 3, 79), 'size': 142},
 {'labels': [712.0], 'rect': (84, 164, 16, 39), 'size': 305},
 {'labels': [713.0], 'rect': (110, 164, 27, 21), 'size': 197},
 {'labels': [714.0], 'rect': (350, 164, 28, 22), 'size': 272},
 {'labels': [715.0], 'rect': (475, 164, 18, 27), 'size': 190},
 {'labels': [716.0], 'rect': (588, 164, 16, 19), 'size': 150},
 {'labels': [717.0], 'rect': (628, 164, 11, 38), 'size': 211},
 {'labels': [718.0], 'rect': (37, 165, 22, 26), 'size': 199},
 {'labels': [719.0], 'rect': (485, 166, 13, 15), 'size': 106},
 {'labels': [720.0], 'rect': (546, 166, 8, 11), 'size': 63},
 {'labels': [721.0], 'rect': (33, 167, 11, 18), 'size': 80},
 {'labels': [722.0], 'rect': (130, 167, 13, 8), 'size': 66},
 {'labels': [723.0], 'rect': (222, 167, 23, 11), 'size': 123},
 {'labels': [724.0], 'rect': (310, 167, 22, 15), 'size': 136},
 {'labels': [725.0], 'rect': (559, 167, 5, 32), 'size': 90},
 {'labels': [726.0], 'rect': (13, 168, 13, 43), 'size': 254},
 {'labels': [727.0], 'rect': (41, 168, 13, 14), 'size': 93},
 {'labels': [728.0], 'rect': (279, 168, 22, 15), 'size': 104},
 {'labels': [729.0], 'rect': (469, 168, 10, 9), 'size': 68},
 {'labels': [730.0], 'rect': (502, 168, 14, 14), 'size': 90},
 {'labels': [731.0], 'rect': (550, 168, 15, 47), 'size': 208},
 {'labels': [732.0], 'rect': (606, 168, 21, 25), 'size': 288},
 {'labels': [733.0], 'rect': (7, 170, 11, 6), 'size': 54},
 {'labels': [734.0], 'rect': (252, 170, 21, 9), 'size': 112},
 {'labels': [735.0], 'rect': (341, 170, 33, 27), 'size': 301},
 {'labels': [736.0], 'rect': (166, 171, 26, 9), 'size': 142},
 {'labels': [737.0], 'rect': (248, 171, 16, 23), 'size': 252},
 {'labels': [738.0], 'rect': (401, 171, 13, 15), 'size': 86},
 {'labels': [739.0], 'rect': (352, 172, 12, 10), 'size': 83},
 {'labels': [740.0], 'rect': (387, 172, 22, 14), 'size': 160},
 {'labels': [741.0], 'rect': (21, 173, 9, 59), 'size': 185},
 {'labels': [742.0], 'rect': (169, 173, 26, 17), 'size': 184},
 {'labels': [743.0], 'rect': (380, 173, 11, 10), 'size': 79},
 {'labels': [744.0], 'rect': (523, 173, 14, 17), 'size': 126},
 {'labels': [745.0], 'rect': (127, 174, 16, 4), 'size': 52},
 {'labels': [746.0], 'rect': (233, 174, 17, 17), 'size': 180},
 {'labels': [747.0], 'rect': (411, 174, 13, 12), 'size': 128},
 {'labels': [748.0], 'rect': (453, 174, 16, 17), 'size': 178},
 {'labels': [749.0], 'rect': (462, 174, 22, 28), 'size': 295},
 {'labels': [750.0], 'rect': (532, 174, 21, 24), 'size': 238},
 {'labels': [751.0], 'rect': (546, 174, 17, 14), 'size': 134},
 {'labels': [752.0], 'rect': (0, 175, 12, 6), 'size': 74},
 {'labels': [753.0], 'rect': (58, 175, 23, 19), 'size': 209},
 {'labels': [754.0], 'rect': (96, 175, 15, 17), 'size': 154},
 {'labels': [755.0], 'rect': (290, 175, 23, 92), 'size': 352},
 {'labels': [756.0], 'rect': (494, 175, 19, 11), 'size': 126},
 {'labels': [757.0], 'rect': (158, 176, 38, 37), 'size': 411},
 {'labels': [758.0], 'rect': (224, 176, 14, 9), 'size': 90},
 {'labels': [759.0], 'rect': (264, 176, 33, 30), 'size': 526},
 {'labels': [760.0], 'rect': (630, 176, 9, 68), 'size': 440},
 {'labels': [761.0], 'rect': (67, 177, 13, 13), 'size': 113},
 {'labels': [762.0], 'rect': (121, 177, 25, 5), 'size': 79},
 {'labels': [763.0], 'rect': (208, 177, 23, 22), 'size': 317},
 {'labels': [764.0], 'rect': (317, 177, 17, 50), 'size': 279},
 {'labels': [765.0], 'rect': (429, 177, 13, 10), 'size': 108},
 {'labels': [766.0], 'rect': (135, 179, 19, 10), 'size': 97},
 {'labels': [767.0], 'rect': (113, 180, 13, 12), 'size': 85},
 {'labels': [768.0], 'rect': (152, 180, 15, 12), 'size': 111},
 {'labels': [769.0], 'rect': (310, 180, 11, 34), 'size': 134},
 {'labels': [770.0], 'rect': (327, 180, 7, 52), 'size': 170},
 {'labels': [771.0], 'rect': (373, 180, 18, 10), 'size': 114},
 {'labels': [772.0], 'rect': (534, 180, 17, 22), 'size': 108},
 {'labels': [773.0], 'rect': (578, 180, 8, 12), 'size': 64},
 {'labels': [774.0], 'rect': (589, 180, 18, 12), 'size': 154},
 {'labels': [775.0], 'rect': (0, 181, 12, 7), 'size': 55},
 {'labels': [776.0], 'rect': (120, 181, 15, 13), 'size': 130},
 {'labels': [777.0], 'rect': (331, 181, 4, 21), 'size': 72},
 {'labels': [778.0], 'rect': (340, 181, 13, 10), 'size': 113},
 {'labels': [779.0], 'rect': (516, 181, 11, 9), 'size': 63},
 {'labels': [780.0], 'rect': (0, 182, 23, 20), 'size': 274},
 {'labels': [781.0], 'rect': (131, 182, 12, 10), 'size': 93},
 {'labels': [782.0], 'rect': (311, 182, 5, 32), 'size': 71},
 {'labels': [783.0], 'rect': (314, 182, 8, 60), 'size': 291},
 {'labels': [784.0], 'rect': (390, 182, 13, 9), 'size': 65},
 {'labels': [785.0], 'rect': (506, 182, 21, 25), 'size': 175},
 {'labels': [786.0], 'rect': (548, 183, 12, 15), 'size': 102},
 {'labels': [787.0], 'rect': (30, 184, 15, 16), 'size': 128},
 {'labels': [788.0], 'rect': (228, 184, 14, 23), 'size': 221},
 {'labels': [789.0], 'rect': (334, 184, 16, 19), 'size': 147},
 {'labels': [790.0], 'rect': (394, 184, 29, 19), 'size': 355},
 {'labels': [791.0], 'rect': (455, 184, 16, 17), 'size': 149},
 {'labels': [792.0], 'rect': (485, 184, 23, 18), 'size': 217},
 {'labels': [793.0], 'rect': (498, 184, 15, 11), 'size': 88},
 {'labels': [794.0], 'rect': (597, 184, 21, 15), 'size': 178},
 {'labels': [795.0], 'rect': (104, 186, 16, 8), 'size': 81},
 {'labels': [796.0], 'rect': (135, 186, 24, 15), 'size': 223},
 {'labels': [797.0], 'rect': (165, 186, 11, 13), 'size': 111},
 {'labels': [798.0], 'rect': (52, 187, 28, 28), 'size': 168},
 {'labels': [799.0], 'rect': (382, 187, 16, 14), 'size': 136},
 {'labels': [800.0], 'rect': (477, 187, 10, 27), 'size': 144},
 {'labels': [801.0], 'rect': (525, 187, 21, 22), 'size': 177},
 {'labels': [802.0], 'rect': (569, 187, 17, 10), 'size': 69},
 {'labels': [803.0], 'rect': (344, 188, 23, 14), 'size': 185},
 {'labels': [804.0], 'rect': (372, 188, 14, 12), 'size': 103},
 {'labels': [805.0], 'rect': (581, 188, 6, 34), 'size': 105},
 {'labels': [806.0], 'rect': (620, 188, 9, 13), 'size': 84},
 {'labels': [807.0], 'rect': (38, 189, 18, 16), 'size': 87},
 {'labels': [808.0], 'rect': (236, 189, 21, 13), 'size': 171},
 {'labels': [809.0], 'rect': (442, 189, 16, 37), 'size': 286},
 {'labels': [810.0], 'rect': (155, 190, 15, 9), 'size': 70},
 {'labels': [811.0], 'rect': (520, 190, 13, 9), 'size': 71},
 {'labels': [812.0], 'rect': (570, 190, 16, 23), 'size': 216},
 {'labels': [813.0], 'rect': (191, 191, 12, 24), 'size': 100},
 {'labels': [814.0], 'rect': (295, 191, 13, 24), 'size': 221},
 {'labels': [815.0], 'rect': (96, 192, 34, 21), 'size': 325},
 {'labels': [816.0], 'rect': (367, 192, 27, 19), 'size': 256},
 {'labels': [817.0], 'rect': (442, 192, 5, 22), 'size': 112},
 {'labels': [818.0], 'rect': (0, 193, 22, 19), 'size': 335},
 {'labels': [819.0], 'rect': (188, 193, 7, 23), 'size': 131},
 {'labels': [820.0], 'rect': (203, 193, 1, 69), 'size': 70},
 {'labels': [821.0], 'rect': (272, 193, 15, 8), 'size': 64},
 {'labels': [822.0], 'rect': (441, 193, 12, 55), 'size': 160},
 {'labels': [823.0], 'rect': (447, 193, 3, 20), 'size': 62},
 {'labels': [824.0], 'rect': (32, 194, 18, 9), 'size': 96},
 {'labels': [825.0], 'rect': (68, 194, 12, 13), 'size': 104},
 {'labels': [826.0], 'rect': (123, 194, 18, 12), 'size': 111},
 {'labels': [827.0], 'rect': (210, 194, 13, 14), 'size': 101},
 {'labels': [828.0], 'rect': (393, 194, 14, 15), 'size': 115},
 {'labels': [829.0], 'rect': (417, 194, 24, 116), 'size': 359},
 {'labels': [830.0], 'rect': (458, 194, 26, 30), 'size': 444},
 {'labels': [831.0], 'rect': (507, 194, 14, 12), 'size': 70},
 {'labels': [832.0], 'rect': (591, 194, 29, 27), 'size': 452},
 {'labels': [833.0], 'rect': (619, 194, 12, 12), 'size': 99},
 {'labels': [834.0], 'rect': (39, 195, 39, 28), 'size': 671},
 {'labels': [835.0], 'rect': (194, 195, 6, 18), 'size': 107},
 {'labels': [836.0], 'rect': (207, 195, 33, 30), 'size': 467},
 {'labels': [837.0], 'rect': (256, 195, 27, 15), 'size': 137},
 {'labels': [838.0], 'rect': (568, 195, 4, 50), 'size': 74},
 {'labels': [839.0], 'rect': (85, 197, 30, 13), 'size': 237},
 {'labels': [840.0], 'rect': (256, 197, 8, 16), 'size': 87},
 {'labels': [841.0], 'rect': (356, 197, 12, 11), 'size': 78},
 {'labels': [842.0], 'rect': (146, 198, 25, 12), 'size': 145},
 {'labels': [843.0], 'rect': (205, 198, 30, 43), 'size': 284},
 {'labels': [844.0], 'rect': (335, 198, 0, 73), 'size': 74},
 {'labels': [845.0], 'rect': (344, 198, 16, 11), 'size': 83},
 {'labels': [846.0], 'rect': (488, 198, 10, 17), 'size': 87},
 {'labels': [847.0], 'rect': (499, 198, 25, 24), 'size': 235},
 {'labels': [848.0], 'rect': (233, 199, 26, 22), 'size': 288},
 {'labels': [849.0], 'rect': (331, 199, 3, 28), 'size': 103},
 {'labels': [850.0], 'rect': (336, 199, 17, 52), 'size': 233},
 {'labels': [851.0], 'rect': (525, 199, 12, 12), 'size': 96},
 {'labels': [852.0], 'rect': (544, 199, 10, 15), 'size': 82},
 {'labels': [853.0], 'rect': (29, 200, 27, 30), 'size': 292},
 {'labels': [854.0], 'rect': (134, 200, 44, 19), 'size': 192},
 {'labels': [855.0], 'rect': (166, 200, 20, 20), 'size': 234},
 {'labels': [856.0], 'rect': (263, 200, 8, 14), 'size': 74},
 {'labels': [857.0], 'rect': (579, 200, 33, 38), 'size': 387},
 {'labels': [858.0], 'rect': (283, 201, 20, 24), 'size': 226},
 {'labels': [859.0], 'rect': (478, 201, 13, 18), 'size': 77},
 {'labels': [860.0], 'rect': (570, 201, 15, 19), 'size': 145},
 {'labels': [861.0], 'rect': (389, 202, 18, 21), 'size': 165},
 {'labels': [862.0], 'rect': (496, 202, 13, 17), 'size': 144},
 {'labels': [863.0], 'rect': (508, 202, 12, 10), 'size': 78},
 {'labels': [864.0], 'rect': (8, 203, 17, 29), 'size': 194},
 {'labels': [865.0], 'rect': (123, 203, 28, 16), 'size': 250},
 {'labels': [866.0], 'rect': (310, 203, 3, 24), 'size': 90},
 {'labels': [867.0], 'rect': (353, 203, 24, 20), 'size': 211},
 {'labels': [868.0], 'rect': (404, 203, 16, 11), 'size': 127},
 {'labels': [869.0], 'rect': (83, 204, 34, 40), 'size': 202},
 {'labels': [870.0], 'rect': (84, 204, 35, 12), 'size': 185},
 {'labels': [871.0], 'rect': (521, 205, 28, 19), 'size': 269},
 {'labels': [872.0], 'rect': (551, 205, 14, 22), 'size': 161},
 {'labels': [873.0], 'rect': (618, 205, 13, 13), 'size': 90},
 {'labels': [874.0], 'rect': (384, 206, 9, 12), 'size': 73},
 {'labels': [875.0], 'rect': (33, 207, 7, 12), 'size': 64},
 {'labels': [876.0], 'rect': (270, 207, 21, 17), 'size': 221},
 {'labels': [877.0], 'rect': (371, 207, 12, 12), 'size': 74},
 {'labels': [878.0], 'rect': (400, 207, 24, 22), 'size': 243},
 {'labels': [879.0], 'rect': (486, 207, 18, 25), 'size': 238},
 {'labels': [880.0], 'rect': (551, 207, 16, 48), 'size': 273},
 {'labels': [881.0], 'rect': (350, 208, 11, 16), 'size': 68},
 {'labels': [882.0], 'rect': (380, 208, 10, 13), 'size': 60},
 {'labels': [883.0], 'rect': (517, 208, 13, 26), 'size': 156},
 {'labels': [884.0], 'rect': (560, 208, 6, 34), 'size': 125},
 {'labels': [885.0], 'rect': (0, 209, 16, 19), 'size': 180},
 {'labels': [886.0], 'rect': (245, 209, 20, 17), 'size': 223},
 {'labels': [887.0], 'rect': (426, 209, 13, 22), 'size': 126},
 {'labels': [888.0], 'rect': (187, 210, 12, 12), 'size': 101},
 {'labels': [889.0], 'rect': (322, 210, 11, 36), 'size': 126},
 {'labels': [890.0], 'rect': (26, 211, 13, 18), 'size': 84},
 {'labels': [891.0], 'rect': (84, 211, 22, 20), 'size': 182},
 {'labels': [892.0], 'rect': (260, 211, 17, 23), 'size': 208},
 {'labels': [893.0], 'rect': (625, 211, 7, 13), 'size': 76},
 {'labels': [894.0], 'rect': (92, 212, 18, 7), 'size': 59},
 {'labels': [895.0], 'rect': (107, 212, 20, 11), 'size': 143},
 {'labels': [896.0], 'rect': (294, 212, 14, 15), 'size': 119},
 {'labels': [897.0], 'rect': (414, 212, 22, 19), 'size': 192},
 {'labels': [898.0], 'rect': (459, 212, 12, 24), 'size': 110},
 {'labels': [899.0], 'rect': (149, 213, 37, 37), 'size': 476},
 {'labels': [900.0], 'rect': (443, 213, 8, 10), 'size': 73},
 {'labels': [901.0], 'rect': (615, 213, 21, 21), 'size': 165},
 {'labels': [902.0], 'rect': (77, 214, 4, 112), 'size': 245},
 {'labels': [903.0], 'rect': (126, 214, 29, 9), 'size': 110},
 {'labels': [904.0], 'rect': (187, 214, 15, 12), 'size': 98},
 {'labels': [905.0], 'rect': (548, 214, 13, 23), 'size': 138},
 {'labels': [906.0], 'rect': (57, 215, 20, 10), 'size': 75},
 {'labels': [907.0], 'rect': (337, 215, 21, 17), 'size': 197},
 {'labels': [908.0], 'rect': (375, 215, 24, 27), 'size': 263},
 {'labels': [909.0], 'rect': (526, 215, 23, 18), 'size': 144},
 {'labels': [910.0], 'rect': (569, 215, 11, 30), 'size': 149},
 {'labels': [911.0], 'rect': (63, 216, 16, 14), 'size': 136},
 {'labels': [912.0], 'rect': (196, 216, 7, 56), 'size': 136},
 {'labels': [913.0], 'rect': (368, 216, 20, 26), 'size': 202},
 {'labels': [914.0], 'rect': (355, 217, 12, 10), 'size': 82},
 {'labels': [915.0], 'rect': (499, 218, 19, 23), 'size': 146},
 {'labels': [916.0], 'rect': (506, 218, 18, 11), 'size': 102},
 {'labels': [917.0], 'rect': (591, 218, 3, 44), 'size': 75},
 {'labels': [918.0], 'rect': (124, 219, 40, 9), 'size': 161},
 {'labels': [919.0], 'rect': (212, 219, 21, 20), 'size': 128},
 {'labels': [920.0], 'rect': (235, 219, 26, 15), 'size': 164},
 {'labels': [921.0], 'rect': (321, 219, 6, 66), 'size': 219},
 {'labels': [922.0], 'rect': (459, 219, 35, 33), 'size': 373},
 {'labels': [923.0], 'rect': (104, 220, 12, 9), 'size': 53},
 {'labels': [924.0], 'rect': (337, 220, 23, 35), 'size': 432},
 {'labels': [925.0], 'rect': (484, 220, 29, 29), 'size': 211},
 {'labels': [926.0], 'rect': (24, 221, 17, 27), 'size': 206},
 {'labels': [927.0], 'rect': (87, 221, 16, 7), 'size': 74},
 {'labels': [928.0], 'rect': (116, 221, 36, 7), 'size': 127},
 {'labels': [929.0], 'rect': (186, 221, 13, 26), 'size': 202},
 {'labels': [930.0], 'rect': (277, 221, 14, 9), 'size': 60},
 {'labels': [931.0], 'rect': (394, 221, 22, 20), 'size': 281},
 {'labels': [932.0], 'rect': (205, 222, 7, 13), 'size': 82},
 {'labels': [933.0], 'rect': (354, 222, 22, 18), 'size': 163},
 {'labels': [934.0], 'rect': (593, 222, 22, 7), 'size': 98},
 {'labels': [935.0], 'rect': (0, 223, 15, 37), 'size': 388},
 {'labels': [936.0], 'rect': (100, 223, 15, 8), 'size': 76},
 {'labels': [937.0], 'rect': (49, 224, 30, 27), 'size': 255},
 {'labels': [938.0], 'rect': (84, 224, 46, 12), 'size': 280},
 {'labels': [939.0], 'rect': (125, 224, 25, 12), 'size': 122},
 {'labels': [940.0], 'rect': (156, 224, 16, 6), 'size': 63},
 {'labels': [941.0], 'rect': (211, 224, 10, 17), 'size': 77},
 {'labels': [942.0], 'rect': (292, 224, 16, 15), 'size': 158},
 {'labels': [943.0], 'rect': (424, 224, 8, 15), 'size': 75},
 {'labels': [944.0], 'rect': (529, 224, 7, 15), 'size': 64},
 {'labels': [945.0], 'rect': (532, 224, 10, 17), 'size': 91},
 {'labels': [946.0], 'rect': (544, 224, 9, 17), 'size': 94},
 {'labels': [947.0], 'rect': (4, 225, 15, 26), 'size': 166},
 {'labels': [948.0], 'rect': (60, 225, 19, 22), 'size': 225},
 {'labels': [949.0], 'rect': (229, 225, 22, 10), 'size': 96},
 {'labels': [950.0], 'rect': (275, 225, 12, 11), 'size': 90},
 {'labels': [951.0], 'rect': (450, 225, 11, 42), 'size': 268},
 {'labels': [952.0], 'rect': (593, 225, 33, 34), 'size': 492},
 {'labels': [953.0], 'rect': (600, 225, 25, 15), 'size': 184},
 {'labels': [954.0], 'rect': (615, 225, 24, 45), 'size': 359},
 {'labels': [955.0], 'rect': (13, 226, 12, 48), 'size': 257},
 {'labels': [956.0], 'rect': (274, 226, 24, 20), 'size': 243},
 {'labels': [957.0], 'rect': (250, 227, 18, 26), 'size': 234},
 {'labels': [958.0], 'rect': (263, 227, 11, 25), 'size': 162},
 {'labels': [959.0], 'rect': (310, 227, 3, 47), 'size': 184},
 {'labels': [960.0], 'rect': (329, 227, 5, 118), 'size': 193},
 {'labels': [961.0], 'rect': (414, 227, 9, 13), 'size': 102},
 {'labels': [962.0], 'rect': (486, 227, 19, 26), 'size': 191},
 {'labels': [963.0], 'rect': (152, 228, 20, 9), 'size': 93},
 {'labels': [964.0], 'rect': (443, 228, 9, 13), 'size': 96},
 {'labels': [965.0], 'rect': (516, 228, 16, 16), 'size': 146},
 {'labels': [966.0], 'rect': (571, 228, 7, 25), 'size': 107},
 {'labels': [967.0], 'rect': (628, 228, 9, 15), 'size': 101},
 {'labels': [968.0], 'rect': (29, 229, 23, 36), 'size': 164},
 {'labels': [969.0], 'rect': (142, 229, 27, 10), 'size': 121},
 {'labels': [970.0], 'rect': (462, 229, 20, 12), 'size': 138},
 {'labels': [971.0], 'rect': (419, 230, 15, 19), 'size': 98},
 {'labels': [972.0], 'rect': (435, 230, 4, 20), 'size': 78},
 {'labels': [973.0], 'rect': (121, 231, 41, 9), 'size': 131},
 {'labels': [974.0], 'rect': (237, 231, 15, 7), 'size': 81},
 {'labels': [975.0], 'rect': (498, 231, 21, 18), 'size': 136},
 {'labels': [976.0], 'rect': (293, 232, 15, 35), 'size': 213},
 {'labels': [977.0], 'rect': (426, 232, 9, 11), 'size': 71},
 {'labels': [978.0], 'rect': (168, 233, 16, 39), 'size': 242},
 {'labels': [979.0], 'rect': (353, 233, 9, 10), 'size': 68},
 {'labels': [980.0], 'rect': (31, 234, 14, 8), 'size': 67},
 {'labels': [981.0], 'rect': (205, 234, 8, 19), 'size': 107},
 {'labels': [982.0], 'rect': (210, 234, 20, 18), 'size': 189},
 {'labels': [983.0], 'rect': (540, 234, 16, 17), 'size': 115},
 {'labels': [984.0], 'rect': (570, 234, 3, 54), 'size': 123},
 {'labels': [985.0], 'rect': (573, 234, 16, 21), 'size': 204},
 {'labels': [986.0], 'rect': (32, 235, 27, 29), 'size': 354},
 {'labels': [987.0], 'rect': (113, 235, 34, 12), 'size': 246},
 {'labels': [988.0], 'rect': (224, 235, 31, 13), 'size': 275},
 {'labels': [989.0], 'rect': (366, 235, 22, 16), 'size': 115},
 {'labels': [990.0], 'rect': (359, 236, 18, 16), 'size': 144},
 {'labels': [991.0], 'rect': (384, 236, 15, 11), 'size': 120},
 {'labels': [992.0], 'rect': (138, 237, 32, 11), 'size': 226},
 {'labels': [993.0], 'rect': (185, 237, 17, 65), 'size': 304},
 {'labels': [994.0], 'rect': (472, 237, 21, 15), 'size': 147},
 {'labels': [995.0], 'rect': (520, 237, 23, 18), 'size': 208},
 {'labels': [996.0], 'rect': (84, 238, 39, 9), 'size': 167},
 {'labels': [997.0], 'rect': (441, 238, 12, 22), 'size': 185},
 {'labels': [998.0], 'rect': (583, 238, 13, 48), 'size': 170},
 {'labels': [999.0], 'rect': (587, 239, 4, 24), 'size': 80},
 ...]
fig, ax = plt.subplots(1,1)
ax.imshow(im2)
for b in sss[1]:
  box = pts.Rectangle((b['rect'][0],b['rect'][1]), b['rect'][2]-b['rect'][0], b['rect'][3]-b['rect'][1], fill=None, edgecolor='red') # xy(원점), width, height
  ax.add_patch(box)

import cv2 # 속도가 빠르고 다른 라이브러리와 연동하기가 좋다 

ssss = cv2.ximgproc.segmentation.createSelectiveSearchSegmentation() # monkey patch / opencv-contrib-python 모듈을 설치하면서 모듈이 확장되었다 

ssss.setBaseImage(im)

ssss.switchToSelectiveSearchFast() # 빠르게 찾는다 
# ssss.switchToSelectiveSearchQuality() # 좀 더 느리게 찾지만 비교적 정확하게 찾음 

rect = ssss.process()

rect
# array([[594, 388,  46,  39],
#        [433, 191,  48, 236],
#        [590, 194,  32,  28],
#        ...,
#        [  0,   0, 196, 427],
#        [169,   0, 471, 427],
#        [182,   0, 458, 427]], dtype=int32)

cv2.setUseOptimized(True)

R-CNN

1. 이미지를 input data로 넣는다

2. 2000개의 bounding box를 selective search 알고리즘을 통해 추출한다

3. Flatten하기 위해 2000개의 bounding box를 같은 크기로 만든다 (warping)

- warping: 휘어지게 하다

- 왜곡하다의 의미로 보정이나 찌그러진 이미지를 정규화 하기위한 처리 방법

4. warped image를 CNN 모델에 넣는다 5. 마지막으로 SVM을 활용해 분류 한다

 

Domain-specific fine-tuning

기존에 AlexNet은 1000가지 이미지를 분류하는 모델이었다

그런데 R-CNN에서 해결하고자 하는 목표는 20가지 이미지를 분류해야 한다

따라서 Catastrophic forgetting을 막기 위해서 fine-tuning을 할 필요가 있다

AlexNet은 맨 끝에 있는 layer가 1000가지를 분류하기 때문에 마지막 layer를 변형해야 한다

우선 가장 먼저 feature selection하는 부분을 frozen 즉, trainable=False를 한다

그리고 초기 가중치를 그대로 사용한다(새로 학습할 이미지가 기존 이미지와 유사하기 때문에 가능하다)

그 다음 learning rate를 줄인후 PASCAL VOC dataset으로 학습 시킨다

그리고 나서 Fine tuning작업을 거쳐야 한다

frozen된 것을 풀고나서 learning rate를 확 줄이면서 재학습을 시킨다

R-CNN의 문제점

1. AlexNet의 구조를 사용했기 때문에 입력 이미지의 크기를 강제하므로 crop이나 wrapping으로 인한 이미지 손실이나 변형으로 성능 저하가 있다

2. 2000개의 bounding box에 대해 순차적으로 CNN을 수행하기 때문에 실행 시간이 길어진다

3. Region proposal이나 SVM때문에 GPU 사용에 적합하지 않다

4, 3개의 다른 모델을 학습시켜야 하기 때문에 전체적인 pipeline을 학습시키기 어려운 문제가 있다

Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition

SPPNet
Global average pooling에 영향을 받았다

R-CNN에서 2000개의 bounding box가 FC layer로 들어가기 위해서 wrapping하는 작업을 거치는데

이때 이미지의 크기를 고정된 크기로 자르거나 비율을 조정하기 때문에 본래의 이미지랑 달라지는 문제가 있었다

이러한 문제점을 해결하기 위해 입력 이미지의 크기에 관계없이 convolution layer를 통과 시키고

FC layer에 통과하기 전에 feature map들을 동일한 크기로 조절해주는 pooling을 적용하자는 아이디어를 활용하게 된다

Convolution layer들을 거쳐 추출된 feature map을 인풋으로 받는다

그리고 이를 미리 정해져 있는 영역으로 나누어 준다

위의 예시에서는 미리 4x4, 2x2, 1x1 세 가지 영역을 제공하며, 각각을 하나의 피라미드라고 부른다

여기서 피라미드의 한 칸을 bin이라고 한다

예를 들어 입력이 64 x 64 x 256 크기의 피쳐 맵이 들어온다고 했을 때, 4x4의 피라미드의 bin의 크기는 16x16이 된다

각 bin에서 max pooling을 수행하고 그 결과를 쭉 이어 붙인다

입력 feature map의 채널 크기를 k, bin의 개수를 m이라고 했을 때 최종 결과는 k*m차원 벡터이다

위의 예시는 k=256, m=(16+4+1)=21 입력 이미지의 크기와 상관없이 미리 설정한 bin의 수와 cnn의 채널값에 의해 출력이 결정되기 때문에 항상 동일한 크기의 결과를 반환하게 된다

 

 

반응형

+ Recent posts