#-*- org-todo-keyword-faces: ((“TODO” . org-warning) (“FAILED” . “red”) (“DONE” . “green”)); -*-
Classical approach have been used with help of OpenCV library.
The task have been solved in following order:
- Found two rectangles at hint image for hints with help of cv.findContours and collected statistic about max/min position of them.
- Fixed angle for main image with help of cv.HoughLinesP
- Found train position on main images by HSV colour range.
- Found subimages points on first main image with help of cv.SIFT and cv.FlannBasedMatcher.
- Calcuate hint position by clustering points with help of cv.kmeans automatic clustering.
- Calculate closes train by x and by y coordinates to found hint subimages.
Additional task is not solved.
Accuracy: 0.9137254901960784 or 91%
This task may be solved with better accuracy and speed if NN would be used. I don’t have GPU now.
If I would use NNs I would train of PyTorch Object Detection model and simple CNN with fully connected layers to match images and predict result.
В следующем порядке:
- Нашел два прямоугольника на изображении подсказке с помощью cv.findContours и собрал статистику об их максимальном/минимальном положении.
- Исправил угол основного изображения с помощью cv.HoughLinesP.
- Нашел положение поезда на основных изображениях по цветовой гамме HSV.
- нашел точки подизображения-подсказк на первом основном изображении с помощью cv.SIFT и cv.FlannBasedMatcher.
- Нашел центры подизображения-подсказк по точкам c помощью KMean автоматической кластеризации.
- Расчил ближайшее положение поезда к подсказкам по координатам x и y.
Дополнительно задание не выполнял.
Точность 0.9137254901960784 или 91%
Эту задачу можно решить с большей точностью и скоростью, если использовать NN. Просто у меня сейчас нет GPU и я не хочу тратить время на веб интервейс в Kaggle или Google Colab.
Если бы я использовал NN, я бы обучил модель обнаружения объектов PyTorch и простую CNN с полностью связанными слоями для сопоставления изображений и прогнозирования результата.
python final.py task1.1/mixed_train_to_the_coordinates_dataset/2627.jpg | head -n1
2
where 2 is a number of image in range 0-6
- Python 3.11
- cv2==4.8.0
- pandas==2.1.1
- numpy==1.25.2
- scipy==1.11.3
2023-11-18 task file https://talantix.ru/ats/testTasks/97b2b22a922b4eac917314012f6a3505
data 52MB: https://drive.google.com/file/d/1WVZIeqPdfi7TR7rRoLkB-xRIQr9F0uWw/view
- train_to_the_coordinates_dataset.zip
- accuracy required 85%
Task: select one image from 7 according to hint image.
2023-11-22 task change: https://talantix.ru/ats/testTasks/8158a092bdd64992ae7c1318c2ff8386
- task1.1/CVResearcherv1.1.pdf
- new dataset and labels
- accuracy required to be at least 90%.
- additional optional variations of images to solve
- 4x4 grid
- train don’t have colour
- background have more contrast
- numbers and figures may occur interchangable
- at hint figure occur more fuzzy
- numbers have random coloured background rectangle
https://github.com/wkentaro/labelme dependencies that I MUST INSTALL ON MY OWN PC!
- “gdown”,
- “imgviz>=0.11”,
- “matplotlib”,
- “natsort>=7.1.0”,
- “numpy”,
- “onnxruntime>=1.14.1”,
- “Pillow>=2.8”,
- “PyYAML”,
- “qtpy!=1.11.2”,
- “scikit-image”,
- “termcolor”,
dataset is very small:
ls -al train_to_the_coordinates_dataset/ | head
ls -al train_to_the_coordinates_dataset/*.jpg | wc -l
ls -al train_to_the_coordinates_dataset/*.json | wc -l
total 58020 drwxrwxr-x 1 u u 35700 Oct 31 17:58 . drwxrwxr-x 1 u u 220 Nov 18 14:55 .. -rw-rw-r-- 1 u u 50349 Aug 4 02:01 2626.jpg -rw-rw-r-- 1 u u 5422 Aug 8 12:46 2626.json -rw-rw-r-- 1 u u 42980 Aug 4 02:01 2627.jpg -rw-rw-r-- 1 u u 5410 Aug 8 12:47 2627.json -rw-rw-r-- 1 u u 43888 Aug 4 02:01 2628.jpg -rw-rw-r-- 1 u u 5420 Aug 8 12:48 2628.json -rw-rw-r-- 1 u u 46580 Aug 4 02:01 2629.jpg 1050 1050
At image i see:
- 7 same images with:
- digits at top: 22, 23, 24
- 3 images at left with fugure.
- dot at one of 3x3 grid
- 1 image with:
- one of 3 figure with digit 22
file train_to_the_coordinates_dataset/2626.jpg
train_to_the_coordinates_dataset/2626.jpg: JPEG image data, baseline, precision 8, 1400x400, components 3
At image i see:
- 7 same images with:
- digits at top: 16, 17, 18
- 3 images at left with fugure.
- dot at one of 3x3 grid
- 1 image with:
- one of 3 figure with digit 17
orientation and size of images are different shape is the same, I guess.
cat train_to_the_coordinates_dataset/2626.json | wc -l
# cat train_to_the_coordinates_dataset/2626.json | head -n 100 | tr '
' ' '
cat train_to_the_coordinates_dataset/2626.json | head -n 100
277 { "version": "5.2.1", "flags": {}, "shapes": [ { "label": "+", "points": [ [ 517.4107142857143, 99.10714285714286 ] ], "group_id": null, "description": "", "shape_type": "point", "flags": {} }, { "label": "1", "points": [ [ 22.689075630252102, 118.9075630252101 ], [ 53.78151260504201, 158.40336134453784 ] ], "group_id": null, "description": "", "shape_type": "rectangle", "flags": {} }, { "label": "2", "points": [ [ 23.52941176470588, 74.36974789915968 ], [ 57.14285714285714, 111.34453781512607 ] ], "group_id": null, "description": "", "shape_type": "rectangle", "flags": {} }, { "label": "3", "points": [ [ 24.369747899159666, 29.83193277310925 ], [ 59.66386554621849, 67.64705882352942 ] ], "group_id": null, "description": "", "shape_type": "rectangle", "flags": {} }, { "label": "4", "points": [ [ 67.22689075630252, 7.983193277310924 ], [ 96.63865546218487, 34.87394957983194 ] ], "group_id": null, "description": "", "shape_type": "rectangle", "flags": {} }, { "label": "5", "points": [ [ 110.92436974789916, 11.344537815126053 ], [ 140.3361344537815, 36.554621848739494 ] ], "group_id": null, "description": "", "shape_type": "rectangle",
277 { “version”: “5.2.1”, “flags”: {}, “shapes”: [ { “label”: “+”, “points”: [ [ 517.4107142857143, 99.10714285714286 ] ], “group_id”: null, “description”: “”, “shape_type”: “point”, “flags”: {} }, { “label”: “1”, “points”: [ [ 22.689075630252102, 118.9075630252101 ], [ 53.78151260504201, 158.40336134453784 ] ], “group_id”: null, “description”: “”, “shape_type”: “rectangle”, “flags”: {} }, { “label”: “2”, “points”: [ [ 23.52941176470588, 74.36974789915968 ], [ 57.14285714285714, 111.34453781512607 ] ], “group_id”: null, “description”: “”, “shape_type”: “rectangle”, “flags”: {} }, { “label”: “3”, “points”: [ [ 24.369747899159666, 29.83193277310925 ], [ 59.66386554621849, 67.64705882352942 ] ], “group_id”: null, “description”: “”, “shape_type”: “rectangle”, “flags”: {} }, { “label”: “4”, “points”: [ [ 67.22689075630252, 7.983193277310924 ], [ 96.63865546218487, 34.87394957983194 ] ], “group_id”: null, “description”: “”, “shape_type”: “rectangle”, “flags”: {} }, { “label”: “5”, “points”: [ [ 110.92436974789916, 11.344537815126053 ], [ 140.3361344537815, 36.554621848739494 ] ], “group_id”: null, “description”: “”, “shape_type”: “rectangle”,
labels:
- + - point, others rectangles
point:
{
"shapes": [
"label": "+",
"points": [
[
517.4107142857143,
99.10714285714286
]
]
]
}
ractangle:
{
"shapes": [
"label": "1",
"points": [
[
67.22689075630252,
7.983193277310924
],
[
96.63865546218487,
34.87394957983194
]
]
]
}
import json
def parse_file(json_file:str):
with open(json_file, "r", encoding="utf-8") as infile:
myfile = json.load(infile)
plus_point = None
digits_rectangles = {}
for i, shape in enumerate(myfile["shapes"]):
if shape["label"] == "+":
plus_point = shape['points'][0]
# - convert to int:
plus_point = (round(plus_point[0]), round(plus_point[1]))
else:
# - convert to int:
dr = shape['points']
dr = ((round(dr[0][0]), round(dr[0][1])), (round(dr[1][0]), round(dr[1][1])))
digits_rectangles[shape["label"]] = dr
return plus_point, digits_rectangles
json_file = "train_to_the_coordinates_dataset/2626.json"
plus_point, digits_rectangles = parse_file(json_file)
print("plus_point", plus_point)
[print(k,v) for k,v in digits_rectangles.items()]
plus_point (517, 99) 1 ((19, 257), (66, 313)) 2 ((24, 74), (57, 111)) 3 ((24, 30), (60, 68)) 4 ((92, 256), (124, 284)) 5 ((111, 11), (140, 37)) 6 ((154, 12), (187, 42)) 3_5 ((103, 37), (134, 67)) 2_4 ((259, 81), (286, 111)) 1_4 ((451, 125), (482, 153)) 1_5 ((697, 136), (730, 153)) 2_6 ((955, 84), (971, 119)) 3_6 ((1155, 40), (1174, 72)) 3_4 ((1258, 37), (1288, 62))
import cv2 as cv
import glob
import os
import numpy as np
# -- get id's of files in dataset
a = glob.glob("train_to_the_coordinates_dataset/*.jpg")
file_ids = [os.path.basename(x).split(".")[0] for x in a]
keys = []
for d in file_ids:
json_file = f"train_to_the_coordinates_dataset/{d}.json"
plus_point, digits_rectangles = parse_file(json_file)
for x in digits_rectangles.keys():
keys.append(x)
print(sorted(set(keys)))
['1', '1_4', '1_5', '1_6', '2', '2-4', '25', '2_4', '2_5', '2_6', '3', '3)_4', '3-6', '3_1', '3_4', '3_5', '3_6', '4', '5', '5_4', '5ъ', '6', '_4']
import cv2 as cv
import numpy as np
idd = 4421
img = cv.imread(f'train_to_the_coordinates_dataset/{idd}.jpg')
json_file = f"train_to_the_coordinates_dataset/{idd}.json"
plus_point, digits_rectangles = parse_file(json_file)
# -- rectangle labels:
for k,v in digits_rectangles.items():
ctr = np.array(v).reshape(1, 2, 2).astype(int)
print(k)
# print(ctr[0][0])
cv.drawContours(img, ctr, -1, (0, 255, 0), 3)
font = cv.FONT_HERSHEY_SIMPLEX
bottomLeftCornerOfText = (10,500)
fontScale = 0.5
fontColor = (255,255,255)
thickness = 1
lineType = 2
cv.putText(img, k,
ctr[0][0],
font,
fontScale,
fontColor,
thickness,
# lineType
)
# -- DOT for + label
# ctr = np.array(plus_point).reshape(1, 2, 2).astype(int)
print(plus_point)
x = plus_point[0]
y = plus_point[1]
image = cv.circle(img, (int(x),int(y)), radius=10, color=(0, 0, 255), thickness=2)
# - write image
cv.imwrite('autoimgs/labels.png', img)
import cv2 as cv
import numpy as np
from matplotlib import pyplot as plt
def draw_labels(img, digits_rectangles, plus_point):
# -- rectangle labels:
for k,v in digits_rectangles.items():
ctr = np.array(v).reshape(1, 2, 2).astype(int)
print(k)
# print(ctr[0][0])
cv.drawContours(img, ctr, -1, (0, 255, 0), 3)
font = cv.FONT_HERSHEY_SIMPLEX
bottomLeftCornerOfText = (10,500)
fontScale = 0.5
fontColor = (255,255,255)
thickness = 1
lineType = 2
cv.putText(img, k,
ctr[0][0],
font,
fontScale,
fontColor,
thickness,
# lineType
)
# -- DOT for + label
# ctr = np.array(plus_point).reshape(1, 2, 2).astype(int)
print(plus_point)
x = plus_point[0]
y = plus_point[1]
image = cv.circle(img, (int(x),int(y)), radius=10, color=(0, 0, 255), thickness=2)
return image
img_files, plus_points, digits_rectangles, hints = get_all()
img1 = cv.imread(img_files[1])
img2 = cv.imread(img_files[2])
img3 = cv.imread(img_files[3])
img1 = draw_labels(img1, digits_rectangles[1], plus_points[1])
img2 = draw_labels(img2, digits_rectangles[2], plus_points[2])
img3 = draw_labels(img3, digits_rectangles[3], plus_points[3])
img = np.vstack([img1, img2,img3])
cv.imwrite('autoimgs/labelstask1.1.png', img)
# plt.imshow()
# plt.show()
# plt.close()
import cv2 as cv
import numpy as np
from matplotlib import pyplot as plt
def draw_labels(img, digits_rectangles, plus_point):
# -- rectangle labels:
for k,v in digits_rectangles.items():
ctr = np.array(v).reshape(1, 2, 2).astype(int)
print(k)
# print(ctr[0][0])
cv.drawContours(img, ctr, -1, (0, 255, 0), 3)
font = cv.FONT_HERSHEY_SIMPLEX
bottomLeftCornerOfText = (10,500)
fontScale = 0.5
fontColor = (255,255,255)
thickness = 1
lineType = 2
cv.putText(img, k,
ctr[0][0],
font,
fontScale,
fontColor,
thickness,
# lineType
)
# -- DOT for + label
# ctr = np.array(plus_point).reshape(1, 2, 2).astype(int)
print(plus_point)
x = plus_point[0]
y = plus_point[1]
image = cv.circle(img, (int(x),int(y)), radius=10, color=(0, 0, 255), thickness=2)
return image
img_files, plus_points, digits_rectangles, hints = get_all(main_path = "task1.1/mixed_train_to_the_coordinates4x4/")
img1 = cv.imread(img_files[1])
img2 = cv.imread(img_files[2])
img3 = cv.imread(img_files[3])
img1 = draw_labels(img1, digits_rectangles[1], plus_points[1])
img2 = draw_labels(img2, digits_rectangles[2], plus_points[2])
img3 = draw_labels(img3, digits_rectangles[3], plus_points[3])
img = np.vstack([img1, img2,img3])
cv.imwrite('autoimgs/labelstask1.1.png', img)
# plt.imshow()
# plt.show()
# plt.close()
- + - solution
- 1,2,3,4,5,6 - hint: figure, number ; figures on first image ; numbers on first image
- x_x label - show position of dot on 7 images
All digits are random
import json
import glob
import os
import numpy as np
from matplotlib import pyplot as plt
class MyException(Exception):
pass
def parse_file(json_file:str):
with open(json_file, "r", encoding="utf-8") as infile:
myfile = json.load(infile)
plus_point = None
train_rectangles = [None for _ in range(7)] # 7
digits_rectangles = {}
for i, shape in enumerate(myfile["shapes"]):
if shape["label"] == "+":
plus_point = shape['points'][0]
# - convert to int:
plus_point = (round(plus_point[0])//200, round(plus_point[0]), round(plus_point[1]))
else:
# - convert to int:
dr = shape['points']
dr = ((round(dr[0][0]), round(dr[0][1])), (round(dr[1][0]), round(dr[1][1])))
if "_" in shape["label"]:
train_rectangles[dr[0][0]//200] = dr
else:
digits_rectangles[shape["label"]] = dr
if not all(train_rectangles):
raise MyException("not all train_rectangles!")
return plus_point, train_rectangles, digits_rectangles
def get_subimage(img, i=0):
return img[0:VERTIC, HORIZ*i:HORIZ*(i+1)]
def rectangle_parser(rec, left=0, top=0):
"substract left and top and convert to x,y,w,h"
rr = list(rec)
r = sorted(rr, key=lambda x: x[0])
x1 = r[0][0]
y1 = r[0][1]
x2 = r[1][0]
y2 = r[1][1]
w = x2-x1
h = y2-y1
return ((x1 - left, y1 - top, w, h))
# return rec
def hint_parser(drs):
"get hint coordinates on hint subimage"
hints = []
for x in drs.values():
if x[0][0] < HINT_HORIZ and x[0][1] > VERTIC:
hints.append(x)
# assert len(hints) == 2
if len(hints) != 2:
return None, None
hints = sorted(hints, key=lambda x: x[0][0])
hintsn = np.array(hints)
hintsn[0][0][1] = hintsn[0][0][1] - VERTIC
hintsn[0][1][1] = hintsn[0][1][1] - VERTIC
hintsn[1][0][1] = hintsn[1][0][1] - VERTIC
hintsn[1][1][1] = hintsn[1][1][1] - VERTIC
return hintsn
def get_all(main_path:str = "task1.1/mixed_train_to_the_coordinates_dataset") -> (list, list, list):
"""get id's of files in dataset
returns:
- img_files - pathes
- plus_points - + label
- train_rectangles - x_x labels
- digits_rectangles - x labels
- hints - sorted corrdinates of xy1, xy2 on subimage"""
a = glob.glob(main_path + "/*.jpg")
assert len(a) > 0
idds = [os.path.basename(x).split(".")[0] for x in a]
img_files = []
plus_points = []
train_rectangles = []
digits_rectangles = []
hints = []
for idd in idds:
json_file = main_path + f"/{idd}.json"
try:
plus_point, train_rectangles2, digits_rectangles2 = parse_file(json_file)
except MyException as a:
continue
img_files.append(main_path + f"/{idd}.jpg")
plus_points.append(plus_point)
train_rectangles.append(train_rectangles2)
digits_rectangles.append(digits_rectangles2)
hints.append(hint_parser(digits_rectangles2))
return img_files, plus_points, train_rectangles, digits_rectangles, hints
def diff_two_rectangles(r1, r2):
x1,y1,w1,h1 = r1
x2,y2,w2,h2 = r2
y_diff = abs((y1+h1/2)-(y2+h2/2))
x_diff = abs((x1+w1/2)-(x2+w2/2))
return np.mean([x_diff, y_diff])
def diff_two_contours(c1, c2):
return diff_two_rectangles(cv.boundingRect(c1), cv.boundingRect(c2))
def get_subimage_roi_xywh(img, x, y, w, h):
"img: BGR"
return img[y:y+h,x:x+w].copy()
def get_subimage_roi_xy(img, xy1, xy2 ):
"img: BGR"
x1, y1 = xy1
x2, y2 = xy2
return img[y1:y2,x1:x2].copy()
def hsv_to_gimp(hsv_orig):
hsv = hsv_orig.copy()
for i in range(3):
if i == 0:
ranges = [0, 180]
else:
ranges = [0, 100]
cv.normalize(hsv[i], hsv[i], alpha=ranges[0], beta=ranges[1],
norm_type=cv.NORM_MINMAX)
return hsv, ([0, 180], [0, 100], [0, 100])
def output_histogram(img, ranges, bins = 10):
" usage: output_histogram(hsv, [(0,255)]*3)"
histSize = max(bins, 2)
for i in range(3):
hist = cv.calcHist([img[i]], [0], None, [histSize], ranges[i],
accumulate=False) # list of bins with values in 0-9999999 range
# cv.normalize(hist, hist, alpha=0, beta=255, norm_type=cv.NORM_MINMAX)
print("i", i)
[print(np.round(k), "\t", np.round(v,2)) for k,v in zip(np.linspace(ranges[i][0],ranges[i][1], bins+1)[1:], hist)]
print()
def contours_calc_centers(contours):
" and sort by x"
centers = [None] *len(contours)
for j, c in enumerate(contours):
# print(c)
x,y,w,h = cv.boundingRect(c)
centers[j] = ((x+w/2), (y+h/2))
centers = sorted(centers, key = lambda x: x[0])
return centers
# ------------------ local ----
HORIZ = 200 # left edge of one in 7 images
VERTIC = 200 # bottom edge of 7 images
HINT_HORIZ = 135 # left edge of hint image
def get_hint_subimage(img):
return img[VERTIC:400, 0:HINT_HORIZ].copy()
def draw_points(img, pts:list):
for x,y in pts:
image = cv.circle(img, (int(x), int(y)), radius=1, color=(0, 0, 255), thickness=-1)
plt.imshow(image,),plt.show()
def get_centroid(pts:np.array):
z = np.array(pts)
# Define criteria = ( type, max_iter = 10 , epsilon = 1.0 )
criteria = (cv.TERM_CRITERIA_EPS + cv.TERM_CRITERIA_MAX_ITER, 10, 1.0)
# Set flags (Just to avoid line break in the code)
flags = cv.KMEANS_RANDOM_CENTERS
z = np.float32(z)
compactness,labels,centers = cv.kmeans(z,2,None,criteria,10,flags)
big_label = int(np.median(labels))
return centers[big_label]
def match_images_swift(img_src,img_dst, distance=0.9):
"""return points on img_dst
bigger distance -> more points"""
sift = cv.SIFT_create()
kp1, des1 = sift.detectAndCompute(img_src,None)
kp2, des2 = sift.detectAndCompute(img_dst,None)
FLANN_INDEX_KDTREE = 1
index_params = dict(algorithm = FLANN_INDEX_KDTREE, trees = 5)
search_params = dict(checks=50) # or pass empty dictionary
flann = cv.FlannBasedMatcher(index_params,search_params)
# flann = cv.FlannBasedMatcher()
matches = flann.knnMatch(des1,des2,k=2)
# Need to draw only good matches, so create a mask
matchesMask = [[0,0] for i in range(len(matches))]
# ratio test as per Lowe's paper
# count = 0
dst_matches = []
for j,(m,n) in enumerate(matches):
if m.distance < distance*n.distance:
# matchesMask[j]=[1,0]
# count+=1
dst_matches.append(kp2[m.trainIdx])
dst_pts = [i.pt for i in dst_matches]
# draw_params = dict(matchColor = (0,255,0),
# singlePointColor = (255,0,0),
# matchesMask = matchesMask,
# flags = cv.DrawMatchesFlags_DEFAULT)
# img3 = cv.drawMatchesKnn(img_src,kp1,img_dst,kp2,matches,None,**draw_params)
return dst_pts
# -- get id's of files in dataset
import os
import glob
# -- get id's of files in dataset
a = glob.glob("task1.1/mixed_train_to_the_coordinates_dataset/*.jpg")
assert len(a) > 0
file_ids = [os.path.basename(x).split(".")[0] for x in a]
# -- test hint_parser
keys = []
for idd in file_ids:
json_file = f"task1.1/mixed_train_to_the_coordinates_dataset/{idd}.json"
try:
plus_point, train_rectangles, digits_rectangles = parse_file(json_file)
except MyException as a:
continue
h1, h2 = hint_parser(digits_rectangles)
if h1 is not None:
# print("h1", h1, h1[0][0])
# print("h2", h2)
assert h1[0][0] < h2[1][0]
# break
# -- test parse_file
for idd in file_ids:
try:
a,b,c = parse_file(f"task1.1/mixed_train_to_the_coordinates_dataset/{idd}.json")
except MyException as a:
continue
assert len(a) == 2
assert all(a)
assert len(b) == 7
assert all(b)
# -- test get all
img_files, plus_points, train_rectangles, digits_rectangles, hints = get_all()
assert len(img_files) >0
assert len(plus_points) >0
assert len(train_rectangles) >0
assert len(digits_rectangles) >0
assert len(hints) >0
# print(plus_points[0])
# print(plus_points[1])
(2, 517, 99) (5, 1121, 96)
There is 2 tasks:
- compare 2 images from hint
- find out where is tran on 7 images
There is two ways to solve it:
- find location of tran and location of hint images on small ones, then compare them
- find train and match features of images on top and left from it and hint’s images
for 1)
- with OpenCV: get rectangle
- calc position of blue tran on rectangle
for 2):
- extract all 6 images from every task
- detect rectangle with train
- detect figures at left and number above
- train two neural networks with augmented images
import cv2 as cv
id = 2628
img = cv.imread(f'train_to_the_coordinates_dataset/{id}.jpg')
json_file = f"train_to_the_coordinates_dataset/{id}.json"
plus_point, digits_rectangles = parse_file(json_file)
def get_rectangle(img, rect):
"extract rectangle and return rectangle image"
xy1, xy2 = rect
return img[xy1[1]:xy2[1],xy1[0]:xy2[0],:]
print(xy1)
print(xy2)
# print()
img2 = get_rectangle(img, digits_rectangles["1"])
cv.imwrite('autoimgs/tmp.png', img2)
import cv2 as cv
import glob
import os
HORIZ = 200 # left edge of one in 7 images
VERTIC = 200 # bottom edge of 7 images
HINT_HORIZ = 135 # left edge of hint image
# -- get id's of files in dataset
a = glob.glob("train_to_the_coordinates_dataset/*.jpg")
file_ids = [os.path.basename(x).split(".")[0] for x in a]
# -- what is what
def hint_parser(drs):
hints = []
for x in drs.values():
if x[0][0] < HINT_HORIZ and x[0][1] > VERTIC:
hints.append(x)
# assert len(hints) == 2
if len(hints) != 2:
return None, None
hints = sorted(hints, key=lambda x: x[0][1])
return hints[0], hints[1]
# -- get all dots
images_with_hint = 0
for d in file_ids:
json_file = f"train_to_the_coordinates_dataset/{d}.json"
plus_point, digits_rectangles = parse_file(json_file)
# print(d)
h1, h2 = hint_parser(digits_rectangles)
# print(h1,h2)
if h1 is not None:
images_with_hint += 1
print("images with hints:\t", images_with_hint)
print("all images:\t\t", len(file_ids))
# img2 = img[0:200,200:400,:]
# cv.imwrite('autoimgs/subpart.png', img2)
images with hints: 845 all images: 1050
import cv2 as cv
import numpy as np
from dataclasses import dataclass
import math
img_files, plus_points, train_rectangles, digits_rectangles, hints = get_all()
# --- location of xy1
@dataclass
class Hints:
# x_min = None
# x_max = None
# y_min = None
# y_max = None
circle_center_x_min = None
circle_center_x_max = None
circle_center_y_min = None
circle_center_y_max = None
circle_radius_min = None
circle_radius_max = None
# circle_area_min: float
# circle_area_max: float
hint1s = Hints()
hint2s = Hints()
# --------- x, y min, max -------------------------------
# hints1 = [h for h in hints if h[0] is not None]
# # -- 1) h1,h2 2) xy1,xy2 3) x,y
# xs = sorted(hints1, key=lambda x: x[0][0][0])
# hint1s.x_min = xs[0][0][0][0]
# hint1s.x_max = xs[-1][0][0][0]
# xs = sorted(hints1, key=lambda x: x[0][0][1])
# hint1s.y_min = xs[0][0][0][1]
# hint1s.y_max = xs[-1][0][0][1]
# hints2 = [h for h in hints if h[1] is not None]
# xs = sorted(hints2, key=lambda x: x[1][0][0])
# hint2s.x_min = xs[0][1][0][0]
# hint2s.x_max = xs[-1][1][0][0]
# xs = sorted(hints2, key=lambda x: x[1][0][1])
# hint2s.y_min = xs[0][1][0][1]
# hint2s.y_max = xs[-1][1][0][1]
# ---------------- area ------
h1_areas = []
# xs = sorted(hints1, key=lambda x: x[1][0][1])
for x in hints:
if x[0] is not None:
(x,y),radius = cv.minEnclosingCircle(x[0])
h1_areas.append(radius*radius*math.pi)
h2_areas = []
for x in hints:
if x[1] is not None:
(x,y),radius = cv.minEnclosingCircle(x[1])
h2_areas.append(radius*radius*math.pi)
h1_areas = sorted(h1_areas)
h2_areas = sorted(h2_areas)
print("h1 area", int(h1_areas[0]), int(h1_areas[-1]))
print("h2 area", int(h2_areas[0]), int(h2_areas[-1]))
print()
h1_circles = [cv.minEnclosingCircle(h[0]) for h in hints if h[0] is not None]
h2_circles = [cv.minEnclosingCircle(h[1]) for h in hints if h[1] is not None]
# - x
xs = sorted(h1_circles, key=lambda x: x[0][0])
hint1s.circle_center_x_min = xs[0][0][0]
hint1s.circle_center_x_max = xs[-1][0][0]
xs = sorted(h2_circles, key=lambda x: x[0][0])
hint2s.circle_center_x_min = xs[0][0][0]
hint2s.circle_center_x_max = xs[-1][0][0]
# - y
xs = sorted(h1_circles, key=lambda x: x[0][1])
hint1s.circle_center_y_min = xs[0][0][1]
hint1s.circle_center_y_max = xs[-1][0][1]
xs = sorted(h2_circles, key=lambda x: x[0][1])
hint2s.circle_center_y_min = xs[0][0][1]
hint2s.circle_center_y_max = xs[-1][0][1]
# - radius
xs = sorted(h1_circles, key=lambda x: x[1])
hint1s.circle_radius_min = xs[0][1]
hint1s.circle_radius_max = xs[-1][1]
xs = sorted(h2_circles, key=lambda x: x[1])
hint2s.circle_radius_min = xs[0][1]
hint2s.circle_radius_max = xs[-1][1]
print(hint1s.__dict__)
print(hint2s.__dict__)
print()
h1 area 2536 6038 h2 area 684 2096
:
{'circle_center_x_min': 38.5, 'circle_center_x_max': 50.5, 'circle_center_y_min': 81.0, 'circle_center_y_max': 93.0, 'circle_radius_min': 28.41224479675293, 'circle_radius_max': 43.840721130371094} {'circle_center_x_min': 104.0, 'circle_center_x_max': 116.5, 'circle_center_y_min': 56.5, 'circle_center_y_max': 70.5, 'circle_radius_min': 14.764923095703125, 'circle_radius_max': 25.831281661987305}
import cv2 as cv
import numpy as np
from matplotlib import pyplot as plt
from dataclasses import dataclass
HINT1_AREA_MIN = 2536
HINT1_AREA_MAX = 6038
HINT2_AREA_MIN = 684
HINT2_AREA_MAX = 2096
@dataclass
class ContourStats:
circle_center_x_min: float
circle_center_x_max: float
circle_center_y_min: float
circle_center_y_max: float
circle_radius_min: float
circle_radius_max: float
circle_area_min: float
circle_area_max: float
dilatation_type = cv.MORPH_RECT
dilatation_size = 1
element = cv.getStructuringElement(dilatation_type, (2*dilatation_size + 1, 2*dilatation_size+1), (dilatation_size, dilatation_size))
g = False
def find_object(image, circle_stats: ContourStats, conti = None):
""" loop: 1) channels, 2) threshold 3) contours
continue: ((i, thrs), cnt)"""
contour_result = None
# -- 1)
r = cv.split(image.copy())
if conti is not None:
r = r[conti[0][0]:]
for i, gray in enumerate(r):
if contour_result is not None:
break
# -- 2)
ra = range(0, 255, 10)
if conti is not None:
ra = range(conti[0][1], 255, 10)
for thrs in ra:
if contour_result is not None:
break
# -- dilation
# gray2 = cv.dilate(gray, element)
gray = cv.erode(gray, element)
gray = cv.dilate(gray, element)
gray = cv.dilate(gray, element)
# gray2 = cv.GaussianBlur(gray2,(5,5),2)
# gray = cv.Laplacian(image,cv.CV_64F)
# gray = cv.Laplacian(gray,cv.CV_8UC1)
# bin = cv.dilate(bin, element)
# bin = cv.erode(bin, element)
_retval, bin = cv.threshold(gray, thrs, 255, cv.THRESH_BINARY)
# gray = cv.dilate(gray, element)
# gray = cv.erode(gray, element)
# bin = cv.adaptiveThreshold(gray,thrs,cv.ADAPTIVE_THRESH_MEAN_C, cv.THRESH_BINARY,9,3)
# bin = cv.adaptiveThreshold(gray,thrs,cv.ADAPTIVE_THRESH_GAUSSIAN_C, cv.THRESH_BINARY,9,3)
if g:
plt.imshow(bin)
plt.show()
plt.close()
contours, _ = cv.findContours(bin, cv.RETR_LIST,
cv.CHAIN_APPROX_SIMPLE)
# imgs.append(bin)
# -- 3)
for j, cnt in enumerate(contours):
if contour_result is not None:
break
# if conti is not None:
# print(all(cnt[0][0] == conti[1][0][0]))
if conti is not None and all(cnt[0][0] == conti[1][0][0]):
continue # TODO: sort contours and filter by x,y
# -- features of contour
# x,y,w,h = cv.boundingRect(cnt)
(x,y),radius = cv.minEnclosingCircle(cnt)
# print(radius, cv.contourArea(cnt))
# cnt_len = cv.arcLength(cnt, True)
area = cv.contourArea(cnt)
# x,y,w,h = cv.boundingRect(cnt)
if circle_stats.circle_center_x_min < x < circle_stats.circle_center_x_max \
and circle_stats.circle_center_y_min < y < circle_stats.circle_center_y_max \
and circle_stats.circle_area_min < area < circle_stats.circle_area_max \
and circle_stats.circle_radius_min < radius < circle_stats.circle_radius_max:
# if (hint_stats['hint1_y_min']/1.5 < y < hint_stats['hint1_y_max']*1.2) \
# and (hint_stats['hint1_x_min']/1.5 < x < hint_stats['hint1_x_max']*1.2) \
# and (area_min < area < area_max) \
# and (cntlen_min < cnt_len < cntlen_max):
contour_result = cnt
# print("contour (x,y),radius:", (x,y), radius)
break
# -- loop for numbers
# for thrs in range(0, 255, 20):
# -- 4)
# for cnt in contours:
# if cnt[0][0][0] == hint1[0][0][0]:
# continue
# cnt_len = cv.arcLength(cnt, True)
# a = cv.contourArea(cnt)
# if (600 < area < 2000) \
# and (90 < cnt_len < 200):
# hint2 = cnt
# print("hint2", "area", area, "cntlen", cnt_len)
# break
return contour_result, (i, thrs)
HINT1_STATS_s = {'circle_center_x_min': 38.5, 'circle_center_x_max': 50.5, 'circle_center_y_min': 81.0, 'circle_center_y_max': 93.0, 'circle_radius_min': 28.41224479675293, 'circle_radius_max': 43.840721130371094}
HINT2_STATS_s = {'circle_center_x_min': 104.0, 'circle_center_x_max': 116.5, 'circle_center_y_min': 56.5, 'circle_center_y_max': 70.5, 'circle_radius_min': 14.764923095703125, 'circle_radius_max': 25.831281661987305}
# 'circle_center_x_max': 50.5 + 'circle_radius_max': 43.840721130371094 = 94
HINT1_X_MAX = 94
HINT1_STATS_s["circle_area_min"] = HINT1_AREA_MIN
HINT1_STATS_s["circle_area_max"] = HINT1_AREA_MAX
HINT2_STATS_s["circle_area_min"] = HINT2_AREA_MIN
HINT2_STATS_s["circle_area_max"] = HINT2_AREA_MAX
# HINT2_STATS_small = {k:((v - HINT1_X_MAX) if k.startswith("circle_center_x_") else v) for k,v in HINT2_STATS.items()}
MUL = 1.3
HINT1_STATS = {}
for k,v in HINT1_STATS_s.items():
if k.endswith('min'):
HINT1_STATS[k] = v/ MUL
# elif "radius_max" in k: # max
# HINT1_STATS[k] = v* 1.8
else:
HINT1_STATS[k] = v*MUL
HINT2_STATS = {}
for k,v in HINT2_STATS_s.items():
if '_x_' in k:
v = v - HINT1_X_MAX
if k.endswith('min'):
HINT2_STATS[k] = v/ MUL
# elif "radius_max" in k: # max
# HINT2_STATS[k] = v* 1.8
else:
HINT2_STATS[k] = v *MUL
h1s = ContourStats(**HINT1_STATS)
h2s = ContourStats(**HINT2_STATS)
# ----- single image -- old
# idd = 2626
# img = cv.imread(f'train_to_the_coordinates_dataset/{idd}.jpg')
# image = img[200:400, 0:135]
# cnt = find_object(image, area_min=1100, area_max=2000, cntlen_min=120, cntlen_max=200)
# print(cnt is None)
# x,y,w,h = cv.boundingRect(cnt)
# # print(x,y,w,h)
# ROI = image[y:y+h, x:x+w]
# # cv2.drawContours(dice, squares, -1, (0, 255, 0), 3)
# cv.imwrite('autoimgs/detrectonhint.png', ROI)
img_files, plus_points, train_rectangles, digits_rectangles, hints = get_all()
imgs = []
# ------- all images -----
# -- get id's of files in dataset
# a = glob.glob("train_to_the_coordinates_dataset/*.jpg")
# file_ids = [os.path.basename(x).split(".")[0] for x in a]
for i in range(len(img_files)):
# if i >19:
# g = True
# break
fp = img_files[i]
print(fp)
src = cv.imread(fp)
assert src is not None, "img could not be read"
# keys = []
# for idd in file_ids:
img_hint = get_hint_subimage(src)
h1, h2 = hint_parser(digits_rectangles[i])
# print(i, "h1,h2:", h1, h2)
if h1 is None:
print(i, "h1 is None, continue")
continue
conti = None
# -- HINT1 find --
img_hint1 = img_hint[:,:HINT1_X_MAX] # cut hint at right)
cnt1, conti = find_object(img_hint1, h1s, conti)
if cnt is None:
print(i, "find object result is None")
break
x,y,w,h = cv.boundingRect(cnt1)
# print(x,y,w,h)
y_diff = abs(np.mean(h1[:, 1])- (y+h/2))
x_diff = abs(np.mean(h1[:, 0])- (x+w/2))
diff = np.mean([x_diff, y_diff])
print(i, "diff", diff)
# -- hint2 find --
img_hint2 = img_hint[:,HINT1_X_MAX:] # cut hint at left
if diff > 20:
imf = get_subimage_roi_xywh(img_hint1, x, y, w, h)
plt.imshow(imf)
plt.show()
plt.close()
break
cnt2, _ = find_object(img_hint2, h2s)
if cnt is None:
print(i, "find HINT2 is None")
x,y,w,h = cv.boundingRect(cnt2)
imf = get_subimage_roi_xywh(img_hint2, x, y, w, h)
# (x,y),radius = cv.minEnclosingCircle(cnt)
# print("(x,y),radius", (x,y),radius)
plt.imshow(img_hint2)
plt.show()
plt.close()
g = True
# cnt, _ = find_object(img_hint2, h2s)
# plt.imshow(imf)
# plt.show()
# plt.close()
# plt.imshow(img_hint2)
# plt.show()
# plt.close()
break
x,y,w,h = cv.boundingRect(cnt2)
# print(x,y,w,h)
y_diff = abs(np.mean(h2[:, 1])-(y+h/2))
x_diff = abs(np.mean(h2[:, 0])- (x+w/2+HINT1_X_MAX))
diff = np.mean([x_diff, y_diff])
print(i, "diff", diff)
if diff > 20:
imf = get_subimage_roi_xywh(img_hint2, x, y, w, h)
plt.imshow(imf)
plt.show()
plt.close()
plt.imshow(img_hint)
plt.show()
plt.close()
# (x,y),radius = cv.minEnclosingCircle(cnt)
# print("(x,y),radius", (x,y),radius)
break
# hrects = (cv.boundingRect(cnt1), cv.boundingRect(cnt2))
# # -- check by diff of x and y --
# x,y,w,h = hrects[1]
# y_diff = abs(np.mean(h2[:, 1])-(y+h/2))
# x_diff = abs(np.mean(h2[:, 0])- (x+w/2))
# diff2 = np.mean([x_diff, y_diff])
# x,y,w,h = hrects[0]
# y_diff = abs(np.mean(h1[:, 1])-(y+h/2))
# x_diff = abs(np.mean(h1[:, 0])- (x+w/2))
# diff1 = np.mean([x_diff, y_diff])
# print(i, "diff", diff1, diff2)
# ROI = image[y:y+h, x:x+w]
# cv.imwrite('autoimgs/detrectonhint.png', ROI)
# if diff1 > 63 : # or diff2 > 50
# print("Big diff")
# break
# if idd == "2779":
# break
# imgs_stacked = np.hstack(imgs)
# cv.imwrite('autoimgs/detrectonhint.png', imgs_stacked)
import cv2 as cv
import numpy as np
from matplotlib import pyplot as plt
from dataclasses import dataclass
HINT1_AREA_MIN = 2536
HINT1_AREA_MAX = 6038
HINT2_AREA_MIN = 684
HINT2_AREA_MAX = 2096
@dataclass
class ContourStats:
circle_center_x_min: float
circle_center_x_max: float
circle_center_y_min: float
circle_center_y_max: float
circle_radius_min: float
circle_radius_max: float
circle_area_min: float
circle_area_max: float
dilatation_type = cv.MORPH_RECT
dilatation_size = 1
element = cv.getStructuringElement(dilatation_type, (2*dilatation_size + 1, 2*dilatation_size+1), (dilatation_size, dilatation_size))
g = False
def find_object(image, circle_stats: ContourStats, conti = None):
""" loop: 1) channels, 2) threshold 3) contours
continue: ((i, thrs), cnt)"""
contour_result = None
# -- 1)
r = cv.split(image.copy())
if conti is not None:
r = r[conti[0][0]:]
for i, gray in enumerate(r):
if contour_result is not None:
break
# -- 2)
ra = range(0, 255, 10)
if conti is not None:
ra = range(conti[0][1], 255, 10)
for thrs in ra:
if contour_result is not None:
break
# -- dilation
# gray2 = cv.dilate(gray, element)
gray = cv.erode(gray, element)
gray = cv.dilate(gray, element)
gray = cv.dilate(gray, element)
# gray2 = cv.GaussianBlur(gray2,(5,5),2)
# gray = cv.Laplacian(image,cv.CV_64F)
# gray = cv.Laplacian(gray,cv.CV_8UC1)
# bin = cv.dilate(bin, element)
# bin = cv.erode(bin, element)
_retval, bin = cv.threshold(gray, thrs, 255, cv.THRESH_BINARY)
# gray = cv.dilate(gray, element)
# gray = cv.erode(gray, element)
# bin = cv.adaptiveThreshold(gray,thrs,cv.ADAPTIVE_THRESH_MEAN_C, cv.THRESH_BINARY,9,3)
# bin = cv.adaptiveThreshold(gray,thrs,cv.ADAPTIVE_THRESH_GAUSSIAN_C, cv.THRESH_BINARY,9,3)
if g:
plt.imshow(bin)
plt.show()
plt.close()
contours, _ = cv.findContours(bin, cv.RETR_LIST,
cv.CHAIN_APPROX_SIMPLE)
# imgs.append(bin)
# -- 3)
for j, cnt in enumerate(contours):
if contour_result is not None:
break
# if conti is not None:
# print(all(cnt[0][0] == conti[1][0][0]))
if conti is not None and all(cnt[0][0] == conti[1][0][0]):
continue # TODO: sort contours and filter by x,y
# -- features of contour
# x,y,w,h = cv.boundingRect(cnt)
(x,y),radius = cv.minEnclosingCircle(cnt)
# print(radius, cv.contourArea(cnt))
# cnt_len = cv.arcLength(cnt, True)
area = cv.contourArea(cnt)
# x,y,w,h = cv.boundingRect(cnt)
if circle_stats.circle_center_x_min < x < circle_stats.circle_center_x_max \
and circle_stats.circle_center_y_min < y < circle_stats.circle_center_y_max \
and circle_stats.circle_area_min < area < circle_stats.circle_area_max \
and circle_stats.circle_radius_min < radius < circle_stats.circle_radius_max:
# if (hint_stats['hint1_y_min']/1.5 < y < hint_stats['hint1_y_max']*1.2) \
# and (hint_stats['hint1_x_min']/1.5 < x < hint_stats['hint1_x_max']*1.2) \
# and (area_min < area < area_max) \
# and (cntlen_min < cnt_len < cntlen_max):
contour_result = cnt
# print("contour (x,y),radius:", (x,y), radius)
break
# -- loop for numbers
# for thrs in range(0, 255, 20):
# -- 4)
# for cnt in contours:
# if cnt[0][0][0] == hint1[0][0][0]:
# continue
# cnt_len = cv.arcLength(cnt, True)
# a = cv.contourArea(cnt)
# if (600 < area < 2000) \
# and (90 < cnt_len < 200):
# hint2 = cnt
# print("hint2", "area", area, "cntlen", cnt_len)
# break
return contour_result, (i, thrs)
HINT1_STATS_s = {'circle_center_x_min': 38.5, 'circle_center_x_max': 50.5, 'circle_center_y_min': 81.0, 'circle_center_y_max': 93.0, 'circle_radius_min': 28.41224479675293, 'circle_radius_max': 43.840721130371094}
HINT2_STATS_s = {'circle_center_x_min': 104.0, 'circle_center_x_max': 116.5, 'circle_center_y_min': 56.5, 'circle_center_y_max': 70.5, 'circle_radius_min': 14.764923095703125, 'circle_radius_max': 25.831281661987305}
# 'circle_center_x_max': 50.5 + 'circle_radius_max': 43.840721130371094 = 94
HINT1_X_MAX = 94
HINT1_STATS_s["circle_area_min"] = HINT1_AREA_MIN
HINT1_STATS_s["circle_area_max"] = HINT1_AREA_MAX
HINT2_STATS_s["circle_area_min"] = HINT2_AREA_MIN
HINT2_STATS_s["circle_area_max"] = HINT2_AREA_MAX
# HINT2_STATS_small = {k:((v - HINT1_X_MAX) if k.startswith("circle_center_x_") else v) for k,v in HINT2_STATS.items()}
MUL = 1.3
HINT1_STATS = {}
for k,v in HINT1_STATS_s.items():
if k.endswith('min'):
HINT1_STATS[k] = v/ MUL
# elif "radius_max" in k: # max
# HINT1_STATS[k] = v* 1.8
else:
HINT1_STATS[k] = v*MUL
HINT2_STATS = {}
for k,v in HINT2_STATS_s.items():
if '_x_' in k:
v = v - HINT1_X_MAX
if k.endswith('min'):
HINT2_STATS[k] = v/ MUL
# elif "radius_max" in k: # max
# HINT2_STATS[k] = v* 1.8
else:
HINT2_STATS[k] = v *MUL
h1s = ContourStats(**HINT1_STATS)
h2s = ContourStats(**HINT2_STATS)
# ----- single image -- old
# idd = 2626
# img = cv.imread(f'train_to_the_coordinates_dataset/{idd}.jpg')
# image = img[200:400, 0:135]
# cnt = find_object(image, area_min=1100, area_max=2000, cntlen_min=120, cntlen_max=200)
# print(cnt is None)
# x,y,w,h = cv.boundingRect(cnt)
# # print(x,y,w,h)
# ROI = image[y:y+h, x:x+w]
# # cv2.drawContours(dice, squares, -1, (0, 255, 0), 3)
# cv.imwrite('autoimgs/detrectonhint.png', ROI)
img_files, plus_points, train_rectangles, digits_rectangles, hints = get_all()
imgs = []
# ------- all images -----
# -- get id's of files in dataset
# a = glob.glob("train_to_the_coordinates_dataset/*.jpg")
# file_ids = [os.path.basename(x).split(".")[0] for x in a]
def find_hint_images(hint_img):
global HINT1_X_MAX, h1s, h2s
img_hint1 = hint_img[:,:HINT1_X_MAX] # cut hint at right)
cnt1, conti = find_object(img_hint1, h1s)
if cnt1 is None:
print(i, "find object result is None")
return None
# -- hint2 find --
img_hint2 = hint_img[:,HINT1_X_MAX:] # cut hint at left
cnt2, _ = find_object(img_hint2, h2s)
if cnt2 is None:
print(i, "find HINT2 is None")
return None
r1 = cv.boundingRect(cnt1)
x,y,w,h = cv.boundingRect(cnt2)
x += HINT1_X_MAX
return r1, (x,y,w,h)
for i in range(len(img_files)):
if i >19:
break
fp = img_files[i]
print(i, fp)
src = cv.imread(fp)
assert src is not None, "img could not be read"
# keys = []
# for idd in file_ids:
img_hint = get_hint_subimage(src)
h1, h2 = hint_parser(digits_rectangles[i])
# print(i, "h1,h2:", h1, h2)
if h1 is None:
print(i, "h1 is None, continue")
continue
hrec1, hrec2 = find_hint_images(img_hint)
print(hrec1, hrec2)
# ------- test hrec1
x,y,w,h = hrec1
y_diff = abs(np.mean(h1[:, 1])- (y+h/2))
x_diff = abs(np.mean(h1[:, 0])- (x+w/2))
diff = np.mean([x_diff, y_diff])
print(i, "diff", diff)
# ------- test hrec1
x,y,w,h = hrec2
y_diff = abs(np.mean(h2[:, 1])-(y+h/2))
# x_diff = abs(np.mean(h2[:, 0])- (x+w/2+HINT1_X_MAX))
x_diff = abs(np.mean(h2[:, 0])- (x+w/2))
diff = np.mean([x_diff, y_diff])
print(i, "diff", diff)
0 task1.1/mixed_train_to_the_coordinates_dataset/2626.jpg (18, 54, 53, 55) (94, 49, 38, 42) 0 diff 2.75 0 diff 2.5 1 task1.1/mixed_train_to_the_coordinates_dataset/2627.jpg (0, 65, 69, 83) (94, 49, 32, 32) 1 diff 12.5 1 diff 1.25 2 task1.1/mixed_train_to_the_coordinates_dataset/2628.jpg (12, 53, 65, 59) (94, 46, 36, 48) 2 diff 1.5 2 diff 2.0 3 task1.1/mixed_train_to_the_coordinates_dataset/2629.jpg (18, 61, 52, 56) (94, 36, 35, 58) 3 diff 2.5 3 diff 2.5 4 task1.1/mixed_train_to_the_coordinates_dataset/2630.jpg 4 h1 is None, continue 5 task1.1/mixed_train_to_the_coordinates_dataset/2632.jpg (11, 58, 62, 57) (94, 41, 31, 41) 5 diff 1.0 5 diff 2.5 6 task1.1/mixed_train_to_the_coordinates_dataset/2633.jpg (11, 49, 67, 64) (94, 42, 38, 47) 6 diff 2.25 6 diff 1.5 7 task1.1/mixed_train_to_the_coordinates_dataset/2634.jpg (13, 56, 60, 65) (94, 50, 29, 37) 7 diff 1.0 7 diff 2.25 8 task1.1/mixed_train_to_the_coordinates_dataset/2635.jpg (14, 50, 51, 68) (94, 39, 34, 44) 8 diff 1.5 8 diff 3.75 9 task1.1/mixed_train_to_the_coordinates_dataset/2637.jpg (22, 52, 50, 72) (94, 39, 35, 47) 9 diff 0.25 9 diff 0.75 10 task1.1/mixed_train_to_the_coordinates_dataset/2638.jpg (19, 54, 57, 65) (94, 40, 36, 49) 10 diff 2.0 10 diff 1.25 11 task1.1/mixed_train_to_the_coordinates_dataset/2639.jpg (18, 54, 66, 66) (95, 36, 37, 48) 11 diff 1.75 11 diff 0.75 12 task1.1/mixed_train_to_the_coordinates_dataset/2642.jpg (14, 54, 65, 65) (100, 32, 32, 50) 12 diff 1.0 12 diff 2.25 13 task1.1/mixed_train_to_the_coordinates_dataset/2643.jpg (8, 52, 66, 72) (94, 48, 30, 38) 13 diff 0.25 13 diff 2.0 14 task1.1/mixed_train_to_the_coordinates_dataset/2644.jpg (16, 60, 52, 55) (94, 48, 31, 37) 14 diff 1.5 14 diff 1.25 15 task1.1/mixed_train_to_the_coordinates_dataset/2645.jpg (0, 35, 89, 102) (98, 51, 32, 39) 15 diff 1.25 15 diff 0.5 16 task1.1/mixed_train_to_the_coordinates_dataset/2646.jpg (11, 52, 60, 66) (94, 44, 37, 43) 16 diff 1.0 16 diff 4.25 17 task1.1/mixed_train_to_the_coordinates_dataset/2647.jpg (19, 52, 54, 62) (94, 35, 35, 53) 17 diff 3.5 17 diff 3.5 18 task1.1/mixed_train_to_the_coordinates_dataset/2649.jpg (5, 46, 63, 63) (94, 46, 35, 46) 18 diff 7.0 18 diff 2.0 19 task1.1/mixed_train_to_the_coordinates_dataset/2650.jpg (8, 52, 64, 65) (94, 47, 32, 39) 19 diff 0.5 19 diff 1.75
import cv2 as cv
from matplotlib import pyplot as plt
img_files, plus_points, train_rectangles, digits_rectangles, hints = get_all()
def compare_two_images_swift(img1, img2):
# bf = cv.BFMatcher(cv.NORM_L2, crossCheck=True)
# img_jg = cv.cvtColor(img_j, cv.COLOR_BGR2GRAY)
img1 = cv.cvtColor(img1, cv.COLOR_BGR2GRAY)
img2 = cv.cvtColor(img2, cv.COLOR_BGR2GRAY)
sift = cv.SIFT_create()
kp1, des1 = sift.detectAndCompute(img1,None)
kp2, des2 = sift.detectAndCompute(img2,None)
FLANN_INDEX_KDTREE = 1
index_params = dict(algorithm = FLANN_INDEX_KDTREE, trees = 5)
search_params = dict(checks=50) # or pass empty dictionary
flann = cv.FlannBasedMatcher(index_params,search_params)
# flann = cv.FlannBasedMatcher()
matches = flann.knnMatch(des1,des2,k=2)
# Need to draw only good matches, so create a mask
matchesMask = [[0,0] for i in range(len(matches))]
# ratio test as per Lowe's paper
count = 0
for i,(m,n) in enumerate(matches):
if m.distance < 0.7*n.distance:
matchesMask[i]=[1,0]
count+=1
return count
# create BFMatcher object
for i in range(len(img_files)):
if i != 0:
break
fp = img_files[i]
print(fp)
src = cv.imread(fp)
assert src is not None, "img could not be read"
# keys = []
# for idd in file_ids:
#
img_hint = get_hint_subimage(src)
h1, h2 = hint_parser(digits_rectangles[i])
# print(i, "h1,h2:", h1, "\n", h2)
if h1 is None:
print(i, "h1 is None, continue")
continue
x1, y1 = h1[0]
x2, y2 = h1[1]
a = 10
# img_h = get_subimage_roi_xy(img_hint, h1[0], h1[1]) # simple
img_h1 = get_subimage_roi_xywh(img_hint, x1-a, y1-a, x2-x1+a*2, y2-y1+a*2) # 24
x1, y1 = h2[0]
x2, y2 = h2[1]
# img_h2 = get_subimage_roi_xy(img_hint, h2[0], h2[1]) # simple
img_h2 = get_subimage_roi_xywh(img_hint, x1-a, y1-a, x2-x1+a*2, y2-y1+a*2) # 24
# img1 = img[0:200, 0:200].copy()
j=0
img_j = src[0:200, 200*j:(1+j)*200].copy()
xy1, xy2 = digits_rectangles[i]['5'] # 1- 24 2-23 3-cubic 4-romb 5-prizrak
# subimg = get_subimage_roi_xy(src, xy1, xy2)
img_jg = cv.cvtColor(img_j, cv.COLOR_BGR2GRAY)
img_h1g = cv.cvtColor(img_h1, cv.COLOR_BGR2GRAY)
img_h2g = cv.cvtColor(img_h2, cv.COLOR_BGR2GRAY)
img1 = img_jg
img2 = img_h1g
r = compare_two_images_swift(img_j, img_h1)
print("r", r)
# find the keypoints and descriptors with ORB
# img_h1g = cv.Laplacian(img_h1g,cv.CV_8UC1)
# img_jg = cv.Laplacian(img_jg,cv.CV_8UC1)
# img_h1g = cv.Canny(img_h1g,50,200)
# img_jg = cv.Canny(img_jg,50,200)
# plt.imshow(img_jg),plt.show()
# Initiate ORB detector
# orb = cv.ORB_create()
# kp1, des1 = orb.detectAndCompute(img1,None)
# kp2, des2 = orb.detectAndCompute(img2,None)
# # Match descriptors.
# print(des1)
# print(des2)
sift = cv.SIFT_create()
kp1, des1 = sift.detectAndCompute(img1,None)
kp2, des2 = sift.detectAndCompute(img2,None)
FLANN_INDEX_KDTREE = 1
index_params = dict(algorithm = FLANN_INDEX_KDTREE, trees = 5)
search_params = dict(checks=50) # or pass empty dictionary
flann = cv.FlannBasedMatcher(index_params,search_params)
# flann = cv.FlannBasedMatcher()
matches = flann.knnMatch(des1,des2,k=2)
# Need to draw only good matches, so create a mask
matchesMask = [[0,0] for i in range(len(matches))]
# ratio test as per Lowe's paper
a = 0
for i,(m,n) in enumerate(matches):
if m.distance < 0.7*n.distance:
matchesMask[i]=[1,0]
a+=1
print(a, matchesMask)
draw_params = dict(matchColor = (0,255,0),
singlePointColor = (255,0,0),
matchesMask = matchesMask,
flags = cv.DrawMatchesFlags_DEFAULT)
img3 = cv.drawMatchesKnn(img1,kp1,img2,kp2,matches,None,**draw_params)
plt.imshow(img3,),plt.show()
# akaze = cv.AKAZE_create(diffusivity =0.0001)
# kp1, des1 = akaze.detectAndCompute(img_jg, None)
# kp2, des2 = akaze.detectAndCompute(img_h1g, None)
# print(des1)
# print(des2)
# matcher = cv.DescriptorMatcher_create(cv.DescriptorMatcher_BRUTEFORCE_HAMMING)
# nn_matches = matcher.knnMatch(desc1, desc2, 2)
# matches = bf.match(des1,des2)
# # Sort them in the order of their distance.
# matches = sorted(matches, key = lambda x:x.distance)
# # Draw first 10 matches.
# img3 = cv.drawMatches(img_j,kp1,img_h1,kp2,matches[:10],None,flags=cv.DrawMatchesFlags_NOT_DRAW_SINGLE_POINTS)
# plt.imshow(img3)
# plt.show()
# plt.close()
task1.1/mixed_train_to_the_coordinates_dataset/2626.jpg r 26 26 [[0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [1, 0], [1, 0], [0, 0], [0, 0], [0, 0], [1, 0], [1, 0], [0, 0], [1, 0], [1, 0], [1, 0], [0, 0], [1, 0], [1, 0], [1, 0], [1, 0], [0, 0], [1, 0], [0, 0], [0, 0], [1, 0], [0, 0], [0, 0], [1, 0], [1, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [1, 0], [0, 0], [0, 0], [0, 0], [1, 0], [0, 0], [0, 0], [0, 0], [1, 0], [1, 0], [1, 0], [1, 0], [0, 0], [1, 0], [1, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [1, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [1, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [1, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0]]
import cv2 as cv
import numpy as np
from matplotlib import pyplot as plt
import os
# own
from shared_image_functions import fix_angle, get_lines_c, crop
img_files, plus_points, train_rectangles, digits_rectangles, hints = get_all()
for i in range(len(img_files)):
if i <5:
continue
if i > 20:
break
fp = img_files[i]
img = cv.imread(fp)
assert img is not None, "img could not be read"
img = img[0:200, 0:200]
# img2, _ = crop(img.copy(), rotate=False, rate=1.6)
# img2 = cv.resize(img, (900, 900))
# plt.imshow(img)
# plt.show()
img2 = fix_angle(img, get_lines_c)
# a = img
# b = img2
# larger = a if a.size > b.size else b
# smaller = a if a.size < b.size else b
# smaller = np.resize(smaller, larger.shape)
_, axs = plt.subplots(1, 2, figsize=(10, 4))
axs[0].imshow(img)
axs[1].imshow(img2)
plt.title(fp)
# plt.savefig('autoimgs/rotatesingle.png')
plt.show()
plt.close()
# break
https://docs.opencv.org/4.8.0/da/d7f/tutorial_back_projection.html
- src to HSV format
2)
import cv2 as cv
import numpy as np
from matplotlib import pyplot as plt
import os
from scipy.spatial.distance import pdist
from scipy.spatial.distance import squareform
# own
from shared_image_functions import find_angle, fix_angle, get_lines_c
# -------------- ANALYSE TEMPLATE ---------------------
template = cv.imread('train.png') # , cv.IMREAD_GRAYSCALE # , cv.IMREAD_GRAYSCALE
# -- exctract HUE from source
src = template
hsv = cv.cvtColor(src, cv.COLOR_BGR2HSV)
# hue = np.empty(hsv.shape, hsv.dtype)
# ch = (0, 0)
# cv.mixChannels([hsv], [hue], ch) #(400, 1400, 3) copy 0 channel
# -- get histogram for template --
# hsv, ranges = hsv_to_gimp(hsv)
output_histogram(hsv, [(0,255)]*3)
# ---------------------- TEST ON ALL ---------------
# template = template[:,:,0] # BGR
img_files, plus_points, train_rectangles, digits_rectangles, hints = get_all()
dilatation_type = cv.MORPH_RECT
dilatation_size = 5
element = cv.getStructuringElement(dilatation_type, (2*dilatation_size + 1, 2*dilatation_size+1), (dilatation_size, dilatation_size))
for i in range(len(img_files)):
if i != 49:
continue
fp = img_files[i]
print(fp)
src = cv.imread(fp)
assert src is not None, "img could not be read"
# --------------- 1) BGR to HSV -------------
hsv = cv.cvtColor(src.copy(), cv.COLOR_BGR2HSV)
# --------------- 2) split and rotate
imgs = [hsv[0:200, 200*j:(1+j)*200].copy() for j in range(7)]
# [print(x.shape) for x in imgs]
# --------------- 3) fix orientation
a = find_angle(imgs[0], get_lines_c)
imgs = [fix_angle(img, angle=a) for img in imgs]
hsv = np.hstack(imgs)
# --------------- 4) find train contours
low_H, high_H = 102, 128
low_S, high_S = 102, 153
low_V, high_V = 102, 204
mask = cv.inRange(hsv, (low_H, low_S, low_V), (high_H, high_S, high_V))
# hsv = cv.cvtColor(src, cv.COLOR_HSV2GRAY)
print("mask.shape", mask.shape)
# _retval, th = cv.threshold(mask, 80, 255, cv.THRESH_BINARY)
# print("th.shape", th.shape)
# hsv_filtered = cv.bitwise_and(hsv, hsv, mask = mask)
img = mask
img = cv.dilate(img, element)
img = cv.erode(img, element)
plt.imshow(img)
plt.show()
contours, hierarchy = cv.findContours(img, cv.RETR_TREE,
cv.CHAIN_APPROX_SIMPLE)
# [print(cv.contourArea(c)) for c in contours]
contours = [contours for c in contours if cv.contourArea(c) > 70]
# print(len(contours))
assert len(contours) == 7
# ------------- 5) calc contour centers --------------
centers = contours_calc_centers(contours) # and sort
# ------------- 6) calc distance on grid - vertical and horizontal
centers_single = [(c[0] - 200*j,c[1]) for j, c in enumerate(centers)]
print(centers_single)
# -- x
distvec = pdist(centers_single, metric = lambda x, y: abs(abs(x[0] - y[0])/1.5 + abs(x[1] - y[1])))
sqf = squareform(distvec)
np.fill_diagonal(sqf, np.inf)
i, j = np.where(sqf==sqf.min())
i, j = i[0], j[0]
xdist = abs(centers_single[i][0] - centers_single[j][0])
print("x", centers_single[i], centers_single[j])
print("closest by x", xdist)
# -- y
distvec = pdist(centers_single, metric = lambda x, y: abs(abs(x[0] - y[0]) + abs(x[1] - y[1])/1.5))
sqf = squareform(distvec)
np.fill_diagonal(sqf, np.inf)
i, j = np.where(sqf==sqf.min())
i, j = i[0], j[0]
print("y", centers_single[i], centers_single[j])
ydist = abs(centers_single[i][1] - centers_single[j][1])
print("closest by y", ydist)
# ------------- 7) get vertical and horizontal figures-numbers
for c in centers_single:
print("c", c)
# (| |)
xr = (round(c[0]-xdist/2), round(c[0]+xdist/2))
print("xr", xr)
# (=)
yr = (round(c[1]-ydist/2), round(c[1]+ydist/2))
print("yr", yr)
# 1-----------\.
# -----------2/
cx = round(c[0])
cy = round(c[1])
ractx = ((0, yr[0]), (cx, yr[1])) # (1, 2)
# |1 |
# \./2
racty = ((xr[0], 0), (xr[1], cy)) # (1, 2)
print("ractx", ractx)
print("racty", racty)
# src = cv.drawContours(src, [ractx], 0, (0), -1)
# cv.rectangle(src, ractx[0], ractx[1], (255,0,0), 10)
cv.rectangle(src, racty[0], racty[1], (255,0,0), 10)
# ------------ 8) cut rectangle per x and y
# -- x
print("subimg", ractx[0][1],(ractx[1][1] - ractx[0][1]),
ractx[0][0],(ractx[1][0] - ractx[0][0]))
subimgx = src[ractx[0][1]:ractx[1][1],
ractx[0][0]:ractx[1][0]].copy()
# -- y
subimgy = src[racty[0][1]:racty[1][1],
racty[0][0]:racty[1][0]].copy()
# plt.imshow(src)
# plt.show()
plt.imshow(subimgx)
plt.show()
plt.imshow(subimgy)
plt.show()
break
# for c in centers:
# print(c)
# break
# output = cv.cvtColor(hsv_filtered, cv.COLOR_HSV2BGR)
# _retval, bin = cv.threshold(gray, 80, 255, cv.THRESH_BINARY)
# cv.normalize(hist, hist, alpha=0, beta=255, norm_type=cv.NORM_MINMAX)
# print(np.max(frame_threshold))
break
# plt.imshow(output)
i 0 26.0 [2.] 51.0 [6.] 76.0 [7.] 102.0 [2.] 128.0 [16.] 153.0 [3.] 178.0 [1.] 204.0 [1.] 230.0 [2.] 255.0 [1.] i 1 26.0 [0.] 51.0 [1.] 76.0 [3.] 102.0 [3.] 128.0 [26.] 153.0 [7.] 178.0 [2.] 204.0 [0.] 230.0 [0.] 255.0 [0.] i 2 26.0 [0.] 51.0 [1.] 76.0 [0.] 102.0 [3.] 128.0 [23.] 153.0 [3.] 178.0 [5.] 204.0 [7.] 230.0 [0.] 255.0 [0.] task1.1/mixed_train_to_the_coordinates_dataset/2683.jpg mask.shape (200, 1400)
import cv2 as cv
import numpy as np
from matplotlib import pyplot as plt
from dataclasses import dataclass
from shared_image_functions import find_angle, fix_angle, get_lines_c
from scipy.spatial.distance import pdist
from scipy.spatial.distance import squareform
def find_train(src)->list:
""" src - big image"""
MIN_TRAIN_AREA = 100
# --------------- 1) BGR to HSV -------------
hsv = cv.cvtColor(src.copy(), cv.COLOR_BGR2HSV)
# --------------- 2) split and rotate
imgs = [hsv[0:200, 200*j:(1+j)*200].copy() for j in range(7)]
imgs_src = [src[0:200, 200*j:(1+j)*200].copy() for j in range(7)]
# --------------- 3) fix orientation
# ss = imgs_src[0]
# # ss = ss[30:, 40:]
# a = find_angle(imgs[0], get_lines_c)
# print("aaaaaaaaaaaaaaaaaaaaa", a)
# ss = fix_angle(imgs_src[0], angle=a)
# imgs = [fix_angle(img, angle=a) for img in imgs]
# imgs_src0 = fix_angle(imgs_src[0], angle=a)
imgs_src0 = imgs_src[0]
hsv = np.hstack(imgs)
# --------------- 4) find train contours
low_H, high_H = 112, 128
low_S, high_S = 102, 153
low_V, high_V = 102, 204
mask = cv.inRange(hsv, (low_H, low_S, low_V), (high_H, high_S, high_V))
# print("mask.shape", mask.shape)
dilatation_type = cv.MORPH_RECT
dilatation_size = 5
element = cv.getStructuringElement(dilatation_type, (2*dilatation_size + 1, 2*dilatation_size+1), (dilatation_size, dilatation_size))
img = mask
img = cv.dilate(img, element)
img = cv.erode(img, element)
contours, hierarchy = cv.findContours(img, cv.RETR_TREE,
cv.CHAIN_APPROX_SIMPLE)
contours = [c for c in contours if cv.contourArea(c) > MIN_TRAIN_AREA]
# print(len(contours))
assert len(contours) == 7
# ------------- 5) calc contour centers --------------
centers = contours_calc_centers(contours) # and sort
# ------------- 6) calc distance on grid - vertical and horizontal
centers_single = [(c[0] - 200*j,c[1]) for j, c in enumerate(centers)]
# print(centers_single)
# -- x
distvec = pdist(centers_single, metric = lambda x, y: abs(abs(x[0] - y[0])/1.5 + abs(x[1] - y[1])))
sqf = squareform(distvec)
np.fill_diagonal(sqf, np.inf)
i, j = np.where(sqf==sqf.min())
i, j = i[0], j[0]
xdist = abs(centers_single[i][0] - centers_single[j][0])
# print("x", centers_single[i], centers_single[j])
# print("closest by x", xdist)
# -- y
distvec = pdist(centers_single, metric = lambda x, y: abs(abs(x[0] - y[0]) + abs(x[1] - y[1])/1.5))
sqf = squareform(distvec)
np.fill_diagonal(sqf, np.inf)
i, j = np.where(sqf==sqf.min())
i, j = i[0], j[0]
# print("y", centers_single[i], centers_single[j])
ydist = abs(centers_single[i][1] - centers_single[j][1])
# print("closest by y", ydist)
# ------------- 7) get vertical and horizontal figures-numbers
rects = []
for c in centers_single:
# print("c", c)
# (| |)
xr = (round(c[0]-xdist/2), round(c[0]+xdist/2))
# print("xr", xr)
# (=)
yr = (round(c[1]-ydist/2), round(c[1]+ydist/2))
# print("yr", yr)
# 1-----------\.
# -----------2/
cx = round(c[0])
cy = round(c[1])
ractx = ((0, yr[0]), (cx, yr[1])) # (1, 2)
# |1 |
# \./2
racty = ((xr[0], 0), (xr[1], cy)) # (1, 2)
# ------------ 8) cut rectangle per x and y
# -- x
# print("subimg", ractx[0][1],(ractx[1][1] - ractx[0][1]),
# ractx[0][0],(ractx[1][0] - ractx[0][0]))
subimgx = imgs_src0[ractx[0][1]:ractx[1][1],
ractx[0][0]:ractx[1][0]].copy()
# -- y
subimgy = imgs_src0[racty[0][1]:racty[1][1],
racty[0][0]:racty[1][0]].copy()
rects.append({"subimgx": subimgx, "subimgy": subimgy,
"ractx": ractx, "racty": racty, "center": c})
# plt.imshow(src)
# plt.show()
# plt.imshow(subimgx)
# plt.show()
# plt.imshow(subimgy)
# plt.show()
# break
return rects
HINT1_AREA_MIN = 2536
HINT1_AREA_MAX = 6038
HINT2_AREA_MIN = 684
HINT2_AREA_MAX = 2096
@dataclass
class ContourStats:
circle_center_x_min: float
circle_center_x_max: float
circle_center_y_min: float
circle_center_y_max: float
circle_radius_min: float
circle_radius_max: float
circle_area_min: float
circle_area_max: float
def find_object(image, circle_stats: ContourStats, conti = None):
""" image - BGR
loop: 1) channels, 2) threshold 3) contours
continue: ((i, thrs), cnt)
used in def find_hint_images """
dilatation_type = cv.MORPH_RECT
contour_result = None
# -- 1)
r = cv.split(image.copy())
if conti is not None:
r = r[conti[0][0]:]
for i, gray in enumerate(r):
if contour_result is not None:
break
# -- 2)
ra = range(0, 255, 10)
if conti is not None:
ra = range(conti[0][1], 255, 10)
for zz, thrs in enumerate(ra):
# print(zz, thrs)
if contour_result is not None:
break
# -- dilation
dilatation_size = 1 + zz%2 #* zz%3
# print(dilatation_size, thrs)
element = cv.getStructuringElement(dilatation_type, (2*dilatation_size + 1, 2*dilatation_size+1), (dilatation_size, dilatation_size))
if zz%10 ==0:
gray2 = cv.erode(gray.copy(), element)
else:
gray2 = cv.erode(gray2, element)
# gray2 = cv.erode(gray.copy(), element)
gray2 = cv.dilate(gray2, element)
gray2 = cv.dilate(gray2, element)
_retval, bin = cv.threshold(gray2, thrs, 255, cv.THRESH_BINARY)
contours, _ = cv.findContours(bin, cv.RETR_LIST,
cv.CHAIN_APPROX_SIMPLE)
# -- 3)
for j, cnt in enumerate(contours):
if contour_result is not None:
break
if conti is not None and all(cnt[0][0] == conti[1][0][0]):
continue # TODO: sort contours and filter by x,y
# -- features of contour
(x,y),radius = cv.minEnclosingCircle(cnt)
area = cv.contourArea(cnt)
if circle_stats.circle_center_x_min < x < circle_stats.circle_center_x_max \
and circle_stats.circle_center_y_min < y < circle_stats.circle_center_y_max \
and circle_stats.circle_area_min < area < circle_stats.circle_area_max \
and circle_stats.circle_radius_min < radius < circle_stats.circle_radius_max:
contour_result = cnt
break
return contour_result, (i, thrs)
def find_hint_images(img_hint):
global HINT1_X_MAX, h1s, h2s
img_hint1 = img_hint[:,:HINT1_X_MAX] # cut hint at right)
cnt1, conti = find_object(img_hint1, h1s)
if cnt1 is None:
print(i, "find object result is None")
return None
# -- hint2 find --
img_hint2 = img_hint[:,HINT1_X_MAX:] # cut hint at left
cnt2, _ = find_object(img_hint2, h2s)
if cnt2 is None:
print(i, "find HINT2 is None")
return None
r1 = cv.boundingRect(cnt1)
x,y,w,h = cv.boundingRect(cnt2)
x += HINT1_X_MAX
return r1, (x,y,w,h)
# ------------------- PREPARE HINT STATISITCS
HINT1_STATS_s = {'circle_center_x_min': 38.5, 'circle_center_x_max': 50.5, 'circle_center_y_min': 81.0, 'circle_center_y_max': 93.0, 'circle_radius_min': 28.41224479675293, 'circle_radius_max': 43.840721130371094}
HINT2_STATS_s = {'circle_center_x_min': 104.0, 'circle_center_x_max': 116.5, 'circle_center_y_min': 56.5, 'circle_center_y_max': 70.5, 'circle_radius_min': 14.764923095703125, 'circle_radius_max': 25.831281661987305}
# 'circle_center_x_max': 50.5 + 'circle_radius_max': 43.840721130371094 = 94
HINT1_X_MAX = 94
HINT1_STATS_s["circle_area_min"] = HINT1_AREA_MIN
HINT1_STATS_s["circle_area_max"] = HINT1_AREA_MAX
HINT2_STATS_s["circle_area_min"] = HINT2_AREA_MIN
HINT2_STATS_s["circle_area_max"] = HINT2_AREA_MAX
# HINT2_STATS_small = {k:((v - HINT1_X_MAX) if k.startswith("circle_center_x_") else v) for k,v in HINT2_STATS.items()}
MUL = 1.3
HINT1_STATS = {}
for k,v in HINT1_STATS_s.items():
if k.endswith('min'):
HINT1_STATS[k] = v/ MUL
# elif "radius_max" in k: # max
# HINT1_STATS[k] = v* 1.8
else:
HINT1_STATS[k] = v*MUL
HINT2_STATS = {}
for k,v in HINT2_STATS_s.items():
if '_x_' in k:
v = v - HINT1_X_MAX
if k.endswith('min'):
HINT2_STATS[k] = v/ MUL
# elif "radius_max" in k: # max
# HINT2_STATS[k] = v* 1.8
else:
HINT2_STATS[k] = v *MUL
h1s = ContourStats(**HINT1_STATS)
h2s = ContourStats(**HINT2_STATS)
def get_hint_sub(img, xywh, padding):
x,y,w,h = xywh
x1, y1 = (x,y)
x2, y2 = (x+w, y+h)
# with padding approach
HINT_PADDING = 5
# print("wtf", hrec1, x1, y1, x2, y2)
yh = y+h + padding
xw = x+w + padding
y = y - padding
x = x - padding
y = y if y>=0 else 0
x =x if x>=0 else 0
yh = yh if yh<=200 else 200
xw = xw if xw<=HINT_HORIZ else HINT_HORIZ
img_h1 = img[y:yh,x:xw].copy()
img_h1 = cv.cvtColor(img_h1, cv.COLOR_BGR2GRAY)
return img_h1
def solve_captcha(image_path):
src = cv.imread(image_path)
assert src is not None, "img could not be read"
# ------- 2) prepare hint images
img_hint = get_hint_subimage(src)
# ------- find hint subimages
hrec1, hrec2 = find_hint_images(img_hint)
# print(hrec1, hrec2)
# ------- extract hint subimages
# plt.imshow(img_hint),plt.show()
# ------- 3) prepare main image - fix orientation
imgs = [src[0:200, 200*j:(1+j)*200].copy() for j in range(7)]
a = find_angle(imgs[0], get_lines_c)
imgs = [fix_angle(img, angle=a) for img in imgs]
# plt.imshow(imgs[0]),plt.show()
# ------- 4) find train
ftrains = find_train(np.hstack(imgs))
# break
# print("train keys", ftrains[0].keys())
# --------- 4) compare hint images with ones near train
SIGNIFICANT_DIFFERENCE_BETWEEN_TRAINS = 10
trains = []
for j, ft in enumerate(ftrains):
trains.append(ft['center'])
# print(j, ft['center'])
# ------- 5) find hint images on main image
img_dst = imgs[0]
for d, p in [(0.8, 5), (0.9,20), (0.8,1), (0.7, -1)]:
img_h1 = get_hint_sub(img_hint, hrec1, p)
img_src1 = img_h1
dst_pts1 = match_images_swift(img_src1,img_dst, distance=d)
dst_pts1 = [x for x in dst_pts1 if x[0] < 70]
if len(dst_pts1) > 9 or len(dst_pts1) == 1:
break
for d, p in [(0.7, 5), (0.7,20), (0.7, 3), (0.9,15), (0.8, 5)]:
img_h2 = get_hint_sub(img_hint, hrec2, p)
img_src2 = img_h2
dst_pts2 = match_images_swift(img_src2,img_dst, distance=d)
dst_pts2 = [x for x in dst_pts2 if x[1] < 70]
if len(dst_pts2) > 9 or len(dst_pts2) == 1:
break
# plt.imshow(img_dst),plt.show()
# print("dst_pts1", len(dst_pts1))
# TODO: may be null
# TODO: may be null
# print(dst_pts1)
# print(dst_pts2)
# print("dst_pts1", dst_pts1)
# print("dst_pts2", dst_pts2)
# center1 = get_centroid(dst_pts1)
if len(dst_pts1) == 1:
center1 = dst_pts1[0]
elif len(dst_pts1)> 1:
center1 = get_centroid(dst_pts1)
else:
print("error1")
return 0
if len(dst_pts2) == 1:
center2 = dst_pts2[0]
elif len(dst_pts2)> 1:
center2 = get_centroid(dst_pts2)
else:
print("error2")
return 0
# print("len(dst_pts1), len(dst_pts2)", len(dst_pts1), len(dst_pts2))
# print(center1)
# print(center2)
# # trains = [[x[0], x[1]] for x in trains]
# # trains = sum(trains,[])
# print("trains", trains)
# v = [plus_points[i][0]] + list(center1) + list(center2) + trains
# np.train
# assert len(v) == 19
# table.append(v)
# print("wtf", i,plus_points[i][0], center1, center2, trains)
# draw_points(img_dst, [center1])
# plt.imshow(img_h2),plt.show()
# draw_points(img_dst.copy(), dst_pts2)
# draw_points(img_dst, [center2])
r = []
for t in trains:
# print(t, center1, center2)
# print(abs(center1[1] - t[1]), abs(center2[0] - t[0]))
sub = abs(center1[1] - t[1]) + abs(center2[0] - t[0])
r.append(sub)
return np.argmin(r) #, center1, center2
# ---------------------- TEST ON ALL ---------------
img_files, plus_points, train_rectangles, digits_rectangles, hints = \
get_all(main_path = "/home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset")
res = []
for i in range(len(img_files)):
# if i != 717:
# continue
# pts1, pts2 = hints[i]
# if pts2 is None:
# continue
# center1 = get_centroid(pts1)
# center2 = get_centroid(pts2)
# print(center1)
# break
# if i < 700 or i > 800:
# continue
r = solve_captcha(img_files[i])
# if r is None:
# continue
# resu, hc1, hc2 = r
# print("hc1", np.linalg.norm(hc1-center1))
# print("hc2", np.linalg.norm(hc2-center2))
# r = solve_captcha(img_files[i])
resu = r
print(i, resu, plus_points[i][0], img_files[i])
# assert r == plus_points[i][0]
res.append(r)
print(len(res))
print(len(plus_points))
# v = [int(x1 == x2[0]) for x1, x2 in zip(res, plus_points[:20+1])]
if len(plus_points) == len(res):
v = [int(x1 == x2[0]) for x1, x2 in zip(res, plus_points)]
print("accuracy", len([x for x in v if x ==1])/len(v) )
0 2 2 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2626.jpg 1 5 5 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2627.jpg 2 1 1 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2628.jpg 3 1 1 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2629.jpg 4 2 2 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2630.jpg 5 4 4 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2632.jpg 6 2 2 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2633.jpg 7 1 1 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2634.jpg 8 5 5 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2635.jpg 9 6 6 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2637.jpg 10 0 0 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2638.jpg 11 5 5 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2639.jpg 12 4 4 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2642.jpg 13 4 4 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2643.jpg 14 6 6 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2644.jpg 15 1 1 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2645.jpg 16 6 6 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2646.jpg 17 4 4 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2647.jpg 18 1 1 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2649.jpg 19 1 1 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2650.jpg 20 0 0 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2651.jpg 21 3 3 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2652.jpg 22 4 4 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2653.jpg 23 2 2 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2654.jpg 24 2 2 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2655.jpg error1 25 0 4 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2656.jpg 26 5 5 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2657.jpg 27 1 4 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2658.jpg 28 0 0 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2660.jpg 29 0 0 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2661.jpg 30 5 5 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2663.jpg 31 2 2 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2664.jpg 32 4 4 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2665.jpg 33 5 5 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2666.jpg 34 2 2 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2667.jpg 35 6 6 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2668.jpg 36 3 3 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2669.jpg 37 0 0 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2670.jpg 38 2 2 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2671.jpg 39 5 5 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2672.jpg 40 0 0 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2673.jpg 41 3 3 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2674.jpg 42 5 5 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2675.jpg 43 5 5 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2676.jpg 44 3 3 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2677.jpg 45 0 0 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2678.jpg 46 0 0 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2679.jpg 47 2 2 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2680.jpg 48 2 2 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2682.jpg 49 2 2 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2683.jpg 50 4 4 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2684.jpg 51 1 1 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2685.jpg 52 6 6 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2686.jpg 53 4 4 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2687.jpg 54 2 2 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2689.jpg 55 3 3 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2690.jpg 56 1 4 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2691.jpg 57 1 1 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2695.jpg 58 2 2 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2696.jpg 59 0 0 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2702.jpg 60 0 0 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2713.jpg 61 3 5 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2717.jpg 62 3 3 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2719.jpg 63 5 5 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2720.jpg 64 5 5 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2725.jpg 65 2 2 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2729.jpg 66 1 1 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2731.jpg 67 5 5 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2735.jpg 68 2 2 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2737.jpg 69 3 3 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2740.jpg error2 70 0 3 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2742.jpg 71 5 5 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2743.jpg 72 6 4 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2747.jpg 73 6 6 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2748.jpg 74 6 6 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2752.jpg 75 6 6 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2753.jpg 76 0 0 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2754.jpg 77 3 3 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2755.jpg 78 4 4 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2756.jpg 79 1 1 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2757.jpg 80 6 6 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2759.jpg 81 1 1 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2760.jpg 82 4 4 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2767.jpg 83 2 2 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2768.jpg 84 6 6 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2769.jpg 85 1 1 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2771.jpg 86 2 1 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2772.jpg 87 4 4 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2774.jpg 88 6 6 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2775.jpg 89 6 6 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2776.jpg 90 2 2 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2778.jpg 91 4 4 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2779.jpg 92 5 5 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2780.jpg 93 3 6 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2781.jpg 94 0 6 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2782.jpg 95 2 2 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2787.jpg 96 3 3 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2788.jpg 97 2 2 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2789.jpg 98 4 4 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2790.jpg 99 6 6 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2791.jpg 100 4 4 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2792.jpg 101 5 5 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2793.jpg 102 4 4 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2795.jpg 103 5 5 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2796.jpg 104 2 2 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2797.jpg 105 1 1 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2799.jpg 106 1 1 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2800.jpg 107 2 2 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2801.jpg 108 3 3 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2802.jpg 109 6 6 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2804.jpg 110 5 5 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2805.jpg 111 2 2 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2807.jpg 112 2 2 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2808.jpg 113 4 4 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2809.jpg 114 4 4 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2810.jpg 115 0 0 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2811.jpg 116 3 3 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2812.jpg 117 1 1 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2815.jpg 118 4 4 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2817.jpg 119 2 2 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2819.jpg 120 5 5 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2820.jpg 121 2 2 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2821.jpg 122 1 1 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2822.jpg 123 4 4 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2823.jpg 124 3 3 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2824.jpg 125 2 2 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2825.jpg 126 0 0 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2826.jpg 127 6 6 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2827.jpg 128 4 4 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2828.jpg 129 5 5 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2829.jpg 130 2 2 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2830.jpg 131 6 6 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2833.jpg 132 2 2 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2835.jpg 133 4 4 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2836.jpg 134 2 2 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2837.jpg 135 6 6 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2838.jpg 136 2 2 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2839.jpg 137 1 1 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2840.jpg 138 2 2 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2841.jpg error2 139 0 4 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2842.jpg 140 6 6 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2843.jpg 141 5 4 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2844.jpg 142 2 3 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2845.jpg 143 0 0 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2846.jpg 144 2 2 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2850.jpg 145 5 5 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2851.jpg 146 2 2 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2853.jpg 147 3 3 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2854.jpg 148 2 2 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2855.jpg 149 2 2 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2858.jpg error1 150 0 5 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2859.jpg 151 0 2 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2861.jpg 152 4 4 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2864.jpg 153 1 1 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2865.jpg 154 6 6 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2866.jpg 155 4 4 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2869.jpg 156 0 0 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2870.jpg 157 4 4 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2871.jpg 158 2 2 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2872.jpg 159 2 2 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2873.jpg 160 1 1 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2874.jpg 161 3 3 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2876.jpg 162 3 3 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2878.jpg 163 4 4 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2879.jpg 164 5 5 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2880.jpg 165 6 6 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2881.jpg 166 2 2 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2882.jpg 167 0 0 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2883.jpg 168 5 5 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2884.jpg 169 6 6 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2885.jpg 170 3 3 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2886.jpg 171 4 2 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2888.jpg 172 3 3 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2889.jpg 173 3 3 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2890.jpg 174 4 4 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2891.jpg 175 4 4 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2893.jpg 176 1 1 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2895.jpg 177 2 2 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2896.jpg 178 6 6 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2898.jpg 179 6 6 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2901.jpg 180 2 2 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2903.jpg 181 4 4 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2904.jpg 182 2 2 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2905.jpg 183 1 1 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2906.jpg error2 184 0 5 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2911.jpg 185 6 6 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2912.jpg 186 1 1 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2914.jpg 187 2 2 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2916.jpg 188 2 2 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2918.jpg 189 5 5 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2920.jpg 190 5 6 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2922.jpg 191 6 6 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2923.jpg 192 0 0 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2925.jpg 193 3 3 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2927.jpg 194 3 3 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2928.jpg 195 6 6 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2929.jpg 196 0 0 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2930.jpg 197 0 0 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2931.jpg 198 1 1 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2932.jpg 199 3 3 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2934.jpg 200 1 1 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2937.jpg 201 2 2 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2939.jpg 202 5 5 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2940.jpg 203 6 6 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2944.jpg 204 0 0 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2946.jpg 205 0 0 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2947.jpg 206 0 0 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2948.jpg 207 3 3 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2951.jpg 208 3 3 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2952.jpg 209 4 4 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2953.jpg 210 6 6 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2956.jpg 211 2 2 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2957.jpg 212 6 6 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2958.jpg 213 5 5 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2959.jpg 214 3 3 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2960.jpg 215 3 3 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2964.jpg 216 4 4 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2965.jpg 217 2 2 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2971.jpg 218 0 0 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2977.jpg 219 4 4 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2978.jpg 220 5 5 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2980.jpg 221 0 0 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2985.jpg 222 2 2 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2986.jpg 223 2 2 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2987.jpg 224 3 3 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2988.jpg 225 0 0 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2989.jpg 226 1 1 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2992.jpg 227 0 0 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2993.jpg 228 6 6 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2994.jpg 229 5 5 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2995.jpg 230 6 6 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/2998.jpg 231 3 3 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3001.jpg 232 3 3 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3002.jpg 233 0 0 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3004.jpg 234 4 4 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3011.jpg 235 4 4 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3012.jpg 236 1 1 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3013.jpg 237 2 2 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3014.jpg 238 2 2 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3019.jpg 239 5 5 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3021.jpg 240 5 5 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3022.jpg 241 1 1 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3024.jpg 242 4 4 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3026.jpg 243 0 0 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3028.jpg 244 2 2 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3033.jpg 245 4 4 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3036.jpg 246 1 1 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3037.jpg 247 5 5 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3039.jpg 248 4 4 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3040.jpg 249 5 5 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3044.jpg 250 6 1 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3045.jpg 251 4 4 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3046.jpg 252 6 6 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3047.jpg 253 3 5 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3049.jpg 254 6 6 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3050.jpg 255 5 5 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3051.jpg 256 0 2 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3052.jpg 257 4 4 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3053.jpg 258 4 4 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3054.jpg 259 6 6 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3055.jpg 260 4 4 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3057.jpg 261 1 1 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3058.jpg 262 3 3 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3060.jpg 263 3 3 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3061.jpg 264 1 1 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3063.jpg 265 1 1 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3064.jpg 266 3 3 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3065.jpg 267 2 2 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3067.jpg 268 1 1 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3069.jpg 269 1 1 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3071.jpg 270 2 2 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3072.jpg 271 3 3 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3073.jpg 272 5 5 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3077.jpg error1 273 0 0 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3081.jpg 274 0 2 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3082.jpg 275 3 3 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3083.jpg 276 5 5 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3084.jpg 277 4 4 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3085.jpg 278 5 5 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3086.jpg 279 1 1 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3087.jpg 280 6 6 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3089.jpg 281 1 1 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3100.jpg 282 4 4 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3101.jpg 283 1 1 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3103.jpg 284 2 2 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3104.jpg 285 3 3 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3108.jpg 286 6 6 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3112.jpg 287 2 2 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3113.jpg 288 5 5 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3115.jpg 289 4 4 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3117.jpg 290 2 2 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3118.jpg 291 2 2 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3119.jpg 292 1 1 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3121.jpg 293 0 0 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3122.jpg 294 1 1 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3126.jpg 295 6 6 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3129.jpg 296 6 6 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3130.jpg 297 2 2 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3133.jpg 298 5 5 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3135.jpg 299 5 5 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3136.jpg 300 5 5 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3137.jpg 301 5 5 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3139.jpg 302 3 3 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3142.jpg 303 2 2 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3143.jpg 304 1 1 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3144.jpg 305 1 1 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3146.jpg 306 6 6 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3148.jpg 307 2 2 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3149.jpg 308 1 1 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3155.jpg 309 0 0 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3156.jpg 310 2 2 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3157.jpg 311 0 0 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3158.jpg 312 4 4 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3159.jpg 313 5 5 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3161.jpg 314 4 4 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3164.jpg 315 1 1 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3165.jpg 316 5 5 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3166.jpg 317 4 4 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3167.jpg 318 6 6 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3168.jpg 319 2 2 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3171.jpg 320 3 3 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3173.jpg 321 1 1 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3176.jpg 322 2 2 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3179.jpg error2 323 0 0 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3181.jpg 324 5 4 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3182.jpg 325 1 1 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3183.jpg 326 3 3 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3184.jpg 327 0 0 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3186.jpg 328 0 0 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3187.jpg 329 6 2 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3188.jpg 330 2 2 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3192.jpg 331 1 6 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3193.jpg 332 4 4 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3194.jpg 333 5 5 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3195.jpg 334 0 0 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3196.jpg 335 2 2 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3198.jpg error2 336 0 0 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3200.jpg 337 1 1 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3201.jpg 338 4 4 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3202.jpg 339 3 3 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3206.jpg 340 5 5 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3208.jpg 341 0 0 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3209.jpg 342 2 2 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3210.jpg 343 0 0 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3211.jpg 344 5 5 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3212.jpg 345 0 0 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3214.jpg 346 3 3 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3218.jpg 347 0 0 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3220.jpg 348 0 0 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3221.jpg 349 1 1 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3225.jpg 350 2 2 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3227.jpg 351 4 4 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3230.jpg 352 6 6 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3231.jpg 353 5 5 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3233.jpg 354 2 2 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3237.jpg 355 2 2 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3238.jpg 356 6 6 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3239.jpg 357 0 0 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3240.jpg 358 1 1 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3241.jpg 359 2 2 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3243.jpg 360 5 5 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3246.jpg 361 6 6 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3247.jpg 362 6 6 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3248.jpg 363 6 6 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3250.jpg 364 1 1 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3251.jpg 365 3 3 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3256.jpg 366 2 2 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3257.jpg 367 1 1 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3259.jpg 368 2 2 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3268.jpg 369 2 2 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3270.jpg 370 1 1 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3271.jpg 371 3 3 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3272.jpg 372 2 2 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3275.jpg 373 4 4 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3276.jpg 374 3 3 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3277.jpg 375 1 1 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3278.jpg 376 6 6 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3284.jpg 377 0 0 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3287.jpg error1 378 0 4 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3290.jpg 379 0 0 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3293.jpg 380 1 1 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3294.jpg 381 2 2 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3295.jpg 382 3 3 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3297.jpg 383 6 6 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3298.jpg 384 3 3 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3301.jpg 385 2 2 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3303.jpg 386 1 1 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3306.jpg 387 4 4 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3308.jpg 388 0 0 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3310.jpg 389 6 6 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3312.jpg 390 0 0 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3313.jpg 391 1 1 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3318.jpg error2 392 0 0 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3320.jpg 393 4 4 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3321.jpg 394 4 4 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3322.jpg 395 4 5 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3325.jpg 396 3 3 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3328.jpg 397 5 5 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3330.jpg 398 1 1 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3332.jpg 399 4 4 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3333.jpg 400 2 2 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3334.jpg 401 0 0 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3336.jpg 402 2 2 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3338.jpg error1 403 0 4 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3339.jpg 404 0 0 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3346.jpg 405 6 6 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3350.jpg 406 0 0 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3351.jpg 407 3 3 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3352.jpg 408 0 0 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3353.jpg 409 3 3 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3355.jpg 410 0 0 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3356.jpg 411 6 6 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3358.jpg 412 3 3 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3362.jpg 413 1 1 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3363.jpg 414 5 5 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3364.jpg 415 3 3 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3368.jpg 416 3 3 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3369.jpg 417 3 3 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3372.jpg error2 418 0 4 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3373.jpg 419 5 5 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3375.jpg 420 5 5 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3376.jpg error2 421 0 3 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3377.jpg 422 3 3 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3379.jpg 423 1 2 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3382.jpg 424 1 1 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3383.jpg 425 0 0 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3384.jpg 426 2 2 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3387.jpg 427 6 6 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3388.jpg 428 5 5 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3389.jpg 429 6 6 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3390.jpg 430 5 5 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3394.jpg 431 0 2 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3397.jpg 432 5 5 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3398.jpg 433 1 1 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3400.jpg 434 3 3 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3401.jpg 435 3 3 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3402.jpg 436 6 6 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3403.jpg 437 3 3 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3404.jpg 438 3 3 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3406.jpg 439 0 0 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3408.jpg 440 4 4 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3409.jpg 441 4 4 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3412.jpg 442 5 5 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3416.jpg error2 443 0 3 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3419.jpg 444 3 6 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3421.jpg 445 5 5 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3422.jpg 446 2 2 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3423.jpg 447 3 3 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3424.jpg 448 2 2 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3425.jpg 449 6 6 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3426.jpg 450 2 0 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3431.jpg 451 0 0 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3432.jpg 452 6 4 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3434.jpg 453 2 2 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3435.jpg 454 3 0 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3437.jpg 455 4 4 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3438.jpg 456 1 1 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3440.jpg 457 1 1 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3441.jpg 458 2 2 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3445.jpg 459 1 1 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3447.jpg 460 2 2 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3448.jpg 461 2 2 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3450.jpg 462 1 1 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3451.jpg 463 4 3 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3453.jpg 464 6 6 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3454.jpg 465 1 2 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3455.jpg 466 1 1 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3456.jpg 467 4 4 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3461.jpg error2 468 0 0 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3463.jpg 469 6 6 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3468.jpg 470 3 3 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3470.jpg error2 471 0 5 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3472.jpg 472 2 2 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3473.jpg 473 2 2 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3476.jpg 474 1 1 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3477.jpg 475 6 6 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3478.jpg 476 4 4 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3482.jpg error2 477 0 3 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3484.jpg 478 0 0 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3487.jpg 479 3 3 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3488.jpg 480 0 0 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3493.jpg 481 2 2 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3494.jpg 482 0 0 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3495.jpg 483 4 4 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3499.jpg 484 0 0 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3502.jpg 485 2 2 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3503.jpg error2 486 0 1 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3504.jpg 487 2 2 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3505.jpg 488 2 1 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3510.jpg 489 3 3 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3511.jpg 490 4 4 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3512.jpg 491 5 5 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3513.jpg 492 4 0 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3514.jpg 493 2 2 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3519.jpg 494 3 3 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3522.jpg error2 495 0 4 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3523.jpg 496 2 2 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3524.jpg 497 2 2 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3525.jpg 498 5 5 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3526.jpg 499 0 0 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3527.jpg 500 0 0 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3529.jpg 501 6 6 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3536.jpg 502 5 5 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3538.jpg 503 1 1 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3541.jpg 504 5 5 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3542.jpg 505 6 6 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3543.jpg 506 5 5 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3546.jpg 507 4 4 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3547.jpg 508 1 1 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3548.jpg 509 1 1 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3549.jpg 510 0 0 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3550.jpg 511 1 1 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3553.jpg 512 2 2 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3558.jpg 513 2 2 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3559.jpg 514 3 3 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3560.jpg error2 515 0 4 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3565.jpg 516 1 1 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3567.jpg 517 4 4 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3569.jpg 518 3 3 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3570.jpg 519 6 6 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3571.jpg 520 2 2 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3572.jpg 521 5 5 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3573.jpg 522 0 0 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3574.jpg 523 3 3 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3577.jpg 524 3 5 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3580.jpg 525 5 5 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3581.jpg 526 0 0 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3585.jpg 527 6 6 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3586.jpg 528 1 1 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3591.jpg 529 3 3 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3592.jpg 530 1 1 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3593.jpg 531 4 4 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3594.jpg 532 0 0 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3595.jpg 533 5 5 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3596.jpg 534 2 2 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3598.jpg 535 2 2 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3599.jpg 536 5 5 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3601.jpg 537 5 5 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3603.jpg 538 3 3 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3606.jpg 539 4 4 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3607.jpg 540 2 2 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3608.jpg 541 0 0 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3610.jpg error2 542 0 0 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3612.jpg 543 1 1 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3614.jpg 544 3 3 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3615.jpg 545 6 6 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3616.jpg 546 4 4 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3618.jpg 547 2 2 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3619.jpg 548 0 0 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3621.jpg 549 4 4 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3623.jpg 550 6 6 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3625.jpg 551 4 4 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3626.jpg 552 5 5 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3629.jpg 553 1 1 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3632.jpg error2 554 0 5 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3633.jpg 555 5 5 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3634.jpg 556 5 4 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3637.jpg 557 5 5 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3639.jpg 558 5 5 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3640.jpg 559 3 3 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3642.jpg 560 4 4 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3644.jpg 561 0 0 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3645.jpg 562 3 2 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3646.jpg 563 6 6 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3648.jpg 564 3 3 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3651.jpg 565 3 3 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3652.jpg 566 4 4 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3655.jpg 567 6 6 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3656.jpg 568 5 5 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3657.jpg 569 2 2 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3659.jpg 570 5 5 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3661.jpg 571 4 4 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3668.jpg 572 5 5 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3670.jpg 573 0 0 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3671.jpg 574 4 4 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3674.jpg 575 4 4 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3675.jpg 576 6 6 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3677.jpg 577 2 2 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3678.jpg 578 2 2 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3679.jpg 579 5 5 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3681.jpg 580 2 2 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3682.jpg 581 6 6 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3683.jpg 582 3 4 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3686.jpg 583 1 1 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3687.jpg 584 2 2 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3688.jpg 585 5 5 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3691.jpg 586 0 0 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3692.jpg 587 4 4 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3693.jpg 588 3 3 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3696.jpg 589 1 1 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3698.jpg 590 5 5 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3700.jpg error1 591 0 2 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3701.jpg 592 0 0 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3706.jpg 593 0 0 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3710.jpg 594 3 3 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3711.jpg 595 6 6 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3713.jpg 596 6 6 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3714.jpg 597 0 0 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3718.jpg 598 5 5 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3719.jpg error2 599 0 0 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3720.jpg 600 2 2 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3725.jpg 601 6 6 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3729.jpg 602 0 0 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3731.jpg 603 6 6 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3732.jpg 604 4 4 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3733.jpg 605 0 0 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3736.jpg 606 0 0 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3737.jpg 607 6 6 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3741.jpg 608 4 5 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3742.jpg 609 6 6 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3743.jpg 610 3 3 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3746.jpg 611 5 5 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3747.jpg 612 3 3 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3748.jpg 613 0 0 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3750.jpg 614 2 2 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3752.jpg 615 5 5 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3754.jpg 616 4 4 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3755.jpg 617 2 2 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3756.jpg 618 4 4 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3758.jpg 619 1 1 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3762.jpg 620 4 4 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3763.jpg 621 3 3 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3768.jpg 622 2 2 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3771.jpg 623 2 2 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3776.jpg 624 4 4 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3778.jpg 625 2 3 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3779.jpg 626 3 3 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3781.jpg 627 4 4 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3782.jpg 628 5 5 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3787.jpg 629 3 3 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3788.jpg 630 4 4 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3792.jpg 631 3 3 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3793.jpg 632 0 0 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3794.jpg 633 6 6 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3796.jpg 634 2 2 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3797.jpg 635 2 2 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3799.jpg 636 2 1 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3800.jpg 637 0 0 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3801.jpg 638 2 2 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3803.jpg 639 5 4 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3804.jpg 640 5 5 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3806.jpg 641 0 0 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3807.jpg 642 5 5 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3808.jpg 643 2 2 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3810.jpg 644 1 1 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3811.jpg 645 1 1 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3812.jpg 646 5 5 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3814.jpg 647 4 4 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3815.jpg 648 3 3 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3816.jpg 649 4 4 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3818.jpg 650 1 1 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3820.jpg 651 5 5 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3822.jpg 652 1 1 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3823.jpg 653 1 1 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3824.jpg 654 4 4 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3825.jpg 655 3 3 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3826.jpg 656 6 6 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3829.jpg 657 1 1 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3831.jpg error2 658 0 3 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3834.jpg 659 3 3 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3835.jpg 660 6 6 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3836.jpg 661 4 4 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3838.jpg 662 6 6 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3839.jpg 663 3 3 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3840.jpg 664 2 2 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3841.jpg 665 2 2 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3844.jpg 666 0 6 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3847.jpg 667 5 5 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3848.jpg 668 2 2 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3849.jpg 669 6 6 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3851.jpg 670 3 3 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3852.jpg 671 2 2 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3854.jpg 672 6 6 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3856.jpg 673 3 3 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3858.jpg 674 0 0 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3860.jpg error2 675 0 2 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3861.jpg 676 0 0 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3863.jpg 677 3 3 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3864.jpg 678 4 4 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3870.jpg 679 2 2 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3871.jpg 680 2 1 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3872.jpg 681 0 0 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3873.jpg error2 682 0 1 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3874.jpg 683 0 0 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3875.jpg 684 5 5 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3878.jpg 685 3 3 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3879.jpg 686 1 1 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3885.jpg 687 3 3 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3887.jpg 688 5 5 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3888.jpg 689 6 6 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3890.jpg 690 1 1 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3891.jpg 691 5 5 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3893.jpg 692 1 1 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3896.jpg 693 0 0 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3897.jpg error2 694 0 4 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3899.jpg 695 2 2 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3900.jpg 696 2 2 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3904.jpg 697 1 1 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3907.jpg 698 5 5 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3910.jpg 699 3 3 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3911.jpg 700 5 5 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3915.jpg 701 1 1 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3916.jpg error1 702 0 6 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3918.jpg 703 1 1 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3919.jpg 704 0 0 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3921.jpg 705 2 3 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3922.jpg 706 6 6 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3925.jpg 707 3 3 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3926.jpg 708 5 5 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3928.jpg 709 3 3 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3929.jpg 710 2 2 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3935.jpg 711 0 0 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3937.jpg 712 2 2 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3938.jpg 713 0 0 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3940.jpg error2 714 0 3 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3941.jpg 715 6 6 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3943.jpg 716 6 6 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3945.jpg 717 4 4 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3949.jpg error2 718 0 3 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3950.jpg 719 6 6 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3955.jpg 720 4 4 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3956.jpg 721 2 2 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3957.jpg 722 3 3 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3959.jpg 723 2 2 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3962.jpg 724 1 1 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3965.jpg 725 0 0 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3971.jpg 726 3 3 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3972.jpg 727 5 5 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3977.jpg 728 0 0 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3978.jpg 729 4 4 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3979.jpg 730 5 5 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3981.jpg 731 2 2 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3984.jpg 732 2 2 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3985.jpg 733 5 5 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3986.jpg 734 0 0 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3987.jpg 735 1 1 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3991.jpg 736 4 4 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3992.jpg 737 0 0 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3993.jpg 738 3 3 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3994.jpg 739 3 3 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3997.jpg 740 5 5 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/3998.jpg 741 6 6 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4001.jpg 742 0 0 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4002.jpg 743 4 4 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4003.jpg 744 0 0 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4004.jpg 745 1 1 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4006.jpg 746 6 6 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4008.jpg 747 5 6 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4009.jpg 748 0 0 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4010.jpg 749 2 2 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4011.jpg 750 1 1 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4012.jpg 751 4 4 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4013.jpg 752 0 0 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4014.jpg 753 4 4 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4015.jpg 754 0 0 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4018.jpg 755 5 5 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4020.jpg 756 1 1 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4021.jpg 757 6 6 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4022.jpg 758 3 3 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4023.jpg 759 0 0 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4024.jpg 760 5 5 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4025.jpg 761 5 5 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4026.jpg 762 1 1 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4027.jpg 763 3 3 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4028.jpg 764 4 4 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4031.jpg 765 2 2 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4032.jpg 766 6 6 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4034.jpg 767 5 5 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4036.jpg 768 5 5 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4037.jpg 769 4 4 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4038.jpg error1 770 0 5 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4039.jpg 771 4 6 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4041.jpg 772 1 1 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4043.jpg 773 4 4 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4044.jpg 774 1 1 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4046.jpg 775 6 6 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4049.jpg 776 3 3 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4051.jpg 777 1 1 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4052.jpg 778 6 6 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4053.jpg 779 3 3 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4055.jpg 780 5 5 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4056.jpg 781 0 6 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4060.jpg 782 6 6 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4061.jpg 783 1 1 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4062.jpg 784 6 6 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4063.jpg 785 6 6 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4065.jpg 786 3 3 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4068.jpg 787 3 3 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4069.jpg 788 1 1 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4070.jpg 789 0 0 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4071.jpg 790 4 4 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4072.jpg 791 5 5 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4079.jpg 792 1 1 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4081.jpg 793 6 6 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4082.jpg 794 3 3 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4083.jpg 795 0 0 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4085.jpg 796 2 1 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4086.jpg 797 2 2 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4089.jpg 798 2 2 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4091.jpg 799 5 5 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4092.jpg 800 1 1 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4093.jpg 801 3 3 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4097.jpg 802 6 6 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4099.jpg 803 3 3 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4100.jpg error2 804 0 5 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4101.jpg 805 4 4 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4104.jpg 806 0 6 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4106.jpg 807 5 5 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4111.jpg 808 3 3 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4112.jpg 809 0 0 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4114.jpg 810 0 0 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4117.jpg 811 6 6 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4118.jpg 812 5 5 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4121.jpg 813 2 2 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4122.jpg 814 5 5 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4124.jpg 815 1 1 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4125.jpg 816 3 3 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4126.jpg 817 3 3 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4131.jpg 818 4 4 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4133.jpg 819 3 3 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4135.jpg 820 6 6 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4136.jpg 821 3 3 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4137.jpg 822 0 0 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4139.jpg error1 823 0 1 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4141.jpg 824 3 3 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4145.jpg 825 6 6 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4147.jpg 826 1 1 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4148.jpg error2 827 0 2 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4149.jpg 828 4 4 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4154.jpg 829 6 6 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4157.jpg 830 3 3 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4158.jpg 831 5 5 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4159.jpg 832 6 6 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4161.jpg 833 3 4 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4166.jpg 834 2 2 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4167.jpg 835 6 6 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4169.jpg 836 1 1 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4172.jpg 837 5 5 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4179.jpg 838 0 0 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4182.jpg 839 5 5 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4187.jpg 840 6 6 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4190.jpg 841 6 6 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4192.jpg 842 5 5 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4194.jpg 843 6 6 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4197.jpg 844 3 3 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4198.jpg 845 3 1 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4202.jpg 846 2 2 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4203.jpg 847 1 1 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4204.jpg 848 5 5 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4208.jpg 849 1 1 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4211.jpg 850 2 2 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4212.jpg 851 5 5 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4214.jpg 852 1 1 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4215.jpg 853 5 5 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4216.jpg 854 6 6 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4217.jpg 855 0 0 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4218.jpg 856 3 3 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4219.jpg 857 2 2 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4223.jpg 858 1 1 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4224.jpg 859 3 3 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4225.jpg 860 2 2 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4226.jpg error2 861 0 0 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4227.jpg 862 5 5 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4228.jpg 863 4 4 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4230.jpg 864 3 3 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4234.jpg 865 5 5 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4235.jpg 866 5 5 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4236.jpg 867 5 5 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4237.jpg error2 868 0 0 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4239.jpg 869 0 0 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4240.jpg 870 5 5 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4242.jpg 871 5 5 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4243.jpg 872 5 5 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4245.jpg 873 5 5 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4246.jpg 874 1 1 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4247.jpg 875 1 2 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4249.jpg 876 3 3 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4250.jpg 877 1 1 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4251.jpg 878 6 6 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4252.jpg error1 879 0 1 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4254.jpg 880 5 5 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4255.jpg 881 6 6 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4257.jpg 882 4 4 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4258.jpg 883 5 5 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4259.jpg 884 1 1 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4260.jpg 885 3 3 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4261.jpg 886 4 4 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4263.jpg 887 5 5 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4265.jpg 888 5 5 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4266.jpg 889 4 4 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4268.jpg 890 5 5 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4270.jpg 891 5 5 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4271.jpg 892 3 6 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4272.jpg 893 2 2 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4273.jpg 894 1 1 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4274.jpg 895 4 4 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4275.jpg 896 3 3 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4276.jpg error2 897 0 0 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4277.jpg 898 6 6 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4280.jpg 899 1 1 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4282.jpg 900 6 6 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4286.jpg 901 5 5 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4287.jpg 902 1 0 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4290.jpg 903 0 0 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4293.jpg 904 0 0 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4294.jpg 905 3 3 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4296.jpg 906 6 6 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4299.jpg 907 1 1 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4300.jpg 908 1 1 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4302.jpg 909 6 6 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4304.jpg 910 4 4 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4306.jpg 911 4 4 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4311.jpg 912 5 5 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4313.jpg 913 4 4 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4316.jpg 914 0 0 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4319.jpg 915 1 1 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4320.jpg 916 1 1 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4322.jpg 917 4 4 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4323.jpg 918 2 2 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4326.jpg 919 4 4 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4329.jpg error2 920 0 4 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4331.jpg 921 6 6 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4332.jpg 922 5 5 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4333.jpg 923 0 6 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4338.jpg 924 5 5 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4340.jpg 925 4 4 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4342.jpg 926 3 3 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4344.jpg 927 0 0 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4347.jpg 928 6 6 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4350.jpg 929 3 3 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4351.jpg 930 1 3 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4356.jpg 931 1 1 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4361.jpg 932 2 2 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4366.jpg 933 2 2 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4367.jpg 934 6 6 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4368.jpg 935 6 6 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4370.jpg 936 3 3 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4372.jpg 937 5 1 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4376.jpg 938 4 4 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4378.jpg 939 2 2 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4382.jpg 940 2 2 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4383.jpg 941 3 3 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4386.jpg 942 6 6 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4389.jpg 943 2 2 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4391.jpg 944 0 0 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4393.jpg 945 4 4 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4395.jpg 946 5 5 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4396.jpg 947 6 6 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4397.jpg 948 0 0 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4401.jpg 949 6 6 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4408.jpg 950 1 1 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4409.jpg 951 5 5 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4411.jpg 952 1 3 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4413.jpg 953 5 5 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4415.jpg 954 6 6 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4418.jpg 955 5 5 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4419.jpg 956 5 5 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4420.jpg 957 2 2 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4421.jpg 958 4 4 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4422.jpg 959 5 5 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4423.jpg 960 6 6 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4424.jpg 961 5 5 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4425.jpg 962 0 0 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4426.jpg 963 6 6 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4427.jpg 964 1 1 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4429.jpg 965 5 5 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4431.jpg 966 6 6 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4432.jpg 967 4 4 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4434.jpg 968 5 5 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4435.jpg 969 5 5 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4437.jpg 970 5 5 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4440.jpg 971 2 2 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4441.jpg 972 3 3 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4442.jpg 973 6 6 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4443.jpg 974 1 1 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4444.jpg 975 1 1 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4446.jpg 976 5 5 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4447.jpg 977 1 1 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4448.jpg 978 1 1 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4449.jpg 979 1 4 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4451.jpg 980 4 4 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4452.jpg 981 0 0 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4453.jpg 982 3 3 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4455.jpg 983 2 2 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4456.jpg 984 3 3 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4457.jpg 985 6 6 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4458.jpg 986 1 1 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4459.jpg 987 5 5 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4460.jpg 988 4 4 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4461.jpg 989 3 3 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4462.jpg 990 6 6 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4463.jpg 991 5 5 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4464.jpg 992 6 6 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4465.jpg 993 6 6 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4467.jpg 994 4 4 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4468.jpg 995 6 6 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4472.jpg 996 2 2 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4473.jpg 997 6 6 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4474.jpg 998 2 2 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4475.jpg 999 5 5 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4476.jpg 1000 2 1 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4477.jpg 1001 3 3 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4481.jpg 1002 4 4 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4482.jpg error2 1003 0 6 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4483.jpg 1004 5 5 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4484.jpg 1005 6 6 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4485.jpg 1006 0 0 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4490.jpg 1007 0 0 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4492.jpg 1008 3 3 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4493.jpg 1009 5 5 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4494.jpg 1010 4 4 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4495.jpg 1011 5 5 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4498.jpg 1012 3 3 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4499.jpg 1013 1 1 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4505.jpg 1014 0 0 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4506.jpg 1015 2 2 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4508.jpg 1016 4 4 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4509.jpg 1017 5 5 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4511.jpg 1018 1 1 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4516.jpg 1019 0 0 /home/u/DataSets/task1.1/mixed_train_to_the_coordinates_dataset/4518.jpg 1020 1020 accuracy 0.9137254901960784