Compare commits
10 Commits
Author | SHA1 | Date | |
---|---|---|---|
e044c85a04 | |||
798c596acc | |||
183299c06b | |||
0ccfd0151f | |||
f14faa323e | |||
9b5b135fa3 | |||
0efe8892f3 | |||
b657be729b | |||
64248b1557 | |||
bfe7bc0fd5 |
BIN
__pycache__/export.cpython-312.pyc
Normal file
BIN
__pycache__/export.cpython-312.pyc
Normal file
Binary file not shown.
BIN
__pycache__/move_detect.cpython-312.pyc
Normal file
BIN
__pycache__/move_detect.cpython-312.pyc
Normal file
Binary file not shown.
BIN
__pycache__/pipeline_01.cpython-312.pyc
Normal file
BIN
__pycache__/pipeline_01.cpython-312.pyc
Normal file
Binary file not shown.
BIN
__pycache__/pipeline_01.cpython-39.pyc
Normal file
BIN
__pycache__/pipeline_01.cpython-39.pyc
Normal file
Binary file not shown.
BIN
__pycache__/track_reid.cpython-312.pyc
Normal file
BIN
__pycache__/track_reid.cpython-312.pyc
Normal file
Binary file not shown.
Binary file not shown.
359
bakeup/pipeline.py
Normal file
359
bakeup/pipeline.py
Normal file
@ -0,0 +1,359 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
"""
|
||||
Created on Sun Sep 29 08:59:21 2024
|
||||
|
||||
@author: ym
|
||||
"""
|
||||
import os
|
||||
# import sys
|
||||
import cv2
|
||||
import pickle
|
||||
import numpy as np
|
||||
from pathlib import Path
|
||||
from scipy.spatial.distance import cdist
|
||||
from track_reid import yolo_resnet_tracker, yolov10_resnet_tracker
|
||||
|
||||
from tracking.dotrack.dotracks_back import doBackTracks
|
||||
from tracking.dotrack.dotracks_front import doFrontTracks
|
||||
from tracking.utils.drawtracks import plot_frameID_y2, draw_all_trajectories
|
||||
from utils.getsource import get_image_pairs, get_video_pairs
|
||||
from tracking.utils.read_data import read_similar
|
||||
|
||||
|
||||
def save_subimgs(imgdict, boxes, spath, ctype, featdict = None):
|
||||
'''
|
||||
当前 box 特征和该轨迹前一个 box 特征的相似度,可用于和跟踪序列中的相似度进行比较
|
||||
'''
|
||||
boxes = boxes[np.argsort(boxes[:, 7])]
|
||||
for i in range(len(boxes)):
|
||||
simi = None
|
||||
tid, fid, bid = int(boxes[i, 4]), int(boxes[i, 7]), int(boxes[i, 8])
|
||||
|
||||
if i>0:
|
||||
_, fid0, bid0 = int(boxes[i-1, 4]), int(boxes[i-1, 7]), int(boxes[i-1, 8])
|
||||
if f"{fid0}_{bid0}" in featdict.keys() and f"{fid}_{bid}" in featdict.keys():
|
||||
feat0 = featdict[f"{fid0}_{bid0}"]
|
||||
feat1 = featdict[f"{fid}_{bid}"]
|
||||
simi = 1 - np.maximum(0.0, cdist(feat0[None, :], feat1[None, :], "cosine"))[0][0]
|
||||
|
||||
img = imgdict[f"{fid}_{bid}"]
|
||||
imgpath = spath / f"{ctype}_tid{tid}-{fid}-{bid}.png"
|
||||
if simi is not None:
|
||||
imgpath = spath / f"{ctype}_tid{tid}-{fid}-{bid}_sim{simi:.2f}.png"
|
||||
|
||||
cv2.imwrite(imgpath, img)
|
||||
|
||||
|
||||
def save_subimgs_1(imgdict, boxes, spath, ctype, simidict = None):
|
||||
'''
|
||||
当前 box 特征和该轨迹 smooth_feat 特征的相似度, yolo_resnet_tracker 函数中,
|
||||
采用该方式记录特征相似度
|
||||
'''
|
||||
for i in range(len(boxes)):
|
||||
tid, fid, bid = int(boxes[i, 4]), int(boxes[i, 7]), int(boxes[i, 8])
|
||||
|
||||
key = f"{fid}_{bid}"
|
||||
img = imgdict[key]
|
||||
imgpath = spath / f"{ctype}_tid{tid}-{fid}-{bid}.png"
|
||||
if simidict is not None and key in simidict.keys():
|
||||
imgpath = spath / f"{ctype}_tid{tid}-{fid}-{bid}_sim{simidict[key]:.2f}.png"
|
||||
|
||||
cv2.imwrite(imgpath, img)
|
||||
|
||||
|
||||
def pipeline(
|
||||
eventpath,
|
||||
savepath,
|
||||
SourceType,
|
||||
weights,
|
||||
YoloVersion="V5"
|
||||
):
|
||||
'''
|
||||
eventpath: 单个事件的存储路径
|
||||
|
||||
'''
|
||||
optdict = {}
|
||||
optdict["weights"] = weights
|
||||
|
||||
if SourceType == "video":
|
||||
vpaths = get_video_pairs(eventpath)
|
||||
elif SourceType == "image":
|
||||
vpaths = get_image_pairs(eventpath)
|
||||
event_tracks = []
|
||||
|
||||
## 构造购物事件字典
|
||||
evtname = Path(eventpath).stem
|
||||
barcode = evtname.split('_')[-1] if len(evtname.split('_'))>=2 \
|
||||
and len(evtname.split('_')[-1])>=8 \
|
||||
and evtname.split('_')[-1].isdigit() else ''
|
||||
'''事件结果存储文件夹'''
|
||||
if not savepath:
|
||||
savepath = Path(__file__).resolve().parents[0] / "events_result"
|
||||
|
||||
savepath_pipeline = Path(savepath) / Path("Yolos_Tracking") / evtname
|
||||
|
||||
|
||||
"""ShoppingDict pickle 文件保存地址 """
|
||||
savepath_spdict = Path(savepath) / "ShoppingDict_pkfile"
|
||||
if not savepath_spdict.exists():
|
||||
savepath_spdict.mkdir(parents=True, exist_ok=True)
|
||||
pf_path = Path(savepath_spdict) / Path(str(evtname)+".pickle")
|
||||
|
||||
# if pf_path.exists():
|
||||
# print(f"Pickle file have saved: {evtname}.pickle")
|
||||
# return
|
||||
|
||||
'''====================== 构造 ShoppingDict 模块 ======================='''
|
||||
ShoppingDict = {"eventPath": eventpath,
|
||||
"eventName": evtname,
|
||||
"barcode": barcode,
|
||||
"eventType": '', # "input", "output", "other"
|
||||
"frontCamera": {},
|
||||
"backCamera": {},
|
||||
"one2n": [] #
|
||||
}
|
||||
yrtDict = {}
|
||||
|
||||
|
||||
procpath = Path(eventpath).joinpath('process.data')
|
||||
if procpath.is_file():
|
||||
SimiDict = read_similar(procpath)
|
||||
ShoppingDict["one2n"] = SimiDict['one2n']
|
||||
|
||||
|
||||
for vpath in vpaths:
|
||||
'''================= 1. 构造相机事件字典 ================='''
|
||||
CameraEvent = {"cameraType": '', # "front", "back"
|
||||
"videoPath": '',
|
||||
"imagePaths": [],
|
||||
"yoloResnetTracker": [],
|
||||
"tracking": [],
|
||||
}
|
||||
|
||||
if isinstance(vpath, list):
|
||||
CameraEvent["imagePaths"] = vpath
|
||||
bname = os.path.basename(vpath[0])
|
||||
if not isinstance(vpath, list):
|
||||
CameraEvent["videoPath"] = vpath
|
||||
bname = os.path.basename(vpath).split('.')[0]
|
||||
if bname.split('_')[0] == "0" or bname.find('back')>=0:
|
||||
CameraEvent["cameraType"] = "back"
|
||||
if bname.split('_')[0] == "1" or bname.find('front')>=0:
|
||||
CameraEvent["cameraType"] = "front"
|
||||
|
||||
'''================= 2. 事件结果存储文件夹 ================='''
|
||||
if isinstance(vpath, list):
|
||||
savepath_pipeline_imgs = savepath_pipeline / Path("images")
|
||||
else:
|
||||
savepath_pipeline_imgs = savepath_pipeline / Path(str(Path(vpath).stem))
|
||||
|
||||
if not savepath_pipeline_imgs.exists():
|
||||
savepath_pipeline_imgs.mkdir(parents=True, exist_ok=True)
|
||||
|
||||
savepath_pipeline_subimgs = savepath_pipeline / Path("subimgs")
|
||||
if not savepath_pipeline_subimgs.exists():
|
||||
savepath_pipeline_subimgs.mkdir(parents=True, exist_ok=True)
|
||||
|
||||
|
||||
'''================= 3. Yolo + Resnet + Tracker ================='''
|
||||
optdict["source"] = vpath
|
||||
optdict["save_dir"] = savepath_pipeline_imgs
|
||||
optdict["is_save_img"] = True
|
||||
optdict["is_save_video"] = True
|
||||
|
||||
|
||||
if YoloVersion == "V5":
|
||||
yrtOut = yolo_resnet_tracker(**optdict)
|
||||
elif YoloVersion == "V10":
|
||||
yrtOut = yolov10_resnet_tracker(**optdict)
|
||||
|
||||
|
||||
yrtOut_save = []
|
||||
for frdict in yrtOut:
|
||||
fr_dict = {}
|
||||
for k, v in frdict.items():
|
||||
if k != "imgs":
|
||||
fr_dict[k]=v
|
||||
yrtOut_save.append(fr_dict)
|
||||
CameraEvent["yoloResnetTracker"] = yrtOut_save
|
||||
|
||||
# CameraEvent["yoloResnetTracker"] = yrtOut
|
||||
|
||||
'''================= 4. tracking ================='''
|
||||
'''(1) 生成用于 tracking 模块的 boxes、feats'''
|
||||
bboxes = np.empty((0, 6), dtype=np.float64)
|
||||
trackerboxes = np.empty((0, 9), dtype=np.float64)
|
||||
trackefeats = {}
|
||||
for frameDict in yrtOut:
|
||||
tboxes = frameDict["tboxes"]
|
||||
ffeats = frameDict["feats"]
|
||||
|
||||
boxes = frameDict["bboxes"]
|
||||
bboxes = np.concatenate((bboxes, np.array(boxes)), axis=0)
|
||||
trackerboxes = np.concatenate((trackerboxes, np.array(tboxes)), axis=0)
|
||||
for i in range(len(tboxes)):
|
||||
fid, bid = int(tboxes[i, 7]), int(tboxes[i, 8])
|
||||
trackefeats.update({f"{fid}_{bid}": ffeats[f"{fid}_{bid}"]})
|
||||
|
||||
|
||||
'''(2) tracking, 后摄'''
|
||||
if CameraEvent["cameraType"] == "back":
|
||||
vts = doBackTracks(trackerboxes, trackefeats)
|
||||
vts.classify()
|
||||
event_tracks.append(("back", vts))
|
||||
|
||||
CameraEvent["tracking"] = vts
|
||||
ShoppingDict["backCamera"] = CameraEvent
|
||||
|
||||
yrtDict["backyrt"] = yrtOut
|
||||
|
||||
'''(2) tracking, 前摄'''
|
||||
if CameraEvent["cameraType"] == "front":
|
||||
vts = doFrontTracks(trackerboxes, trackefeats)
|
||||
vts.classify()
|
||||
event_tracks.append(("front", vts))
|
||||
|
||||
CameraEvent["tracking"] = vts
|
||||
ShoppingDict["frontCamera"] = CameraEvent
|
||||
|
||||
yrtDict["frontyrt"] = yrtOut
|
||||
|
||||
'''========================== 保存模块 ================================='''
|
||||
'''(1) 保存 ShoppingDict 事件'''
|
||||
with open(str(pf_path), 'wb') as f:
|
||||
pickle.dump(ShoppingDict, f)
|
||||
|
||||
'''(2) 保存 Tracking 输出的运动轨迹子图,并记录相似度'''
|
||||
for CamerType, vts in event_tracks:
|
||||
if len(vts.tracks)==0: continue
|
||||
if CamerType == 'front':
|
||||
# yolos = ShoppingDict["frontCamera"]["yoloResnetTracker"]
|
||||
|
||||
yolos = yrtDict["frontyrt"]
|
||||
ctype = 1
|
||||
if CamerType == 'back':
|
||||
# yolos = ShoppingDict["backCamera"]["yoloResnetTracker"]
|
||||
|
||||
yolos = yrtDict["backyrt"]
|
||||
ctype = 0
|
||||
|
||||
imgdict, featdict, simidict = {}, {}, {}
|
||||
for y in yolos:
|
||||
imgdict.update(y["imgs"])
|
||||
featdict.update(y["feats"])
|
||||
simidict.update(y["featsimi"])
|
||||
|
||||
for track in vts.Residual:
|
||||
if isinstance(track, np.ndarray):
|
||||
save_subimgs(imgdict, track, savepath_pipeline_subimgs, ctype, featdict)
|
||||
else:
|
||||
save_subimgs(imgdict, track.slt_boxes, savepath_pipeline_subimgs, ctype, featdict)
|
||||
|
||||
'''(3) 轨迹显示与保存'''
|
||||
illus = [None, None]
|
||||
for CamerType, vts in event_tracks:
|
||||
if len(vts.tracks)==0: continue
|
||||
|
||||
if CamerType == 'front':
|
||||
edgeline = cv2.imread("./tracking/shopcart/cart_tempt/board_ftmp_line.png")
|
||||
|
||||
h, w = edgeline.shape[:2]
|
||||
# nh, nw = h//2, w//2
|
||||
# edgeline = cv2.resize(edgeline, (nw, nh), interpolation=cv2.INTER_AREA)
|
||||
|
||||
img_tracking = draw_all_trajectories(vts, edgeline, savepath_pipeline, CamerType, draw5p=True)
|
||||
illus[0] = img_tracking
|
||||
|
||||
plt = plot_frameID_y2(vts)
|
||||
plt.savefig(os.path.join(savepath_pipeline, "front_y2.png"))
|
||||
|
||||
if CamerType == 'back':
|
||||
edgeline = cv2.imread("./tracking/shopcart/cart_tempt/edgeline.png")
|
||||
|
||||
h, w = edgeline.shape[:2]
|
||||
# nh, nw = h//2, w//2
|
||||
# edgeline = cv2.resize(edgeline, (nw, nh), interpolation=cv2.INTER_AREA)
|
||||
|
||||
img_tracking = draw_all_trajectories(vts, edgeline, savepath_pipeline, CamerType, draw5p=True)
|
||||
illus[1] = img_tracking
|
||||
|
||||
illus = [im for im in illus if im is not None]
|
||||
if len(illus):
|
||||
img_cat = np.concatenate(illus, axis = 1)
|
||||
if len(illus)==2:
|
||||
H, W = img_cat.shape[:2]
|
||||
cv2.line(img_cat, (int(W/2), 0), (int(W/2), int(H)), (128, 128, 255), 3)
|
||||
|
||||
trajpath = os.path.join(savepath_pipeline, "trajectory.png")
|
||||
cv2.imwrite(trajpath, img_cat)
|
||||
|
||||
def execute_pipeline(evtdir = r"D:\datasets\ym\后台数据\unzip",
|
||||
source_type = "video", # video, image,
|
||||
save_path = r"D:\work\result_pipeline",
|
||||
yolo_ver = "V10", # V10, V5
|
||||
|
||||
weight_yolo_v5 = r'./ckpts/best_cls10_0906.pt' ,
|
||||
weight_yolo_v10 = r'./ckpts/best_v10s_width0375_1205.pt',
|
||||
k=0
|
||||
):
|
||||
'''
|
||||
运行函数 pipeline(),遍历事件文件夹,每个文件夹是一个事件
|
||||
'''
|
||||
parmDict = {}
|
||||
parmDict["SourceType"] = source_type
|
||||
parmDict["savepath"] = save_path
|
||||
parmDict["YoloVersion"] = yolo_ver
|
||||
if parmDict["YoloVersion"] == "V5":
|
||||
parmDict["weights"] = weight_yolo_v5
|
||||
elif parmDict["YoloVersion"] == "V10":
|
||||
parmDict["weights"] = weight_yolo_v10
|
||||
|
||||
evtdir = Path(evtdir)
|
||||
errEvents = []
|
||||
for item in evtdir.iterdir():
|
||||
if item.is_dir():
|
||||
item = evtdir/Path("20250310-175352-741")
|
||||
parmDict["eventpath"] = item
|
||||
pipeline(**parmDict)
|
||||
# try:
|
||||
# pipeline(**parmDict)
|
||||
# except Exception as e:
|
||||
# errEvents.append(str(item))
|
||||
k+=1
|
||||
if k==1:
|
||||
break
|
||||
|
||||
errfile = os.path.join(parmDict["savepath"], 'error_events.txt')
|
||||
with open(errfile, 'w', encoding='utf-8') as f:
|
||||
for line in errEvents:
|
||||
f.write(line + '\n')
|
||||
|
||||
if __name__ == "__main__":
|
||||
execute_pipeline()
|
||||
|
||||
# spath_v10 = r"D:\work\result_pipeline_v10"
|
||||
# spath_v5 = r"D:\work\result_pipeline_v5"
|
||||
# execute_pipeline(save_path=spath_v10, yolo_ver="V10")
|
||||
# execute_pipeline(save_path=spath_v5, yolo_ver="V5")
|
||||
|
||||
datapath = r'/home/wqg/dataset/test_dataset/base_dataset/single_event/source/'
|
||||
savepath = r'/home/wqg/dataset/pipeline/contrast/single_event_V5'
|
||||
|
||||
|
||||
|
||||
|
||||
execute_pipeline(evtdir = datapath,
|
||||
DataType = "raw", # raw, pkl
|
||||
kk=1,
|
||||
source_type = "video", # video, image,
|
||||
save_path = savepath,
|
||||
yolo_ver = "V10", # V10, V5
|
||||
weight_yolo_v5 = r'./ckpts/best_cls10_0906.pt' ,
|
||||
weight_yolo_v10 = r'./ckpts/best_v10s_width0375_1205.pt',
|
||||
saveimages = False
|
||||
)
|
||||
|
||||
|
||||
|
||||
|
||||
|
BIN
contrast/__pycache__/__init__.cpython-312.pyc
Normal file
BIN
contrast/__pycache__/__init__.cpython-312.pyc
Normal file
Binary file not shown.
Binary file not shown.
BIN
contrast/__pycache__/event_test.cpython-312.pyc
Normal file
BIN
contrast/__pycache__/event_test.cpython-312.pyc
Normal file
Binary file not shown.
Binary file not shown.
BIN
contrast/__pycache__/genfeats.cpython-312.pyc
Normal file
BIN
contrast/__pycache__/genfeats.cpython-312.pyc
Normal file
Binary file not shown.
Binary file not shown.
BIN
contrast/__pycache__/one2n_contrast.cpython-312.pyc
Normal file
BIN
contrast/__pycache__/one2n_contrast.cpython-312.pyc
Normal file
Binary file not shown.
Binary file not shown.
@ -9,17 +9,19 @@ import cv2
|
||||
import json
|
||||
import numpy as np
|
||||
import matplotlib.pyplot as plt
|
||||
from pathlib import Path
|
||||
|
||||
from matplotlib import rcParams
|
||||
from matplotlib.font_manager import FontProperties
|
||||
from scipy.spatial.distance import cdist
|
||||
from utils.event import ShoppingEvent, save_data
|
||||
|
||||
|
||||
from utils.calsimi import calsimi_vs_stdfeat_new, get_topk_percent, cluster
|
||||
from utils.tools import get_evtList
|
||||
import pickle
|
||||
|
||||
rcParams['font.sans-serif'] = ['SimHei'] # 用黑体显示中文
|
||||
rcParams['axes.unicode_minus'] = False # 正确显示负号
|
||||
|
||||
|
||||
'''*********** USearch ***********'''
|
||||
def read_usearch():
|
||||
stdFeaturePath = r"D:\contrast\stdlib\v11_test.json"
|
||||
@ -35,13 +37,12 @@ def read_usearch():
|
||||
|
||||
return stdlib
|
||||
|
||||
def get_eventlist():
|
||||
def get_eventlist_errortxt(evtpaths):
|
||||
'''
|
||||
读取一次测试中的错误事件
|
||||
'''
|
||||
evtpaths = r"\\192.168.1.28\share\测试视频数据以及日志\算法全流程测试\202412\images"
|
||||
text1 = "one2n_Error.txt"
|
||||
text2 = "one2SN_Error.txt"
|
||||
'''
|
||||
text1 = "one_2_Small_n_Error.txt"
|
||||
text2 = "one_2_Big_N_Error.txt"
|
||||
events = []
|
||||
text = (text1, text2)
|
||||
for txt in text:
|
||||
@ -53,16 +54,16 @@ def get_eventlist():
|
||||
if line:
|
||||
fpath=os.path.join(evtpaths, line)
|
||||
events.append(fpath)
|
||||
|
||||
|
||||
|
||||
events = list(set(events))
|
||||
|
||||
return events
|
||||
|
||||
def single_event():
|
||||
|
||||
events = get_eventlist()
|
||||
|
||||
|
||||
def save_eventdata():
|
||||
evtpaths = r"/home/wqg/dataset/test_dataset/performence_dataset/"
|
||||
events = get_eventlist_errortxt(evtpaths)
|
||||
|
||||
'''定义当前事件存储地址及生成相应文件件'''
|
||||
resultPath = r"\\192.168.1.28\share\测试视频数据以及日志\算法全流程测试\202412\result\single_event"
|
||||
@ -74,120 +75,148 @@ def single_event():
|
||||
|
||||
|
||||
|
||||
def get_topk_percent(data, k):
|
||||
"""
|
||||
获取数据中最大的 k% 的元素
|
||||
"""
|
||||
# 将数据转换为 NumPy 数组
|
||||
if isinstance(data, list):
|
||||
data = np.array(data)
|
||||
# def get_topk_percent(data, k):
|
||||
# """
|
||||
# 获取数据中最大的 k% 的元素
|
||||
# """
|
||||
# # 将数据转换为 NumPy 数组
|
||||
# if isinstance(data, list):
|
||||
# data = np.array(data)
|
||||
|
||||
percentile = np.percentile(data, 100-k)
|
||||
top_k_percent = data[data >= percentile]
|
||||
# percentile = np.percentile(data, 100-k)
|
||||
# top_k_percent = data[data >= percentile]
|
||||
|
||||
return top_k_percent
|
||||
def cluster(data, thresh=0.15):
|
||||
# data = np.array([0.1, 0.13, 0.7, 0.2, 0.8, 0.52, 0.3, 0.7, 0.85, 0.58])
|
||||
# data = np.array([0.1, 0.13, 0.2, 0.3])
|
||||
# data = np.array([0.1])
|
||||
# return top_k_percent
|
||||
# def cluster(data, thresh=0.15):
|
||||
# # data = np.array([0.1, 0.13, 0.7, 0.2, 0.8, 0.52, 0.3, 0.7, 0.85, 0.58])
|
||||
# # data = np.array([0.1, 0.13, 0.2, 0.3])
|
||||
# # data = np.array([0.1])
|
||||
|
||||
if isinstance(data, list):
|
||||
data = np.array(data)
|
||||
# if isinstance(data, list):
|
||||
# data = np.array(data)
|
||||
|
||||
data1 = np.sort(data)
|
||||
cluter, Cluters, = [data1[0]], []
|
||||
for i in range(1, len(data1)):
|
||||
if data1[i] - data1[i-1]< thresh:
|
||||
cluter.append(data1[i])
|
||||
else:
|
||||
Cluters.append(cluter)
|
||||
cluter = [data1[i]]
|
||||
Cluters.append(cluter)
|
||||
# data1 = np.sort(data)
|
||||
# cluter, Cluters, = [data1[0]], []
|
||||
# for i in range(1, len(data1)):
|
||||
# if data1[i] - data1[i-1]< thresh:
|
||||
# cluter.append(data1[i])
|
||||
# else:
|
||||
# Cluters.append(cluter)
|
||||
# cluter = [data1[i]]
|
||||
# Cluters.append(cluter)
|
||||
|
||||
clt_center = []
|
||||
for clt in Cluters:
|
||||
## 是否应该在此处限制一个聚类中的最小轨迹样本数,应该将该因素放在轨迹分析中
|
||||
# if len(clt)>=3:
|
||||
# clt_center.append(np.mean(clt))
|
||||
clt_center.append(np.mean(clt))
|
||||
# clt_center = []
|
||||
# for clt in Cluters:
|
||||
# ## 是否应该在此处限制一个聚类中的最小轨迹样本数,应该将该因素放在轨迹分析中
|
||||
# # if len(clt)>=3:
|
||||
# # clt_center.append(np.mean(clt))
|
||||
# clt_center.append(np.mean(clt))
|
||||
|
||||
# print(clt_center)
|
||||
# # print(clt_center)
|
||||
|
||||
return clt_center
|
||||
# return clt_center
|
||||
|
||||
def calc_simil(event, stdfeat):
|
||||
# def calsimi_vs_stdfeat_new(event, stdfeat):
|
||||
# '''事件与标准库的对比策略
|
||||
# 该比对策略是否可以拓展到事件与事件的比对?
|
||||
# '''
|
||||
|
||||
def calsiml(feat1, feat2):
|
||||
'''轨迹样本和标准特征集样本相似度的选择策略'''
|
||||
matrix = 1 - cdist(feat1, feat2, 'cosine')
|
||||
simi_max = []
|
||||
for i in range(len(matrix)):
|
||||
sim = np.mean(get_topk_percent(matrix[i, :], 75))
|
||||
simi_max.append(sim)
|
||||
cltc_max = cluster(simi_max)
|
||||
Simi = max(cltc_max)
|
||||
|
||||
# def calsiml(feat1, feat2, topkp=75, cluth=0.15):
|
||||
# '''轨迹样本和标准特征集样本相似度的选择策略'''
|
||||
# matrix = 1 - cdist(feat1, feat2, 'cosine')
|
||||
# simi_max = []
|
||||
# for i in range(len(matrix)):
|
||||
# sim = np.mean(get_topk_percent(matrix[i, :], topkp))
|
||||
# simi_max.append(sim)
|
||||
# cltc_max = cluster(simi_max, cluth)
|
||||
# Simi = max(cltc_max)
|
||||
|
||||
## cltc_max为空属于编程考虑不周,应予以排查解决
|
||||
# if len(cltc_max):
|
||||
# Simi = max(cltc_max)
|
||||
# else:
|
||||
# Simi = 0 #不应该走到该处
|
||||
# ## cltc_max为空属于编程考虑不周,应予以排查解决
|
||||
# # if len(cltc_max):
|
||||
# # Simi = max(cltc_max)
|
||||
# # else:
|
||||
# # Simi = 0 #不应该走到该处
|
||||
|
||||
|
||||
return Simi
|
||||
# return Simi
|
||||
|
||||
|
||||
front_boxes = np.empty((0, 9), dtype=np.float64) ##和类doTracks兼容
|
||||
front_feats = np.empty((0, 256), dtype=np.float64) ##和类doTracks兼容
|
||||
for i in range(len(event.front_boxes)):
|
||||
front_boxes = np.concatenate((front_boxes, event.front_boxes[i]), axis=0)
|
||||
front_feats = np.concatenate((front_feats, event.front_feats[i]), axis=0)
|
||||
# front_boxes = np.empty((0, 9), dtype=np.float64) ##和类doTracks兼容
|
||||
# front_feats = np.empty((0, 256), dtype=np.float64) ##和类doTracks兼容
|
||||
# for i in range(len(event.front_boxes)):
|
||||
# front_boxes = np.concatenate((front_boxes, event.front_boxes[i]), axis=0)
|
||||
# front_feats = np.concatenate((front_feats, event.front_feats[i]), axis=0)
|
||||
|
||||
back_boxes = np.empty((0, 9), dtype=np.float64) ##和类doTracks兼容
|
||||
back_feats = np.empty((0, 256), dtype=np.float64) ##和类doTracks兼容
|
||||
for i in range(len(event.back_boxes)):
|
||||
back_boxes = np.concatenate((back_boxes, event.back_boxes[i]), axis=0)
|
||||
back_feats = np.concatenate((back_feats, event.back_feats[i]), axis=0)
|
||||
# back_boxes = np.empty((0, 9), dtype=np.float64) ##和类doTracks兼容
|
||||
# back_feats = np.empty((0, 256), dtype=np.float64) ##和类doTracks兼容
|
||||
# for i in range(len(event.back_boxes)):
|
||||
# back_boxes = np.concatenate((back_boxes, event.back_boxes[i]), axis=0)
|
||||
# back_feats = np.concatenate((back_feats, event.back_feats[i]), axis=0)
|
||||
|
||||
if len(front_feats):
|
||||
front_simi = calsiml(front_feats, stdfeat)
|
||||
if len(back_feats):
|
||||
back_simi = calsiml(back_feats, stdfeat)
|
||||
# if len(front_feats):
|
||||
# front_simi = calsiml(front_feats, stdfeat)
|
||||
# if len(back_feats):
|
||||
# back_simi = calsiml(back_feats, stdfeat)
|
||||
|
||||
'''前后摄相似度融合策略'''
|
||||
if len(front_feats) and len(back_feats):
|
||||
diff_simi = abs(front_simi - back_simi)
|
||||
if diff_simi>0.15:
|
||||
Similar = max([front_simi, back_simi])
|
||||
else:
|
||||
Similar = (front_simi+back_simi)/2
|
||||
elif len(front_feats) and len(back_feats)==0:
|
||||
Similar = front_simi
|
||||
elif len(front_feats)==0 and len(back_feats):
|
||||
Similar = back_simi
|
||||
else:
|
||||
Similar = None # 在event.front_feats和event.back_feats同时为空时
|
||||
# '''前后摄相似度融合策略'''
|
||||
# if len(front_feats) and len(back_feats):
|
||||
# diff_simi = abs(front_simi - back_simi)
|
||||
# if diff_simi>0.15:
|
||||
# Similar = max([front_simi, back_simi])
|
||||
# else:
|
||||
# Similar = (front_simi+back_simi)/2
|
||||
# elif len(front_feats) and len(back_feats)==0:
|
||||
# Similar = front_simi
|
||||
# elif len(front_feats)==0 and len(back_feats):
|
||||
# Similar = back_simi
|
||||
# else:
|
||||
# Similar = None # 在event.front_feats和event.back_feats同时为空时
|
||||
|
||||
# return Similar
|
||||
|
||||
return Similar
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
def simi_matrix():
|
||||
resultPath = r"\\192.168.1.28\share\测试视频数据以及日志\算法全流程测试\202412\result\single_event"
|
||||
evtpaths = r"/home/wqg/dataset/pipeline/contrast/single_event_V10/evtobjs/"
|
||||
|
||||
stdlib = read_usearch()
|
||||
events = get_eventlist()
|
||||
for evtpath in events:
|
||||
evtname = os.path.basename(evtpath)
|
||||
_, barcode = evtname.split("_")
|
||||
stdfeatPath = r"/home/wqg/dataset/test_dataset/total_barcode/features_json/v11_barcode_0304/"
|
||||
resultPath = r"/home/wqg/dataset/performence_dataset/result/"
|
||||
|
||||
evt_paths, bcdSet = get_evtList(evtpaths)
|
||||
|
||||
## read std features
|
||||
stdDict={}
|
||||
evtDict = {}
|
||||
for barcode in bcdSet:
|
||||
stdpath = os.path.join(stdfeatPath, f"{barcode}.json")
|
||||
if not os.path.isfile(stdpath):
|
||||
continue
|
||||
|
||||
# 生成事件与相应标准特征集
|
||||
event = ShoppingEvent(evtpath)
|
||||
stdfeat = stdlib[barcode]
|
||||
with open(stdpath, 'r', encoding='utf-8') as f:
|
||||
stddata = json.load(f)
|
||||
feat = np.array(stddata["value"])
|
||||
stdDict[barcode] = feat
|
||||
|
||||
for evtpath in evt_paths:
|
||||
barcode = Path(evtpath).stem.split("_")[-1]
|
||||
|
||||
if barcode not in stdDict.keys():
|
||||
continue
|
||||
|
||||
Similar = calc_simil(event, stdfeat)
|
||||
# try:
|
||||
# with open(evtpath, 'rb') as f:
|
||||
# evtdata = pickle.load(f)
|
||||
# except Exception as e:
|
||||
# print(evtname)
|
||||
|
||||
with open(evtpath, 'rb') as f:
|
||||
event = pickle.load(f)
|
||||
|
||||
stdfeat = stdDict[barcode]
|
||||
|
||||
Similar = calsimi_vs_stdfeat_new(event, stdfeat)
|
||||
|
||||
# 构造 boxes 子图存储路径
|
||||
subimgpath = os.path.join(resultPath, f"{event.evtname}", "subimg")
|
||||
@ -196,8 +225,6 @@ def simi_matrix():
|
||||
histpath = os.path.join(resultPath, "simi_hist")
|
||||
if not os.path.exists(histpath):
|
||||
os.makedirs(histpath)
|
||||
|
||||
|
||||
|
||||
mean_values, max_values = [], []
|
||||
cameras = ('front', 'back')
|
||||
@ -218,9 +245,9 @@ def simi_matrix():
|
||||
evtfeat = np.concatenate((evtfeat, event.back_feats[i]), axis=0)
|
||||
imgpaths = event.back_imgpaths
|
||||
|
||||
assert len(boxes)==len(evtfeat), f"Please check the Event: {evtname}"
|
||||
assert len(boxes)==len(evtfeat), f"Please check the Event: {event.evtname}"
|
||||
if len(boxes)==0: continue
|
||||
print(evtname)
|
||||
print(event.evtname)
|
||||
|
||||
matrix = 1 - cdist(evtfeat, stdfeat, 'cosine')
|
||||
simi_1d = matrix.flatten()
|
||||
@ -310,8 +337,8 @@ def simi_matrix():
|
||||
mean_diff = abs(mean_values[1]-mean_values[0])
|
||||
ax[0, 1].set_title(f"mean diff: {mean_diff:.3f}")
|
||||
if len(max_values)==2:
|
||||
max_values = abs(max_values[1]-max_values[0])
|
||||
ax[0, 2].set_title(f"max diff: {max_values:.3f}")
|
||||
max_diff = abs(max_values[1]-max_values[0])
|
||||
ax[0, 2].set_title(f"max diff: {max_diff:.3f}")
|
||||
try:
|
||||
fig.suptitle(f"Similar: {Similar:.3f}", fontsize=16)
|
||||
except Exception as e:
|
||||
@ -320,19 +347,14 @@ def simi_matrix():
|
||||
pltpath = os.path.join(subimgpath, f"hist_max_{kpercent}%_.png")
|
||||
plt.savefig(pltpath)
|
||||
|
||||
pltpath1 = os.path.join(histpath, f"{evtname}_.png")
|
||||
pltpath1 = os.path.join(histpath, f"{event.evtname}_.png")
|
||||
plt.savefig(pltpath1)
|
||||
|
||||
|
||||
plt.close()
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
def main():
|
||||
|
||||
simi_matrix()
|
||||
|
||||
|
||||
|
BIN
contrast/feat_extract/__pycache__/config.cpython-312.pyc
Normal file
BIN
contrast/feat_extract/__pycache__/config.cpython-312.pyc
Normal file
Binary file not shown.
Binary file not shown.
BIN
contrast/feat_extract/__pycache__/inference.cpython-312.pyc
Normal file
BIN
contrast/feat_extract/__pycache__/inference.cpython-312.pyc
Normal file
Binary file not shown.
Binary file not shown.
@ -61,8 +61,9 @@ class Config:
|
||||
test_val = "D:/比对/cl"
|
||||
# test_val = "./data/test_data_100"
|
||||
|
||||
test_model = "checkpoints/best_resnet18_v12.pth"
|
||||
test_model = "checkpoints/best_20250228.pth"
|
||||
# test_model = "checkpoints/zhanting_res_801.pth"
|
||||
# test_model = "checkpoints/zhanting_res_abroad_8021.pth"
|
||||
|
||||
|
||||
|
||||
|
@ -48,7 +48,7 @@ class FeatsInterface:
|
||||
modpath = os.path.join(curpath, conf.test_model)
|
||||
self.model.load_state_dict(torch.load(modpath, map_location=conf.device))
|
||||
self.model.eval()
|
||||
print('load model {} '.format(conf.testbackbone))
|
||||
# print('load model {} '.format(conf.testbackbone))
|
||||
|
||||
def inference(self, images, detections=None):
|
||||
'''
|
||||
@ -61,12 +61,22 @@ class FeatsInterface:
|
||||
batch_patches = []
|
||||
patches = []
|
||||
for i, img in enumerate(images):
|
||||
img = img.copy()
|
||||
patch = self.transform(img)
|
||||
if str(self.device) != "cpu":
|
||||
patch = patch.to(device=self.device).half()
|
||||
else:
|
||||
patch = patch.to(device=self.device)
|
||||
img = img.copy()
|
||||
|
||||
## 对 img 进行补黑边,生成新的图像new_img
|
||||
width, height = img.size
|
||||
new_size = max(width, height)
|
||||
new_img = Image.new("RGB", (new_size, new_size), (0, 0, 0))
|
||||
paste_x = (new_size - width) // 2
|
||||
paste_y = (new_size - height) // 2
|
||||
new_img.paste(img, (paste_x, paste_y))
|
||||
|
||||
patch = self.transform(new_img)
|
||||
patch = patch.to(device=self.device)
|
||||
# if str(self.device) != "cpu":
|
||||
# patch = patch.to(device=self.device).half()
|
||||
# else:
|
||||
# patch = patch.to(device=self.device)
|
||||
|
||||
patches.append(patch)
|
||||
if (i + 1) % self.batch_size == 0:
|
||||
@ -107,10 +117,12 @@ class FeatsInterface:
|
||||
patch = self.transform(img1)
|
||||
|
||||
# patch = patch.to(device=self.device).half()
|
||||
if str(self.device) != "cpu":
|
||||
patch = patch.to(device=self.device).half()
|
||||
else:
|
||||
patch = patch.to(device=self.device)
|
||||
# if str(self.device) != "cpu":
|
||||
# patch = patch.to(device=self.device).half()
|
||||
# patch = patch.to(device=self.device)
|
||||
# else:
|
||||
# patch = patch.to(device=self.device)
|
||||
patch = patch.to(device=self.device)
|
||||
|
||||
patches.append(patch)
|
||||
if (d + 1) % self.batch_size == 0:
|
||||
|
BIN
contrast/feat_extract/model/__pycache__/CBAM.cpython-312.pyc
Normal file
BIN
contrast/feat_extract/model/__pycache__/CBAM.cpython-312.pyc
Normal file
Binary file not shown.
Binary file not shown.
BIN
contrast/feat_extract/model/__pycache__/Tool.cpython-312.pyc
Normal file
BIN
contrast/feat_extract/model/__pycache__/Tool.cpython-312.pyc
Normal file
Binary file not shown.
Binary file not shown.
BIN
contrast/feat_extract/model/__pycache__/__init__.cpython-312.pyc
Normal file
BIN
contrast/feat_extract/model/__pycache__/__init__.cpython-312.pyc
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
contrast/feat_extract/model/__pycache__/lcnet.cpython-312.pyc
Normal file
BIN
contrast/feat_extract/model/__pycache__/lcnet.cpython-312.pyc
Normal file
Binary file not shown.
Binary file not shown.
BIN
contrast/feat_extract/model/__pycache__/loss.cpython-312.pyc
Normal file
BIN
contrast/feat_extract/model/__pycache__/loss.cpython-312.pyc
Normal file
Binary file not shown.
Binary file not shown.
BIN
contrast/feat_extract/model/__pycache__/metric.cpython-312.pyc
Normal file
BIN
contrast/feat_extract/model/__pycache__/metric.cpython-312.pyc
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
contrast/feat_extract/model/__pycache__/resbam.cpython-312.pyc
Normal file
BIN
contrast/feat_extract/model/__pycache__/resbam.cpython-312.pyc
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
contrast/feat_extract/model/__pycache__/utils.cpython-312.pyc
Normal file
BIN
contrast/feat_extract/model/__pycache__/utils.cpython-312.pyc
Normal file
Binary file not shown.
Binary file not shown.
53
contrast/feat_infer.py
Normal file
53
contrast/feat_infer.py
Normal file
@ -0,0 +1,53 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
"""
|
||||
Created on Fri Feb 28 16:27:17 2025
|
||||
|
||||
@author: ym
|
||||
"""
|
||||
|
||||
import os
|
||||
import time
|
||||
import pickle
|
||||
import numpy as np
|
||||
from PIL import Image
|
||||
from scipy.spatial.distance import cdist
|
||||
from feat_extract.config import config as conf
|
||||
from feat_extract.inference import FeatsInterface #, inference_image
|
||||
|
||||
Encoder = FeatsInterface(conf)
|
||||
|
||||
def main():
|
||||
imgpaths = r"D:\全实时\202502\result\Yolos_Tracking\20250228-160049-188_6921168558018_6921168558018\a"
|
||||
featDict = {}
|
||||
imgs, imgfiles = [], []
|
||||
for filename in os.listdir(imgpaths):
|
||||
file, ext = os.path.splitext(filename)
|
||||
|
||||
imgpath = os.path.join(imgpaths, filename)
|
||||
img = Image.open(imgpath)
|
||||
|
||||
imgs.append(img)
|
||||
imgfiles.append(filename)
|
||||
|
||||
feature = Encoder.inference([img])
|
||||
feature /= np.linalg.norm(feature, axis=1)[:, None]
|
||||
feature_ft32 = feature.astype(np.float32)
|
||||
|
||||
|
||||
|
||||
featDict[file] = feature_ft32
|
||||
|
||||
feature = Encoder.inference(imgs)
|
||||
feature /= np.linalg.norm(feature, axis=1)[:, None]
|
||||
feature_ft32 = feature.astype(np.float32)
|
||||
|
||||
|
||||
matrix = 1 - cdist(feature, feature, 'cosine')
|
||||
|
||||
print("do")
|
||||
|
||||
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
@ -38,13 +38,13 @@ def get_std_barcodeDict(bcdpath, savepath, bcdSet):
|
||||
'''
|
||||
inputs:
|
||||
bcdpath: 已清洗的barcode样本图像,如果barcode下有'base'文件夹,只选用该文件夹下图像
|
||||
(default = r'\\192.168.1.28\share\已标注数据备份\对比数据\barcode\barcode_1771')
|
||||
(default = r'\\\\192.168.1.28\\share\\已标注数据备份\\对比数据\\barcode\\barcode_1771')
|
||||
功能:
|
||||
生成并保存只有一个key值的字典 {barcode: [imgpath1, imgpath1, ...]},
|
||||
savepath: 字典存储地址,文件名格式:barcode.pickle
|
||||
'''
|
||||
|
||||
# savepath = r'\\192.168.1.28\share\测试_202406\contrast\std_barcodes'
|
||||
# savepath = r'\\\\192.168.1.28\\share\\测试_202406\\contrast\\std_barcodes'
|
||||
|
||||
'''读取数据集中 barcode 列表'''
|
||||
stdBarcodeList = []
|
||||
@ -120,8 +120,7 @@ def stdfeat_infer(imgPath, featPath, bcdSet=None):
|
||||
|
||||
# imgPath = r"\\192.168.1.28\share\测试_202406\contrast\std_barcodes"
|
||||
# featPath = r"\\192.168.1.28\share\测试_202406\contrast\std_features"
|
||||
stdBarcodeDict = {}
|
||||
stdBarcodeDict_ft16 = {}
|
||||
|
||||
|
||||
Encoder = FeatsInterface(conf)
|
||||
|
||||
@ -158,6 +157,8 @@ def stdfeat_infer(imgPath, featPath, bcdSet=None):
|
||||
|
||||
feature /= np.linalg.norm(feature, axis=1)[:, None]
|
||||
|
||||
feature_ft32 = feature.astype(np.float32)
|
||||
|
||||
# float16
|
||||
feature_ft16 = feature.astype(np.float16)
|
||||
feature_ft16 /= np.linalg.norm(feature_ft16, axis=1)[:, None]
|
||||
@ -165,23 +166,21 @@ def stdfeat_infer(imgPath, featPath, bcdSet=None):
|
||||
# uint8, 两种策略,1) 精度损失小, 2) 计算复杂度小
|
||||
# feature_uint8, _ = ft16_to_uint8(feature_ft16)
|
||||
feature_uint8 = (feature_ft16*128).astype(np.int8)
|
||||
|
||||
'''================ 保存单个barcode特征 ================'''
|
||||
##================== float32
|
||||
stdbDict["barcode"] = barcode
|
||||
stdbDict["imgpaths"] = imgpaths
|
||||
stdbDict["feats_ft32"] = feature_ft32
|
||||
stdbDict["feats_ft16"] = feature_ft16
|
||||
stdbDict["feats_uint8"] = feature_uint8
|
||||
|
||||
with open(featpath, 'wb') as f:
|
||||
pickle.dump(stdbDict, f)
|
||||
|
||||
except Exception as e:
|
||||
print(f"Error accured at: {filename}, with Exception is: {e}")
|
||||
|
||||
'''================ 保存单个barcode特征 ================'''
|
||||
##================== float32
|
||||
stdbDict["barcode"] = barcode
|
||||
stdbDict["imgpaths"] = imgpaths
|
||||
stdbDict["feats_ft32"] = feature
|
||||
stdbDict["feats_ft16"] = feature_ft16
|
||||
stdbDict["feats_uint8"] = feature_uint8
|
||||
|
||||
with open(featpath, 'wb') as f:
|
||||
pickle.dump(stdbDict, f)
|
||||
|
||||
stdBarcodeDict[barcode] = feature
|
||||
stdBarcodeDict_ft16[barcode] = feature_ft16
|
||||
|
||||
|
||||
t2 = time.time()
|
||||
print(f"Barcode: {barcode}, need time: {t2-t1:.1f} secs")
|
||||
@ -192,19 +191,32 @@ def stdfeat_infer(imgPath, featPath, bcdSet=None):
|
||||
return
|
||||
|
||||
|
||||
def gen_bcd_features(imgpath, bcdpath, featpath, bcdSet=None):
|
||||
def gen_bcd_features(imgpath, bcdpath, featpath, eventSourcePath):
|
||||
''' 生成标准特征集 '''
|
||||
'''1. 提取 imgpath 中样本地址,生成字典{barcode: [imgpath1, imgpath1, ...]}
|
||||
并存储于: bcdpath, 格式为 barcode.pickle'''
|
||||
|
||||
bcdList = []
|
||||
for evtname in os.listdir(eventSourcePath):
|
||||
bname, ext = os.path.splitext(evtname)
|
||||
evt = bname.split('_')
|
||||
if len(evt)>=2 and evt[-1].isdigit() and len(evt[-1])>=10:
|
||||
bcdList.append(evt[-1])
|
||||
|
||||
bcdSet = set(bcdList)
|
||||
get_std_barcodeDict(imgpath, bcdpath, bcdSet)
|
||||
|
||||
'''2. 特征提取,并保存至文件夹 featpath 中,也根据 bcdSet 交集执行'''
|
||||
stdfeat_infer(bcdpath, featpath, bcdSet)
|
||||
|
||||
def main():
|
||||
imgpath = r"\\192.168.1.28\share\数据\已完成数据\展厅数据\v1.0\比对数据\整理\zhantingBase"
|
||||
bcdpath = r"D:\exhibition\dataset\bcdpath"
|
||||
featpath = r"D:\exhibition\dataset\feats"
|
||||
imgpath = r"\\192.168.1.28\share\数据\已完成数据\展厅数据\v2.0_abroad\比对数据\all_base_二筛"
|
||||
bcdpath = r"D:\exhibition\dataset\bcdpath_abroad"
|
||||
featpath = r"D:\exhibition\dataset\feats_abroad"
|
||||
if not os.path.exists(bcdpath):
|
||||
os.makedirs(bcdpath)
|
||||
if not os.path.exists(featpath):
|
||||
os.makedirs(featpath)
|
||||
|
||||
|
||||
gen_bcd_features(imgpath, bcdpath, featpath)
|
||||
|
@ -10,46 +10,7 @@ import numpy as np
|
||||
from pathlib import Path
|
||||
import matplotlib.pyplot as plt
|
||||
from scipy.spatial.distance import cdist
|
||||
from utils.event import ShoppingEvent
|
||||
|
||||
|
||||
def init_eventdict(sourcePath, stype="data"):
|
||||
'''stype: str,
|
||||
'source': 由 videos 或 images 生成的 pickle 文件
|
||||
'data': 从 data 文件中读取的现场运行数据
|
||||
'''
|
||||
|
||||
k, errEvents = 0, []
|
||||
for bname in os.listdir(sourcePath):
|
||||
# bname = r"20241126-135911-bdf91cf9-3e9a-426d-94e8-ddf92238e175_6923555210479"
|
||||
|
||||
source_path = os.path.join(sourcePath, bname)
|
||||
if stype=="data":
|
||||
pickpath = os.path.join(eventDataPath, f"{bname}.pickle")
|
||||
if not os.path.isdir(source_path) or os.path.isfile(pickpath):
|
||||
continue
|
||||
if stype=="source":
|
||||
pickpath = os.path.join(eventDataPath, bname)
|
||||
if not os.path.isfile(source_path) or os.path.isfile(pickpath):
|
||||
continue
|
||||
|
||||
try:
|
||||
event = ShoppingEvent(source_path, stype)
|
||||
|
||||
with open(pickpath, 'wb') as f:
|
||||
pickle.dump(event, f)
|
||||
print(bname)
|
||||
except Exception as e:
|
||||
errEvents.append(source_path)
|
||||
print(e)
|
||||
# k += 1
|
||||
# if k==1:
|
||||
# break
|
||||
|
||||
errfile = os.path.join(resultPath, 'error_events.txt')
|
||||
with open(errfile, 'a', encoding='utf-8') as f:
|
||||
for line in errEvents:
|
||||
f.write(line + '\n')
|
||||
from utils.tools import init_eventDict
|
||||
|
||||
def read_eventdict(eventDataPath):
|
||||
evtDict = {}
|
||||
@ -65,38 +26,38 @@ def read_eventdict(eventDataPath):
|
||||
|
||||
return evtDict
|
||||
|
||||
def simi_calc(event, o2nevt, typee=None):
|
||||
if typee == "11":
|
||||
boxes1 = event.front_boxes
|
||||
boxes2 = o2nevt.front_boxes
|
||||
|
||||
feat1 = event.front_feats
|
||||
feat2 = o2nevt.front_feats
|
||||
if typee == "10":
|
||||
boxes1 = event.front_boxes
|
||||
boxes2 = o2nevt.back_boxes
|
||||
|
||||
feat1 = event.front_feats
|
||||
feat2 = o2nevt.back_feats
|
||||
if typee == "00":
|
||||
boxes1 = event.back_boxes
|
||||
boxes2 = o2nevt.back_boxes
|
||||
|
||||
feat1 = event.back_feats
|
||||
feat2 = o2nevt.back_feats
|
||||
if typee == "01":
|
||||
boxes1 = event.back_boxes
|
||||
boxes2 = o2nevt.front_boxes
|
||||
|
||||
feat1 = event.back_feats
|
||||
feat2 = o2nevt.front_feats
|
||||
def simi_calc(event, o2nevt, pattern, typee=None):
|
||||
if pattern==1 or pattern==2:
|
||||
if typee == "11":
|
||||
boxes1 = event.front_boxes
|
||||
boxes2 = o2nevt.front_boxes
|
||||
|
||||
feat1 = event.front_feats
|
||||
feat2 = o2nevt.front_feats
|
||||
if typee == "10":
|
||||
boxes1 = event.front_boxes
|
||||
boxes2 = o2nevt.back_boxes
|
||||
|
||||
feat1 = event.front_feats
|
||||
feat2 = o2nevt.back_feats
|
||||
if typee == "00":
|
||||
boxes1 = event.back_boxes
|
||||
boxes2 = o2nevt.back_boxes
|
||||
|
||||
feat1 = event.back_feats
|
||||
feat2 = o2nevt.back_feats
|
||||
if typee == "01":
|
||||
boxes1 = event.back_boxes
|
||||
boxes2 = o2nevt.front_boxes
|
||||
|
||||
feat1 = event.back_feats
|
||||
feat2 = o2nevt.front_feats
|
||||
|
||||
'''自定义事件特征选择'''
|
||||
if typee==3:
|
||||
feat1 = event.feats_compose
|
||||
feat2 = o2nevt.feats_compose
|
||||
|
||||
|
||||
if pattern==3 and len(event.feats_compose) and len(o2nevt.feats_compose):
|
||||
feat1 = [event.feats_compose]
|
||||
feat2 = [o2nevt.feats_compose]
|
||||
|
||||
if len(feat1) and len(feat2):
|
||||
matrix = 1 - cdist(feat1[0], feat2[0], 'cosine')
|
||||
simi = np.mean(matrix)
|
||||
@ -109,54 +70,64 @@ def one2n_pr(evtDicts, pattern=1):
|
||||
'''
|
||||
pattern:
|
||||
1: process.data 中记录的相似度
|
||||
2: 根据 process.data 中标记的 type 选择特征计算
|
||||
3: 以其它方式选择特征计算
|
||||
2: 根据 process.data 中标记的 type 选择特征组合方式计算相似度
|
||||
3: 利用 process.data 中的轨迹特征,以其它方式计算相似度
|
||||
'''
|
||||
|
||||
tpevents, fnevents, fpevents, tnevents = [], [], [], []
|
||||
tpsimi, fnsimi, tnsimi, fpsimi = [], [], [], []
|
||||
errorFile_one2n = []
|
||||
one2nFile, errorFile_one2n = [], []
|
||||
errorFile_one2n_ = []
|
||||
evts_output = []
|
||||
for evtname, event in evtDicts.items():
|
||||
evt_names, evt_barcodes, evt_similars, evt_types = [], [], [], []
|
||||
evt_names, evt_barcodes, evt_similars, evt_types = [], [], [], []
|
||||
|
||||
if len(event.one2n)==0 or len(event.barcode)==0:
|
||||
continue
|
||||
|
||||
evts_output.append(evtname)
|
||||
|
||||
for ndict in event.one2n:
|
||||
nname = ndict["event"]
|
||||
barcode = ndict["barcode"]
|
||||
similar = ndict["similar"]
|
||||
typee = ndict["type"].strip()
|
||||
|
||||
|
||||
if len(barcode)==0:
|
||||
continue
|
||||
if typee.find(",") >=0:
|
||||
typee = typee.split(",")[-1]
|
||||
|
||||
if pattern==1:
|
||||
evt_similars.append(similar)
|
||||
if pattern==2 or pattern==3:
|
||||
o2n_evt = [evt for name, evt in evtDicts.items() if name.find(nname[:15])==0]
|
||||
if len(o2n_evt)!=1:
|
||||
continue
|
||||
|
||||
simival = simi_calc(event, o2n_evt[0], pattern, typee)
|
||||
if simival==None:
|
||||
continue
|
||||
evt_similars.append(simival)
|
||||
|
||||
evt_names.append(nname)
|
||||
evt_barcodes.append(barcode)
|
||||
evt_types.append(typee)
|
||||
|
||||
if pattern==1:
|
||||
evt_similars.append(similar)
|
||||
|
||||
if pattern==2 or pattern==3:
|
||||
o2n_evt = [evt for name, evt in evtDicts.items() if name.find(nname[:15])==0]
|
||||
if len(o2n_evt)==1:
|
||||
o2nevt = o2n_evt[0]
|
||||
else:
|
||||
continue
|
||||
|
||||
if pattern==2:
|
||||
simival = simi_calc(event, o2nevt, typee)
|
||||
|
||||
if pattern==3:
|
||||
simival = simi_calc(event, o2nevt, typee=pattern)
|
||||
# if evtname == "20250226-170321-327_6903244678377":
|
||||
# print("evtname")
|
||||
|
||||
if simival==None:
|
||||
continue
|
||||
evt_similars.append(simival)
|
||||
|
||||
if len(evt_names)==len(evt_barcodes) and len(evt_barcodes)==len(evt_similars) \
|
||||
and len(evt_similars)==len(evt_types) and len(evt_names)>0:
|
||||
|
||||
## process.data的oneTon的各项中,均不包括当前事件的barcode
|
||||
if event.barcode not in evt_barcodes:
|
||||
errorFile_one2n.append(evtname)
|
||||
continue
|
||||
else:
|
||||
one2nFile.append(evtname)
|
||||
|
||||
if len(evt_names)==len(evt_barcodes)==len(evt_similars)==len(evt_types) and len(evt_names)>0:
|
||||
# maxsim = evt_similars[evt_similars.index(max(evt_similars))]
|
||||
maxsim = max(evt_similars)
|
||||
for i in range(len(evt_names)):
|
||||
bcd, simi = evt_barcodes[i], evt_similars[i]
|
||||
|
||||
if bcd==event.barcode and simi==maxsim:
|
||||
tpsimi.append(simi)
|
||||
tpevents.append(evtname)
|
||||
@ -170,14 +141,11 @@ def one2n_pr(evtDicts, pattern=1):
|
||||
fpsimi.append(simi)
|
||||
fpevents.append(evtname)
|
||||
else:
|
||||
errorFile_one2n.append(evtname)
|
||||
|
||||
|
||||
|
||||
errorFile_one2n_.append(evtname)
|
||||
|
||||
''' 1:n 数据存储,需根据相似度排序'''
|
||||
PPrecise, PRecall = [], []
|
||||
NPrecise, NRecall = [], []
|
||||
|
||||
Thresh = np.linspace(-0.2, 1, 100)
|
||||
for th in Thresh:
|
||||
'''============================= 1:n 计算'''
|
||||
@ -187,9 +155,9 @@ def one2n_pr(evtDicts, pattern=1):
|
||||
TN = sum(np.array(tnsimi) < th)
|
||||
|
||||
PPrecise.append(TP/(TP+FP+1e-6))
|
||||
PRecall.append(TP/(len(tpsimi)+len(fnsimi)+1e-6))
|
||||
PRecall.append(TP/(TP+FN+1e-6))
|
||||
NPrecise.append(TN/(TN+FN+1e-6))
|
||||
NRecall.append(TN/(len(tnsimi)+len(fpsimi)+1e-6))
|
||||
NRecall.append(TN/(TN+FP+1e-6))
|
||||
|
||||
|
||||
'''4. ============================= 1:n 曲线,'''
|
||||
@ -200,40 +168,49 @@ def one2n_pr(evtDicts, pattern=1):
|
||||
ax.plot(Thresh, NRecall, 'c', label='Recall_Neg: TN/TNFN')
|
||||
ax.set_xlim([0, 1])
|
||||
ax.set_ylim([0, 1])
|
||||
ax.grid(True)
|
||||
|
||||
ax.set_xticks(np.arange(0, 1, 0.1))
|
||||
ax.set_yticks(np.arange(0, 1, 0.1))
|
||||
ax.grid(True, linestyle='--')
|
||||
|
||||
ax.set_title('1:n Precise & Recall')
|
||||
ax.set_xlabel(f"Event Num: {len(tpsimi)+len(fnsimi)}")
|
||||
ax.set_xlabel(f"Event Num: {len(one2nFile)}")
|
||||
ax.legend()
|
||||
plt.show()
|
||||
## ============================= 1:n 直方图'''
|
||||
fig, axes = plt.subplots(2, 2)
|
||||
axes[0, 0].hist(tpsimi, bins=60, range=(-0.2, 1), edgecolor='black')
|
||||
axes[0, 0].set_xlim([-0.2, 1])
|
||||
axes[0, 0].set_title('TP')
|
||||
axes[0, 0].set_title(f'TP: {len(tpsimi)}')
|
||||
axes[0, 1].hist(fpsimi, bins=60, range=(-0.2, 1), edgecolor='black')
|
||||
axes[0, 1].set_xlim([-0.2, 1])
|
||||
axes[0, 1].set_title('FP')
|
||||
axes[0, 1].set_title(f'FP: {len(fpsimi)}')
|
||||
axes[1, 0].hist(tnsimi, bins=60, range=(-0.2, 1), edgecolor='black')
|
||||
axes[1, 0].set_xlim([-0.2, 1])
|
||||
axes[1, 0].set_title('TN')
|
||||
axes[1, 0].set_title(f'TN: {len(tnsimi)}')
|
||||
axes[1, 1].hist(fnsimi, bins=60, range=(-0.2, 1), edgecolor='black')
|
||||
axes[1, 1].set_xlim([-0.2, 1])
|
||||
axes[1, 1].set_title('FN')
|
||||
axes[1, 1].set_title(f'FN: {len(fnsimi)}')
|
||||
plt.show()
|
||||
|
||||
return fpevents
|
||||
|
||||
def main():
|
||||
|
||||
def main():
|
||||
'''1. 生成事件字典并保存至 eventDataPath, 只需运行一次 '''
|
||||
init_eventdict(eventSourcePath, stype="source")
|
||||
|
||||
init_eventDict(eventSourcePath, eventDataPath, stype="realtime") # 'source', 'data', 'realtime'
|
||||
|
||||
# for pfile in os.listdir(eventDataPath):
|
||||
# evt = os.path.splitext(pfile)[0].split('_')
|
||||
# cont = len(evt)>=2 and evt[-1].isdigit() and len(evt[-1])>=10
|
||||
# if not cont:
|
||||
# continue
|
||||
|
||||
'''2. 读取事件字典 '''
|
||||
evtDicts = read_eventdict(eventDataPath)
|
||||
|
||||
|
||||
'''3. 1:n 比对事件评估 '''
|
||||
fpevents = one2n_pr(evtDicts, pattern=3)
|
||||
fpevents = one2n_pr(evtDicts, pattern=1)
|
||||
|
||||
fpErrFile = str(Path(resultPath).joinpath("one2n_fp_Error.txt"))
|
||||
with open(fpErrFile, "w") as file:
|
||||
@ -243,15 +220,16 @@ def main():
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
eventSourcePath = r"\\192.168.1.28\share\测试视频数据以及日志\算法全流程测试\202412\result\ShoppingDict_pkfile"
|
||||
resultPath = r"\\192.168.1.28\share\测试视频数据以及日志\算法全流程测试\202412\result\contrast"
|
||||
eventSourcePath = r"\\192.168.1.28\share\测试视频数据以及日志\全实时测试\V12\2025-3-4_2"
|
||||
resultPath = r"\\192.168.1.28\share\测试视频数据以及日志\全实时测试\testing"
|
||||
|
||||
eventDataPath = os.path.join(resultPath, "evtobjs")
|
||||
similPath = os.path.join(resultPath, "simidata")
|
||||
eventDataPath = os.path.join(resultPath, "evtobjs_wang")
|
||||
if not os.path.exists(eventDataPath):
|
||||
os.makedirs(eventDataPath)
|
||||
if not os.path.exists(similPath):
|
||||
os.makedirs(similPath)
|
||||
|
||||
# similPath = os.path.join(resultPath, "simidata")
|
||||
# if not os.path.exists(similPath):
|
||||
# os.makedirs(similPath)
|
||||
|
||||
main()
|
||||
|
||||
|
@ -27,187 +27,24 @@ Created on Fri Aug 30 17:53:03 2024
|
||||
|
||||
"""
|
||||
import numpy as np
|
||||
import cv2
|
||||
import os
|
||||
import sys
|
||||
import random
|
||||
import pickle
|
||||
import json
|
||||
import random
|
||||
import copy
|
||||
import sys
|
||||
# import torch
|
||||
import time
|
||||
# import json
|
||||
|
||||
from pathlib import Path
|
||||
from scipy.spatial.distance import cdist
|
||||
import matplotlib.pyplot as plt
|
||||
import shutil
|
||||
from datetime import datetime
|
||||
# from openpyxl import load_workbook, Workbook
|
||||
|
||||
# from config import config as conf
|
||||
# from model import resnet18 as resnet18
|
||||
# from feat_inference import inference_image
|
||||
FILE = Path(__file__).resolve()
|
||||
ROOT = FILE.parents[1] # YOLOv5 root directory
|
||||
if str(ROOT) not in sys.path:
|
||||
sys.path.append(str(ROOT))
|
||||
|
||||
sys.path.append(r"D:\DetectTracking")
|
||||
from tracking.utils.read_data import extract_data, read_tracking_output, read_similar, read_deletedBarcode_file
|
||||
from tracking.utils.plotting import Annotator, colors
|
||||
from feat_extract.config import config as conf
|
||||
from feat_extract.inference import FeatsInterface
|
||||
from utils.event import ShoppingEvent, save_data
|
||||
from utils.calsimi import calsimi_vs_stdfeat, calsimi_vs_stdfeat_new
|
||||
from utils.tools import get_evtList, init_eventDict
|
||||
from utils.databits import data_precision_compare
|
||||
from genfeats import gen_bcd_features
|
||||
from event_test import calc_simil
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
def int8_to_ft16(arr_uint8, amin, amax):
|
||||
arr_ft16 = (arr_uint8 / 255 * (amax-amin) + amin).astype(np.float16)
|
||||
|
||||
return arr_ft16
|
||||
|
||||
def ft16_to_uint8(arr_ft16):
|
||||
# pickpath = r"\\192.168.1.28\share\测试_202406\contrast\std_features_ft32vsft16\6902265587712_ft16.pickle"
|
||||
|
||||
# with open(pickpath, 'rb') as f:
|
||||
# edict = pickle.load(f)
|
||||
|
||||
# arr_ft16 = edict['feats']
|
||||
|
||||
amin = np.min(arr_ft16)
|
||||
amax = np.max(arr_ft16)
|
||||
arr_ft255 = (arr_ft16 - amin) * 255 / (amax-amin)
|
||||
arr_uint8 = arr_ft255.astype(np.uint8)
|
||||
|
||||
arr_ft16_ = int8_to_ft16(arr_uint8, amin, amax)
|
||||
|
||||
arrDistNorm = np.linalg.norm(arr_ft16_ - arr_ft16) / arr_ft16_.size
|
||||
|
||||
return arr_uint8, arr_ft16_
|
||||
|
||||
|
||||
def data_precision_compare(stdfeat, evtfeat, evtMessage, save=True):
|
||||
evt, stdbcd, label = evtMessage
|
||||
rltdata, rltdata_ft16, rltdata_ft16_ = [], [], []
|
||||
|
||||
matrix = 1 - cdist(stdfeat, evtfeat, 'cosine')
|
||||
simi_mean = np.mean(matrix)
|
||||
simi_max = np.max(matrix)
|
||||
stdfeatm = np.mean(stdfeat, axis=0, keepdims=True)
|
||||
evtfeatm = np.mean(evtfeat, axis=0, keepdims=True)
|
||||
simi_mfeat = 1- np.maximum(0.0, cdist(stdfeatm, evtfeatm, 'cosine'))
|
||||
rltdata = [label, stdbcd, evt, simi_mean, simi_max, simi_mfeat[0,0]]
|
||||
|
||||
|
||||
##================================================================= float16
|
||||
stdfeat_ft16 = stdfeat.astype(np.float16)
|
||||
evtfeat_ft16 = evtfeat.astype(np.float16)
|
||||
stdfeat_ft16 /= np.linalg.norm(stdfeat_ft16, axis=1)[:, None]
|
||||
evtfeat_ft16 /= np.linalg.norm(evtfeat_ft16, axis=1)[:, None]
|
||||
|
||||
|
||||
matrix_ft16 = 1 - cdist(stdfeat_ft16, evtfeat_ft16, 'cosine')
|
||||
simi_mean_ft16 = np.mean(matrix_ft16)
|
||||
simi_max_ft16 = np.max(matrix_ft16)
|
||||
stdfeatm_ft16 = np.mean(stdfeat_ft16, axis=0, keepdims=True)
|
||||
evtfeatm_ft16 = np.mean(evtfeat_ft16, axis=0, keepdims=True)
|
||||
simi_mfeat_ft16 = 1- np.maximum(0.0, cdist(stdfeatm_ft16, evtfeatm_ft16, 'cosine'))
|
||||
rltdata_ft16 = [label, stdbcd, evt, simi_mean_ft16, simi_max_ft16, simi_mfeat_ft16[0,0]]
|
||||
|
||||
'''****************** uint8 is ok!!!!!! ******************'''
|
||||
##=================================================================== uint8
|
||||
# stdfeat_uint8, stdfeat_ft16_ = ft16_to_uint8(stdfeat_ft16)
|
||||
# evtfeat_uint8, evtfeat_ft16_ = ft16_to_uint8(evtfeat_ft16)
|
||||
|
||||
stdfeat_uint8 = (stdfeat_ft16*128).astype(np.int8)
|
||||
evtfeat_uint8 = (evtfeat_ft16*128).astype(np.int8)
|
||||
stdfeat_ft16_ = stdfeat_uint8.astype(np.float16)/128
|
||||
evtfeat_ft16_ = evtfeat_uint8.astype(np.float16)/128
|
||||
|
||||
absdiff = np.linalg.norm(stdfeat_ft16_ - stdfeat) / stdfeat.size
|
||||
|
||||
matrix_ft16_ = 1 - cdist(stdfeat_ft16_, evtfeat_ft16_, 'cosine')
|
||||
simi_mean_ft16_ = np.mean(matrix_ft16_)
|
||||
simi_max_ft16_ = np.max(matrix_ft16_)
|
||||
stdfeatm_ft16_ = np.mean(stdfeat_ft16_, axis=0, keepdims=True)
|
||||
evtfeatm_ft16_ = np.mean(evtfeat_ft16_, axis=0, keepdims=True)
|
||||
simi_mfeat_ft16_ = 1- np.maximum(0.0, cdist(stdfeatm_ft16_, evtfeatm_ft16_, 'cosine'))
|
||||
rltdata_ft16_ = [label, stdbcd, evt, simi_mean_ft16_, simi_max_ft16_, simi_mfeat_ft16_[0,0]]
|
||||
|
||||
if not save:
|
||||
return
|
||||
|
||||
|
||||
##========================================================= save as float32
|
||||
rppath = os.path.join(similPath, f'{evt}_ft32.pickle')
|
||||
with open(rppath, 'wb') as f:
|
||||
pickle.dump(rltdata, f)
|
||||
|
||||
rtpath = os.path.join(similPath, f'{evt}_ft32.txt')
|
||||
with open(rtpath, 'w', encoding='utf-8') as f:
|
||||
for result in rltdata:
|
||||
part = [f"{x:.3f}" if isinstance(x, float) else str(x) for x in result]
|
||||
line = ', '.join(part)
|
||||
f.write(line + '\n')
|
||||
|
||||
|
||||
##========================================================= save as float16
|
||||
rppath_ft16 = os.path.join(similPath, f'{evt}_ft16.pickle')
|
||||
with open(rppath_ft16, 'wb') as f:
|
||||
pickle.dump(rltdata_ft16, f)
|
||||
|
||||
rtpath_ft16 = os.path.join(similPath, f'{evt}_ft16.txt')
|
||||
with open(rtpath_ft16, 'w', encoding='utf-8') as f:
|
||||
for result in rltdata_ft16:
|
||||
part = [f"{x:.3f}" if isinstance(x, float) else str(x) for x in result]
|
||||
line = ', '.join(part)
|
||||
f.write(line + '\n')
|
||||
|
||||
|
||||
##=========================================================== save as uint8
|
||||
rppath_uint8 = os.path.join(similPath, f'{evt}_uint8.pickle')
|
||||
with open(rppath_uint8, 'wb') as f:
|
||||
pickle.dump(rltdata_ft16_, f)
|
||||
|
||||
rtpath_uint8 = os.path.join(similPath, f'{evt}_uint8.txt')
|
||||
with open(rtpath_uint8, 'w', encoding='utf-8') as f:
|
||||
for result in rltdata_ft16_:
|
||||
part = [f"{x:.3f}" if isinstance(x, float) else str(x) for x in result]
|
||||
line = ', '.join(part)
|
||||
f.write(line + '\n')
|
||||
|
||||
|
||||
|
||||
|
||||
def simi_calc(event, stdfeat):
|
||||
evtfeat = event.feats_compose
|
||||
if isinstance(event.feats_select, list):
|
||||
if len(event.feats_select) and len(event.feats_select[0]):
|
||||
evtfeat = event.feats_select[0]
|
||||
else:
|
||||
return None, None, None
|
||||
else:
|
||||
evtfeat = event.feats_select
|
||||
|
||||
if len(evtfeat)==0 or len(stdfeat)==0:
|
||||
return None, None, None
|
||||
|
||||
|
||||
evtfeat /= np.linalg.norm(evtfeat, axis=1)[:, None]
|
||||
stdfeat /= np.linalg.norm(stdfeat, axis=1)[:, None]
|
||||
|
||||
matrix = 1 - cdist(evtfeat, stdfeat, 'cosine')
|
||||
matrix[matrix < 0] = 0
|
||||
|
||||
simi_mean = np.mean(matrix)
|
||||
simi_max = np.max(matrix)
|
||||
stdfeatm = np.mean(stdfeat, axis=0, keepdims=True)
|
||||
evtfeatm = np.mean(evtfeat, axis=0, keepdims=True)
|
||||
simi_mfeat = 1- np.maximum(0.0, cdist(stdfeatm, evtfeatm, 'cosine'))
|
||||
|
||||
return simi_mean, simi_max, simi_mfeat[0,0]
|
||||
|
||||
|
||||
def build_std_evt_dict():
|
||||
@ -217,18 +54,6 @@ def build_std_evt_dict():
|
||||
'''
|
||||
|
||||
stdBarcode = [p.stem for p in Path(stdFeaturePath).iterdir() if p.is_file() and (p.suffix=='.json' or p.suffix=='.pickle')]
|
||||
|
||||
'''*********** USearch ***********'''
|
||||
# stdFeaturePath = r"D:\contrast\stdlib\v11_test.json"
|
||||
# stdBarcode = []
|
||||
# stdlib = {}
|
||||
# with open(stdFeaturePath, 'r', encoding='utf-8') as f:
|
||||
# data = json.load(f)
|
||||
# for dic in data['total']:
|
||||
# barcode = dic['key']
|
||||
# feature = np.array(dic['value'])
|
||||
# stdBarcode.append(barcode)
|
||||
# stdlib[barcode] = feature
|
||||
|
||||
'''======1. 购物事件列表,该列表中的 Barcode 存在于标准的 stdBarcode 内 ==='''
|
||||
evtList = [(p.stem, p.stem.split('_')[-1]) for p in Path(eventDataPath).iterdir()
|
||||
@ -258,10 +83,7 @@ def build_std_evt_dict():
|
||||
stddata = pickle.load(f)
|
||||
feat = stddata["feats_ft32"]
|
||||
stdDict[barcode] = feat
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
'''*********** USearch ***********'''
|
||||
# stdDict = {}
|
||||
# for barcode in barcodes:
|
||||
@ -271,13 +93,17 @@ def build_std_evt_dict():
|
||||
evtDict = {}
|
||||
for evtname, barcode in evtList:
|
||||
evtpath = os.path.join(eventDataPath, evtname+'.pickle')
|
||||
with open(evtpath, 'rb') as f:
|
||||
evtdata = pickle.load(f)
|
||||
try:
|
||||
with open(evtpath, 'rb') as f:
|
||||
evtdata = pickle.load(f)
|
||||
except Exception as e:
|
||||
print(evtname)
|
||||
|
||||
evtDict[evtname] = evtdata
|
||||
|
||||
return evtList, evtDict, stdDict
|
||||
|
||||
def one2SN_pr(evtList, evtDict, stdDict):
|
||||
def one2SN_pr(evtList, evtDict, stdDict, simType="simple"):
|
||||
|
||||
std_barcodes = set([bcd for _, bcd in evtList])
|
||||
|
||||
@ -300,14 +126,21 @@ def one2SN_pr(evtList, evtDict, stdDict):
|
||||
event = evtDict[evtname]
|
||||
## 无轨迹判断
|
||||
if len(event.front_feats)+len(event.back_feats)==0:
|
||||
print(evtname)
|
||||
errorFile_one2SN.append(evtname)
|
||||
print(f"No trajectory: {evtname}")
|
||||
continue
|
||||
|
||||
barcodes, similars = [], []
|
||||
for stdbcd in bcd_selected:
|
||||
stdfeat = stdDict[stdbcd]
|
||||
simi_mean, simi_max, simi_mfeat = simi_calc(event, stdfeat)
|
||||
# simi_mean = calc_simil(event, stdfeat)
|
||||
|
||||
if simType=="typea":
|
||||
simi_mean, simi_max, simi_mfeat = calsimi_vs_stdfeat(event, stdfeat)
|
||||
elif simType=="typeb":
|
||||
pass
|
||||
else:
|
||||
simi_mean, simi_1, simi_2 = calsimi_vs_stdfeat_new(event, stdfeat)
|
||||
|
||||
|
||||
## 在event.front_feats和event.back_feats同时为空时,此处不需要保护
|
||||
# if simi_mean==None:
|
||||
@ -351,10 +184,10 @@ def one2SN_pr(evtList, evtDict, stdDict):
|
||||
FNX = sum(np.array(fn_simi) < th)
|
||||
TNX = sum(np.array(tn_simi) < th)
|
||||
PPreciseX.append(TPX/(TPX+FPX+1e-6))
|
||||
PRecallX.append(TPX/(len(tp_simi)+len(fn_simi)+1e-6))
|
||||
PRecallX.append(TPX/(TPX+FNX+1e-6))
|
||||
|
||||
NPreciseX.append(TNX/(TNX+FNX+1e-6))
|
||||
NRecallX.append(TNX/(len(tn_simi)+len(fp_simi)+1e-6))
|
||||
NRecallX.append(TNX/(TNX+FPX+1e-6))
|
||||
|
||||
fig, ax = plt.subplots()
|
||||
ax.plot(Thresh, PPreciseX, 'r', label='Precise_Pos: TP/TPFP')
|
||||
@ -363,11 +196,17 @@ def one2SN_pr(evtList, evtDict, stdDict):
|
||||
ax.plot(Thresh, NRecallX, 'c', label='Recall_Neg: TN/TNFN')
|
||||
ax.set_xlim([0, 1])
|
||||
ax.set_ylim([0, 1])
|
||||
ax.grid(True)
|
||||
ax.set_xticks(np.arange(0, 1, 0.1))
|
||||
ax.set_yticks(np.arange(0, 1, 0.1))
|
||||
ax.grid(True, linestyle='--')
|
||||
ax.set_title('1:SN Precise & Recall')
|
||||
ax.set_xlabel(f"Event Num: {len(evtList)}")
|
||||
ax.set_xlabel(f"Event Num: {len(tp_events) + len(fn_events)}")
|
||||
ax.legend()
|
||||
plt.show()
|
||||
|
||||
rltpath = os.path.join(similPath, f'pr_1toSN_{simType}.png')
|
||||
plt.savefig(rltpath)
|
||||
|
||||
## ============================= 1:N 展厅 直方图'''
|
||||
fig, axes = plt.subplots(2, 2)
|
||||
axes[0, 0].hist(tp_simi, bins=60, range=(-0.2, 1), edgecolor='black')
|
||||
@ -383,11 +222,14 @@ def one2SN_pr(evtList, evtDict, stdDict):
|
||||
axes[1, 1].set_xlim([-0.2, 1])
|
||||
axes[1, 1].set_title(f'FN({len(fn_simi)})')
|
||||
plt.show()
|
||||
|
||||
rltpath = os.path.join(similPath, f'hist_1toSN_{simType}.png')
|
||||
plt.savefig(rltpath)
|
||||
|
||||
|
||||
|
||||
|
||||
def one2one_simi(evtList, evtDict, stdDict):
|
||||
def one2one_simi(evtList, evtDict, stdDict, simType):
|
||||
|
||||
barcodes = set([bcd for _, bcd in evtList])
|
||||
'''======1 构造 3 个事件对: 扫 A 放 A, 扫 A 放 B, 合并 ===================='''
|
||||
@ -403,33 +245,60 @@ def one2one_simi(evtList, evtDict, stdDict):
|
||||
|
||||
'''======2 计算事件、标准特征集相似度 =================='''
|
||||
rltdata = []
|
||||
errorFile_one2one = []
|
||||
for i in range(len(mergePairs)):
|
||||
evtname, stdbcd, label = mergePairs[i]
|
||||
event = evtDict[evtname]
|
||||
if len(event.feats_compose)==0: continue
|
||||
if len(event.feats_compose)==0:
|
||||
errorFile_one2one.append(evtname)
|
||||
|
||||
continue
|
||||
|
||||
stdfeat = stdDict[stdbcd] # float32
|
||||
|
||||
simi_mean, simi_max, simi_mfeat = simi_calc(event, stdfeat)
|
||||
|
||||
if simType=="typea":
|
||||
simi_mean, simi_1, simi_2 = calsimi_vs_stdfeat_new(event, stdfeat)
|
||||
elif simType=="typeb":
|
||||
pass
|
||||
else:
|
||||
simi_mean, simi_1, simi_2 = calsimi_vs_stdfeat(event, stdfeat)
|
||||
|
||||
if simi_mean is None:
|
||||
continue
|
||||
|
||||
rltdata.append((label, stdbcd, evtname, simi_mean, simi_max, simi_mfeat))
|
||||
rltdata.append((label, stdbcd, evtname, simi_mean, simi_1, simi_2))
|
||||
|
||||
'''================ float32、16、int8 精度比较与存储 ============='''
|
||||
# data_precision_compare(stdfeat, evtfeat, mergePairs[i], save=True)
|
||||
|
||||
# data_precision_compare(stdfeat, evtfeat, mergePairs[i], similPath, save=True)
|
||||
|
||||
return rltdata
|
||||
errorFile_one2one = list(set(errorFile_one2one))
|
||||
|
||||
return rltdata, errorFile_one2one
|
||||
|
||||
|
||||
def one2one_pr(rltdata):
|
||||
def one2one_pr(evtList, evtDict, stdDict, simType="simple"):
|
||||
|
||||
rltdata, errorFile_one2one = one2one_simi(evtList, evtDict, stdDict, simType)
|
||||
|
||||
Same, Cross = [], []
|
||||
|
||||
for label, stdbcd, evtname, simi_mean, simi_max, simi_mft in rltdata:
|
||||
if label == "same":
|
||||
if simType=="simple" and label == "same":
|
||||
Same.append(simi_max)
|
||||
if label == "diff":
|
||||
if simType=="simple" and label == "diff":
|
||||
Cross.append(simi_max)
|
||||
|
||||
if simType=="typea" and label == "same":
|
||||
Same.append(simi_mean)
|
||||
if simType=="typea" and label == "diff":
|
||||
Cross.append(simi_mean)
|
||||
|
||||
|
||||
# for label, stdbcd, evtname, simi_mean, simi_max, simi_mft in rltdata:
|
||||
# if label == "same":
|
||||
# Same.append(simi_mean)
|
||||
# if label == "diff":
|
||||
# Cross.append(simi_mean)
|
||||
|
||||
Same = np.array(Same)
|
||||
Cross = np.array(Cross)
|
||||
@ -452,33 +321,47 @@ def one2one_pr(rltdata):
|
||||
Correct = []
|
||||
Thresh = np.linspace(-0.2, 1, 100)
|
||||
for th in Thresh:
|
||||
TP = np.sum(Same > th)
|
||||
FN = TPFN - TP
|
||||
TP = np.sum(Same >= th)
|
||||
FN = np.sum(Same < th)
|
||||
# FN = TPFN - TP
|
||||
|
||||
TN = np.sum(Cross < th)
|
||||
FP = TNFP - TN
|
||||
FP = np.sum(Cross >= th)
|
||||
# FP = TNFP - TN
|
||||
|
||||
Recall_Pos.append(TP/TPFN)
|
||||
Recall_Neg.append(TN/TNFP)
|
||||
|
||||
Precision_Pos.append(TP/(TP+FP+1e-6))
|
||||
Precision_Neg.append(TN/(TN+FN+1e-6))
|
||||
Recall_Pos.append(TP/(TP+FN+1e-6))
|
||||
Recall_Neg.append(TN/(TN+FP+1e-6))
|
||||
|
||||
# Recall_Pos.append(TP/TPFN)
|
||||
# Recall_Neg.append(TN/TNFP)
|
||||
|
||||
|
||||
Correct.append((TN+TP)/(TPFN+TNFP))
|
||||
|
||||
fig, ax = plt.subplots()
|
||||
ax.plot(Thresh, Correct, 'r', label='Correct: (TN+TP)/(TPFN+TNFP)')
|
||||
|
||||
ax.plot(Thresh, Precision_Pos, 'r', label='Precision_Pos: TP/(TP+FP)')
|
||||
ax.plot(Thresh, Recall_Pos, 'b', label='Recall_Pos: TP/TPFN')
|
||||
ax.plot(Thresh, Recall_Neg, 'g', label='Recall_Neg: TN/TNFP')
|
||||
ax.plot(Thresh, Precision_Pos, 'c', label='Precision_Pos: TP/(TP+FP)')
|
||||
ax.plot(Thresh, Correct, 'c', label='Correct: (TN+TP)/(TPFN+TNFP)')
|
||||
ax.plot(Thresh, Precision_Neg, 'm', label='Precision_Neg: TN/(TN+FN)')
|
||||
|
||||
ax.set_xlim([0, 1])
|
||||
ax.set_ylim([0, 1])
|
||||
ax.grid(True)
|
||||
|
||||
ax.set_xticks(np.arange(0, 1, 0.1))
|
||||
ax.set_yticks(np.arange(0, 1, 0.1))
|
||||
ax.grid(True, linestyle='--')
|
||||
|
||||
ax.set_title('PrecisePos & PreciseNeg')
|
||||
ax.set_xlabel(f"Same Num: {TPFN}, Cross Num: {TNFP}")
|
||||
ax.legend()
|
||||
plt.show()
|
||||
|
||||
rltpath = os.path.join(similPath, 'pr.png')
|
||||
rltpath = os.path.join(similPath, f'pr_1to1_{simType}.png')
|
||||
plt.savefig(rltpath) # svg, png, pdf
|
||||
|
||||
|
||||
@ -491,7 +374,7 @@ def one2one_pr(rltdata):
|
||||
axes[1].set_xlim([-0.2, 1])
|
||||
axes[1].set_title(f'TN({len(Cross)})')
|
||||
|
||||
rltpath = os.path.join(similPath, 'hist.png')
|
||||
rltpath = os.path.join(similPath, f'hist_1to1_{simType}.png')
|
||||
plt.savefig(rltpath)
|
||||
|
||||
|
||||
@ -499,139 +382,62 @@ def one2one_pr(rltdata):
|
||||
|
||||
|
||||
|
||||
def gen_eventdict(sourcePath, saveimg=True):
|
||||
k, errEvents = 0, []
|
||||
for source_path in sourcePath:
|
||||
evtpath, bname = os.path.split(source_path)
|
||||
|
||||
## 兼容事件的两种情况:文件夹 和 Yolo-Resnet-Tracker 的输出
|
||||
if os.path.isfile(source_path):
|
||||
bname, ext = os.path.splitext(bname)
|
||||
evt = bname.split("_")
|
||||
|
||||
evt = bname.split('_')
|
||||
condt = len(evt)>=2 and evt[-1].isdigit() and len(evt[-1])>=10
|
||||
if not condt: continue
|
||||
|
||||
# bname = r"20241126-135911-bdf91cf9-3e9a-426d-94e8-ddf92238e175_6923555210479"
|
||||
# source_path = os.path.join(evtpath, bname)
|
||||
|
||||
# 如果已完成事件生成,则不执行
|
||||
pickpath = os.path.join(eventDataPath, f"{bname}.pickle")
|
||||
if os.path.isfile(pickpath): continue
|
||||
|
||||
# event = ShoppingEvent(source_path, stype="data")
|
||||
# with open(pickpath, 'wb') as f:
|
||||
# pickle.dump(event, f)
|
||||
|
||||
try:
|
||||
event = ShoppingEvent(source_path, stype="source")
|
||||
# save_data(event, resultPath)
|
||||
|
||||
with open(pickpath, 'wb') as f:
|
||||
pickle.dump(event, f)
|
||||
print(bname)
|
||||
except Exception as e:
|
||||
errEvents.append(source_path)
|
||||
print(e)
|
||||
|
||||
# k += 1
|
||||
# if k==1:
|
||||
# break
|
||||
|
||||
|
||||
errfile = os.path.join(resultPath, 'error_events.txt')
|
||||
with open(errfile, 'w', encoding='utf-8') as f:
|
||||
for line in errEvents:
|
||||
f.write(line + '\n')
|
||||
|
||||
|
||||
def init_std_evt_dict():
|
||||
'''==== 0. 生成事件列表和对应的 Barcodes列表 ==========='''
|
||||
bcdList, event_spath = [], []
|
||||
for evtpath in eventSourcePath:
|
||||
for evtname in os.listdir(evtpath):
|
||||
bname, ext = os.path.splitext(evtname)
|
||||
|
||||
## 处理事件的两种情况:文件夹 和 Yolo-Resnet-Tracker 的输出
|
||||
fpath = os.path.join(evtpath, evtname)
|
||||
if os.path.isfile(fpath) and (ext==".pkl" or ext==".pickle"):
|
||||
evt = bname.split('_')
|
||||
elif os.path.isdir(fpath):
|
||||
evt = evtname.split('_')
|
||||
else:
|
||||
continue
|
||||
|
||||
|
||||
if len(evt)>=2 and evt[-1].isdigit() and len(evt[-1])>=10:
|
||||
bcdList.append(evt[-1])
|
||||
event_spath.append(os.path.join(evtpath, evtname))
|
||||
|
||||
'''==== 1. 生成标准特征集, 只需运行一次, 在 genfeats.py 中实现 ==========='''
|
||||
bcdSet = set(bcdList)
|
||||
gen_bcd_features(stdSamplePath, stdBarcodePath, stdFeaturePath, bcdSet)
|
||||
print("stdFeats have generated and saved!")
|
||||
|
||||
|
||||
'''==== 2. 生成事件字典, 只需运行一次 ==============='''
|
||||
gen_eventdict(event_spath)
|
||||
print("eventList have generated and saved!")
|
||||
|
||||
|
||||
|
||||
|
||||
def test_one2one():
|
||||
def test_one2one_one2SN(simType):
|
||||
'''1:1性能评估'''
|
||||
|
||||
# 1. 只需运行一次,生成事件字典和相应的标准特征库字典
|
||||
init_std_evt_dict()
|
||||
# evtpaths, bcdSet = get_evtList(eventSourcePath)
|
||||
|
||||
# 2. 基于事件barcode集和标准库barcode交集构造事件集合
|
||||
evtList, evtDict, stdDict = build_std_evt_dict()
|
||||
|
||||
rltdata = one2one_simi(evtList, evtDict, stdDict)
|
||||
|
||||
one2one_pr(rltdata)
|
||||
'''=== 1. 只需运行一次,生成事件对应的标准特征库字典,如已生成,无需运行 ===='''
|
||||
# gen_bcd_features(stdSamplePath, stdBarcodePath, stdFeaturePath, eventSourcePath)
|
||||
|
||||
'''==== 2. 生成事件字典, 只需运行一次 ===================='''
|
||||
# init_eventDict(eventSourcePath, eventDataPath, source_type)
|
||||
|
||||
def test_one2SN():
|
||||
'''1:SN性能评估'''
|
||||
|
||||
# 1. 只需运行一次,生成事件字典和相应的标准特征库字典
|
||||
init_std_evt_dict()
|
||||
|
||||
# 2. 事件barcode集和标准库barcode求交集
|
||||
'''==== 3. 基于事件barcode集和标准库barcode交集构造事件集合 ========='''
|
||||
evtList, evtDict, stdDict = build_std_evt_dict()
|
||||
|
||||
one2SN_pr(evtList, evtDict, stdDict)
|
||||
|
||||
one2one_pr(evtList, evtDict, stdDict, simType)
|
||||
|
||||
one2SN_pr(evtList, evtDict, stdDict, simType)
|
||||
|
||||
if __name__ == '__main__':
|
||||
'''
|
||||
共7个地址:
|
||||
(1) stdSamplePath: 用于生成比对标准特征集的原始图像地址
|
||||
(2) stdBarcodePath: 比对标准特征集原始图像地址的pickle文件存储,{barcode: [imgpath1, imgpath1, ...]}
|
||||
(3) stdFeaturePath: 比对标准特征集特征存储地址
|
||||
(4) eventSourcePath: 事件地址
|
||||
(4) eventSourcePath: 事件地址, 包含data文件的文件夹或 Yolo-Resnet-Tracker输出的Pickle文件父文件夹
|
||||
(5) resultPath: 结果存储地址
|
||||
(6) eventDataPath: 用于1:1比对的购物事件存储地址,在resultPath下
|
||||
(7) similPath: 1:1比对结果存储地址(事件级),在resultPath下
|
||||
'''
|
||||
|
||||
# stdSamplePath = r"\\192.168.1.28\share\数据\已完成数据\展厅数据\v1.0\比对数据\整理\zhantingBase"
|
||||
# stdBarcodePath = r"D:\exhibition\dataset\bcdpath"
|
||||
# stdFeaturePath = r"\\192.168.1.28\share\数据\已完成数据\比对数据\barcode\all_totalBarocde\features_json\v11_barcode_11592"
|
||||
stdSamplePath = "/home/wqg/dataset/total_barcode/totalBarcode"
|
||||
stdBarcodePath = "/home/wqg/dataset/total_barcode/bcdpath"
|
||||
stdFeaturePath = "/home/wqg/dataset/test_dataset/total_barcode/features_json/v11_barcode_0304/"
|
||||
|
||||
# eventSourcePath = [r'D:\exhibition\images\20241202']
|
||||
# eventSourcePath = [r"\\192.168.1.28\share\测试视频数据以及日志\各模块测试记录\展厅测试\1129_展厅模型v801测试组测试"]
|
||||
if not os.path.exists(stdBarcodePath):
|
||||
os.makedirs(stdBarcodePath)
|
||||
if not os.path.exists(stdFeaturePath):
|
||||
os.makedirs(stdFeaturePath)
|
||||
|
||||
'''source_type:
|
||||
"source": eventSourcePath 为 Yolo-Resnet-Tracker 输出的 pickle 文件
|
||||
"data": 基于事件切分的原 data 文件版本
|
||||
"realtime": 全实时生成的 data 文件
|
||||
'''
|
||||
source_type = 'source' # 'source', 'data', 'realtime'
|
||||
simType = "typea" # "simple", "typea", "typeb"
|
||||
|
||||
stdSamplePath = r"\\192.168.1.28\share\数据\已完成数据\比对数据\barcode\all_totalBarocde\totalBarcode"
|
||||
stdBarcodePath = r"D:\全实时\source_data\bcdpath"
|
||||
stdFeaturePath = r"D:\全实时\source_data\stdfeats"
|
||||
|
||||
eventSourcePath = [r"\\192.168.1.28\share\测试视频数据以及日志\算法全流程测试\202412\result\ShoppingDict_pkfile"]
|
||||
resultPath = r"\\192.168.1.28\share\测试视频数据以及日志\算法全流程测试\202412\result\contrast"
|
||||
evttype = "single_event_V10"
|
||||
# evttype = "single_event_V5"
|
||||
# evttype = "performence_V10"
|
||||
# evttype = "performence_V5"
|
||||
eventSourcePath = "/home/wqg/dataset/pipeline/yrt/{}/shopping_pkl".format(evttype)
|
||||
|
||||
resultPath = "/home/wqg/dataset/pipeline/contrast/{}".format(evttype)
|
||||
eventDataPath = os.path.join(resultPath, "evtobjs")
|
||||
similPath = os.path.join(resultPath, "simidata")
|
||||
if not os.path.exists(eventDataPath):
|
||||
@ -639,9 +445,7 @@ if __name__ == '__main__':
|
||||
if not os.path.exists(similPath):
|
||||
os.makedirs(similPath)
|
||||
|
||||
# test_one2one()
|
||||
|
||||
test_one2SN()
|
||||
test_one2one_one2SN(simType)
|
||||
|
||||
|
||||
|
||||
|
@ -1,8 +1,13 @@
|
||||
|
||||
# -*- coding: utf-8 -*-
|
||||
"""
|
||||
Created on Wed Sep 11 11:57:30 2024
|
||||
永辉现场试验输出数据的 1:1 性能评估
|
||||
适用于202410前数据保存版本的,需调用 OneToOneCompare.txt
|
||||
contrast_pr:
|
||||
直接利用测试数据中的 data 文件进行 1:1、1:SN、1:n 性能评估
|
||||
|
||||
test_compare:
|
||||
永辉现场试验输出数据的 1:1 性能评估
|
||||
适用于202410前数据保存版本的,需调用 OneToOneCompare.txt
|
||||
@author: ym
|
||||
"""
|
||||
import os
|
||||
@ -11,7 +16,11 @@ from pathlib import Path
|
||||
import matplotlib.pyplot as plt
|
||||
import sys
|
||||
|
||||
sys.path.append(r"D:\DetectTracking")
|
||||
FILE = Path(__file__).resolve()
|
||||
ROOT = FILE.parents[1] # YOLOv5 root directory
|
||||
if str(ROOT) not in sys.path:
|
||||
sys.path.append(str(ROOT))
|
||||
|
||||
from tracking.utils.read_data import read_similar
|
||||
|
||||
def read_one2one_data(filepath):
|
||||
@ -104,24 +113,31 @@ def test_compare():
|
||||
|
||||
plot_pr_curve(simiList)
|
||||
|
||||
def contrast_pr(paths):
|
||||
def contrast_pr(evtPaths):
|
||||
'''
|
||||
1:1
|
||||
'''
|
||||
paths = Path(paths)
|
||||
|
||||
'''
|
||||
evtpaths = []
|
||||
for p in paths.iterdir():
|
||||
# date_ = ['2025-3-4_1', '2025-3-5_1', '2025-3-5_2']
|
||||
# for dt in date_:
|
||||
# paths = Path(evtPaths) / dt
|
||||
abc = []
|
||||
for p in Path(evtPaths).iterdir():
|
||||
condt1 = p.is_dir()
|
||||
condt2 = len(p.name.split('_'))>=2
|
||||
condt3 = len(p.name.split('_')[-1])>8
|
||||
condt3 = len(p.name.split('_')[-1])>=8
|
||||
condt4 = p.name.split('_')[-1].isdigit()
|
||||
if condt1 and condt2 and condt3 and condt4:
|
||||
evtpaths.append(p)
|
||||
elif p.is_dir():
|
||||
abc.append(p.stem)
|
||||
|
||||
|
||||
# evtpaths = [p for p in paths.iterdir() if p.is_dir() and len(p.name.split('_'))>=2 and len(p.name.split('_')[-1])>8]
|
||||
# evtpaths = [p for p in paths.iterdir() if p.is_dir()]
|
||||
|
||||
alg_times = []
|
||||
|
||||
events, similars = [], []
|
||||
##===================================== 扫A放A, 扫A放B场景()
|
||||
one2oneAA, one2oneAB = [], []
|
||||
@ -147,11 +163,12 @@ def contrast_pr(paths):
|
||||
|
||||
errorFile_one2one, errorFile_one2SN, errorFile_one2n = [], [], []
|
||||
|
||||
errorFile = []
|
||||
for path in evtpaths:
|
||||
barcode = path.stem.split('_')[-1]
|
||||
datapath = path.joinpath('process.data')
|
||||
|
||||
if not barcode.isdigit() or len(barcode)<10: continue
|
||||
if not barcode.isdigit() or len(barcode)<8: continue
|
||||
if not datapath.is_file(): continue
|
||||
|
||||
bcdList.append(barcode)
|
||||
@ -167,8 +184,17 @@ def contrast_pr(paths):
|
||||
one2SN = SimiDict['one2SN']
|
||||
one2n = SimiDict['one2n']
|
||||
|
||||
if len(one2one)+len(one2SN)+len(one2n) == 0:
|
||||
errorFile.append(path.stem)
|
||||
|
||||
dtime = SimiDict["algroStartToEnd"]
|
||||
if dtime >= 0:
|
||||
alg_times.append((dtime, path.stem))
|
||||
|
||||
|
||||
'''================== 0. 1:1 ==================='''
|
||||
barcodes, similars = [], []
|
||||
barcodes_ = []
|
||||
for dt in one2one:
|
||||
one2onePath.append((path.stem))
|
||||
if dt['similar']==0:
|
||||
@ -176,6 +202,14 @@ def contrast_pr(paths):
|
||||
continue
|
||||
barcodes.append(dt['barcode'])
|
||||
similars.append(dt['similar'])
|
||||
|
||||
|
||||
barcodes_.append(path.stem)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
if len(barcodes)==len(similars) and len(barcodes)!=0:
|
||||
## 扫A放A, 扫A放B场景
|
||||
simAA = [similars[i] for i in range(len(barcodes)) if barcodes[i]==barcode]
|
||||
@ -204,6 +238,8 @@ def contrast_pr(paths):
|
||||
_fp_events.append(path.stem)
|
||||
else:
|
||||
errorFile_one2one.append(path.stem)
|
||||
elif len(one2SN)+len(one2n) == 0:
|
||||
errorFile_one2one.append(path.stem)
|
||||
|
||||
|
||||
'''================== 2. 取出场景下的 1 : Small N ==================='''
|
||||
@ -211,6 +247,7 @@ def contrast_pr(paths):
|
||||
for dt in one2SN:
|
||||
barcodes.append(dt['barcode'])
|
||||
similars.append(dt['similar'])
|
||||
|
||||
|
||||
if len(barcodes)==len(similars) and len(barcodes)!=0:
|
||||
## 扫A放A, 扫A放B场景
|
||||
@ -219,11 +256,11 @@ def contrast_pr(paths):
|
||||
|
||||
one2SNAA.extend(simAA)
|
||||
one2SNAB.extend(simAB)
|
||||
|
||||
one2SNPath.append(path.stem)
|
||||
if len(simAA)==0:
|
||||
one2SNPath1.append(path.stem)
|
||||
|
||||
|
||||
errorFile_one2SN.append(path.stem)
|
||||
|
||||
## 相似度排序,barcode相等且排名第一为TP,适用于多的barcode相似度比较
|
||||
max_idx = similars.index(max(similars))
|
||||
max_sim = similars[max_idx]
|
||||
@ -244,6 +281,7 @@ def contrast_pr(paths):
|
||||
fp_events.append(path.stem)
|
||||
else:
|
||||
errorFile_one2SN.append(path.stem)
|
||||
|
||||
|
||||
|
||||
|
||||
@ -254,10 +292,17 @@ def contrast_pr(paths):
|
||||
evt_barcodes.append(dt["barcode"])
|
||||
evt_similars.append(dt["similar"])
|
||||
evt_types.append(dt["type"])
|
||||
|
||||
if len(events)==len(evt_barcodes) and len(evt_barcodes)==len(evt_similars) \
|
||||
and len(evt_similars)==len(evt_types) and len(events)>0:
|
||||
|
||||
|
||||
|
||||
if len(events)==len(evt_barcodes)==len(evt_similars)==len(evt_types) and len(events)>0:
|
||||
if not barcode in evt_barcodes:
|
||||
errorFile_one2n.append(path.stem)
|
||||
continue
|
||||
|
||||
if len(barcodes_):
|
||||
print("do")
|
||||
|
||||
one2nPath.append(path.stem)
|
||||
maxsim = evt_similars[evt_similars.index(max(evt_similars))]
|
||||
for i in range(len(one2n)):
|
||||
@ -312,9 +357,9 @@ def contrast_pr(paths):
|
||||
_TN = sum(np.array(one2oneAB) < th)
|
||||
|
||||
_PPrecise.append(_TP/(_TP+_FP+1e-6))
|
||||
_PRecall.append(_TP/(len(one2oneAA)+1e-6))
|
||||
_PRecall.append(_TP/(_TP+_FN+1e-6))
|
||||
_NPrecise.append(_TN/(_TN+_FN+1e-6))
|
||||
_NRecall.append(_TN/(len(one2oneAB)+1e-6))
|
||||
_NRecall.append(_TN/(_TN+_FP+1e-6))
|
||||
|
||||
'''===================================== 1:SN 均值'''
|
||||
TP_ = sum(np.array(one2SNAA) >= th)
|
||||
@ -334,10 +379,10 @@ def contrast_pr(paths):
|
||||
FNX = sum(np.array(fn_simi) < th)
|
||||
TNX = sum(np.array(tn_simi) < th)
|
||||
PPreciseX.append(TPX/(TPX+FPX+1e-6))
|
||||
PRecallX.append(TPX/(len(tp_simi)+len(fn_simi)+1e-6))
|
||||
PRecallX.append(TPX/(TPX+FNX+1e-6))
|
||||
|
||||
NPreciseX.append(TNX/(TNX+FNX+1e-6))
|
||||
NRecallX.append(TNX/(len(tn_simi)+len(fp_simi)+1e-6))
|
||||
NRecallX.append(TNX/(TNX+FPX+1e-6))
|
||||
|
||||
|
||||
'''===================================== 1:n'''
|
||||
@ -347,13 +392,19 @@ def contrast_pr(paths):
|
||||
TN = sum(np.array(tnsimi) < th)
|
||||
|
||||
PPrecise.append(TP/(TP+FP+1e-6))
|
||||
PRecall.append(TP/(len(tpsimi)+len(fnsimi)+1e-6))
|
||||
PRecall.append(TP/(TP+FN+1e-6))
|
||||
NPrecise.append(TN/(TN+FN+1e-6))
|
||||
NRecall.append(TN/(len(tnsimi)+len(fpsimi)+1e-6))
|
||||
NRecall.append(TN/(TN+FP+1e-6))
|
||||
|
||||
algtime = []
|
||||
for tm, _ in alg_times:
|
||||
algtime.append(tm)
|
||||
fig, ax = plt.subplots()
|
||||
ax.hist(np.array(algtime), bins=100, edgecolor='black')
|
||||
ax.set_title('Algorthm Spend Time')
|
||||
ax.set_xlabel(f"Event Num: {len(alg_times)}")
|
||||
plt.show()
|
||||
|
||||
|
||||
|
||||
|
||||
'''1. ============================= 1:1 最大值方案 曲线'''
|
||||
fig, ax = plt.subplots()
|
||||
ax.plot(Thresh, _PPrecise, 'r', label='Precise_Pos: TP/TPFP')
|
||||
@ -362,7 +413,9 @@ def contrast_pr(paths):
|
||||
ax.plot(Thresh, _NRecall, 'c', label='Recall_Neg: TN/TNFN')
|
||||
ax.set_xlim([0, 1])
|
||||
ax.set_ylim([0, 1])
|
||||
ax.grid(True)
|
||||
ax.set_xticks(np.arange(0, 1, 0.1))
|
||||
ax.set_yticks(np.arange(0, 1, 0.1))
|
||||
ax.grid(True, linestyle='--')
|
||||
ax.set_title('1:1 Precise & Recall')
|
||||
ax.set_xlabel(f"Event Num: {len(one2oneAA)+len(one2oneAB)}")
|
||||
ax.legend()
|
||||
@ -381,30 +434,30 @@ def contrast_pr(paths):
|
||||
|
||||
|
||||
'''2. ============================= 1:1 均值方案 曲线'''
|
||||
fig, ax = plt.subplots()
|
||||
ax.plot(Thresh, PPrecise_, 'r', label='Precise_Pos: TP/TPFP')
|
||||
ax.plot(Thresh, PRecall_, 'b', label='Recall_Pos: TP/TPFN')
|
||||
ax.plot(Thresh, NPrecise_, 'g', label='Precise_Neg: TN/TNFP')
|
||||
ax.plot(Thresh, NRecall_, 'c', label='Recall_Neg: TN/TNFN')
|
||||
ax.set_xlim([0, 1])
|
||||
ax.set_ylim([0, 1])
|
||||
ax.grid(True)
|
||||
ax.set_title('1:1 Precise & Recall')
|
||||
ax.set_xlabel(f"Event Num: {len(one2SNAA)}")
|
||||
ax.legend()
|
||||
plt.show()
|
||||
## ============================= 1:1 均值方案 直方图'''
|
||||
fig, axes = plt.subplots(2, 1)
|
||||
axes[0].hist(np.array(one2SNAA), bins=60, edgecolor='black')
|
||||
axes[0].set_xlim([-0.2, 1])
|
||||
axes[0].set_title('AA')
|
||||
axes[0].set_xlabel(f"Event Num: {len(one2SNAA)}")
|
||||
# fig, ax = plt.subplots()
|
||||
# ax.plot(Thresh, PPrecise_, 'r', label='Precise_Pos: TP/TPFP')
|
||||
# ax.plot(Thresh, PRecall_, 'b', label='Recall_Pos: TP/TPFN')
|
||||
# ax.plot(Thresh, NPrecise_, 'g', label='Precise_Neg: TN/TNFP')
|
||||
# ax.plot(Thresh, NRecall_, 'c', label='Recall_Neg: TN/TNFN')
|
||||
# ax.set_xlim([0, 1])
|
||||
# ax.set_ylim([0, 1])
|
||||
# ax.grid(True)
|
||||
# ax.set_title('1:1 Precise & Recall')
|
||||
# ax.set_xlabel(f"Event Num: {len(one2SNAA)}")
|
||||
# ax.legend()
|
||||
# plt.show()
|
||||
# ## ============================= 1:1 均值方案 直方图'''
|
||||
# fig, axes = plt.subplots(2, 1)
|
||||
# axes[0].hist(np.array(one2SNAA), bins=60, edgecolor='black')
|
||||
# axes[0].set_xlim([-0.2, 1])
|
||||
# axes[0].set_title('AA')
|
||||
# axes[0].set_xlabel(f"Event Num: {len(one2SNAA)}")
|
||||
|
||||
axes[1].hist(np.array(one2SNAB), bins=60, edgecolor='black')
|
||||
axes[1].set_xlim([-0.2, 1])
|
||||
axes[1].set_title('BB')
|
||||
axes[1].set_xlabel(f"Event Num: {len(one2SNAB)}")
|
||||
plt.show()
|
||||
# axes[1].hist(np.array(one2SNAB), bins=60, edgecolor='black')
|
||||
# axes[1].set_xlim([-0.2, 1])
|
||||
# axes[1].set_title('BB')
|
||||
# axes[1].set_xlabel(f"Event Num: {len(one2SNAB)}")
|
||||
# plt.show()
|
||||
|
||||
''''3. ============================= 1:SN 曲线'''
|
||||
fig, ax = plt.subplots()
|
||||
@ -414,7 +467,9 @@ def contrast_pr(paths):
|
||||
ax.plot(Thresh, NRecallX, 'c', label='Recall_Neg: TN/TNFN')
|
||||
ax.set_xlim([0, 1])
|
||||
ax.set_ylim([0, 1])
|
||||
ax.grid(True)
|
||||
ax.set_xticks(np.arange(0, 1, 0.1))
|
||||
ax.set_yticks(np.arange(0, 1, 0.1))
|
||||
ax.grid(True, linestyle='--')
|
||||
ax.set_title('1:SN Precise & Recall')
|
||||
ax.set_xlabel(f"Event Num: {len(one2SNAA)}")
|
||||
ax.legend()
|
||||
@ -444,7 +499,9 @@ def contrast_pr(paths):
|
||||
ax.plot(Thresh, NRecall, 'c', label='Recall_Neg: TN/TNFN')
|
||||
ax.set_xlim([0, 1])
|
||||
ax.set_ylim([0, 1])
|
||||
ax.grid(True)
|
||||
ax.set_xticks(np.arange(0, 1, 0.1))
|
||||
ax.set_yticks(np.arange(0, 1, 0.1))
|
||||
ax.grid(True, linestyle='--')
|
||||
ax.set_title('1:n Precise & Recall')
|
||||
ax.set_xlabel(f"Event Num: {len(tpsimi)+len(fnsimi)}")
|
||||
ax.legend()
|
||||
@ -461,31 +518,31 @@ def contrast_pr(paths):
|
||||
axes[1, 0].set_xlim([-0.2, 1])
|
||||
axes[1, 0].set_title(f'TN({len(tnsimi)})')
|
||||
axes[1, 1].hist(fnsimi, bins=60, edgecolor='black')
|
||||
|
||||
axes[1, 1].set_xlim([-0.2, 1])
|
||||
axes[1, 1].set_title(f'FN({len(fnsimi)})')
|
||||
plt.show()
|
||||
|
||||
|
||||
fpsnErrFile = str(paths.joinpath("one2SN_Error.txt"))
|
||||
with open(fpsnErrFile, "w") as file:
|
||||
for item in fp_events:
|
||||
file.write(item + "\n")
|
||||
# fpsnErrFile = str(paths.joinpath("one2SN_Error.txt"))
|
||||
# with open(fpsnErrFile, "w") as file:
|
||||
# for item in fp_events:
|
||||
# file.write(item + "\n")
|
||||
|
||||
fpErrFile = str(paths.joinpath("one2n_Error.txt"))
|
||||
with open(fpErrFile, "w") as file:
|
||||
for item in fpevents:
|
||||
file.write(item + "\n")
|
||||
|
||||
|
||||
|
||||
# fpErrFile = str(paths.joinpath("one2n_Error.txt"))
|
||||
# with open(fpErrFile, "w") as file:
|
||||
# for item in fpevents:
|
||||
# file.write(item + "\n")
|
||||
|
||||
|
||||
# bcdSet = set(bcdList)
|
||||
# one2nErrFile = str(paths.joinpath("one_2_Small_n_Error.txt"))
|
||||
|
||||
|
||||
# one2nErrFile = os.path.join(evtPaths, "one_2_Small_n_Error.txt")
|
||||
# with open(one2nErrFile, "w") as file:
|
||||
# for item in fnevents:
|
||||
# file.write(item + "\n")
|
||||
|
||||
# one2NErrFile = str(paths.joinpath("one_2_Big_N_Error.txt"))
|
||||
# one2NErrFile = os.path.join(evtPaths, "one_2_Big_N_Error.txt")
|
||||
# with open(one2NErrFile, "w") as file:
|
||||
# for item in fn_events:
|
||||
# file.write(item + "\n")
|
||||
@ -493,9 +550,8 @@ def contrast_pr(paths):
|
||||
print('Done!')
|
||||
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
evtpaths = r"D:\全实时\source_data\2024122416"
|
||||
evtpaths = r"/home/wqg/dataset/test_base_dataset/single_event/source"
|
||||
contrast_pr(evtpaths)
|
||||
|
||||
|
||||
|
@ -57,7 +57,13 @@ def save_imgpairs(barcode, imgpaths, matrix, savepath, thresh=(0.4, 0.6), ctype=
|
||||
|
||||
|
||||
|
||||
def feat_analysis(featpath):
|
||||
def feat_analysis(featpath):
|
||||
'''
|
||||
标准特征集中样本类内、类间相似度分布
|
||||
'''
|
||||
|
||||
|
||||
|
||||
savepath = r"D:\exhibition\result\stdfeat"
|
||||
|
||||
InterThresh = (0.4, 0.6)
|
||||
|
172
contrast/trail2trail.py
Normal file
172
contrast/trail2trail.py
Normal file
@ -0,0 +1,172 @@
|
||||
#!/usr/bin/env python3
|
||||
# -*- coding: utf-8 -*-
|
||||
"""
|
||||
取出再放回场景下商品轨迹特征比对方式与性能分析
|
||||
|
||||
Created on Tue Apr 1 17:17:47 2025
|
||||
@author: wqg
|
||||
"""
|
||||
import os
|
||||
import pickle
|
||||
import random
|
||||
import numpy as np
|
||||
from pathlib import Path
|
||||
import matplotlib.pyplot as plt
|
||||
from scipy.spatial.distance import cdist
|
||||
from utils.calsimi import calsiml, calsimi_vs_evts
|
||||
|
||||
def read_eventdict(evtpaths):
|
||||
evtDict = {}
|
||||
for filename in os.listdir(evtpaths):
|
||||
evtname, ext = os.path.splitext(filename)
|
||||
if ext != ".pickle": continue
|
||||
|
||||
evtpath = os.path.join(evtpaths, filename)
|
||||
with open(evtpath, 'rb') as f:
|
||||
evtdata = pickle.load(f)
|
||||
evtDict[evtname] = evtdata
|
||||
|
||||
|
||||
return evtDict
|
||||
|
||||
|
||||
|
||||
def compute_show_pr(Same, Cross):
|
||||
TPFN = len(Same)
|
||||
TNFP = len(Cross)
|
||||
|
||||
Recall_Pos, Recall_Neg = [], []
|
||||
Precision_Pos, Precision_Neg = [], []
|
||||
Correct = []
|
||||
Thresh = np.linspace(-0.2, 1, 100)
|
||||
for th in Thresh:
|
||||
TP = np.sum(Same >= th)
|
||||
FN = np.sum(Same < th)
|
||||
# FN = TPFN - TP
|
||||
|
||||
TN = np.sum(Cross < th)
|
||||
FP = np.sum(Cross >= th)
|
||||
# FP = TNFP - TN
|
||||
|
||||
|
||||
Precision_Pos.append(TP/(TP+FP+1e-6))
|
||||
Precision_Neg.append(TN/(TN+FN+1e-6))
|
||||
Recall_Pos.append(TP/(TP+FN+1e-6))
|
||||
Recall_Neg.append(TN/(TN+FP+1e-6))
|
||||
|
||||
# Recall_Pos.append(TP/TPFN)
|
||||
# Recall_Neg.append(TN/TNFP)
|
||||
|
||||
|
||||
Correct.append((TN+TP)/(TPFN+TNFP))
|
||||
|
||||
fig, ax = plt.subplots()
|
||||
|
||||
ax.plot(Thresh, Precision_Pos, 'r', label='Precision_Pos: TP/(TP+FP)')
|
||||
ax.plot(Thresh, Recall_Pos, 'b', label='Recall_Pos: TP/TPFN')
|
||||
ax.plot(Thresh, Recall_Neg, 'g', label='Recall_Neg: TN/TNFP')
|
||||
ax.plot(Thresh, Correct, 'c', label='Correct: (TN+TP)/(TPFN+TNFP)')
|
||||
ax.plot(Thresh, Precision_Neg, 'm', label='Precision_Neg: TN/(TN+FN)')
|
||||
|
||||
ax.set_xlim([0, 1])
|
||||
ax.set_ylim([0, 1])
|
||||
|
||||
ax.set_xticks(np.arange(0, 1, 0.1))
|
||||
ax.set_yticks(np.arange(0, 1, 0.1))
|
||||
ax.grid(True, linestyle='--')
|
||||
|
||||
ax.set_title('PrecisePos & PreciseNeg')
|
||||
ax.set_xlabel(f"Same Num: {TPFN}, Cross Num: {TNFP}")
|
||||
ax.legend()
|
||||
plt.show()
|
||||
|
||||
# rltpath = os.path.join(similPath, f'pr_1to1_{simType}.png')
|
||||
# plt.savefig(rltpath) # svg, png, pdf
|
||||
|
||||
|
||||
fig, axes = plt.subplots(2,1)
|
||||
axes[0].hist(Same, bins=60, range=(-0.2, 1), edgecolor='black')
|
||||
axes[0].set_xlim([-0.2, 1])
|
||||
axes[0].set_title(f'TP({len(Same)})')
|
||||
|
||||
axes[1].hist(Cross, bins=60, range=(-0.2, 1), edgecolor='black')
|
||||
axes[1].set_xlim([-0.2, 1])
|
||||
axes[1].set_title(f'TN({len(Cross)})')
|
||||
|
||||
# rltpath = os.path.join(similPath, f'hist_1to1_{simType}.png')
|
||||
# plt.savefig(rltpath)
|
||||
|
||||
|
||||
plt.show()
|
||||
|
||||
|
||||
|
||||
def trail_to_trail(evtpaths, rltpaths):
|
||||
# select the method type of how to calculate the feat similarity of trail
|
||||
simType = 2
|
||||
|
||||
##1. read all the ShoppingEvent object in the dir 'evtpaths'
|
||||
evtDicts = read_eventdict(evtpaths)
|
||||
|
||||
##2. Combine event object with the same barcode
|
||||
barcodes, evtpairDict = [], {}
|
||||
for k in evtDicts.keys():
|
||||
evt = k.split('_')
|
||||
condt = len(evt)>=2 and evt[-1].isdigit() and len(evt[-1])>=10
|
||||
if not condt: continue
|
||||
|
||||
barcode = evt[-1]
|
||||
if barcode not in evtpairDict.keys():
|
||||
evtpairDict[barcode] = []
|
||||
barcodes.append(barcode)
|
||||
|
||||
evtpairDict[barcode].append(evtDicts[k])
|
||||
barcodes = set(barcodes)
|
||||
|
||||
AA_list, AB_list = [], []
|
||||
for barcode in evtpairDict.keys():
|
||||
events = evtpairDict[barcode]
|
||||
if len(events)>1:
|
||||
evta, evtb = random.sample(events, 2)
|
||||
AA_list.append((evta, evtb, "same"))
|
||||
|
||||
evtc = random.sample(events, 1)[0]
|
||||
|
||||
dset = list(barcodes.symmetric_difference(set([barcode])))
|
||||
bcd = random.sample(dset, 1)[0]
|
||||
evtd = random.sample(evtpairDict[bcd], 1)[0]
|
||||
AB_list.append((evtc, evtd, "diff"))
|
||||
|
||||
mergePairs = AA_list + AB_list
|
||||
|
||||
##3. calculate the similar of two event: evta, evtb
|
||||
new_pirs = []
|
||||
for evta, evtb, label in mergePairs:
|
||||
similar = calsimi_vs_evts(evta, evtb, simType)
|
||||
if similar is None:
|
||||
continue
|
||||
new_pirs.append((label, round(similar, 3), evta.evtname[:15], evtb.evtname[:15]))
|
||||
|
||||
##4. compute PR and showing
|
||||
Same = np.array([s for label, s, _, _ in new_pirs if label=="same"])
|
||||
Cross = np.array([s for label, s, _, _ in new_pirs if label=="diff"])
|
||||
compute_show_pr(Same, Cross)
|
||||
|
||||
|
||||
def main():
|
||||
evttypes = ["single_event_V10", "single_event_V5", "performence_V10", "performence_V5"]
|
||||
# evttypes = ["single_event_V10"]
|
||||
|
||||
for evttype in evttypes:
|
||||
evtpaths = "/home/wqg/dataset/pipeline/contrast/{}/evtobjs/".format(evttype)
|
||||
rltpaths = "/home/wqg/dataset/pipeline/yrt/{}/yolos_tracking".format(evttype)
|
||||
|
||||
trail_to_trail(evtpaths, rltpaths)
|
||||
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
|
||||
|
||||
|
BIN
contrast/utils/__pycache__/__init__.cpython-312.pyc
Normal file
BIN
contrast/utils/__pycache__/__init__.cpython-312.pyc
Normal file
Binary file not shown.
BIN
contrast/utils/__pycache__/calsimi.cpython-312.pyc
Normal file
BIN
contrast/utils/__pycache__/calsimi.cpython-312.pyc
Normal file
Binary file not shown.
BIN
contrast/utils/__pycache__/databits.cpython-312.pyc
Normal file
BIN
contrast/utils/__pycache__/databits.cpython-312.pyc
Normal file
Binary file not shown.
BIN
contrast/utils/__pycache__/event.cpython-312.pyc
Normal file
BIN
contrast/utils/__pycache__/event.cpython-312.pyc
Normal file
Binary file not shown.
Binary file not shown.
BIN
contrast/utils/__pycache__/tools.cpython-312.pyc
Normal file
BIN
contrast/utils/__pycache__/tools.cpython-312.pyc
Normal file
Binary file not shown.
216
contrast/utils/calsimi.py
Normal file
216
contrast/utils/calsimi.py
Normal file
@ -0,0 +1,216 @@
|
||||
#!/usr/bin/env python3
|
||||
# -*- coding: utf-8 -*-
|
||||
"""
|
||||
Created on Mon Mar 31 16:25:43 2025
|
||||
|
||||
@author: wqg
|
||||
"""
|
||||
import numpy as np
|
||||
from scipy.spatial.distance import cdist
|
||||
|
||||
|
||||
def get_topk_percent(data, k):
|
||||
"""
|
||||
获取数据中最大的 k% 的元素
|
||||
"""
|
||||
# 将数据转换为 NumPy 数组
|
||||
if isinstance(data, list):
|
||||
data = np.array(data)
|
||||
|
||||
percentile = np.percentile(data, 100-k)
|
||||
top_k_percent = data[data >= percentile]
|
||||
|
||||
return top_k_percent
|
||||
def cluster(data, thresh=0.15):
|
||||
# data = np.array([0.1, 0.13, 0.7, 0.2, 0.8, 0.52, 0.3, 0.7, 0.85, 0.58])
|
||||
# data = np.array([0.1, 0.13, 0.2, 0.3])
|
||||
# data = np.array([0.1])
|
||||
|
||||
if isinstance(data, list):
|
||||
data = np.array(data)
|
||||
|
||||
data1 = np.sort(data)
|
||||
cluter, Cluters, = [data1[0]], []
|
||||
for i in range(1, len(data1)):
|
||||
if data1[i] - data1[i-1]< thresh:
|
||||
cluter.append(data1[i])
|
||||
else:
|
||||
Cluters.append(cluter)
|
||||
cluter = [data1[i]]
|
||||
Cluters.append(cluter)
|
||||
|
||||
clt_center = []
|
||||
for clt in Cluters:
|
||||
## 是否应该在此处限制一个聚类中的最小轨迹样本数,应该将该因素放在轨迹分析中
|
||||
# if len(clt)>=3:
|
||||
# clt_center.append(np.mean(clt))
|
||||
clt_center.append(np.mean(clt))
|
||||
|
||||
# print(clt_center)
|
||||
|
||||
return clt_center
|
||||
|
||||
def calsiml(feat1, feat2, topkp=75, cluth=0.15):
|
||||
'''轨迹样本和标准特征集样本相似度的选择策略'''
|
||||
matrix = 1 - cdist(feat1, feat2, 'cosine')
|
||||
simi_max = []
|
||||
for i in range(len(matrix)):
|
||||
sim = np.mean(get_topk_percent(matrix[i, :], topkp))
|
||||
simi_max.append(sim)
|
||||
cltc_max = cluster(simi_max, cluth)
|
||||
Simi = max(cltc_max)
|
||||
|
||||
## cltc_max为空属于编程考虑不周,应予以排查解决
|
||||
# if len(cltc_max):
|
||||
# Simi = max(cltc_max)
|
||||
# else:
|
||||
# Simi = 0 #不应该走到该处
|
||||
|
||||
return Simi
|
||||
|
||||
|
||||
def calsimi_vs_stdfeat_new(event, stdfeat):
|
||||
'''事件与标准库的对比策略
|
||||
该比对策略是否可以拓展到事件与事件的比对?
|
||||
'''
|
||||
front_boxes = np.empty((0, 9), dtype=np.float64) ##和类doTracks兼容
|
||||
front_feats = np.empty((0, 256), dtype=np.float64) ##和类doTracks兼容
|
||||
for i in range(len(event.front_boxes)):
|
||||
front_boxes = np.concatenate((front_boxes, event.front_boxes[i]), axis=0)
|
||||
front_feats = np.concatenate((front_feats, event.front_feats[i]), axis=0)
|
||||
|
||||
back_boxes = np.empty((0, 9), dtype=np.float64) ##和类doTracks兼容
|
||||
back_feats = np.empty((0, 256), dtype=np.float64) ##和类doTracks兼容
|
||||
for i in range(len(event.back_boxes)):
|
||||
back_boxes = np.concatenate((back_boxes, event.back_boxes[i]), axis=0)
|
||||
back_feats = np.concatenate((back_feats, event.back_feats[i]), axis=0)
|
||||
|
||||
front_simi, back_simi = None, None
|
||||
if len(front_feats):
|
||||
front_simi = calsiml(front_feats, stdfeat)
|
||||
if len(back_feats):
|
||||
back_simi = calsiml(back_feats, stdfeat)
|
||||
|
||||
'''前后摄相似度融合策略'''
|
||||
if len(front_feats) and len(back_feats):
|
||||
diff_simi = abs(front_simi - back_simi)
|
||||
if diff_simi>0.15:
|
||||
Similar = max([front_simi, back_simi])
|
||||
else:
|
||||
Similar = (front_simi+back_simi)/2
|
||||
elif len(front_feats) and len(back_feats)==0:
|
||||
Similar = front_simi
|
||||
elif len(front_feats)==0 and len(back_feats):
|
||||
Similar = back_simi
|
||||
else:
|
||||
Similar = None # 在event.front_feats和event.back_feats同时为空时
|
||||
|
||||
return Similar, front_simi, back_simi
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
def calsimi_vs_stdfeat(event, stdfeat):
|
||||
evtfeat = event.feats_compose
|
||||
if isinstance(event.feats_select, list):
|
||||
if len(event.feats_select) and len(event.feats_select[0]):
|
||||
evtfeat = event.feats_select[0]
|
||||
else:
|
||||
return None, None, None
|
||||
else:
|
||||
evtfeat = event.feats_select
|
||||
|
||||
if len(evtfeat)==0 or len(stdfeat)==0:
|
||||
return None, None, None
|
||||
|
||||
|
||||
evtfeat /= np.linalg.norm(evtfeat, axis=1)[:, None]
|
||||
stdfeat /= np.linalg.norm(stdfeat, axis=1)[:, None]
|
||||
|
||||
matrix = 1 - cdist(evtfeat, stdfeat, 'cosine')
|
||||
matrix[matrix < 0] = 0
|
||||
|
||||
simi_mean = np.mean(matrix)
|
||||
simi_max = np.max(matrix)
|
||||
stdfeatm = np.mean(stdfeat, axis=0, keepdims=True)
|
||||
evtfeatm = np.mean(evtfeat, axis=0, keepdims=True)
|
||||
simi_mfeat = 1- np.maximum(0.0, cdist(stdfeatm, evtfeatm, 'cosine'))
|
||||
|
||||
return simi_mean, simi_max, simi_mfeat[0,0]
|
||||
|
||||
|
||||
def calsimi_vs_evts(evta, evtb, simType=1):
|
||||
if simType==1:
|
||||
if len(evta.feats_compose) and len(evtb.feats_compose):
|
||||
feata = evta.feats_compose
|
||||
featb = evtb.feats_compose
|
||||
matrix = 1 - cdist(feata, featb, 'cosine')
|
||||
similar = np.mean(matrix)
|
||||
else:
|
||||
similar = None
|
||||
return similar
|
||||
|
||||
if simType==2:
|
||||
if len(evta.feats_compose) and len(evtb.feats_compose):
|
||||
feata = evta.feats_compose
|
||||
featb = evtb.feats_compose
|
||||
matrix = 1 - cdist(feata, featb, 'cosine')
|
||||
similar = np.max(matrix)
|
||||
else:
|
||||
similar = None
|
||||
return similar
|
||||
|
||||
if simType==3:
|
||||
if len(evta.feats_compose) and len(evtb.feats_compose):
|
||||
feata = evta.feats_compose
|
||||
featb = evtb.feats_compose
|
||||
similar = calsiml(feata, featb)
|
||||
else:
|
||||
similar = None
|
||||
return similar
|
||||
|
||||
|
||||
##1. the front feats of evta, evtb
|
||||
fr_feata = np.empty((0, 256), dtype=np.float64) ##和类doTracks兼容
|
||||
for i in range(len(evta.front_feats)):
|
||||
fr_feata = np.concatenate((fr_feata, evta.front_feats[i]), axis=0)
|
||||
|
||||
fr_featb = np.empty((0, 256), dtype=np.float64) ##和类doTracks兼容
|
||||
for i in range(len(evtb.front_feats)):
|
||||
fr_featb = np.concatenate((fr_featb, evtb.front_feats[i]), axis=0)
|
||||
|
||||
##2. the back feats of evta, evtb
|
||||
bk_feata = np.empty((0, 256), dtype=np.float64) ##和类doTracks兼容
|
||||
for i in range(len(evta.back_feats)):
|
||||
bk_feata = np.concatenate((bk_feata, evta.back_feats[i]), axis=0)
|
||||
|
||||
bk_featb = np.empty((0, 256), dtype=np.float64) ##和类doTracks兼容
|
||||
for i in range(len(evtb.back_feats)):
|
||||
bk_featb = np.concatenate((bk_featb, evtb.back_feats[i]), axis=0)
|
||||
|
||||
|
||||
front_simi, back_simi = None, None
|
||||
if len(fr_feata) and len(fr_featb):
|
||||
front_simi = calsiml(fr_feata, fr_featb)
|
||||
|
||||
if len(bk_feata) and len(bk_featb):
|
||||
back_simi = calsiml(bk_feata, bk_featb)
|
||||
|
||||
'''前后摄相似度融合策略'''
|
||||
if front_simi is not None and back_simi is not None:
|
||||
diff_simi = abs(front_simi - back_simi)
|
||||
if diff_simi>0.15:
|
||||
similar = max([front_simi, back_simi])
|
||||
else:
|
||||
similar = (front_simi+back_simi)/2
|
||||
elif front_simi is not None and back_simi is None:
|
||||
similar = front_simi
|
||||
elif front_simi is None and back_simi is not None:
|
||||
similar = back_simi
|
||||
else:
|
||||
similar = None # 在event.front_feats和event.back_feats同时为空时
|
||||
|
||||
return similar
|
||||
|
||||
|
127
contrast/utils/databits.py
Normal file
127
contrast/utils/databits.py
Normal file
@ -0,0 +1,127 @@
|
||||
#!/usr/bin/env python3
|
||||
# -*- coding: utf-8 -*-
|
||||
"""
|
||||
Created on Tue Apr 1 16:43:04 2025
|
||||
|
||||
@author: wqg
|
||||
"""
|
||||
import os
|
||||
import pickle
|
||||
import numpy as np
|
||||
from scipy.spatial.distance import cdist
|
||||
|
||||
|
||||
def int8_to_ft16(arr_uint8, amin, amax):
|
||||
arr_ft16 = (arr_uint8 / 255 * (amax-amin) + amin).astype(np.float16)
|
||||
|
||||
return arr_ft16
|
||||
|
||||
def ft16_to_uint8(arr_ft16):
|
||||
# pickpath = r"\\192.168.1.28\share\测试_202406\contrast\std_features_ft32vsft16\6902265587712_ft16.pickle"
|
||||
|
||||
# with open(pickpath, 'rb') as f:
|
||||
# edict = pickle.load(f)
|
||||
|
||||
# arr_ft16 = edict['feats']
|
||||
|
||||
amin = np.min(arr_ft16)
|
||||
amax = np.max(arr_ft16)
|
||||
arr_ft255 = (arr_ft16 - amin) * 255 / (amax-amin)
|
||||
arr_uint8 = arr_ft255.astype(np.uint8)
|
||||
|
||||
arr_ft16_ = int8_to_ft16(arr_uint8, amin, amax)
|
||||
|
||||
arrDistNorm = np.linalg.norm(arr_ft16_ - arr_ft16) / arr_ft16_.size
|
||||
|
||||
return arr_uint8, arr_ft16_
|
||||
|
||||
|
||||
def data_precision_compare(stdfeat, evtfeat, evtMessage, similPath='', save=True):
|
||||
evt, stdbcd, label = evtMessage
|
||||
rltdata, rltdata_ft16, rltdata_ft16_ = [], [], []
|
||||
|
||||
matrix = 1 - cdist(stdfeat, evtfeat, 'cosine')
|
||||
simi_mean = np.mean(matrix)
|
||||
simi_max = np.max(matrix)
|
||||
stdfeatm = np.mean(stdfeat, axis=0, keepdims=True)
|
||||
evtfeatm = np.mean(evtfeat, axis=0, keepdims=True)
|
||||
simi_mfeat = 1- np.maximum(0.0, cdist(stdfeatm, evtfeatm, 'cosine'))
|
||||
rltdata = [label, stdbcd, evt, simi_mean, simi_max, simi_mfeat[0,0]]
|
||||
|
||||
|
||||
##================================================================= float16
|
||||
stdfeat_ft16 = stdfeat.astype(np.float16)
|
||||
evtfeat_ft16 = evtfeat.astype(np.float16)
|
||||
stdfeat_ft16 /= np.linalg.norm(stdfeat_ft16, axis=1)[:, None]
|
||||
evtfeat_ft16 /= np.linalg.norm(evtfeat_ft16, axis=1)[:, None]
|
||||
|
||||
|
||||
matrix_ft16 = 1 - cdist(stdfeat_ft16, evtfeat_ft16, 'cosine')
|
||||
simi_mean_ft16 = np.mean(matrix_ft16)
|
||||
simi_max_ft16 = np.max(matrix_ft16)
|
||||
stdfeatm_ft16 = np.mean(stdfeat_ft16, axis=0, keepdims=True)
|
||||
evtfeatm_ft16 = np.mean(evtfeat_ft16, axis=0, keepdims=True)
|
||||
simi_mfeat_ft16 = 1- np.maximum(0.0, cdist(stdfeatm_ft16, evtfeatm_ft16, 'cosine'))
|
||||
rltdata_ft16 = [label, stdbcd, evt, simi_mean_ft16, simi_max_ft16, simi_mfeat_ft16[0,0]]
|
||||
|
||||
'''****************** uint8 is ok!!!!!! ******************'''
|
||||
##=================================================================== uint8
|
||||
# stdfeat_uint8, stdfeat_ft16_ = ft16_to_uint8(stdfeat_ft16)
|
||||
# evtfeat_uint8, evtfeat_ft16_ = ft16_to_uint8(evtfeat_ft16)
|
||||
|
||||
stdfeat_uint8 = (stdfeat_ft16*128).astype(np.int8)
|
||||
evtfeat_uint8 = (evtfeat_ft16*128).astype(np.int8)
|
||||
stdfeat_ft16_ = stdfeat_uint8.astype(np.float16)/128
|
||||
evtfeat_ft16_ = evtfeat_uint8.astype(np.float16)/128
|
||||
|
||||
absdiff = np.linalg.norm(stdfeat_ft16_ - stdfeat) / stdfeat.size
|
||||
|
||||
matrix_ft16_ = 1 - cdist(stdfeat_ft16_, evtfeat_ft16_, 'cosine')
|
||||
simi_mean_ft16_ = np.mean(matrix_ft16_)
|
||||
simi_max_ft16_ = np.max(matrix_ft16_)
|
||||
stdfeatm_ft16_ = np.mean(stdfeat_ft16_, axis=0, keepdims=True)
|
||||
evtfeatm_ft16_ = np.mean(evtfeat_ft16_, axis=0, keepdims=True)
|
||||
simi_mfeat_ft16_ = 1- np.maximum(0.0, cdist(stdfeatm_ft16_, evtfeatm_ft16_, 'cosine'))
|
||||
rltdata_ft16_ = [label, stdbcd, evt, simi_mean_ft16_, simi_max_ft16_, simi_mfeat_ft16_[0,0]]
|
||||
|
||||
if not save:
|
||||
return
|
||||
|
||||
|
||||
##========================================================= save as float32
|
||||
rppath = os.path.join(similPath, f'{evt}_ft32.pickle')
|
||||
with open(rppath, 'wb') as f:
|
||||
pickle.dump(rltdata, f)
|
||||
|
||||
rtpath = os.path.join(similPath, f'{evt}_ft32.txt')
|
||||
with open(rtpath, 'w', encoding='utf-8') as f:
|
||||
for result in rltdata:
|
||||
part = [f"{x:.3f}" if isinstance(x, float) else str(x) for x in result]
|
||||
line = ', '.join(part)
|
||||
f.write(line + '\n')
|
||||
|
||||
|
||||
##========================================================= save as float16
|
||||
rppath_ft16 = os.path.join(similPath, f'{evt}_ft16.pickle')
|
||||
with open(rppath_ft16, 'wb') as f:
|
||||
pickle.dump(rltdata_ft16, f)
|
||||
|
||||
rtpath_ft16 = os.path.join(similPath, f'{evt}_ft16.txt')
|
||||
with open(rtpath_ft16, 'w', encoding='utf-8') as f:
|
||||
for result in rltdata_ft16:
|
||||
part = [f"{x:.3f}" if isinstance(x, float) else str(x) for x in result]
|
||||
line = ', '.join(part)
|
||||
f.write(line + '\n')
|
||||
|
||||
|
||||
##=========================================================== save as uint8
|
||||
rppath_uint8 = os.path.join(similPath, f'{evt}_uint8.pickle')
|
||||
with open(rppath_uint8, 'wb') as f:
|
||||
pickle.dump(rltdata_ft16_, f)
|
||||
|
||||
rtpath_uint8 = os.path.join(similPath, f'{evt}_uint8.txt')
|
||||
with open(rtpath_uint8, 'w', encoding='utf-8') as f:
|
||||
for result in rltdata_ft16_:
|
||||
part = [f"{x:.3f}" if isinstance(x, float) else str(x) for x in result]
|
||||
line = ', '.join(part)
|
||||
f.write(line + '\n')
|
@ -5,18 +5,30 @@ Created on Tue Nov 26 17:35:05 2024
|
||||
@author: ym
|
||||
"""
|
||||
import os
|
||||
import sys
|
||||
import cv2
|
||||
import pickle
|
||||
import numpy as np
|
||||
from pathlib import Path
|
||||
|
||||
import sys
|
||||
sys.path.append(r"D:\DetectTracking")
|
||||
FILE = Path(__file__).resolve()
|
||||
ROOT = FILE.parents[2] # YOLOv5 root directory
|
||||
if str(ROOT) not in sys.path:
|
||||
sys.path.append(str(ROOT))
|
||||
|
||||
from tracking.utils.plotting import Annotator, colors
|
||||
from tracking.utils.drawtracks import drawTrack
|
||||
from tracking.utils.read_data import extract_data, read_tracking_output, read_similar
|
||||
from tracking.utils.read_data import extract_data_realtime, read_tracking_output_realtime
|
||||
|
||||
|
||||
|
||||
|
||||
# import platform
|
||||
# import pathlib
|
||||
# plt = platform.system()
|
||||
|
||||
|
||||
IMG_FORMAT = ['.bmp', '.jpg', '.jpeg', '.png']
|
||||
VID_FORMAT = ['.mp4', '.avi']
|
||||
|
||||
@ -76,7 +88,11 @@ def array2list(bboxes):
|
||||
|
||||
class ShoppingEvent:
|
||||
def __init__(self, eventpath, stype="data"):
|
||||
'''stype: str, 'source', 'data', 'realtime', 共三种 '''
|
||||
'''stype: str, 'source', 'data', 'realtime', 共三种
|
||||
source: 前后摄视频经 pipeline 生成的文件
|
||||
data: 基于事件切分的原 data 文件版本
|
||||
realtime: 全实时生成的 data 文件
|
||||
'''
|
||||
|
||||
self.eventpath = eventpath
|
||||
self.evtname = str(Path(eventpath).stem)
|
||||
@ -166,7 +182,9 @@ class ShoppingEvent:
|
||||
return kdata, outdata
|
||||
|
||||
|
||||
def from_source_pkl(self, eventpath):
|
||||
def from_source_pkl(self, eventpath):
|
||||
# if plt == 'Windows':
|
||||
# pathlib.PosixPath = pathlib.WindowsPath
|
||||
with open(eventpath, 'rb') as f:
|
||||
ShoppingDict = pickle.load(f)
|
||||
|
||||
@ -296,13 +314,13 @@ class ShoppingEvent:
|
||||
self.front_feats = tracking_output_feats
|
||||
|
||||
def from_realtime_datafile(self, eventpath):
|
||||
# evtList = self.evtname.split('_')
|
||||
# if len(evtList)>=2 and len(evtList[-1])>=10 and evtList[-1].isdigit():
|
||||
# self.barcode = evtList[-1]
|
||||
# if len(evtList)==3 and evtList[-1]== evtList[-2]:
|
||||
# self.evtType = 'input'
|
||||
# else:
|
||||
# self.evtType = 'other'
|
||||
evtList = self.evtname.split('_')
|
||||
if len(evtList)>=2 and len(evtList[-1])>=10 and evtList[-1].isdigit():
|
||||
self.barcode = evtList[-1]
|
||||
if len(evtList)==3 and evtList[-1]== evtList[-2]:
|
||||
self.evtType = 'input'
|
||||
else:
|
||||
self.evtType = 'other'
|
||||
|
||||
'''================ path of video ============='''
|
||||
for vidname in os.listdir(eventpath):
|
||||
@ -330,7 +348,7 @@ class ShoppingEvent:
|
||||
if not os.path.isfile(datapath): continue
|
||||
CamerType = dataname.split('_')[0]
|
||||
'''========== 0/1_track.data =========='''
|
||||
if dataname.find("_track.data")>0:
|
||||
if dataname.find("_tracker.data")>0:
|
||||
trackerboxes, trackerfeats = extract_data_realtime(datapath)
|
||||
if CamerType == '0':
|
||||
self.back_trackerboxes = trackerboxes
|
||||
|
@ -4,8 +4,81 @@ Created on Thu Oct 31 15:17:01 2024
|
||||
|
||||
@author: ym
|
||||
"""
|
||||
import os
|
||||
import numpy as np
|
||||
import pickle
|
||||
from pathlib import Path
|
||||
import matplotlib.pyplot as plt
|
||||
from .event import ShoppingEvent
|
||||
|
||||
def init_eventDict(sourcePath, eventDataPath, stype="data"):
|
||||
'''
|
||||
stype: str,
|
||||
'source': 由 videos 或 images 生成的 pickle 文件
|
||||
'data': 从 data 文件中读取的现场运行数据
|
||||
"realtime": 全实时数据,从 data 文件中读取的现场运行数据
|
||||
|
||||
sourcePath:事件文件夹,事件类型包含2种:
|
||||
(1) pipeline生成的 pickle 文件
|
||||
(2) 直接采集的事件文件夹
|
||||
'''
|
||||
k, errEvents = 0, []
|
||||
for evtname in os.listdir(sourcePath):
|
||||
bname, ext = os.path.splitext(evtname)
|
||||
source_path = os.path.join(sourcePath, evtname)
|
||||
|
||||
if stype=="source" and ext not in ['.pkl', '.pickle']: continue
|
||||
if stype=="data" and os.path.isfile(source_path): continue
|
||||
if stype=="realtime" and os.path.isfile(source_path): continue
|
||||
|
||||
evt = bname.split('_')
|
||||
condt = len(evt)>=2 and evt[-1].isdigit() and len(evt[-1])>=10
|
||||
if not condt: continue
|
||||
|
||||
pickpath = os.path.join(eventDataPath, f"{bname}.pickle")
|
||||
if os.path.isfile(pickpath): continue
|
||||
|
||||
# event = ShoppingEvent(source_path, stype)
|
||||
try:
|
||||
event = ShoppingEvent(source_path, stype)
|
||||
with open(pickpath, 'wb') as f:
|
||||
pickle.dump(event, f)
|
||||
print(evtname)
|
||||
except Exception as e:
|
||||
errEvents.append(source_path)
|
||||
print(f"Error: {evtname}, {e}")
|
||||
# k += 1
|
||||
# if k==1:
|
||||
# break
|
||||
|
||||
errfile = Path(eventDataPath).parent / 'error_events.txt'
|
||||
with open(str(errfile), 'a', encoding='utf-8') as f:
|
||||
for line in errEvents:
|
||||
f.write(line + '\n')
|
||||
|
||||
|
||||
def get_evtList(evtpath):
|
||||
'''==== 0. 生成事件列表和对应的 Barcodes 集合 ==========='''
|
||||
bcdList, evtpaths = [], []
|
||||
for evtname in os.listdir(evtpath):
|
||||
bname, ext = os.path.splitext(evtname)
|
||||
|
||||
## 处理事件的两种情况:文件夹 和 Yolo-Resnet-Tracker 的输出
|
||||
fpath = os.path.join(evtpath, evtname)
|
||||
if os.path.isfile(fpath) and (ext==".pkl" or ext==".pickle"):
|
||||
evt = bname.split('_')
|
||||
elif os.path.isdir(fpath):
|
||||
evt = evtname.split('_')
|
||||
else:
|
||||
continue
|
||||
|
||||
if len(evt)>=2 and evt[-1].isdigit() and len(evt[-1])>=10:
|
||||
bcdList.append(evt[-1])
|
||||
evtpaths.append(fpath)
|
||||
|
||||
bcdSet = set(bcdList)
|
||||
|
||||
return evtpaths, bcdSet
|
||||
|
||||
|
||||
|
||||
|
72
dataset/multi-trajs.py
Normal file
72
dataset/multi-trajs.py
Normal file
@ -0,0 +1,72 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
"""
|
||||
Created on Mon Mar 10 09:33:35 2025
|
||||
基准数据集筛选,选取tracking输出多个轨迹的事件
|
||||
|
||||
@author: ym
|
||||
"""
|
||||
import os
|
||||
import numpy as np
|
||||
|
||||
import sys
|
||||
sys.path.append(r"D:\DetectTracking")
|
||||
from tracking.utils.read_data import extract_data, read_tracking_output_realtime
|
||||
|
||||
|
||||
def get_multitraj_file(spath, pattern):
|
||||
multi_traj_events = []
|
||||
n = 0
|
||||
for evtname in os.listdir(spath):
|
||||
name, ext = os.path.splitext(evtname)
|
||||
eventpath = os.path.join(spath, evtname)
|
||||
|
||||
evt = name.split('_')
|
||||
condt = len(evt)>=2 and evt[-1].isdigit() and len(evt[-1])>=8
|
||||
if not condt: continue
|
||||
if not os.path.isdir(eventpath): continue
|
||||
|
||||
trackingboxes = []
|
||||
for dataname in os.listdir(eventpath):
|
||||
if os.path.splitext(dataname)[-1] in [".jpg", ".png"]:
|
||||
continue
|
||||
|
||||
datapath = os.path.join(eventpath, dataname)
|
||||
if not os.path.isfile(datapath): continue
|
||||
CamerType = dataname.split('_')[0]
|
||||
|
||||
if pattern=="realtime" and dataname.find("_tracking_output.data")>0:
|
||||
trackingboxes, trackingfeats, tracking_outboxes, tracking_outfeats = read_tracking_output_realtime(datapath)
|
||||
if pattern=="evtsplit" and dataname.find("_track.data")>0:
|
||||
bboxes, ffeats, trackerboxes, trackerfeats, trackingboxes, trackingfeats = extract_data(datapath)
|
||||
|
||||
if len(trackingboxes)>=2:
|
||||
multi_traj_events.append(evtname)
|
||||
n += 1
|
||||
print(f"{n}: {evtname}")
|
||||
break
|
||||
|
||||
|
||||
multi_traj_file = os.path.join(spath, "multi_traj_file.txt")
|
||||
with open(multi_traj_file, "w") as file:
|
||||
for item in multi_traj_events:
|
||||
file.write(item + "\n")
|
||||
|
||||
def main():
|
||||
spaths = [r"\\192.168.1.28\share\测试视频数据以及日志\各模块测试记录\比对测试\1212",
|
||||
r"\\192.168.1.28\share\测试视频数据以及日志\各模块测试记录\比对测试\1216",
|
||||
r"\\192.168.1.28\share\测试视频数据以及日志\各模块测试记录\比对测试\1218",
|
||||
r"\\192.168.1.28\share\测试视频数据以及日志\各模块测试记录\比对测试\202412"
|
||||
]
|
||||
|
||||
pattern = "evtsplit" # realtime # 全实时版、事件切分版数据读取方式
|
||||
for spath in spaths:
|
||||
get_multitraj_file(spath, pattern)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
41
execute_pipeline.py
Normal file
41
execute_pipeline.py
Normal file
@ -0,0 +1,41 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
"""
|
||||
Created on Fri Mar 28 11:35:28 2025
|
||||
|
||||
@author: ym
|
||||
"""
|
||||
|
||||
from pipeline import execute_pipeline
|
||||
|
||||
|
||||
def execute(datapath, savepath_v5, savepath_v10):
|
||||
execute_pipeline(evtdir = datapath,
|
||||
DataType = "raw", # raw, pkl
|
||||
kk=None,
|
||||
source_type = "video", # video, image,
|
||||
save_path = savepath_v5,
|
||||
yolo_ver = "V5", # V10, V5
|
||||
weight_yolo_v5 = r'./ckpts/best_cls10_0906.pt' ,
|
||||
weight_yolo_v10 = r'./ckpts/best_v10s_width0375_1205.pt',
|
||||
saveimages = False
|
||||
)
|
||||
execute_pipeline(evtdir = datapath,
|
||||
DataType = "raw", # raw, pkl
|
||||
kk=None,
|
||||
source_type = "video", # video, image,
|
||||
save_path = savepath_v10,
|
||||
yolo_ver = "V10", # V10, V5
|
||||
weight_yolo_v5 = r'./ckpts/best_cls10_0906.pt' ,
|
||||
weight_yolo_v10 = r'./ckpts/best_v10s_width0375_1205.pt',
|
||||
saveimages = False
|
||||
)
|
||||
|
||||
datapath = r'/home/wqg/dataset/test_dataset/base_dataset/single_event/source/'
|
||||
savepath_v5 = r'/home/wqg/dataset/pipeline/contrast/single_event_V5'
|
||||
savepath_v10 = r'/home/wqg/dataset/pipeline/contrast/single_event_V10'
|
||||
execute(datapath, savepath_v5, savepath_v10)
|
||||
|
||||
datapath = r'/home/wqg/dataset/test_performence_dataset/'
|
||||
savepath_v5 = r'/home/wqg/dataset/pipeline/contrast/performence_V5'
|
||||
savepath_v10 = r'/home/wqg/dataset/pipeline/contrast/performence_V10'
|
||||
execute(datapath, savepath_v5, savepath_v10)
|
BIN
hands/__pycache__/hand_inference.cpython-312.pyc
Normal file
BIN
hands/__pycache__/hand_inference.cpython-312.pyc
Normal file
Binary file not shown.
127
imgs_to_video.py
Normal file
127
imgs_to_video.py
Normal file
@ -0,0 +1,127 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
"""
|
||||
Created on Tue Jan 30 19:15:05 2024
|
||||
|
||||
@author: ym
|
||||
"""
|
||||
import cv2
|
||||
import os
|
||||
import glob
|
||||
IMG_FORMATS = "bmp", "dng", "jpeg", "jpg", "mpo", "png", "tif", "tiff", "webp", "pfm" # include image suffixes
|
||||
VID_FORMATS = "asf", "avi", "gif", "m4v", "mkv", "mov", "mp4", "mpeg", "mpg", "ts", "wmv" # include video suffixes
|
||||
|
||||
|
||||
def for_test():
|
||||
save_path = video_path + img_path
|
||||
|
||||
fps, w, h = 10, 1024, 1280
|
||||
cap = cv2.VideoWriter(save_path, cv2.VideoWriter_fourcc(*'mp4v'), fps, (w, h))
|
||||
|
||||
pathx = path + img_path
|
||||
imgfiles = [f for f in os.listdir(pathx) if not f.find("_cut") != -1]
|
||||
|
||||
imgfiles.sort(key = lambda x: int(x[:-5]))
|
||||
imgpaths = []
|
||||
for imgfile in imgfiles:
|
||||
imgpaths.append(os.path.join(pathx, imgfile))
|
||||
|
||||
center = (1280/2, 1024/2)
|
||||
rotate_matrix = cv2.getRotationMatrix2D(center=center, angle=-90, scale=1)
|
||||
k = 0
|
||||
for ipath in imgpaths:
|
||||
img = cv2.imread(ipath)
|
||||
rotated_image = cv2.warpAffine(src=img, M=rotate_matrix, dsize=(w, h))
|
||||
cap.write(rotated_image)
|
||||
print("Have imgs")
|
||||
|
||||
def test_1():
|
||||
|
||||
# name = os.path.split(img_path)[-1]
|
||||
# save_path = video_path + name + '.mp4'
|
||||
|
||||
save_path = video_path + img_path
|
||||
|
||||
|
||||
|
||||
fps, w, h = 10, 1024, 1280
|
||||
cap = cv2.VideoWriter(save_path, cv2.VideoWriter_fourcc(*'mp4v'), fps, (w, h))
|
||||
|
||||
pathx = path + img_path
|
||||
imgfiles = [f for f in os.listdir(pathx) if not f.find("_cut") != -1]
|
||||
|
||||
imgfiles.sort(key = lambda x: int(x[:-5]))
|
||||
imgpaths = []
|
||||
for imgfile in imgfiles:
|
||||
imgpaths.append(os.path.join(pathx, imgfile))
|
||||
|
||||
|
||||
|
||||
|
||||
# ipaths = [os.path.join(pathx, f) for f in os.listdir(pathx) if not f.find("_cut") != -1]
|
||||
# ipaths = []
|
||||
# for f in os.listdir(pathx):
|
||||
# if not f.find('_cut'):
|
||||
# ipaths.append(os.path.join(pathx, f))
|
||||
# ipaths.sort(key = lambda x: int(x.split('_')[-2]))
|
||||
|
||||
|
||||
k = 0
|
||||
for ipath in imgpaths:
|
||||
img = cv2.imread(ipath)
|
||||
cap.write(img)
|
||||
|
||||
|
||||
k += 1
|
||||
|
||||
cap.release()
|
||||
|
||||
print(img_path + f" have imgs: {k}")
|
||||
|
||||
def img2video(imgpath):
|
||||
if not os.path.isdir(imgpath):
|
||||
return
|
||||
|
||||
files = []
|
||||
files.extend(sorted(glob.glob(os.path.join(imgpath, "*.*"))))
|
||||
images = [x for x in files if x.split(".")[-1].lower() in IMG_FORMATS]
|
||||
|
||||
h, w = cv2.imread(images[0]).shape[:2]
|
||||
fps = 25
|
||||
|
||||
vidpath = imgpath + '.mp4'
|
||||
cap = cv2.VideoWriter(vidpath, cv2.VideoWriter_fourcc(*'mp4v'), fps, (w, h))
|
||||
for p in images:
|
||||
img = cv2.imread(p)
|
||||
cap.write(img)
|
||||
cap.release()
|
||||
|
||||
|
||||
def main():
|
||||
imgpath = r"D:\work\result\202503251112_v10s_result"
|
||||
|
||||
img2video(imgpath)
|
||||
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
BIN
models/__pycache__/__init__.cpython-312.pyc
Normal file
BIN
models/__pycache__/__init__.cpython-312.pyc
Normal file
Binary file not shown.
BIN
models/__pycache__/common.cpython-312.pyc
Normal file
BIN
models/__pycache__/common.cpython-312.pyc
Normal file
Binary file not shown.
BIN
models/__pycache__/experimental.cpython-312.pyc
Normal file
BIN
models/__pycache__/experimental.cpython-312.pyc
Normal file
Binary file not shown.
Binary file not shown.
BIN
models/__pycache__/yolo.cpython-312.pyc
Normal file
BIN
models/__pycache__/yolo.cpython-312.pyc
Normal file
Binary file not shown.
@ -76,7 +76,11 @@ def attempt_load(weights, device=None, inplace=True, fuse=True):
|
||||
|
||||
model = Ensemble()
|
||||
for w in weights if isinstance(weights, list) else [weights]:
|
||||
ckpt = torch.load(attempt_download(w), map_location=device) # load
|
||||
if torch.__version__ >= '2.6':
|
||||
ckpt = torch.load(attempt_download(w), map_location=device, weights_only=False) # load
|
||||
else:
|
||||
ckpt = torch.load(attempt_download(w), map_location=device)
|
||||
|
||||
ckpt = (ckpt.get('ema') or ckpt['model']).to(device).float() # FP32 model
|
||||
|
||||
# Model compatibility updates
|
||||
|
415
pipeline.py
415
pipeline.py
@ -10,7 +10,8 @@ import cv2
|
||||
import pickle
|
||||
import numpy as np
|
||||
from pathlib import Path
|
||||
from track_reid import yolo_resnet_tracker
|
||||
from scipy.spatial.distance import cdist
|
||||
from track_reid import yolo_resnet_tracker, yolov10_resnet_tracker
|
||||
|
||||
from tracking.dotrack.dotracks_back import doBackTracks
|
||||
from tracking.dotrack.dotracks_front import doFrontTracks
|
||||
@ -19,76 +20,217 @@ from utils.getsource import get_image_pairs, get_video_pairs
|
||||
from tracking.utils.read_data import read_similar
|
||||
|
||||
|
||||
def save_subimgs(imgdict, boxes, spath, ctype):
|
||||
def save_subimgs(imgdict, boxes, spath, ctype, featdict = None):
|
||||
'''
|
||||
当前 box 特征和该轨迹前一个 box 特征的相似度,可用于和跟踪序列中的相似度进行比较
|
||||
'''
|
||||
boxes = boxes[np.argsort(boxes[:, 7])]
|
||||
for i in range(len(boxes)):
|
||||
fid, bid = int(boxes[i, 7]), int(boxes[i, 8])
|
||||
if f"{fid}_{bid}" in imgdict.keys():
|
||||
img = imgdict[f"{fid}_{bid}"]
|
||||
imgpath = spath / f"{ctype}_{fid}_{bid}.png"
|
||||
cv2.imwrite(imgpath, img)
|
||||
simi = None
|
||||
tid, fid, bid = int(boxes[i, 4]), int(boxes[i, 7]), int(boxes[i, 8])
|
||||
|
||||
if i>0:
|
||||
_, fid0, bid0 = int(boxes[i-1, 4]), int(boxes[i-1, 7]), int(boxes[i-1, 8])
|
||||
if f"{fid0}_{bid0}" in featdict.keys() and f"{fid}_{bid}" in featdict.keys():
|
||||
feat0 = featdict[f"{fid0}_{bid0}"]
|
||||
feat1 = featdict[f"{fid}_{bid}"]
|
||||
simi = 1 - np.maximum(0.0, cdist(feat0[None, :], feat1[None, :], "cosine"))[0][0]
|
||||
|
||||
img = imgdict[f"{fid}_{bid}"]
|
||||
imgpath = spath / f"{ctype}_tid{tid}-{fid}-{bid}.png"
|
||||
if simi is not None:
|
||||
imgpath = spath / f"{ctype}_tid{tid}-{fid}-{bid}_sim{simi:.2f}.png"
|
||||
|
||||
cv2.imwrite(imgpath, img)
|
||||
|
||||
|
||||
def save_subimgs_1(imgdict, boxes, spath, ctype, simidict = None):
|
||||
'''
|
||||
当前 box 特征和该轨迹 smooth_feat 特征的相似度, yolo_resnet_tracker 函数中,
|
||||
采用该方式记录特征相似度
|
||||
'''
|
||||
for i in range(len(boxes)):
|
||||
tid, fid, bid = int(boxes[i, 4]), int(boxes[i, 7]), int(boxes[i, 8])
|
||||
|
||||
key = f"{fid}_{bid}"
|
||||
img = imgdict[key]
|
||||
imgpath = spath / f"{ctype}_tid{tid}-{fid}-{bid}.png"
|
||||
if simidict is not None and key in simidict.keys():
|
||||
imgpath = spath / f"{ctype}_tid{tid}-{fid}-{bid}_sim{simidict[key]:.2f}.png"
|
||||
|
||||
cv2.imwrite(imgpath, img)
|
||||
|
||||
def show_result(event_tracks, yrtDict, savepath_pipe):
|
||||
'''保存 Tracking 输出的运动轨迹子图,并记录相似度'''
|
||||
|
||||
savepath_pipe_subimgs = savepath_pipe / Path("subimgs")
|
||||
if not savepath_pipe_subimgs.exists():
|
||||
savepath_pipe_subimgs.mkdir(parents=True, exist_ok=True)
|
||||
|
||||
|
||||
|
||||
|
||||
for CamerType, vts in event_tracks:
|
||||
if len(vts.tracks)==0: continue
|
||||
if CamerType == 'front':
|
||||
# yolos = ShoppingDict["frontCamera"]["yoloResnetTracker"]
|
||||
|
||||
yolos = yrtDict["frontyrt"]
|
||||
ctype = 1
|
||||
if CamerType == 'back':
|
||||
# yolos = ShoppingDict["backCamera"]["yoloResnetTracker"]
|
||||
|
||||
yolos = yrtDict["backyrt"]
|
||||
ctype = 0
|
||||
|
||||
imgdict, featdict, simidict = {}, {}, {}
|
||||
for y in yolos:
|
||||
imgdict.update(y["imgs"])
|
||||
featdict.update(y["feats"])
|
||||
simidict.update(y["featsimi"])
|
||||
|
||||
for track in vts.Residual:
|
||||
if isinstance(track, np.ndarray):
|
||||
save_subimgs(imgdict, track, savepath_pipe_subimgs, ctype, featdict)
|
||||
else:
|
||||
save_subimgs(imgdict, track.slt_boxes, savepath_pipe_subimgs, ctype, featdict)
|
||||
|
||||
'''(3) 轨迹显示与保存'''
|
||||
illus = [None, None]
|
||||
for CamerType, vts in event_tracks:
|
||||
if len(vts.tracks)==0: continue
|
||||
|
||||
if CamerType == 'front':
|
||||
edgeline = cv2.imread("./tracking/shopcart/cart_tempt/board_ftmp_line.png")
|
||||
|
||||
h, w = edgeline.shape[:2]
|
||||
# nh, nw = h//2, w//2
|
||||
# edgeline = cv2.resize(edgeline, (nw, nh), interpolation=cv2.INTER_AREA)
|
||||
|
||||
img_tracking = draw_all_trajectories(vts, edgeline, savepath_pipe, CamerType, draw5p=True)
|
||||
illus[0] = img_tracking
|
||||
|
||||
plt = plot_frameID_y2(vts)
|
||||
plt.savefig(os.path.join(savepath_pipe, "front_y2.png"))
|
||||
|
||||
if CamerType == 'back':
|
||||
edgeline = cv2.imread("./tracking/shopcart/cart_tempt/edgeline.png")
|
||||
|
||||
h, w = edgeline.shape[:2]
|
||||
# nh, nw = h//2, w//2
|
||||
# edgeline = cv2.resize(edgeline, (nw, nh), interpolation=cv2.INTER_AREA)
|
||||
|
||||
img_tracking = draw_all_trajectories(vts, edgeline, savepath_pipe, CamerType, draw5p=True)
|
||||
illus[1] = img_tracking
|
||||
|
||||
illus = [im for im in illus if im is not None]
|
||||
if len(illus):
|
||||
img_cat = np.concatenate(illus, axis = 1)
|
||||
if len(illus)==2:
|
||||
H, W = img_cat.shape[:2]
|
||||
cv2.line(img_cat, (int(W/2), 0), (int(W/2), int(H)), (128, 128, 255), 3)
|
||||
|
||||
trajpath = os.path.join(savepath_pipe, "trajectory.png")
|
||||
cv2.imwrite(trajpath, img_cat)
|
||||
|
||||
|
||||
|
||||
|
||||
def pipeline(
|
||||
eventpath,
|
||||
savepath,
|
||||
SourceType,
|
||||
weights
|
||||
):
|
||||
'''
|
||||
eventpath: 单个事件的存储路径
|
||||
|
||||
'''
|
||||
|
||||
if SourceType == "video":
|
||||
vpaths = get_video_pairs(eventpath)
|
||||
elif SourceType == "image":
|
||||
vpaths = get_image_pairs(eventpath)
|
||||
|
||||
optdict = {}
|
||||
optdict["weights"] = weights
|
||||
def pipeline(eventpath,
|
||||
SourceType,
|
||||
weights,
|
||||
DataType = "raw", #raw, pkl: images or videos, pkl, pickle file
|
||||
YoloVersion="V5",
|
||||
savepath = None,
|
||||
saveimages = True
|
||||
):
|
||||
|
||||
|
||||
event_tracks = []
|
||||
|
||||
## 构造购物事件字典
|
||||
evtname = Path(eventpath).stem
|
||||
barcode = evtname.split('_')[-1] if len(evtname.split('_'))>=2 \
|
||||
and len(evtname.split('_')[-1])>=8 \
|
||||
and evtname.split('_')[-1].isdigit() else ''
|
||||
'''事件结果存储文件夹'''
|
||||
|
||||
'''事件结果存储文件夹: savepath_pipe, savepath_pkl'''
|
||||
if not savepath:
|
||||
savepath = Path(__file__).resolve().parents[0] / "events_result"
|
||||
savepath_pipe = Path(savepath) / Path("yolos_tracking") / evtname
|
||||
|
||||
savepath_pipeline = Path(savepath) / Path("Yolos_Tracking") / evtname
|
||||
|
||||
savepath_pkl = Path(savepath) / "shopping_pkl"
|
||||
if not savepath_pkl.exists():
|
||||
savepath_pkl.mkdir(parents=True, exist_ok=True)
|
||||
pklpath = Path(savepath_pkl) / Path(str(evtname)+".pickle")
|
||||
|
||||
"""ShoppingDict pickle 文件保存地址 """
|
||||
savepath_spdict = Path(savepath) / "ShoppingDict_pkfile"
|
||||
if not savepath_spdict.exists():
|
||||
savepath_spdict.mkdir(parents=True, exist_ok=True)
|
||||
pf_path = Path(savepath_spdict) / Path(str(evtname)+".pickle")
|
||||
|
||||
|
||||
yrt_out = []
|
||||
if DataType == "raw":
|
||||
### 不重复执行已经过yolo-resnet-tracker
|
||||
if pklpath.exists():
|
||||
print(f"Pickle file have saved: {evtname}.pickle")
|
||||
return
|
||||
|
||||
# if pf_path.exists():
|
||||
# return
|
||||
if SourceType == "video":
|
||||
vpaths = get_video_pairs(eventpath)
|
||||
elif SourceType == "image":
|
||||
vpaths = get_image_pairs(eventpath)
|
||||
|
||||
|
||||
|
||||
for vpath in vpaths:
|
||||
'''================= 2. 事件结果存储文件夹 ================='''
|
||||
|
||||
|
||||
if isinstance(vpath, list):
|
||||
savepath_pipe_imgs = savepath_pipe / Path("images")
|
||||
else:
|
||||
savepath_pipe_imgs = savepath_pipe / Path(str(Path(vpath).stem))
|
||||
|
||||
if not savepath_pipe_imgs.exists():
|
||||
savepath_pipe_imgs.mkdir(parents=True, exist_ok=True)
|
||||
|
||||
optdict = {}
|
||||
optdict["weights"] = weights
|
||||
optdict["source"] = vpath
|
||||
optdict["save_dir"] = savepath_pipe_imgs
|
||||
optdict["is_save_img"] = saveimages
|
||||
optdict["is_save_video"] = True
|
||||
|
||||
|
||||
if YoloVersion == "V5":
|
||||
yrtOut = yolo_resnet_tracker(**optdict)
|
||||
elif YoloVersion == "V10":
|
||||
yrtOut = yolov10_resnet_tracker(**optdict)
|
||||
|
||||
yrt_out.append((vpath, yrtOut))
|
||||
|
||||
elif DataType == "pkl":
|
||||
pass
|
||||
|
||||
else:
|
||||
return
|
||||
|
||||
|
||||
|
||||
'''====================== 构造 ShoppingDict 模块 ======================='''
|
||||
ShoppingDict = {"eventPath": eventpath,
|
||||
"eventName": evtname,
|
||||
"barcode": barcode,
|
||||
"eventType": '', # "input", "output", "other"
|
||||
"frontCamera": {},
|
||||
"backCamera": {},
|
||||
"one2n": []
|
||||
"one2n": [] #
|
||||
}
|
||||
|
||||
|
||||
procpath = Path(eventpath).joinpath('process.data')
|
||||
if procpath.is_file():
|
||||
SimiDict = read_similar(procpath)
|
||||
ShoppingDict["one2n"] = SimiDict['one2n']
|
||||
|
||||
|
||||
for vpath in vpaths:
|
||||
'''相机事件字典构造'''
|
||||
yrtDict = {}
|
||||
event_tracks = []
|
||||
for vpath, yrtOut in yrt_out:
|
||||
'''================= 1. 构造相机事件字典 ================='''
|
||||
CameraEvent = {"cameraType": '', # "front", "back"
|
||||
"videoPath": '',
|
||||
"imagePaths": [],
|
||||
@ -101,52 +243,45 @@ def pipeline(
|
||||
bname = os.path.basename(vpath[0])
|
||||
if not isinstance(vpath, list):
|
||||
CameraEvent["videoPath"] = vpath
|
||||
bname = os.path.basename(vpath)
|
||||
bname = os.path.basename(vpath).split('.')[0]
|
||||
if bname.split('_')[0] == "0" or bname.find('back')>=0:
|
||||
CameraEvent["cameraType"] = "back"
|
||||
if bname.split('_')[0] == "1" or bname.find('front')>=0:
|
||||
CameraEvent["cameraType"] = "front"
|
||||
|
||||
'''事件结果存储文件夹'''
|
||||
|
||||
if isinstance(vpath, list):
|
||||
savepath_pipeline_imgs = savepath_pipeline / Path("images")
|
||||
else:
|
||||
savepath_pipeline_imgs = savepath_pipeline / Path(str(Path(vpath).stem))
|
||||
if not savepath_pipeline_imgs.exists():
|
||||
savepath_pipeline_imgs.mkdir(parents=True, exist_ok=True)
|
||||
|
||||
savepath_pipeline_subimgs = savepath_pipeline / Path("subimgs")
|
||||
if not savepath_pipeline_subimgs.exists():
|
||||
savepath_pipeline_subimgs.mkdir(parents=True, exist_ok=True)
|
||||
|
||||
|
||||
'''Yolo + Resnet + Tracker'''
|
||||
optdict["source"] = vpath
|
||||
optdict["save_dir"] = savepath_pipeline_imgs
|
||||
|
||||
yrtOut = yolo_resnet_tracker(**optdict)
|
||||
|
||||
CameraEvent["yoloResnetTracker"] = yrtOut
|
||||
|
||||
|
||||
# bboxes = np.empty((0, 9), dtype = np.float32)
|
||||
# for frameDict in yrtOut:
|
||||
# bboxes = np.concatenate([bboxes, frameDict["tboxes"]], axis=0)
|
||||
|
||||
'''2种保存方式: (1) no save subimg, (2) save img'''
|
||||
###(1) save images
|
||||
yrtOut_save = []
|
||||
for frdict in yrtOut:
|
||||
fr_dict = {}
|
||||
for k, v in frdict.items():
|
||||
if k != "imgs":
|
||||
fr_dict[k]=v
|
||||
yrtOut_save.append(fr_dict)
|
||||
CameraEvent["yoloResnetTracker"] = yrtOut_save
|
||||
|
||||
###(2) no save images
|
||||
# CameraEvent["yoloResnetTracker"] = yrtOut
|
||||
|
||||
'''================= 4. tracking ================='''
|
||||
'''(1) 生成用于 tracking 模块的 boxes、feats'''
|
||||
bboxes = np.empty((0, 6), dtype=np.float64)
|
||||
trackerboxes = np.empty((0, 9), dtype=np.float64)
|
||||
trackefeats = {}
|
||||
for frameDict in yrtOut:
|
||||
tboxes = frameDict["tboxes"]
|
||||
ffeats = frameDict["feats"]
|
||||
|
||||
boxes = frameDict["bboxes"]
|
||||
bboxes = np.concatenate((bboxes, np.array(boxes)), axis=0)
|
||||
trackerboxes = np.concatenate((trackerboxes, np.array(tboxes)), axis=0)
|
||||
for i in range(len(tboxes)):
|
||||
fid, bid = int(tboxes[i, 7]), int(tboxes[i, 8])
|
||||
trackefeats.update({f"{fid}_{bid}": ffeats[f"{fid}_{bid}"]})
|
||||
|
||||
|
||||
'''tracking'''
|
||||
'''(2) tracking, 后摄'''
|
||||
if CameraEvent["cameraType"] == "back":
|
||||
vts = doBackTracks(trackerboxes, trackefeats)
|
||||
vts.classify()
|
||||
@ -155,6 +290,9 @@ def pipeline(
|
||||
CameraEvent["tracking"] = vts
|
||||
ShoppingDict["backCamera"] = CameraEvent
|
||||
|
||||
yrtDict["backyrt"] = yrtOut
|
||||
|
||||
'''(2) tracking, 前摄'''
|
||||
if CameraEvent["cameraType"] == "front":
|
||||
vts = doFrontTracks(trackerboxes, trackefeats)
|
||||
vts.classify()
|
||||
@ -162,106 +300,83 @@ def pipeline(
|
||||
|
||||
CameraEvent["tracking"] = vts
|
||||
ShoppingDict["frontCamera"] = CameraEvent
|
||||
|
||||
yrtDict["frontyrt"] = yrtOut
|
||||
|
||||
|
||||
with open(str(pf_path), 'wb') as f:
|
||||
'''========================== 保存模块 ================================='''
|
||||
# 保存 ShoppingDict
|
||||
with open(str(pklpath), 'wb') as f:
|
||||
pickle.dump(ShoppingDict, f)
|
||||
|
||||
|
||||
for CamerType, vts in event_tracks:
|
||||
if len(vts.tracks)==0: continue
|
||||
if CamerType == 'front':
|
||||
yolos = ShoppingDict["frontCamera"]["yoloResnetTracker"]
|
||||
ctype = 1
|
||||
if CamerType == 'back':
|
||||
yolos = ShoppingDict["backCamera"]["yoloResnetTracker"]
|
||||
ctype = 0
|
||||
|
||||
imgdict = {}
|
||||
for y in yolos:
|
||||
imgdict.update(y["imgs"])
|
||||
|
||||
for track in vts.Residual:
|
||||
if isinstance(track, np.ndarray):
|
||||
save_subimgs(imgdict, track, savepath_pipeline_subimgs, ctype)
|
||||
else:
|
||||
save_subimgs(imgdict, track.boxes, savepath_pipeline_subimgs, ctype)
|
||||
|
||||
|
||||
'''轨迹显示模块'''
|
||||
illus = [None, None]
|
||||
for CamerType, vts in event_tracks:
|
||||
if len(vts.tracks)==0: continue
|
||||
|
||||
if CamerType == 'front':
|
||||
edgeline = cv2.imread("./tracking/shopcart/cart_tempt/board_ftmp_line.png")
|
||||
|
||||
h, w = edgeline.shape[:2]
|
||||
# nh, nw = h//2, w//2
|
||||
# edgeline = cv2.resize(edgeline, (nw, nh), interpolation=cv2.INTER_AREA)
|
||||
|
||||
img_tracking = draw_all_trajectories(vts, edgeline, savepath_pipeline, CamerType, draw5p=True)
|
||||
illus[0] = img_tracking
|
||||
|
||||
plt = plot_frameID_y2(vts)
|
||||
plt.savefig(os.path.join(savepath_pipeline, "front_y2.png"))
|
||||
|
||||
if CamerType == 'back':
|
||||
edgeline = cv2.imread("./tracking/shopcart/cart_tempt/edgeline.png")
|
||||
|
||||
h, w = edgeline.shape[:2]
|
||||
# nh, nw = h//2, w//2
|
||||
# edgeline = cv2.resize(edgeline, (nw, nh), interpolation=cv2.INTER_AREA)
|
||||
|
||||
img_tracking = draw_all_trajectories(vts, edgeline, savepath_pipeline, CamerType, draw5p=True)
|
||||
illus[1] = img_tracking
|
||||
|
||||
illus = [im for im in illus if im is not None]
|
||||
if len(illus):
|
||||
img_cat = np.concatenate(illus, axis = 1)
|
||||
if len(illus)==2:
|
||||
H, W = img_cat.shape[:2]
|
||||
cv2.line(img_cat, (int(W/2), 0), (int(W/2), int(H)), (128, 128, 255), 3)
|
||||
|
||||
trajpath = os.path.join(savepath_pipeline, "trajectory.png")
|
||||
cv2.imwrite(trajpath, img_cat)
|
||||
# 绘制并保存轨迹图
|
||||
show_result(event_tracks, yrtDict, savepath_pipe)
|
||||
|
||||
|
||||
|
||||
def main():
|
||||
def execute_pipeline(evtdir = r"D:\datasets\ym\后台数据\unzip",
|
||||
DataType = "raw", # raw, pkl
|
||||
save_path = r"D:\work\result_pipeline",
|
||||
kk=1,
|
||||
source_type = "video", # video, image,
|
||||
yolo_ver = "V10", # V10, V5
|
||||
weight_yolo_v5 = r'./ckpts/best_cls10_0906.pt' ,
|
||||
weight_yolo_v10 = r'./ckpts/best_v10s_width0375_1205.pt',
|
||||
saveimages = True
|
||||
):
|
||||
'''
|
||||
函数:pipeline(),遍历事件文件夹,选择类型 image 或 video,
|
||||
运行函数 pipeline(),遍历事件文件夹,每个文件夹是一个事件
|
||||
'''
|
||||
|
||||
parmDict = {}
|
||||
evtdir = r"\\192.168.1.28\share\测试视频数据以及日志\算法全流程测试\202412\images"
|
||||
parmDict["SourceType"] = "video" # video, image
|
||||
parmDict["savepath"] = r"\\192.168.1.28\share\测试视频数据以及日志\算法全流程测试\202412\result"
|
||||
parmDict["weights"] = r'D:\DetectTracking\ckpts\best_cls10_0906.pt'
|
||||
parmDict["DataType"] = DataType
|
||||
parmDict["savepath"] = save_path
|
||||
parmDict["SourceType"] = source_type
|
||||
|
||||
parmDict["YoloVersion"] = yolo_ver
|
||||
if parmDict["YoloVersion"] == "V5":
|
||||
parmDict["weights"] = weight_yolo_v5
|
||||
elif parmDict["YoloVersion"] == "V10":
|
||||
parmDict["weights"] = weight_yolo_v10
|
||||
|
||||
parmDict["saveimages"] = saveimages
|
||||
|
||||
|
||||
evtdir = Path(evtdir)
|
||||
k, errEvents = 0, []
|
||||
errEvents = []
|
||||
k = 0
|
||||
for item in evtdir.iterdir():
|
||||
if item.is_dir():
|
||||
# item = evtdir/Path("20241209-160201-b97f7a0e-7322-4375-9f17-c475500097e9_6926265317292")
|
||||
# item = evtdir/Path("20241212-171505-f0afe929-fdfe-4efa-94d0-2fa748d65fbb_6907992518930")
|
||||
parmDict["eventpath"] = item
|
||||
# pipeline(**parmDict)
|
||||
pipeline(**parmDict)
|
||||
|
||||
try:
|
||||
pipeline(**parmDict)
|
||||
except Exception as e:
|
||||
errEvents.append(str(item))
|
||||
# try:
|
||||
# pipeline(**parmDict)
|
||||
# except Exception as e:
|
||||
# errEvents.append(str(item))
|
||||
|
||||
k+=1
|
||||
if k==1:
|
||||
if kk is not None and k==kk:
|
||||
break
|
||||
|
||||
errfile = os.path.join(parmDict["savepath"], f'error_events.txt')
|
||||
errfile = os.path.join(parmDict["savepath"], 'error_events.txt')
|
||||
with open(errfile, 'w', encoding='utf-8') as f:
|
||||
for line in errEvents:
|
||||
f.write(line + '\n')
|
||||
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
datapath = r'/home/wqg/dataset/test_dataset/base_dataset/single_event/source/'
|
||||
savepath = r'/home/wqg/dataset/pipeline/test_result/single_event_V10'
|
||||
|
||||
execute_pipeline(evtdir = datapath,
|
||||
DataType = "raw", # raw, pkl
|
||||
kk=1,
|
||||
source_type = "video", # video, image,
|
||||
save_path = savepath,
|
||||
yolo_ver = "V10", # V10, V5
|
||||
weight_yolo_v5 = r'./ckpts/best_cls10_0906.pt' ,
|
||||
weight_yolo_v10 = r'./ckpts/best_v10s_width0375_1205.pt',
|
||||
saveimages = False
|
||||
)
|
||||
|
||||
|
||||
|
||||
|
78
practice/6924743915817.txt
Normal file
78
practice/6924743915817.txt
Normal file
@ -0,0 +1,78 @@
|
||||
-0.012108 -0.005081 0.040924 0.003206 0.048553 0.078918 -0.036774 -0.049957 -0.034515 -0.037689 -0.058533 -0.006462 -0.106995 0.023758 0.038818 -0.146240 0.001214 -0.077209 0.063110 0.023376 -0.085205 -0.067322 0.021179 -0.015556 0.073242 0.065247 0.014977 0.067261 0.139893 0.000464 0.109802 -0.064697 -0.071045 -0.029648 -0.111511 -0.142334 -0.067627 -0.025436 0.029633 0.066040 0.053192 0.057281 0.001234 -0.017181 -0.051910 0.037964 0.043549 -0.078247 -0.048981 -0.016296 0.035248 -0.083862 -0.072876 0.003597 0.028336 -0.002398 0.107483 0.006378 0.085327 -0.035217 -0.029861 0.000131 -0.062988 0.006710 -0.008194 0.023758 -0.032501 -0.020172 0.024170 0.025360 0.094116 -0.040558 0.105408 -0.062042 0.068726 -0.050781 -0.114441 0.040497 0.053406 0.029068 -0.078308 -0.042084 -0.049103 -0.064392 -0.070618 -0.080261 0.031403 0.029037 -0.032562 -0.031403 0.043365 0.098938 0.028519 -0.054016 -0.072083 -0.052643 0.085449 -0.047882 -0.015900 0.060547 -0.052704 -0.138916 -0.129517 -0.039856 -0.011246 -0.023804 -0.018372 -0.032410 -0.050903 -0.034393 -0.084961 0.021057 0.021820 0.017853 0.013176 -0.117126 -0.067688 0.056610 0.046783 -0.013290 0.103577 -0.041260 0.044434 -0.007912 0.085876 -0.070862 0.111511 -0.028915 0.057495 0.027283 0.020248 0.067871 -0.046204 0.054626 0.028427 -0.036469 -0.026749 -0.139526 0.009445 -0.054443 -0.028671 -0.056305 0.041260 -0.093201 -0.018829 0.037628 -0.005714 -0.018143 0.051910 0.042603 0.027008 -0.056427 0.070496 -0.029129 -0.063782 -0.089355 -0.046783 0.084656 -0.038849 0.090698 0.008919 -0.104309 -0.061005 0.014610 0.047913 -0.006104 -0.095459 -0.017731 0.019455 -0.004402 0.053284 -0.088501 0.057251 -0.054047 -0.017914 0.089661 0.008621 -0.014305 0.015915 0.037170 0.038727 -0.130249 0.015274 0.054504 -0.030716 0.023438 -0.041504 -0.003704 0.158325 0.067566 0.030365 -0.024719 -0.059082 -0.025925 0.050476 -0.016632 0.097839 -0.123474 0.064148 -0.004620 -0.088013 -0.036896 0.013901 0.084900 0.010056 0.102600 -0.083862 -0.117065 -0.007828 0.041779 -0.047638 0.051605 0.071167 -0.017288 -0.054962 -0.060852 0.016983 0.039307 -0.098389 -0.041931 -0.033112 0.116821 0.057831 -0.002653 0.012817 0.169678 0.053131 0.060333 -0.107605 -0.009209 0.014893 0.039185 0.021896 -0.046570 0.000801 -0.055817 0.138062 -0.038574 -0.163208 0.069702 0.098083 -0.007362 0.064392 -0.075867 0.073425 -0.058075 -0.101746 -0.039917 -0.010178 -0.008743 -0.017105 0.078308 0.149292 0.011856 0.003960 -0.000674
|
||||
-0.063477 -0.007069 -0.005245 0.043976 0.038483 0.101135 -0.004757 -0.054932 -0.051422 -0.036133 -0.048309 0.027176 -0.103699 -0.004608 0.084229 -0.182983 0.023010 -0.036285 0.033508 0.021790 -0.074341 -0.011391 -0.040161 -0.069519 0.094604 0.004799 -0.030457 0.060059 0.128906 0.026169 0.113586 -0.018616 -0.033478 -0.038574 -0.102966 -0.098999 -0.054718 0.003244 0.031738 0.131714 0.053589 0.042694 0.039795 -0.032562 -0.111450 0.017044 0.081055 -0.019135 -0.044891 -0.014748 0.060181 -0.151001 -0.130371 -0.011879 0.079102 0.053833 0.088257 0.000039 0.068909 -0.086487 -0.038635 0.045715 -0.073547 0.018677 -0.019897 0.001243 -0.059570 0.007343 0.019928 0.029938 0.123413 -0.050232 0.097961 -0.030304 0.034943 -0.046692 -0.151978 0.010780 0.073181 -0.010277 -0.048309 -0.025406 -0.028961 0.009995 -0.071777 -0.092896 -0.025650 0.069519 -0.050781 -0.034546 0.014282 0.098694 0.007473 -0.018600 -0.077515 0.020584 0.070129 -0.044800 -0.061768 0.088379 0.033112 -0.132690 -0.062408 0.024338 -0.002018 0.040039 -0.039001 -0.032806 -0.101868 -0.029999 -0.045227 0.028305 -0.005219 -0.003819 0.008522 -0.106812 -0.018646 0.089233 0.054169 -0.016068 0.053772 -0.081543 -0.048126 -0.014633 0.053986 -0.079407 0.055664 -0.039307 0.091797 0.008270 0.032928 0.002785 -0.072266 0.042084 0.021957 -0.082275 -0.010719 -0.054108 0.020813 -0.013069 -0.023575 -0.006931 0.003746 -0.063049 0.038239 0.017975 0.008720 0.039062 0.032166 0.006096 0.000866 -0.040741 0.063049 -0.025879 -0.061676 -0.102600 -0.004028 0.120789 -0.018600 0.109070 0.042145 -0.088501 -0.085327 0.067139 0.030060 0.057587 -0.105774 -0.033752 -0.003479 -0.071960 0.054749 -0.076416 0.059082 -0.061615 -0.074402 0.011024 0.036255 0.008629 0.022537 0.035675 0.038055 -0.098755 0.017593 0.083496 -0.071899 0.078064 -0.056641 -0.000371 0.142578 0.022171 0.017471 -0.028198 -0.018631 -0.034729 -0.004997 -0.010086 0.029083 -0.144043 0.048889 0.027649 -0.043732 -0.013733 0.032166 0.059937 0.065247 0.086365 -0.082214 -0.118225 0.016159 0.026978 -0.108765 0.075317 0.073730 -0.002377 -0.029755 -0.092407 0.007515 0.040344 -0.076843 -0.001449 -0.085571 0.139893 0.066040 0.032013 0.055267 0.190674 -0.031403 0.079285 -0.110779 -0.014015 0.053802 -0.021652 0.025146 -0.032776 -0.013557 -0.074951 0.108276 -0.014259 -0.162109 0.045227 0.068787 -0.029633 0.033112 -0.031174 0.089355 -0.045166 -0.028091 -0.011375 0.008003 0.033997 -0.005348 -0.004387 0.096558 -0.032715 -0.002901 -0.027359
|
||||
-0.077576 -0.053558 0.011093 -0.053497 0.116943 -0.086792 0.075867 -0.045746 -0.000218 -0.057861 -0.091492 0.010445 -0.062073 -0.062866 -0.031174 -0.150024 0.004971 -0.061249 0.024353 0.016251 -0.026306 0.090149 -0.075073 -0.025162 0.028854 -0.065552 0.041901 0.062683 -0.053772 0.017639 0.095154 -0.059906 0.041077 0.026886 -0.126099 -0.036194 -0.080444 -0.029373 -0.018250 0.068970 0.050110 0.062134 0.103149 -0.002596 -0.033783 0.024185 0.058624 0.058197 -0.106445 -0.039825 0.000286 -0.018631 -0.162476 0.019836 0.084473 -0.012520 0.028641 -0.012932 0.034882 -0.086609 0.089172 0.019257 -0.126099 -0.003334 -0.017380 0.016800 -0.025055 -0.046173 -0.045258 -0.032166 0.094666 0.063904 0.086304 -0.051453 0.015327 -0.037659 -0.069519 0.038483 0.021698 0.001744 0.003468 0.001429 0.038605 -0.032288 -0.028336 -0.085144 0.035767 0.028961 -0.001388 -0.052643 0.046967 0.049225 0.057220 -0.093018 -0.072083 0.013733 0.040741 -0.012871 -0.076965 0.140503 0.066833 -0.099792 0.046936 -0.073730 -0.021301 0.040710 -0.017029 -0.049927 -0.005035 0.020096 0.000294 -0.059784 -0.037323 0.005112 0.043823 -0.012642 0.035919 0.067261 0.013954 -0.066895 0.121582 -0.094360 0.035980 -0.079346 0.015457 0.031250 0.072083 0.038910 -0.011421 -0.055542 -0.067932 -0.012093 -0.023499 0.056702 -0.010284 0.040283 0.030228 -0.025574 0.068359 0.013748 -0.087952 0.062195 0.037903 -0.098389 -0.057770 0.079529 -0.028214 -0.088684 -0.014153 0.002840 0.044678 -0.008965 -0.038696 0.114807 -0.026810 0.000520 -0.017410 0.119385 -0.047760 0.092590 0.002943 -0.060791 -0.084351 0.116455 0.001213 -0.007164 -0.016769 -0.080750 -0.012779 -0.105835 -0.004128 0.012833 -0.084106 -0.078552 0.003675 -0.036682 0.045868 0.074219 -0.055664 0.066711 0.042511 -0.059845 -0.023758 0.004200 -0.011436 0.053497 -0.083374 -0.007359 0.106873 -0.058624 -0.051270 -0.001504 0.010979 0.106140 -0.083496 -0.005470 0.084595 -0.136353 0.100037 -0.094055 -0.118530 0.006615 0.097168 0.061401 0.171265 0.074707 -0.022614 -0.033234 0.000768 0.073120 -0.024551 0.022461 0.069702 0.018723 0.005615 0.111572 -0.059998 0.078064 -0.063538 -0.042786 -0.008965 0.087280 0.095154 -0.046509 0.111267 -0.000310 -0.076599 -0.038605 -0.029648 -0.001067 0.084473 0.078613 -0.070251 -0.036621 0.132446 -0.080200 0.064331 -0.073547 -0.057404 -0.019928 -0.001274 -0.003666 0.029327 -0.064880 0.073303 0.033936 -0.085388 -0.101685 -0.072693 -0.088257 0.097290 -0.092285 0.058624 0.083618 -0.001839 0.002214
|
||||
0.012100 -0.017914 0.123718 0.020386 -0.031204 0.059601 0.004745 0.045532 -0.051910 0.050903 0.007015 -0.060272 -0.079895 0.067261 0.002798 -0.033691 -0.031464 -0.037476 0.046875 0.075256 -0.049957 -0.001346 -0.024292 0.040894 0.024094 -0.016800 0.035187 0.005093 0.132446 0.115784 0.070129 -0.119995 -0.085449 0.072144 -0.098999 0.043274 0.019623 -0.004848 -0.014832 0.077026 -0.052277 0.055237 0.002892 -0.105774 -0.069458 0.001369 0.058685 -0.028275 -0.055389 -0.015480 0.059052 -0.043640 -0.101868 -0.080688 -0.044342 -0.009109 -0.008865 -0.032959 0.068481 -0.051117 -0.019348 -0.023499 -0.138916 -0.102295 0.007652 -0.011314 -0.051575 -0.036560 0.055298 0.083862 0.101929 0.020950 -0.076294 -0.081787 0.109741 -0.050842 -0.087097 0.006187 0.051941 0.015976 -0.036163 -0.016998 0.029587 0.005726 0.023697 -0.046326 0.079651 0.065063 -0.151611 -0.052094 0.015587 0.095337 0.028885 -0.048798 -0.069641 -0.021301 0.038574 -0.046875 -0.023972 0.031952 -0.006630 -0.082153 -0.101685 0.034210 -0.035095 -0.043854 -0.058197 -0.015915 -0.063721 0.001738 -0.031174 -0.096436 -0.054840 -0.061920 -0.020172 -0.116699 -0.075928 0.029449 0.013954 -0.015602 -0.052979 -0.040497 0.046326 -0.042999 0.162231 -0.049103 0.120300 0.082947 0.103027 -0.014366 0.013855 0.009415 -0.058807 -0.036926 0.044830 0.072815 0.063416 -0.096802 -0.051117 -0.023209 0.076111 -0.051239 0.023956 -0.019775 -0.054108 0.034821 0.028000 0.080566 0.043732 -0.072937 -0.033112 -0.046692 -0.014893 0.013672 -0.068909 -0.118652 -0.046570 0.131836 0.126099 -0.055908 0.015121 -0.140625 -0.007050 0.114441 0.035614 -0.032074 0.054077 -0.035492 -0.003038 -0.006641 0.076782 0.022751 0.037689 -0.002945 0.016556 0.042419 -0.043335 0.028900 0.008049 -0.008308 0.033813 -0.103271 -0.049774 0.082336 -0.068909 -0.073853 -0.021469 -0.044891 0.103394 -0.012192 -0.007942 -0.004391 -0.047180 0.046204 0.131348 -0.021164 0.028107 -0.176880 -0.047241 -0.043976 -0.020782 -0.029831 -0.015900 0.046417 -0.032288 0.097290 -0.137573 -0.046753 -0.063232 0.026077 -0.061981 0.081360 0.011398 0.047455 -0.064758 -0.020905 0.150879 -0.044434 -0.077393 0.055450 -0.063232 0.017776 -0.021881 -0.032196 0.060120 0.076904 0.106079 0.037750 -0.004227 -0.052765 0.031433 -0.076721 -0.005886 -0.052094 0.068359 -0.024261 -0.073181 0.022461 -0.062378 0.032654 -0.013062 0.041748 0.039551 -0.132202 0.002626 -0.028564 -0.096252 0.089661 0.047974 -0.086060 0.008492 0.124695 0.033081 -0.086304 -0.009720 -0.081665
|
||||
-0.047424 -0.007607 0.101318 -0.001976 0.117554 -0.018417 -0.014389 0.046661 -0.090576 0.022034 -0.069885 0.004242 -0.119812 -0.069824 0.049042 -0.122742 -0.041412 -0.004848 0.093201 0.120239 -0.058502 0.025162 0.052124 0.064453 0.097229 -0.044189 0.048157 0.035828 0.075500 0.000914 0.000320 -0.031403 -0.004795 0.046814 -0.080994 0.005798 -0.108215 -0.048065 0.012489 0.035736 0.035797 0.002916 0.044556 -0.121277 -0.045837 0.017776 0.095032 -0.018875 -0.017914 -0.092041 -0.031128 0.007225 -0.136108 -0.054810 -0.021439 0.026840 0.051239 -0.031143 0.043793 -0.054443 0.000263 0.015640 -0.146729 -0.053741 -0.033508 -0.018036 -0.056580 -0.063049 -0.085327 0.058502 0.128418 -0.005367 -0.028336 -0.058533 0.126953 -0.028580 -0.074524 0.010513 -0.000984 -0.013832 -0.037323 -0.052795 0.062561 0.056244 0.045380 -0.060303 0.072327 0.044373 -0.099365 -0.080688 0.006454 0.073425 0.060059 -0.069641 -0.092529 -0.048492 0.040070 -0.031586 -0.052032 0.122314 0.001475 -0.107239 -0.066772 -0.017578 -0.058289 -0.086060 -0.102051 -0.068176 -0.052246 -0.002888 -0.000543 -0.078979 -0.070312 -0.022812 0.013718 -0.046539 0.008728 0.011978 0.046112 -0.102539 0.097656 -0.035278 -0.015976 -0.021149 0.111084 0.031128 0.071472 0.076477 0.116333 0.020111 0.001237 -0.041321 -0.054260 0.032471 0.013832 0.005772 -0.059143 -0.116150 -0.047028 -0.039948 -0.041046 -0.007965 0.050507 -0.047516 -0.091125 0.056183 0.013191 -0.006599 -0.020508 -0.024155 -0.065186 -0.068298 -0.074097 0.071960 -0.031082 -0.051300 -0.016998 0.166260 0.100281 -0.021439 0.037872 -0.106567 -0.074341 0.155029 0.023499 -0.009918 -0.002010 0.001662 0.003571 -0.032410 0.074219 -0.019592 -0.067932 -0.036682 0.086426 -0.022354 -0.009445 0.034882 0.007618 -0.028656 0.071655 -0.062195 -0.054230 0.027359 -0.072388 0.016510 -0.014427 -0.024414 0.086121 -0.058350 -0.033936 -0.034302 -0.066101 0.041412 -0.014771 -0.071777 0.081604 -0.134766 0.040802 -0.061432 -0.054962 0.000031 0.010544 0.136475 0.034454 0.123169 -0.086731 -0.038086 -0.058899 0.034698 -0.050049 0.136597 0.031250 -0.026001 -0.096130 0.055176 0.048889 0.003933 -0.036957 0.037384 -0.055939 0.008324 0.055511 -0.054718 0.070557 -0.027756 -0.020584 0.037140 -0.009178 -0.025391 0.077515 -0.107971 -0.034210 0.005085 0.105469 -0.051422 0.022552 -0.028137 -0.075195 0.039276 0.014618 -0.017273 0.039917 -0.107483 0.052277 0.133789 -0.097595 -0.032867 0.043335 -0.053894 0.072083 0.019470 0.102600 -0.076660 -0.050629 -0.030777
|
||||
-0.080505 -0.058533 0.011864 -0.001678 0.079285 0.052399 0.012238 -0.104187 -0.009560 -0.064209 -0.072510 0.008438 -0.029907 -0.007111 0.039764 -0.173584 -0.030594 -0.077271 0.026703 0.029831 -0.011559 0.024887 -0.073792 -0.068542 0.084167 -0.060059 -0.056061 0.052063 0.119446 0.026688 0.128418 -0.056915 0.004204 -0.008247 -0.118225 -0.097595 -0.073425 -0.028030 0.060822 0.055725 0.039764 0.027710 0.043304 0.047302 -0.119995 0.019379 0.059143 0.031372 -0.091125 -0.022583 0.038727 -0.126709 -0.134766 0.025482 0.057831 0.068298 0.091980 0.017868 0.033936 -0.018311 -0.019501 0.026367 -0.061829 -0.030289 -0.009972 0.040405 -0.038208 -0.072815 0.049377 0.000505 0.077209 0.013344 0.128540 -0.053497 0.014687 -0.017090 -0.114319 0.016968 0.017120 0.004723 -0.030945 0.010918 0.053375 -0.049744 -0.081604 -0.075989 -0.019226 -0.011200 0.028000 -0.058167 0.043457 0.146606 -0.003473 -0.056763 -0.102661 0.016907 0.088684 -0.003975 -0.008484 0.077271 0.042816 -0.167725 -0.013969 -0.057343 -0.042023 0.051605 -0.007206 -0.023544 -0.055237 0.021118 -0.016296 0.016174 -0.014778 -0.008080 -0.006760 -0.090637 -0.021362 0.085754 -0.004410 -0.043518 0.083923 -0.045410 0.011360 -0.059631 0.055786 -0.065857 0.099609 -0.043365 0.049103 -0.030960 0.079834 0.015091 -0.074524 0.062378 -0.002151 -0.066467 0.008186 -0.060364 0.020996 -0.007622 -0.054474 0.066833 -0.020447 -0.104797 -0.008919 0.059814 0.016541 -0.058502 0.013443 0.067383 0.023605 -0.026932 0.067322 0.038788 -0.054443 -0.084351 -0.013206 0.074707 -0.032166 0.133423 0.013458 -0.081909 -0.090515 0.097107 0.016434 0.008110 -0.103821 -0.057556 0.016388 -0.100098 0.010689 0.008179 0.022156 -0.106812 -0.065125 0.040619 0.076172 -0.019806 0.020126 0.027634 -0.010498 -0.066589 0.001569 0.063721 -0.032288 0.061005 -0.068542 -0.005470 0.133057 -0.012459 0.023788 -0.021194 -0.045990 0.018005 -0.070679 0.002216 0.103149 -0.174072 -0.004009 -0.003956 -0.104187 -0.059967 0.057373 0.048096 0.091614 0.068298 -0.032013 -0.034943 0.038177 0.028671 -0.078003 0.023148 0.051880 -0.016373 0.016083 -0.047852 -0.015106 0.066223 -0.092773 -0.055389 -0.086304 0.176636 0.107788 0.035675 0.112488 0.119019 -0.050842 0.010208 -0.061218 -0.034546 0.059967 0.055756 -0.014908 -0.075439 0.011406 -0.082825 0.138062 -0.003338 -0.110535 -0.005970 0.036713 -0.006996 0.014854 -0.056152 0.054932 -0.083191 -0.064209 -0.054962 -0.034332 -0.010269 0.063171 -0.007107 0.118225 0.044556 0.010048 0.008392
|
||||
-0.088867 -0.006584 0.000978 -0.067993 -0.011299 -0.011009 0.091919 -0.084351 0.036530 0.041901 -0.063721 0.012001 -0.107483 -0.014297 0.022476 -0.124573 -0.000116 0.007137 0.017776 0.024994 -0.057831 0.114929 -0.107422 -0.119629 -0.018082 -0.069275 0.029831 0.094910 0.056702 -0.032684 0.101807 -0.029968 0.044250 0.023315 -0.123718 -0.056610 -0.087891 0.049530 0.052582 0.073425 0.061127 0.052246 0.073853 -0.075256 -0.054871 -0.029602 0.077087 0.030472 -0.099854 -0.053833 0.060120 -0.036194 -0.047211 -0.041534 0.003668 -0.029114 -0.004723 -0.045898 0.031342 -0.009613 0.081970 -0.072693 -0.171143 -0.003609 -0.090698 0.020935 0.047028 -0.035736 -0.081055 0.010208 0.024048 0.042877 0.055054 0.009933 0.062866 -0.047363 -0.098572 0.023849 0.138062 -0.007332 -0.095215 0.039154 0.014587 0.045807 -0.023285 -0.072815 0.035950 0.037231 0.002653 -0.076355 -0.052460 0.058777 0.019226 -0.062866 -0.105591 -0.016220 0.041504 -0.006542 -0.126709 0.115234 0.001443 -0.079651 0.064026 0.026627 -0.059448 -0.067078 -0.014763 -0.122192 0.006821 -0.051758 -0.047516 -0.003002 0.004425 -0.054260 0.105713 0.033173 0.099060 0.131104 -0.018097 -0.003410 0.096863 -0.079224 0.019470 -0.086975 0.011299 -0.082825 -0.012100 0.051422 0.013115 -0.035492 -0.059937 0.013115 -0.090332 0.058960 -0.000882 0.038757 -0.038513 -0.004532 0.039673 0.050629 -0.046509 0.003023 0.005344 -0.030563 0.005035 0.064209 -0.028778 0.006279 -0.058899 -0.027649 -0.041077 -0.041351 0.038971 0.049591 -0.023636 -0.045074 0.016525 0.075378 -0.061920 0.112122 0.071411 -0.064880 0.001765 0.072754 -0.046661 0.015541 -0.068176 -0.064514 -0.015358 -0.117432 0.036407 -0.033478 -0.051208 -0.092712 -0.028748 -0.026962 -0.001900 0.014030 0.014725 -0.016388 0.010849 -0.077393 -0.085083 0.049713 -0.052704 0.121094 -0.021759 0.010422 0.097412 -0.024109 -0.140137 -0.008949 0.007927 0.109985 -0.011124 0.024353 0.025482 -0.073242 0.142456 -0.091553 -0.069580 -0.096069 -0.021774 0.060730 0.179810 0.038910 -0.021454 -0.039490 0.057007 0.083679 -0.016129 0.107361 0.080017 0.051025 -0.075317 -0.001435 0.018921 0.044800 -0.044952 0.049469 -0.032196 0.056976 -0.014854 -0.031738 0.077393 0.057098 -0.050568 -0.046539 -0.075928 0.036743 0.049103 0.010155 -0.061493 -0.110291 0.090332 -0.087036 0.046295 -0.108765 -0.011192 -0.040070 -0.048828 -0.023224 0.097900 -0.065552 0.062012 -0.000584 -0.027878 -0.002588 -0.065125 -0.078735 0.083740 -0.138062 0.030319 0.025879 -0.024490 -0.048431
|
||||
-0.051300 -0.020859 0.057617 -0.010582 0.022110 0.026962 0.007942 -0.035187 -0.054657 -0.036774 0.011246 0.010773 -0.097595 0.114441 -0.003645 -0.121460 0.017792 -0.015625 0.022110 0.024277 -0.058838 0.069641 -0.045593 -0.020126 0.021149 -0.000751 0.026108 0.135010 0.179443 0.020554 0.078430 -0.009842 -0.005142 -0.000080 -0.073425 0.045380 -0.057129 0.017334 -0.059448 0.048676 -0.035065 0.106262 -0.013092 -0.042725 -0.022888 -0.006790 0.006367 -0.058716 -0.158691 0.033722 0.045197 -0.109619 -0.162354 -0.041290 0.016754 -0.032745 -0.010735 -0.013229 0.205811 -0.041870 0.038025 -0.139648 -0.080872 -0.005981 0.028381 0.085510 -0.015297 -0.015747 0.072754 0.020264 0.124390 -0.015617 0.117004 0.014503 0.050568 -0.003368 -0.117371 0.021469 0.078003 0.013817 -0.025665 0.012680 0.013062 -0.035400 -0.067871 -0.055511 0.106873 0.010971 -0.038879 -0.060150 0.008034 0.161377 -0.002237 0.018600 -0.084839 -0.050323 0.088440 -0.079224 -0.017303 0.040192 -0.023834 -0.163452 -0.040710 -0.018036 -0.100952 -0.044556 0.026993 -0.034271 -0.017792 -0.024857 -0.037750 -0.036255 -0.058258 0.010239 0.001386 -0.077209 -0.012238 0.027695 0.031555 -0.043091 0.095520 -0.041351 0.097778 -0.072327 0.081299 -0.061371 0.050049 0.008827 0.008125 -0.054688 -0.034363 0.035400 -0.059387 0.062622 0.090576 0.055542 0.026047 -0.053192 0.032074 -0.041473 -0.055969 -0.104797 0.082214 -0.038300 0.007065 0.084412 -0.032654 0.013519 0.014771 0.082581 0.032806 -0.030441 -0.031189 0.025406 -0.115051 -0.102478 -0.099670 0.149780 0.008041 0.028137 -0.004635 -0.121460 0.013329 0.004730 0.034149 0.053131 -0.068359 -0.078430 -0.028198 -0.091736 0.034668 -0.002895 -0.025543 -0.116272 -0.095520 -0.004330 0.019272 -0.042755 -0.054260 0.022736 0.036102 -0.087097 -0.008148 0.045898 -0.009041 0.071472 -0.077393 0.042511 0.094360 0.028442 -0.039612 -0.008659 -0.105896 0.052887 0.026489 0.017365 0.109253 -0.134766 0.006134 -0.018097 -0.112793 -0.055603 0.104248 0.024277 0.072449 0.057098 -0.103638 -0.006733 -0.025574 0.020660 -0.076965 0.069153 0.072571 -0.009232 -0.036774 -0.026672 0.037659 0.038025 -0.043610 -0.036255 -0.011955 0.078003 0.078003 0.013298 0.081665 0.115784 -0.032104 -0.024979 -0.013283 -0.042999 0.012604 0.030807 -0.041779 -0.076538 0.077942 -0.095276 0.068420 -0.015778 -0.063171 0.052673 0.025345 0.030396 0.063721 -0.054932 0.001950 -0.026535 -0.125000 -0.000515 -0.070312 -0.020355 0.033813 0.021286 0.008537 0.036682 0.021210 0.006847
|
||||
-0.104370 -0.044647 0.030746 0.011848 0.057526 -0.008278 -0.012321 -0.084900 0.013306 -0.008041 -0.011665 0.005608 -0.072449 0.045380 0.052704 -0.225464 -0.021851 -0.055786 -0.028534 -0.033325 0.019592 0.009315 -0.058075 -0.051392 -0.008530 -0.081909 -0.034363 0.078918 0.180542 0.026077 0.092468 -0.055908 0.032135 0.035034 -0.091492 0.007263 -0.044739 0.077881 0.005806 0.027908 0.028259 0.095764 0.095459 -0.047455 -0.086365 0.040619 -0.034576 -0.012230 -0.138672 0.018646 0.058807 -0.078613 -0.145264 0.000744 0.044678 -0.019974 0.025620 0.016449 0.094116 -0.023499 0.011063 -0.116821 -0.093018 -0.079163 -0.033478 0.082214 0.039917 0.005947 -0.034454 0.014687 0.105103 -0.019745 0.149780 -0.017502 0.051941 -0.025269 -0.117737 0.011627 0.097473 -0.019928 -0.035065 -0.002720 -0.009933 -0.001321 -0.135010 -0.019958 0.007996 -0.021515 0.041016 -0.052032 -0.032013 0.105347 -0.003544 -0.019012 -0.118347 -0.036865 0.089050 -0.061798 -0.030060 0.013054 0.009315 -0.126099 0.021194 -0.010216 -0.059998 0.024414 0.025497 -0.119080 -0.012901 -0.043610 -0.049835 0.018463 -0.039795 -0.019989 0.012512 -0.047516 0.040344 0.077881 0.021484 -0.038879 0.143066 0.057037 0.014130 0.008705 0.130249 -0.043915 0.043121 0.047485 0.037292 -0.067200 -0.014229 0.058319 -0.182983 -0.004654 0.027222 -0.017700 -0.024933 -0.033600 -0.003723 -0.018814 -0.044159 -0.006718 0.004150 0.000915 0.005909 0.134277 -0.049316 0.011063 0.017792 0.025909 -0.031799 -0.111511 0.068176 -0.003735 -0.091797 -0.067139 -0.008560 0.115662 -0.003941 0.027985 -0.008255 -0.088806 0.019333 0.007500 0.017883 -0.011841 -0.027328 -0.056152 0.012512 -0.087036 0.081848 -0.014626 0.033234 -0.166748 -0.066833 0.013641 0.020279 -0.022552 -0.005245 0.001663 0.064636 -0.072571 -0.064026 0.027115 0.056152 0.074036 -0.078918 0.010727 0.105347 0.009193 -0.043793 -0.000097 -0.082092 0.019379 0.000548 -0.050171 0.065491 -0.145508 0.002535 -0.064819 -0.101562 -0.062927 0.045013 0.076782 0.113831 0.007042 -0.057007 -0.105835 0.028839 0.020554 -0.074341 0.041046 0.109985 0.019470 -0.026596 -0.069031 -0.014359 0.044800 -0.088257 -0.047028 -0.020508 0.104370 0.013618 0.026505 0.075867 0.107117 0.017227 -0.016815 -0.076355 -0.040466 0.036407 0.053955 0.004261 -0.093384 0.009308 -0.064148 0.042664 -0.062561 -0.035828 0.031494 0.018021 -0.015701 0.112122 -0.114502 -0.024033 -0.028336 -0.092224 0.048737 -0.041534 0.017349 0.008881 -0.074219 0.060486 -0.008347 0.015701 -0.026077
|
||||
-0.095947 -0.026047 0.027344 0.035980 0.046448 0.129883 0.020172 -0.056915 -0.045105 -0.038330 0.002014 -0.001935 -0.052185 0.093811 0.022064 -0.136475 -0.049225 0.034637 0.027710 0.038269 -0.049103 0.065002 -0.056946 -0.018112 0.022873 -0.011200 -0.018280 0.084290 0.112793 0.050781 0.059906 -0.030075 -0.001304 0.010452 -0.104248 -0.053345 -0.052673 0.027328 -0.015274 0.077393 -0.003262 0.068054 -0.045074 -0.025360 -0.071289 -0.043030 -0.010139 -0.065796 -0.183838 0.016144 0.036407 -0.138428 -0.114563 -0.108643 -0.009026 0.075745 0.027328 -0.024994 0.111206 -0.014946 -0.013901 -0.061493 -0.060516 0.010551 0.020248 0.074402 -0.028351 -0.078735 0.064270 0.009270 0.059753 -0.037079 0.136719 -0.040497 0.054657 -0.041199 -0.086243 0.060822 0.043182 0.034088 -0.019073 -0.002989 0.005116 -0.018738 -0.123657 -0.032898 0.056366 -0.018906 -0.016174 -0.148438 0.008858 0.132080 0.000813 -0.030853 -0.075317 -0.041046 0.058655 -0.033173 -0.097412 -0.000504 0.018845 -0.106689 -0.062500 0.046875 -0.074463 -0.012138 -0.039978 0.011513 -0.044495 -0.003536 -0.087463 -0.005974 0.012825 -0.054260 -0.017090 -0.107056 -0.083679 0.091797 0.049774 -0.015488 0.029510 -0.032745 0.059174 -0.015213 0.060028 -0.031708 0.087830 -0.000510 0.075195 -0.002844 0.027679 0.042603 -0.133789 0.011833 0.014648 0.020721 -0.047333 -0.118591 -0.008018 -0.050934 -0.000528 -0.060425 0.021545 -0.027740 -0.044586 0.042236 0.034637 -0.058441 0.029419 0.087158 0.060242 -0.032928 0.019379 0.023987 -0.103943 -0.120422 -0.056488 0.115967 0.009727 0.068237 0.020325 -0.129395 0.023407 -0.028778 0.032104 0.056335 -0.065979 -0.075500 -0.028442 -0.086548 0.046143 -0.020660 0.043610 -0.103821 -0.116394 0.068848 0.035919 -0.042480 0.003454 -0.035797 0.048584 -0.114685 0.018066 0.036469 -0.016190 0.095520 -0.009865 0.003464 0.073303 0.039154 0.017899 0.001660 -0.117126 -0.000117 0.054840 0.018219 0.060059 -0.134888 0.041962 -0.028046 -0.152588 -0.041443 0.073730 0.073669 0.061707 0.005127 -0.073181 -0.070007 0.041382 0.110779 -0.088989 0.044067 0.070740 0.012276 -0.035217 -0.096069 0.041901 0.034180 -0.131836 -0.004078 -0.048676 0.093506 0.034943 0.005501 0.058685 0.138672 -0.032196 -0.012367 -0.079590 -0.051605 -0.022095 -0.006977 -0.022263 -0.045441 0.021606 -0.081055 0.053467 0.050232 -0.106323 0.090332 0.005291 -0.009361 0.095703 -0.062988 0.004513 -0.064026 -0.104309 -0.050568 -0.033447 0.005470 0.018951 0.052032 0.073486 -0.012283 0.053772 -0.016800
|
||||
-0.031860 -0.047791 0.045197 0.023346 -0.000677 0.045898 0.044037 -0.059296 0.020233 -0.066833 -0.062378 0.015701 -0.057922 0.002020 0.056183 -0.177124 0.024643 -0.071167 0.024078 -0.004017 -0.037689 0.069519 -0.084045 -0.090637 0.013695 -0.056885 0.058044 0.072632 0.085571 0.000285 0.122864 -0.086060 -0.027588 -0.043732 -0.105286 -0.093201 -0.031494 -0.006031 0.039429 0.132812 0.056274 0.099060 0.059418 0.065918 -0.132812 0.068237 0.053192 0.010849 -0.078552 -0.004890 0.047455 -0.099365 -0.153442 -0.001022 0.065186 0.010406 0.017441 0.028320 0.068726 -0.101501 0.025269 0.028992 -0.111511 0.006336 -0.025513 0.007652 -0.020035 -0.049316 -0.016266 -0.004486 -0.014359 0.002268 0.110901 -0.034729 0.017639 -0.023376 -0.133301 0.058838 0.112732 0.009926 -0.045715 0.039032 0.001749 0.038666 -0.130127 -0.144043 0.025848 0.013779 0.018265 -0.029999 0.019424 0.112671 0.006294 -0.083313 -0.065002 0.063232 0.036804 -0.062286 -0.025299 0.074951 0.022781 -0.107117 -0.007671 -0.015015 -0.022781 0.074280 -0.002148 -0.049530 -0.007183 -0.048492 0.006523 -0.021179 0.011612 -0.051544 0.030670 -0.066711 0.070435 0.138672 0.015541 -0.001809 0.083923 -0.100586 -0.007534 -0.070190 0.023270 -0.098145 0.098999 -0.040863 0.059418 -0.044952 0.044586 -0.029282 -0.040985 0.036926 0.012825 0.007034 0.058899 0.013443 0.089233 0.012009 -0.056122 0.049194 -0.005688 -0.097107 0.055145 0.041931 0.011375 -0.001695 -0.015747 0.017181 -0.011345 0.021896 0.044098 -0.006321 -0.000619 -0.109619 -0.029160 0.065674 -0.084229 0.110352 0.005646 -0.083008 -0.113037 0.089966 -0.007980 0.033417 -0.092468 -0.076599 -0.082458 -0.099304 0.025986 -0.080566 0.012039 -0.091736 -0.044342 0.057068 0.040894 -0.100281 0.048981 0.008934 0.035309 -0.088318 -0.042877 0.106079 -0.063416 0.087158 -0.100586 -0.012009 0.112671 -0.004330 -0.014503 -0.033600 0.013237 0.049011 -0.042175 0.007294 0.011345 -0.081055 -0.012764 0.035797 -0.070190 -0.064209 0.099792 0.044342 0.123291 0.077209 -0.048737 -0.036560 -0.088684 0.009758 -0.058044 0.030762 0.060059 -0.017120 -0.048798 -0.057678 -0.025833 0.068970 -0.080811 -0.019363 -0.053497 0.152832 0.071655 0.039093 0.078247 0.127808 -0.023605 -0.035706 -0.061646 -0.066833 0.071777 0.066040 0.020416 -0.059540 -0.007286 -0.087646 0.105530 -0.063293 -0.086548 0.008354 0.029022 0.042572 -0.040436 -0.026779 0.085449 -0.018326 -0.041077 0.017593 -0.042358 -0.046509 0.051147 -0.068542 0.035919 -0.012260 -0.020218 -0.042023
|
||||
0.003683 -0.040375 0.045959 -0.005531 0.034393 0.093811 -0.006748 -0.084595 -0.018311 -0.050476 -0.037109 -0.000509 -0.107544 0.006592 0.010948 -0.151733 -0.011551 -0.022964 0.017471 -0.054138 -0.090027 0.007271 0.001972 -0.029480 0.037720 -0.039764 -0.020172 0.074707 0.123474 -0.020996 0.105835 -0.110840 -0.066650 -0.001163 -0.163330 -0.081970 -0.060699 -0.004177 0.023972 0.104736 0.014053 0.032562 0.054413 -0.027374 -0.081543 0.055695 0.035553 -0.090393 -0.110718 -0.011971 0.050842 -0.066406 -0.144409 -0.045166 0.014626 -0.015854 0.058319 0.002174 0.066650 -0.032898 -0.000545 -0.039581 -0.051880 0.024918 -0.039703 0.013618 -0.010017 -0.045837 0.015236 0.000289 0.067017 -0.081421 0.123657 -0.064880 0.057220 -0.080811 -0.088074 0.060547 0.020935 0.019089 -0.040527 -0.057343 -0.026947 0.006191 -0.102722 -0.084045 0.053253 -0.001462 0.008995 -0.062012 0.022095 0.089722 0.039093 -0.095642 -0.113892 -0.015511 0.002720 -0.040955 -0.004417 0.086426 -0.006630 -0.164673 -0.049438 -0.011353 -0.059814 -0.010315 -0.002935 -0.074890 -0.081055 -0.048187 -0.083313 0.012222 0.022583 -0.016068 0.018982 -0.089783 -0.008865 0.079407 0.025314 -0.023987 0.124451 0.000825 0.004566 -0.015068 0.083069 -0.042816 0.095459 -0.010513 0.045746 0.025208 -0.006954 0.035187 -0.062866 0.013298 0.003489 -0.012367 -0.036377 -0.117554 0.010460 -0.036713 -0.065308 -0.005878 0.027969 -0.044922 -0.044067 0.074585 0.000278 -0.084778 0.018478 0.016235 0.018280 -0.045197 0.067566 -0.025940 -0.017914 -0.085022 -0.018265 0.091125 -0.028229 0.058105 0.022385 -0.120911 -0.051758 -0.023163 0.038116 -0.019501 -0.106689 -0.082092 -0.000672 -0.041779 0.070740 -0.068542 0.020950 -0.110840 -0.013809 0.109436 0.041931 -0.003056 0.025116 0.025818 0.065063 -0.093262 -0.008324 0.018311 -0.051270 -0.002619 -0.085327 -0.001694 0.185913 0.078735 0.025497 -0.039276 -0.092407 -0.009804 0.034576 -0.052490 0.044220 -0.120300 0.049438 -0.082336 -0.144043 -0.024139 0.058380 0.131104 0.041687 0.079895 -0.053436 -0.098206 -0.077332 0.048676 -0.052917 0.059998 0.126587 -0.048950 -0.097168 -0.057556 0.012932 0.076416 -0.116577 -0.054443 -0.031586 0.076782 0.029480 -0.022781 0.050568 0.139648 -0.027405 0.030762 -0.095764 -0.045197 0.015251 0.022324 -0.013550 -0.063538 0.014343 -0.030212 0.069824 -0.041199 -0.110779 0.071472 0.039948 -0.008553 0.070251 -0.062164 0.014580 0.002865 -0.116455 0.007370 -0.012520 -0.015114 0.030136 0.054596 0.128906 0.009544 -0.042206 -0.046936
|
||||
-0.069946 -0.046143 0.061432 0.004459 0.033783 0.003180 0.025803 -0.036499 -0.056671 -0.008926 -0.099365 0.002981 -0.142700 0.011841 0.006725 -0.138428 -0.034302 -0.034760 0.060303 -0.008133 -0.055664 0.098694 -0.001347 -0.013603 0.047852 -0.076965 0.059235 0.093689 0.057343 -0.041016 0.067566 -0.074890 -0.042511 -0.003345 -0.194824 -0.035339 -0.100342 -0.025818 0.030212 0.098694 -0.013924 0.013809 0.027451 -0.049469 -0.071350 0.031677 0.053040 -0.047333 -0.122620 -0.046753 0.028717 0.010033 -0.179443 -0.069946 0.007759 0.001667 0.023926 -0.048462 0.047241 -0.042969 -0.003458 -0.020813 -0.056641 0.020065 -0.019882 -0.009361 -0.029251 -0.073669 -0.047882 0.007587 0.007053 -0.038025 0.064758 -0.030197 0.073242 -0.087036 -0.046600 0.034424 0.050446 0.017227 -0.022079 -0.007904 0.056763 0.065186 -0.024963 -0.100830 0.098389 0.009987 -0.018906 -0.109985 0.020966 0.071289 0.039825 -0.117981 -0.105774 0.024261 -0.026840 -0.029266 -0.041016 0.141724 0.000244 -0.128174 -0.031738 -0.010307 -0.117432 -0.042145 -0.025726 -0.081604 -0.044800 -0.028748 0.027283 -0.021591 0.025879 -0.011787 0.062134 -0.039734 0.084412 0.094055 0.012749 -0.033844 0.104309 -0.041595 -0.025650 -0.006878 -0.016098 -0.015396 0.062866 -0.027115 0.059113 0.028076 -0.020294 -0.014290 -0.054932 0.043884 0.012466 0.006935 -0.042419 -0.126465 0.048370 -0.064148 -0.075745 0.001100 0.005363 -0.040771 -0.074524 0.063843 0.052429 -0.051331 -0.051849 0.013901 0.019287 0.002291 -0.004154 0.033295 0.007633 -0.091431 -0.022736 0.112061 0.009949 0.039276 0.023102 -0.096252 -0.079041 0.056610 -0.000884 -0.043793 -0.092834 -0.053894 -0.056335 -0.072021 0.056274 -0.043488 -0.094910 -0.087036 0.026169 0.044434 0.025894 -0.028778 0.001543 0.002914 0.077454 -0.107727 -0.022949 0.016464 -0.100830 0.040619 -0.058197 -0.012283 0.116455 0.009964 -0.023285 -0.044189 -0.063049 0.018158 -0.001390 -0.042084 0.036926 -0.067444 0.027557 -0.065186 -0.095032 -0.009460 0.094910 0.147827 0.094666 0.082214 -0.046570 -0.033295 -0.125122 0.065063 0.000936 0.103149 0.108276 -0.107422 -0.102356 0.000134 -0.014381 0.089722 -0.092163 -0.008865 -0.045563 0.029297 0.069824 -0.091736 0.092590 0.029999 -0.106079 -0.054596 -0.028366 -0.036041 0.090332 0.007473 -0.018585 -0.041870 0.066406 -0.099304 0.030273 -0.092102 -0.083313 0.085876 0.015884 -0.001809 0.030472 -0.026962 0.064758 0.090515 -0.106140 -0.008682 -0.068970 -0.098450 0.094543 -0.043030 0.090210 -0.006775 -0.076172 -0.055725
|
||||
-0.033020 -0.047211 0.086914 -0.024185 0.076660 -0.006481 -0.014580 -0.011963 -0.074890 -0.034943 -0.060944 -0.031891 -0.118347 -0.027725 0.083130 -0.157227 -0.022842 -0.028839 0.057465 0.046783 -0.072998 0.048798 0.025085 -0.038239 0.050293 -0.075684 0.059479 0.032318 0.100098 -0.065857 0.063354 -0.065491 -0.044098 -0.043976 -0.137207 -0.081665 -0.108826 -0.029785 0.005974 0.079651 0.058624 0.082092 0.101929 -0.030731 -0.091675 0.070496 0.101318 -0.028671 -0.048676 -0.070740 -0.003990 0.010506 -0.163086 -0.017197 0.018311 0.022644 0.051880 0.022369 0.065796 -0.059692 0.004829 -0.021500 -0.117310 -0.019989 -0.023132 0.011238 -0.012711 -0.060974 -0.075928 0.011536 0.022598 -0.018982 0.100647 -0.104858 0.085144 -0.053436 -0.076843 0.044434 0.062622 -0.013496 -0.078491 -0.014091 0.009224 0.033447 -0.014969 -0.113464 0.060425 0.016418 -0.033020 -0.047729 0.036133 0.129028 0.037750 -0.067810 -0.113770 -0.007088 -0.012917 -0.056091 0.001848 0.102417 0.007557 -0.169556 -0.052429 -0.035675 -0.063538 -0.010788 -0.037048 -0.109924 -0.037231 -0.043671 -0.027939 -0.072998 -0.017014 -0.015404 0.026749 -0.076538 0.077148 0.071899 0.025253 -0.065247 0.171021 -0.029816 -0.005688 -0.074890 0.071167 -0.013878 0.095581 0.053864 0.068115 0.018066 0.005634 -0.021606 -0.028275 0.048431 0.023254 0.032013 -0.017166 -0.082764 0.047577 -0.040344 -0.090698 0.026398 0.010330 -0.102539 -0.043915 0.129395 -0.018372 -0.005165 -0.007626 -0.006302 0.011475 -0.031830 0.023941 0.018539 -0.001737 -0.084167 -0.034943 0.103455 0.021912 0.028625 0.039764 -0.076111 -0.084961 0.130371 0.020493 0.001660 -0.062561 -0.047272 -0.055084 -0.046509 0.109558 -0.059113 -0.060760 -0.073425 0.052277 0.012611 0.009064 -0.065247 0.054108 0.006470 0.049744 -0.084961 -0.035034 0.051971 -0.068420 0.050354 -0.075928 0.003685 0.096863 -0.031952 -0.038147 -0.061005 -0.044281 0.019791 -0.037262 -0.064697 0.121704 -0.112854 0.005562 -0.054901 -0.079224 -0.031860 0.086914 0.092224 0.058624 0.101501 -0.067810 -0.032806 -0.093506 0.010292 -0.029755 0.084290 0.073853 -0.054535 -0.105957 0.033539 -0.016205 0.030014 -0.076294 0.002235 -0.040894 0.085693 0.078125 0.002449 0.053894 0.066772 -0.006466 0.002022 -0.041443 -0.043030 0.101257 -0.035431 0.014580 -0.012901 0.076660 -0.012085 0.096191 -0.062561 -0.080994 0.021454 0.030838 -0.003508 0.011597 -0.045502 0.090088 0.072754 -0.063293 -0.005390 -0.031891 -0.068604 0.083679 -0.022125 0.128784 -0.043243 -0.031464 -0.039276
|
||||
-0.071960 -0.010109 0.026733 -0.013763 0.130493 -0.041962 0.062500 -0.002930 -0.079590 -0.052002 -0.037842 0.011383 -0.030716 -0.006660 0.030945 -0.160889 0.016815 -0.025757 0.045532 0.057983 -0.042511 0.099548 -0.058655 -0.016708 0.018967 -0.054657 0.044464 0.081238 0.000474 0.007267 0.036591 -0.036530 0.032288 -0.002655 -0.101196 -0.041565 -0.096497 0.012512 -0.030487 0.072571 0.074280 0.098450 0.079712 -0.026245 -0.028397 0.027893 0.084534 0.002537 -0.105713 0.004124 0.014107 -0.043701 -0.172852 -0.044708 0.049194 0.014343 0.022217 0.009819 0.068298 -0.068726 0.079163 -0.014992 -0.097473 -0.014992 0.003750 0.049622 -0.022034 -0.037598 0.000240 -0.011543 0.110352 0.038696 0.152588 -0.061890 0.027649 -0.042877 -0.108826 0.028015 0.047943 0.006035 -0.033997 0.021866 0.008965 -0.053253 -0.076416 -0.059814 0.057739 0.030136 -0.031982 -0.096313 0.008018 0.046570 0.033997 -0.038055 -0.091919 -0.035614 0.063538 -0.040527 -0.092346 0.073425 0.072449 -0.078552 -0.025314 -0.066589 0.015541 0.047729 -0.055023 -0.066406 -0.024887 -0.010658 -0.035919 -0.066345 -0.043762 0.017548 0.030121 -0.052368 -0.012619 0.061035 0.046692 -0.072937 0.123413 -0.055573 0.047424 -0.034821 0.055847 0.056335 0.117004 0.028351 0.020523 -0.046356 -0.044189 -0.016846 -0.092712 0.051605 0.010727 0.055115 0.012657 -0.020889 0.059631 -0.028168 -0.059814 -0.006104 0.032379 -0.078674 -0.046173 0.076172 -0.009941 -0.040283 0.036835 0.033295 0.055908 -0.006760 -0.009346 0.047791 -0.070068 -0.043518 -0.052765 0.140137 0.000720 0.084229 0.025421 -0.079163 -0.038544 0.096130 0.025665 0.067749 -0.036835 -0.044525 -0.058380 -0.124207 0.032715 -0.027237 -0.040558 -0.101807 -0.034302 -0.032654 0.030426 0.006027 -0.045929 0.022736 0.055603 -0.090210 0.002617 0.013718 -0.003084 0.105347 -0.062927 0.005928 0.090942 -0.040009 -0.029129 -0.025345 -0.026413 0.088806 -0.029373 -0.044952 0.115784 -0.133179 0.072510 -0.037354 -0.161743 -0.038452 0.137695 0.130127 0.136597 0.055237 -0.061249 -0.076233 0.027115 0.096191 -0.040314 0.000861 0.086853 0.035400 -0.026260 0.065552 -0.055847 0.066956 -0.082214 -0.037384 0.011841 0.119324 0.099182 -0.019150 0.068115 0.088196 -0.035645 -0.027756 -0.089600 -0.013451 0.057526 0.028732 -0.044220 0.003584 0.113953 -0.096924 0.076416 -0.021881 -0.067505 0.032501 0.045441 0.008781 0.059296 -0.077393 0.112061 0.051819 -0.097168 -0.084473 -0.111084 -0.048737 0.083984 -0.067200 0.071899 0.061371 0.027313 0.019577
|
||||
-0.079529 0.000504 -0.010086 0.007622 0.010620 0.083191 -0.005043 -0.026443 0.019272 -0.029617 0.002476 0.063049 -0.135132 0.073303 0.025452 -0.096375 0.058258 0.073425 -0.081421 -0.052979 -0.062988 0.112976 -0.107544 -0.098938 0.029129 -0.033569 0.008575 0.137451 0.139771 0.004406 0.090820 -0.025528 -0.007843 0.026276 -0.100159 -0.023163 -0.083191 0.027557 0.025558 0.093018 -0.062286 0.065247 -0.010727 -0.026474 -0.093445 -0.024399 -0.013863 -0.070923 -0.150879 0.059784 0.093872 -0.136719 -0.126465 -0.110535 0.032684 0.000199 -0.010025 -0.012985 0.134644 -0.027863 0.015442 -0.066223 -0.002583 -0.024261 0.026703 0.062225 -0.031311 0.064087 0.066406 0.009659 0.069153 -0.051331 0.079407 0.074646 0.016968 -0.038879 -0.056671 0.028107 0.064514 0.066895 -0.008865 0.008324 -0.074524 0.063293 -0.096558 -0.101440 0.091309 0.027039 -0.041260 -0.075378 -0.093079 0.045380 0.010269 -0.010284 -0.088684 0.061401 0.073975 -0.005135 -0.047791 0.001044 0.013145 -0.063049 -0.016068 0.078247 -0.046387 -0.053253 0.011703 -0.012413 -0.042145 -0.048218 -0.023483 0.030167 -0.036957 -0.074890 0.044128 -0.040802 0.006348 0.071533 0.085449 0.023560 0.007099 -0.056274 0.001731 0.000491 -0.007584 -0.123291 -0.049133 -0.028992 0.071045 0.000670 0.001268 0.048248 -0.107483 -0.026596 0.090576 -0.003971 0.021408 0.043732 0.018066 -0.019775 -0.064209 -0.063293 0.038971 -0.007889 -0.019424 -0.039795 0.049500 -0.001017 -0.026428 0.064087 0.035126 0.006451 0.023315 0.009567 -0.068420 -0.112427 0.005844 0.106079 0.020996 0.064453 0.021561 -0.149536 0.007706 -0.059448 0.004192 0.045441 -0.058319 -0.073242 -0.050903 -0.113770 0.054443 -0.017990 -0.021790 -0.089844 -0.129395 0.031769 -0.023392 -0.046844 -0.031830 0.018188 0.063721 -0.074829 -0.019226 0.037659 -0.042603 0.125977 -0.028961 0.031189 0.091370 0.007309 -0.065796 0.020187 -0.065979 0.034271 0.054321 -0.022812 -0.053345 -0.029343 0.035492 -0.061523 -0.091675 -0.078491 0.069275 0.024918 0.104126 0.015343 -0.101685 -0.045898 -0.000736 0.069458 -0.045593 0.087036 0.055878 -0.055176 -0.096436 -0.076965 0.055359 0.031494 -0.077576 0.050415 -0.040955 0.010254 0.045319 -0.075562 0.029816 0.142822 -0.105530 -0.000152 -0.111267 0.004009 -0.026749 -0.038391 -0.017105 -0.151001 -0.059906 -0.129883 0.036407 -0.089233 -0.052917 0.091064 0.023361 0.003363 0.090637 0.002390 0.010254 -0.041779 -0.137939 0.010147 -0.095520 0.034332 0.058868 -0.011925 -0.022232 -0.026718 -0.022797 -0.006886
|
||||
-0.072693 -0.011787 0.100342 0.029190 0.096741 -0.019684 0.018402 0.037231 -0.064331 0.009186 -0.077515 -0.003145 -0.149170 0.004250 0.038330 -0.127319 -0.080322 0.001558 0.156494 0.048126 -0.017059 0.070435 -0.008087 -0.012787 0.066406 -0.074280 0.047668 0.064941 0.083435 -0.022736 0.011276 -0.090149 -0.010353 0.019760 -0.150513 -0.006905 -0.078674 -0.037964 0.036285 0.051544 0.015617 0.030930 0.026199 -0.106262 -0.060455 0.018219 0.044220 -0.033783 -0.121338 -0.094849 0.042358 -0.006203 -0.165649 -0.084229 -0.022522 0.029800 0.033783 0.014145 0.075684 -0.089539 -0.035156 0.019012 -0.122803 -0.063782 0.001392 0.014618 -0.074280 -0.047272 -0.070312 0.039795 0.094666 -0.013855 -0.021057 -0.027512 0.092041 -0.066589 -0.075439 0.019211 -0.010513 0.003649 -0.046082 0.002186 0.051086 0.064331 -0.012848 -0.091431 0.122009 0.034241 -0.076172 -0.113831 0.004368 0.041870 0.080139 -0.067871 -0.110352 0.002583 -0.037354 0.005005 -0.070068 0.104248 -0.016174 -0.111816 -0.064331 0.016663 -0.043671 -0.065491 -0.073608 -0.035492 -0.039215 -0.015137 0.024582 -0.065674 0.000111 -0.018372 0.024048 -0.049591 0.062561 0.103882 0.069397 -0.050171 0.075073 -0.019592 -0.000917 0.012657 0.006210 -0.007477 0.046173 0.083069 0.132812 0.037933 0.013824 0.014709 -0.068970 -0.030670 0.007851 0.022125 -0.054535 -0.118530 0.009766 -0.050751 -0.001475 0.011261 0.024719 -0.009811 -0.078308 0.065979 0.033386 -0.005829 -0.029327 -0.032776 -0.031342 -0.068420 -0.069214 0.087280 -0.032166 -0.089661 -0.018356 0.136597 0.085327 -0.003134 0.019318 -0.119080 -0.030746 0.100891 0.003513 -0.036255 -0.018600 -0.029480 -0.006737 -0.069763 0.092590 -0.022522 -0.085999 -0.026093 0.037994 0.036346 0.022034 -0.048279 -0.045288 -0.054260 0.094971 -0.103271 -0.036591 0.040100 -0.099182 0.089111 -0.009903 -0.037109 0.070801 -0.016495 -0.000906 -0.038086 -0.072266 0.032196 0.007523 -0.042053 0.077698 -0.043976 0.033417 -0.095215 -0.048279 -0.012512 0.067810 0.123413 0.060181 0.102478 -0.058380 -0.033844 -0.083740 0.068726 -0.036957 0.125488 0.066101 -0.080261 -0.090942 0.000573 0.081970 -0.015747 -0.096252 0.084961 -0.094971 -0.005005 0.021103 -0.058350 0.071594 -0.029114 -0.009407 -0.012665 -0.035980 -0.059021 0.083984 -0.117126 0.011208 -0.037720 0.045197 -0.079163 -0.015533 -0.018127 -0.028595 0.071350 -0.029388 -0.018280 0.027435 -0.080078 0.032562 0.068787 -0.091919 0.013695 0.043823 -0.058716 0.068909 0.007935 0.092773 -0.100098 -0.088745 -0.033356
|
||||
-0.007950 -0.035278 0.057831 0.018951 0.040009 0.057861 0.019089 -0.045471 -0.026199 -0.070374 -0.049622 0.026291 -0.040771 0.017334 0.051025 -0.182129 0.035431 -0.081543 0.058807 0.024933 -0.081543 -0.023117 -0.014015 -0.016800 0.025299 0.008194 0.049255 0.041229 0.077942 -0.002451 0.075806 -0.046875 -0.031464 -0.036194 -0.083435 -0.114136 -0.031921 -0.006477 0.022888 0.106445 0.088684 0.072388 0.048492 0.033081 -0.062561 0.078125 0.087036 -0.037048 -0.020081 0.003115 0.030258 -0.103699 -0.108215 0.015900 0.071838 -0.020798 0.079834 0.027252 0.057709 -0.074097 0.012047 0.019257 -0.096436 0.052429 -0.038361 0.001329 -0.029434 -0.046631 -0.014618 0.018448 0.030243 -0.025192 0.168335 -0.088379 0.070740 -0.048981 -0.149780 0.061310 0.101685 -0.002300 -0.043243 0.023529 -0.009438 -0.023346 -0.120361 -0.102051 -0.004658 0.038849 0.002380 -0.024338 0.025665 0.083313 0.008865 -0.060730 -0.055817 0.001698 0.070251 -0.080933 -0.059021 0.053436 0.001541 -0.092163 -0.046600 -0.045563 0.021912 0.058350 -0.028763 -0.058990 -0.036987 -0.063110 -0.061829 -0.027832 -0.005993 0.017380 0.051575 -0.074219 0.005005 0.106628 0.034149 -0.003845 0.116394 -0.068970 -0.014847 -0.035675 0.072754 -0.024902 0.165527 -0.046539 0.062378 -0.013908 0.005917 0.012070 -0.065552 0.059052 0.009010 -0.031052 -0.008057 -0.077026 0.074341 -0.026443 -0.026672 0.000296 0.014328 -0.067383 0.042511 0.028366 -0.027802 -0.002668 0.038971 0.016785 0.016724 -0.013802 0.059692 -0.043030 -0.026474 -0.107239 -0.049988 0.070251 -0.075562 0.099121 0.016769 -0.078369 -0.092834 0.070801 0.035034 0.045410 -0.121155 -0.035400 -0.053223 -0.070068 0.042480 -0.121887 0.055878 -0.075256 -0.000730 0.051697 0.044586 -0.066711 0.017456 0.035095 0.060059 -0.083984 0.011459 0.074646 -0.027832 0.057739 -0.101990 0.004593 0.145142 0.048706 0.018356 -0.048096 -0.018906 -0.001160 -0.027893 -0.030029 0.060669 -0.124695 0.011932 0.069763 -0.093628 -0.042114 0.092407 0.108276 0.072388 0.098572 -0.062408 -0.101440 -0.021042 -0.002533 -0.066101 -0.004780 0.072632 0.016357 -0.023376 -0.052094 -0.019653 0.076721 -0.082336 -0.079590 0.002762 0.137329 0.065735 0.061859 0.024612 0.165894 0.051178 0.026550 -0.091614 -0.044220 0.049561 0.079407 0.036133 0.005314 0.029495 -0.054199 0.127075 -0.020203 -0.164551 0.056854 0.099121 0.046295 0.000232 -0.062988 0.109070 -0.013542 -0.044708 -0.030670 -0.028122 -0.019379 -0.002829 -0.028305 0.127441 -0.012024 0.033508 -0.031250
|
||||
-0.036774 0.059906 0.007812 -0.027405 0.027802 0.058563 0.031708 0.019852 -0.058899 -0.040771 0.007118 0.050018 -0.026794 0.039337 0.068176 -0.093628 0.042572 -0.022766 0.023041 0.085815 -0.047882 0.048462 -0.079529 0.003159 0.106384 -0.030624 0.020584 0.071350 0.121277 0.048492 0.021729 -0.000547 -0.001014 0.022263 -0.071899 0.004353 -0.090027 0.009987 0.076843 0.120850 -0.011574 0.002878 -0.028198 -0.043274 -0.122681 -0.010452 0.116882 0.026321 -0.035095 0.026276 0.066223 -0.142700 -0.110718 -0.129028 0.036743 0.092468 0.028946 -0.010063 0.063965 -0.007389 -0.013794 0.029633 -0.019318 -0.097107 0.023788 0.051880 -0.008713 -0.061493 0.045105 0.064148 0.145508 0.015343 0.068848 -0.005005 0.058746 -0.035828 -0.150146 -0.018845 0.108154 0.046631 0.027893 0.075745 0.043640 0.040955 -0.051086 0.006142 0.046204 0.030777 -0.055878 -0.074158 -0.081116 0.028915 0.019135 -0.018143 -0.058716 0.038940 0.121460 -0.087952 -0.074036 0.054962 0.019257 -0.021271 -0.029343 -0.034821 -0.027847 -0.009468 -0.084961 -0.006275 -0.073181 -0.059784 -0.019318 -0.027313 -0.113342 -0.012100 -0.010414 -0.043915 -0.035858 0.075134 0.069458 -0.047394 -0.017044 -0.113342 -0.009277 -0.026855 0.100525 0.005264 0.043335 -0.015671 0.069763 0.025787 0.086182 -0.049744 -0.112976 0.041992 0.081055 -0.014153 -0.055817 -0.042053 -0.008095 -0.052765 -0.008560 0.017288 0.012192 -0.024124 -0.022476 0.016113 0.037781 0.070068 0.021454 -0.025894 0.007637 0.015060 0.012817 0.013016 -0.087769 -0.166626 -0.027710 0.138794 0.077454 0.073425 0.107544 -0.079773 -0.051636 0.136597 -0.005013 0.110535 -0.018265 0.076843 -0.085510 -0.106934 0.052887 -0.015778 0.037201 -0.051636 -0.060486 -0.053040 0.035309 -0.004551 0.028625 -0.018753 0.050964 -0.001712 0.038269 0.086243 -0.074036 0.088501 -0.030411 0.055084 0.105713 -0.083496 -0.026337 -0.014778 -0.037781 0.039856 0.002731 -0.019775 0.012169 -0.116150 -0.026581 0.089050 -0.126953 -0.074463 0.057404 0.060913 0.113647 0.126343 -0.177490 -0.016098 0.121338 0.025635 -0.034912 0.037933 0.054993 0.002819 -0.044312 -0.017319 -0.002031 0.054047 0.002380 0.025864 -0.065430 0.120789 0.033661 0.065063 0.037476 0.164795 0.007702 0.021988 -0.102295 -0.028351 0.027954 -0.056335 -0.024338 -0.043091 -0.024368 -0.092346 0.027893 -0.004936 -0.091309 0.057648 0.029129 0.064697 0.062347 -0.014366 0.105286 -0.029861 -0.035004 -0.012291 -0.043488 -0.002838 0.077637 -0.021118 0.067261 -0.046326 -0.028198 0.019073
|
||||
-0.019547 0.017227 0.079468 0.050995 -0.020905 0.054535 0.063477 0.010490 -0.075073 -0.027695 -0.036591 0.005089 -0.050415 -0.009796 0.065369 -0.159302 0.028259 -0.103210 0.031952 0.041595 -0.074524 0.036835 0.003414 0.004292 0.091736 -0.019775 0.019318 0.123596 0.091431 0.084656 0.047760 -0.075256 -0.080139 0.047638 -0.089172 -0.030365 -0.032898 -0.005299 0.034027 0.136230 -0.006153 0.004593 -0.020660 -0.057709 -0.154297 0.028580 0.072815 -0.027557 -0.080261 -0.006535 0.044159 -0.076477 -0.194458 -0.118530 0.001003 0.013329 -0.002794 -0.037262 0.078369 -0.052185 -0.019104 0.067749 -0.052307 -0.044281 -0.019089 -0.037018 -0.019043 -0.112366 -0.004452 0.027481 0.078003 -0.022705 0.033630 -0.048706 0.076233 -0.039429 -0.141479 0.001478 0.106079 0.027679 0.019119 -0.010971 0.076660 0.070923 -0.070129 0.007637 0.054382 0.018478 -0.065247 -0.059662 0.035461 0.056519 0.016312 -0.109497 -0.091309 0.016678 0.058228 -0.058716 -0.019608 0.047974 0.008888 -0.077820 -0.052521 -0.039948 -0.047821 0.062927 -0.074585 -0.025009 -0.042480 -0.041351 0.006721 -0.080444 -0.102600 -0.011734 -0.024414 -0.074036 -0.013779 0.098022 0.035858 -0.045227 0.036591 -0.086182 -0.032288 -0.010651 0.117126 0.044708 0.133179 -0.000095 0.007702 -0.000188 0.034454 -0.052490 -0.103088 0.054626 0.019211 0.024567 0.032745 -0.086304 -0.001982 -0.085938 -0.013824 0.042572 0.031250 -0.121704 -0.041443 0.066345 0.049042 0.030045 -0.000487 -0.053009 -0.018280 0.011147 -0.004734 0.001528 -0.063721 -0.177979 -0.077087 0.121643 0.034363 0.026962 0.038391 -0.059692 -0.070862 0.133667 0.021194 0.040527 0.000845 0.043121 -0.090576 -0.050781 0.028046 -0.032043 0.029404 -0.055267 -0.020523 0.029922 0.021484 -0.019424 0.043457 -0.000768 0.095520 -0.065491 0.007076 0.061493 -0.083496 0.017975 -0.070068 -0.006790 0.103516 -0.037903 0.011345 -0.002974 -0.061798 0.018494 0.024857 -0.005688 0.017654 -0.091797 -0.030640 0.061340 -0.094360 0.028656 0.068726 0.114441 0.042694 0.123596 -0.102112 -0.067688 -0.051117 -0.021927 -0.054047 0.016983 0.085022 -0.055756 -0.088867 -0.021667 0.001245 0.129517 -0.000105 -0.028290 -0.089905 0.091797 0.070679 0.044403 0.107361 0.118713 -0.009193 0.001342 -0.065735 -0.090759 0.062744 -0.050201 -0.011253 -0.028641 -0.019089 -0.081360 0.038177 -0.005924 -0.100769 0.075806 -0.002293 0.025299 0.014084 -0.096252 0.108765 0.042755 -0.044373 0.031555 -0.020432 -0.063660 0.049377 0.059967 0.079712 -0.019913 -0.069519 -0.024734
|
||||
-0.099182 -0.005066 0.021225 0.041534 0.022964 0.086365 0.043854 -0.005367 -0.035828 -0.026932 0.039917 0.029739 -0.040344 0.031403 0.073242 -0.131226 0.041107 -0.035278 0.069397 -0.028214 -0.099670 0.088501 -0.085144 -0.116577 0.074890 -0.016815 -0.033081 0.002676 0.087585 0.018158 0.060028 -0.052917 -0.057190 -0.071045 -0.073059 -0.187256 -0.090088 -0.025604 0.024994 0.117737 0.022842 0.034973 -0.064453 -0.025558 -0.175415 0.025665 0.054901 -0.015671 -0.116333 -0.014664 0.101135 -0.145142 -0.055359 -0.048553 0.041168 0.063782 0.061981 0.016357 0.051331 -0.074158 0.000396 0.041718 -0.044952 -0.043640 0.034119 0.048859 0.000998 0.001293 0.014595 0.047272 0.068970 0.003481 0.036926 -0.000822 -0.002008 -0.007492 -0.104431 -0.055817 0.108215 0.069031 -0.047333 0.022583 -0.067383 0.033600 -0.064941 -0.058563 0.044800 0.029953 -0.033630 -0.083862 -0.016327 0.044037 -0.032349 -0.035828 -0.058197 0.022308 0.098083 -0.023361 -0.011063 0.042847 -0.014885 -0.066040 -0.039337 0.057129 -0.029373 -0.044922 0.020065 0.000145 0.013512 -0.030045 -0.062744 0.014297 -0.052612 -0.045868 -0.033386 -0.074707 -0.004780 0.133057 0.078918 -0.004128 0.010666 -0.044159 0.005611 0.006313 0.010712 -0.095337 0.013992 0.051422 0.012039 0.062927 0.044006 -0.047089 -0.063660 0.002865 0.010681 0.040802 -0.003397 0.039734 0.026505 -0.023529 -0.039856 -0.022858 0.052826 -0.099487 -0.001122 0.035339 0.073364 0.030167 -0.028961 0.042938 0.081665 0.006699 0.060913 -0.011246 -0.012276 -0.092712 -0.021683 0.015945 -0.004311 0.099121 0.032410 -0.060486 0.008461 0.063416 -0.004272 0.095154 -0.043365 0.020187 0.018539 -0.083435 0.078674 -0.111816 0.058105 -0.037048 -0.075562 0.071411 -0.007881 -0.094727 0.003986 0.010460 -0.018463 -0.040161 0.013809 0.112366 -0.119629 0.163940 0.004501 0.022598 0.109497 -0.067810 -0.032806 0.011215 -0.023804 0.021713 0.069763 -0.030396 0.063782 -0.068726 0.049561 0.045929 0.006653 -0.064209 -0.001053 -0.026169 0.076294 0.067444 -0.079590 -0.050201 0.036072 0.091858 -0.073486 0.091614 0.091553 -0.017975 -0.025253 -0.041229 -0.034149 -0.005013 -0.031921 0.080383 -0.113281 0.138306 0.010628 -0.000715 0.087891 0.230347 0.031067 0.060028 -0.186768 -0.050842 0.009583 -0.094971 0.042694 -0.068420 -0.054352 -0.093201 0.130371 -0.096924 -0.046082 0.024399 0.033966 -0.073059 0.068176 -0.030472 0.085205 -0.066650 -0.018066 -0.007835 -0.076233 -0.012787 0.037811 -0.001780 0.080505 -0.025040 0.006687 0.001554
|
||||
-0.002672 0.004059 0.026733 0.010757 0.015106 0.086914 0.065796 -0.050537 -0.040924 -0.048615 0.022690 0.055389 -0.011513 0.045227 0.033173 -0.125732 0.079285 -0.035553 -0.069458 -0.001429 -0.090271 0.070923 -0.080750 -0.076172 0.032318 -0.036713 -0.007397 0.093140 0.125244 0.035828 0.122253 -0.069458 -0.008095 0.041077 -0.101562 0.009193 -0.057312 0.009148 0.008636 0.118774 -0.010574 0.071045 0.069946 -0.021774 -0.111633 0.034119 0.096008 -0.027496 -0.103882 0.057892 0.067505 -0.157715 -0.170532 -0.086731 0.047028 -0.013161 0.005875 0.026962 0.098511 -0.056976 0.056030 -0.040436 -0.045837 -0.006550 -0.013000 0.021942 0.004185 -0.050049 0.054352 -0.001036 0.066711 -0.023544 0.143799 -0.037781 0.002804 -0.054565 -0.118469 0.071777 0.097595 0.006382 -0.001653 0.035065 -0.008743 -0.016754 -0.103516 -0.054108 0.050659 0.013130 -0.025101 -0.030762 -0.003277 0.105652 -0.010101 -0.058441 -0.089661 0.018799 0.079163 -0.045532 -0.021484 0.046417 0.048798 -0.106201 -0.002993 -0.044739 -0.018768 0.088440 -0.031174 -0.044067 -0.074158 -0.052063 -0.064575 -0.041046 -0.092102 -0.040955 0.045959 -0.056305 -0.005505 0.094849 0.033752 0.009224 0.042328 -0.089050 0.023071 -0.056366 0.105957 -0.021790 0.109131 0.007389 0.033264 -0.050262 -0.002802 0.002913 -0.065247 0.039398 0.060150 0.015266 0.048676 -0.018097 0.017242 -0.038422 -0.031677 0.015205 0.021362 -0.086975 -0.015106 0.045349 -0.014008 0.016617 0.021271 0.014214 -0.007179 0.000177 0.051727 -0.010948 -0.080811 -0.132080 -0.056763 0.114258 -0.016556 0.067444 0.043976 -0.097473 -0.050110 0.037781 0.044250 0.073608 -0.092468 -0.046295 -0.076172 -0.115295 0.041016 -0.032104 0.046783 -0.104492 -0.117310 0.002762 0.021545 -0.027527 0.015839 0.030273 0.060760 -0.074524 0.025879 0.048279 0.001818 0.040070 -0.119873 0.030243 0.137207 0.011017 -0.027191 -0.044159 -0.044098 0.067688 0.014481 -0.005348 -0.002609 -0.142456 0.010223 0.002949 -0.171997 -0.035400 0.100769 0.081604 0.081970 0.059143 -0.123291 -0.072754 -0.009857 0.011314 -0.049072 -0.004211 0.082336 0.008682 -0.069885 -0.027573 0.000644 0.088989 -0.042786 -0.016357 -0.022034 0.107605 0.057037 0.054565 0.092285 0.171631 -0.045654 -0.001109 -0.085327 -0.042786 0.014229 0.013802 -0.041016 -0.080200 0.034760 -0.088806 0.052002 -0.017181 -0.106201 0.052856 0.030502 0.021698 0.059326 -0.036957 0.097900 -0.040710 -0.097534 0.022766 -0.035065 -0.043304 0.049133 0.008873 0.037415 0.034973 -0.000811 -0.023911
|
||||
-0.033356 -0.034546 -0.002728 -0.010056 0.047394 0.056671 0.029099 -0.058655 -0.011841 -0.065125 -0.045746 0.014122 -0.076660 -0.031021 0.024994 -0.169678 0.030624 -0.044495 -0.001725 -0.036255 -0.101257 0.080139 -0.048157 -0.075623 0.039581 -0.062866 0.001045 0.083923 0.044678 -0.019852 0.106628 -0.089905 -0.023071 -0.026917 -0.182129 -0.073608 -0.077209 -0.002439 0.049744 0.131470 0.022186 0.041656 0.075195 -0.002686 -0.084961 0.042877 0.093628 -0.039886 -0.089966 0.005455 0.045105 -0.053894 -0.172852 -0.057800 0.061707 0.005562 0.041077 0.003012 0.045776 -0.064636 0.011955 -0.010483 -0.055603 0.030624 -0.040955 -0.002554 -0.006348 -0.032593 -0.009300 -0.040100 0.045074 -0.042480 0.140015 -0.053650 0.026001 -0.093994 -0.088379 0.059540 0.052246 -0.005692 -0.018097 0.005764 -0.009865 -0.022491 -0.081421 -0.091553 0.035004 0.014458 -0.016434 -0.054993 0.022873 0.091614 0.036102 -0.076050 -0.091797 0.046722 0.009140 -0.052368 -0.044617 0.126587 0.048370 -0.133057 -0.008705 -0.047302 -0.049835 0.045441 -0.021759 -0.079041 -0.095947 -0.056152 -0.045135 -0.001440 -0.000105 0.001273 0.044281 -0.042694 0.036774 0.108521 0.006268 -0.019897 0.098999 -0.052521 -0.018921 -0.036499 0.017334 -0.034393 0.091980 -0.027481 0.028458 -0.001714 -0.017715 -0.019150 -0.042480 0.030685 0.010597 -0.005608 -0.005108 -0.054871 0.061890 -0.028534 -0.086487 0.041534 0.016510 -0.054535 -0.017990 0.066528 -0.003099 -0.050201 -0.029160 0.005199 0.038422 0.025894 0.066162 -0.002695 -0.018707 -0.069336 -0.027725 0.089233 -0.053650 0.092407 0.040314 -0.085083 -0.075317 0.048584 0.026321 0.045410 -0.115051 -0.083374 -0.040924 -0.103516 0.055267 -0.074280 -0.021698 -0.116638 -0.051788 0.030289 0.049744 0.005131 -0.006432 0.023773 0.052612 -0.105286 -0.009377 0.040436 -0.077515 0.061005 -0.105042 0.013550 0.160889 0.029907 -0.029160 -0.053619 -0.014496 0.007076 -0.007786 -0.039001 0.028610 -0.123962 0.070007 -0.055634 -0.137451 -0.039246 0.110840 0.134766 0.123657 0.061676 -0.064392 -0.060852 -0.029709 0.063049 -0.045807 0.026840 0.109619 -0.006126 -0.074280 0.000083 -0.064453 0.094727 -0.112854 -0.029205 -0.023346 0.117798 0.074585 -0.022858 0.062134 0.143433 -0.079590 0.000958 -0.085815 -0.018127 0.053772 0.046356 -0.032806 -0.054596 0.056396 -0.064941 0.058990 -0.066284 -0.106201 0.040741 0.034576 -0.010460 0.062805 -0.015701 0.069458 0.016159 -0.072998 -0.021057 -0.067200 -0.071716 0.063721 -0.050934 0.106812 0.044342 -0.018616 -0.041840
|
||||
-0.002821 0.025803 0.044159 -0.007591 -0.024857 0.100464 0.018265 -0.035095 -0.049591 -0.051483 0.053223 0.046173 -0.100525 0.140991 0.019089 -0.059235 0.053009 0.067810 0.021881 0.004410 -0.064148 0.106201 -0.068420 -0.088318 -0.002048 0.011604 0.072021 0.107178 0.106323 -0.033020 0.077148 -0.049347 -0.022018 0.043884 -0.082520 -0.040894 -0.057526 0.048553 0.011414 0.103027 -0.017990 0.108459 -0.035797 -0.016418 -0.051697 0.023163 0.007095 -0.065979 -0.154297 0.067993 0.091003 -0.135864 -0.106628 -0.130615 -0.037048 -0.020493 -0.021149 -0.003214 0.139038 -0.022232 0.056915 -0.089417 0.001871 0.043243 0.046478 0.065369 0.028397 -0.019608 0.087036 0.010872 0.025284 -0.052429 0.152222 0.034760 0.020905 -0.041595 -0.078308 0.075989 0.096252 0.080444 -0.035065 0.052490 -0.054169 0.023605 -0.102539 -0.073547 0.130005 -0.001807 0.007305 -0.077881 -0.066772 0.059479 0.007988 -0.028412 -0.092896 -0.011925 0.027695 -0.005627 -0.034302 0.000691 -0.004726 -0.073181 -0.055084 0.019928 -0.072266 -0.013229 0.012375 -0.010880 -0.020554 -0.072815 -0.058380 -0.015511 -0.014206 -0.043518 0.066040 -0.064392 -0.000247 0.099304 0.052490 0.055054 0.046112 -0.056427 0.085571 -0.024567 -0.008087 -0.085571 0.037323 -0.014427 0.026825 -0.016541 0.011932 0.040955 -0.093994 0.043274 0.098633 0.071960 0.004017 -0.027695 0.053528 -0.031250 -0.008774 -0.073975 0.043427 -0.053040 -0.031952 -0.015961 0.043121 -0.045288 -0.002979 0.093811 0.058044 0.015060 0.017899 -0.038239 -0.063110 -0.134277 -0.084229 0.096497 -0.025116 0.036163 0.024384 -0.130493 0.025482 -0.093994 0.017410 0.059753 -0.103088 -0.052063 -0.083374 -0.091187 0.051514 -0.075562 0.025864 -0.063293 -0.094788 0.089661 0.011978 -0.108154 0.006912 0.005478 0.068909 -0.083801 0.034546 0.054291 -0.032684 0.099304 -0.043427 0.046051 0.089722 0.046509 -0.021622 -0.017944 -0.077271 0.085449 0.083252 -0.005154 -0.003345 0.003571 0.014122 -0.010872 -0.154053 -0.054291 0.108093 0.058777 0.062164 0.033569 -0.105652 -0.056183 -0.039368 0.063660 -0.009010 0.036804 0.081543 -0.072205 -0.087402 -0.086365 0.053528 0.036438 -0.058533 0.001586 0.004669 0.008781 0.012077 0.014732 0.028824 0.194580 -0.026169 -0.044373 -0.102966 -0.045837 -0.014503 -0.018097 -0.004013 -0.075745 -0.009956 -0.122498 0.033783 -0.042450 -0.033264 0.083496 0.011345 0.036377 0.034454 -0.009483 0.047577 -0.016571 -0.102356 0.020218 -0.106445 -0.011894 0.062073 0.010345 -0.014198 -0.018204 -0.013016 -0.013954
|
||||
-0.051422 -0.053284 0.033264 -0.019348 0.068909 0.092041 -0.007626 -0.049500 -0.018585 -0.018509 -0.024490 0.023331 -0.092041 -0.051697 0.052521 -0.158569 -0.001888 0.013802 -0.018372 0.056274 -0.113647 0.049927 -0.018723 -0.039642 0.066772 -0.038025 0.009285 0.036957 0.110291 -0.014015 0.099365 -0.024445 0.010544 0.026718 -0.131836 -0.059906 -0.123230 -0.000493 0.050476 0.082458 0.036774 0.028610 0.064758 -0.040253 -0.095154 0.006378 0.111267 -0.037750 -0.070679 -0.021194 -0.011139 -0.085022 -0.119202 -0.054291 -0.006268 0.027054 0.079224 -0.026031 0.058014 -0.014084 0.014961 -0.047241 -0.129150 0.021713 -0.073364 -0.006302 -0.001666 -0.072205 -0.045105 0.010315 0.056580 -0.057861 0.106812 -0.061462 0.089111 -0.050049 -0.067810 0.059448 0.066345 -0.023392 -0.041290 -0.026657 0.015091 0.015144 -0.044128 -0.069580 0.012932 0.013809 -0.035828 -0.072083 -0.007751 0.153931 0.008934 -0.084351 -0.102417 -0.019806 0.050262 -0.049683 -0.085144 0.093811 0.042603 -0.149292 -0.028427 0.007362 -0.094604 -0.027130 -0.071899 -0.089783 -0.086975 -0.042114 -0.065063 -0.013649 -0.061584 -0.073181 0.021790 -0.049225 0.014732 0.083130 0.011467 -0.037445 0.103821 -0.039001 -0.027924 -0.068298 0.101074 -0.050781 0.085571 0.016190 0.086304 0.005844 0.006462 -0.003719 -0.077576 0.048737 0.023132 -0.030807 -0.052460 -0.083557 0.000701 -0.020462 -0.086426 0.015518 0.030045 -0.053162 -0.056732 0.058624 -0.009583 -0.033203 -0.043854 0.026459 -0.024567 -0.022308 0.034515 0.014580 -0.033356 -0.088257 -0.021194 0.123474 0.008614 0.056152 0.046875 -0.116333 -0.063660 0.066162 0.046844 0.070007 -0.092346 -0.072937 -0.010422 -0.103455 0.078003 -0.042969 -0.005531 -0.107361 -0.028351 0.019852 0.002773 0.000597 0.063965 -0.000360 0.041931 -0.072998 -0.041748 0.056549 -0.057983 0.047974 -0.065735 0.014565 0.132202 -0.018295 -0.050079 -0.066467 -0.073059 0.010010 -0.011925 -0.054504 0.052734 -0.181274 0.077820 -0.045624 -0.124268 -0.041901 0.023117 0.122131 0.085083 0.061157 -0.073975 -0.050476 0.016479 0.056702 -0.098999 0.088379 0.071533 0.014328 -0.107910 -0.022766 0.011124 0.049835 -0.092468 0.015518 -0.040497 0.075928 0.046265 -0.019745 0.064575 0.108826 -0.066101 0.046539 -0.070496 -0.008858 0.036987 -0.034485 -0.040802 -0.058136 0.095459 -0.040802 0.078247 -0.049438 -0.113708 0.022324 0.021973 -0.035706 0.082458 -0.057648 0.056549 0.057007 -0.092590 -0.034424 -0.006813 -0.047485 0.076721 -0.015038 0.098694 -0.017593 0.005287 -0.057800
|
||||
-0.083923 -0.012230 0.036377 0.001880 0.021027 0.098328 0.088074 -0.047119 -0.083435 0.030960 0.012840 0.022110 -0.025635 0.007576 0.040222 -0.104980 0.031799 0.003391 -0.014328 0.080750 -0.052856 0.077148 -0.070862 -0.006203 0.115295 -0.024765 -0.053528 0.059540 0.118042 0.079163 0.098328 -0.004402 -0.044159 0.083862 -0.062927 -0.026306 -0.086182 -0.012077 0.033142 0.084900 -0.015068 -0.005337 -0.015839 -0.082764 -0.130981 -0.024643 0.101074 -0.011688 -0.087646 -0.039490 0.030334 -0.163574 -0.107239 -0.141602 0.025986 0.070068 0.046326 -0.045837 0.022034 -0.036896 0.001183 0.026443 -0.074341 -0.006821 0.000267 -0.016037 -0.049896 -0.116150 0.032227 0.029068 0.074280 -0.000811 0.057343 -0.062927 0.066162 -0.058685 -0.067627 0.012573 0.090881 0.003183 -0.027817 -0.003468 0.041870 0.008095 -0.015152 -0.011559 0.040588 0.029663 -0.109985 -0.122498 0.018463 0.107300 -0.009285 -0.073914 -0.101318 0.005703 0.119202 -0.004696 -0.077576 0.057648 0.032440 -0.077576 -0.057434 0.044891 -0.054169 0.004650 -0.093750 0.040436 -0.063660 0.020065 -0.064148 -0.044128 -0.085144 -0.079407 0.019424 -0.082153 -0.070129 0.058411 0.043793 0.005188 -0.016678 -0.095032 -0.012497 -0.041290 0.122498 0.006672 0.086182 -0.002424 0.070068 -0.000957 0.029709 0.001432 -0.095703 0.081177 0.028687 -0.013474 -0.014427 -0.095276 -0.040283 -0.039459 0.027740 -0.009064 0.014862 -0.117004 -0.057037 -0.005444 0.065369 -0.016647 0.021286 0.017456 0.014336 -0.040070 0.027634 0.029068 -0.074524 -0.130371 -0.008507 0.121033 0.050934 0.060547 0.081299 -0.095215 -0.080566 0.089905 0.025238 0.028152 -0.066772 -0.001808 -0.019608 -0.091431 0.045502 0.032990 0.038818 -0.041168 -0.083618 0.009956 -0.001778 0.008873 0.040405 0.021317 0.054016 -0.076111 0.024612 0.043762 -0.044189 0.048004 -0.010689 -0.006115 0.116516 -0.037201 -0.032440 -0.022400 -0.051666 0.048187 -0.004246 0.000114 0.003225 -0.202393 0.018555 0.010117 -0.122131 0.004211 -0.005424 0.051971 0.013687 0.083557 -0.095276 -0.114319 0.024429 0.051422 -0.080688 0.077942 0.073425 0.004986 -0.061737 -0.074890 0.051819 0.075134 -0.044739 0.034943 -0.110535 0.098267 0.082581 0.013878 0.101440 0.111450 -0.069519 0.039032 -0.114014 -0.040375 0.022415 -0.049500 -0.053467 -0.050598 0.028809 -0.076111 0.046692 0.017807 -0.155518 0.061096 -0.004524 -0.013512 0.040497 -0.059937 0.103699 -0.029770 -0.070801 -0.027710 0.006432 -0.050720 0.047729 0.082214 0.055542 -0.018814 0.014801 -0.007912
|
||||
-0.038055 0.019958 0.049561 0.041565 -0.013458 0.048767 0.025894 0.024277 -0.060150 -0.004219 -0.010170 -0.001792 -0.160034 0.095154 0.058044 -0.100464 0.001265 0.027161 0.046783 -0.025162 -0.106812 0.093262 -0.044556 -0.096619 0.016220 -0.045166 0.054718 0.070923 0.123962 -0.019836 0.048279 -0.039490 -0.060577 -0.031555 -0.121948 -0.039825 -0.044128 0.019684 -0.011787 0.158203 0.004612 0.101318 0.011192 -0.075317 -0.130127 0.006428 0.025177 -0.051422 -0.121582 -0.009109 0.119995 -0.091309 -0.114380 -0.091431 0.021194 0.017303 -0.006992 0.022659 0.126465 -0.099365 0.009476 -0.004822 -0.075073 -0.054962 0.034912 0.069763 -0.049225 0.017838 0.015327 0.080994 0.060272 -0.027176 0.003904 -0.002186 0.049194 -0.050659 -0.130371 -0.002192 0.100281 0.084290 -0.059326 0.002989 -0.040375 0.130737 -0.059326 -0.131836 0.087219 0.074768 -0.063599 -0.080322 -0.046356 0.012016 0.013664 -0.023819 -0.105591 0.052124 0.015106 -0.039337 -0.053833 -0.005165 -0.013947 -0.066895 -0.040619 0.096863 -0.030121 -0.054016 0.003914 -0.058014 -0.029083 -0.039673 -0.031174 -0.045319 -0.036102 -0.071655 0.032715 -0.075317 0.040039 0.135498 0.072388 -0.003748 0.016144 -0.075562 -0.011444 -0.019455 0.019958 -0.112732 -0.013557 0.066162 0.090149 0.043732 0.008461 0.006870 -0.085693 -0.037445 0.064697 0.061066 0.021210 0.004478 0.039917 -0.038757 -0.034210 -0.053619 0.005909 -0.031921 -0.039185 0.028717 0.054077 0.104980 0.003412 -0.048187 0.026352 -0.015762 0.012947 0.008896 -0.033752 -0.166016 -0.004364 0.092224 0.071167 0.043793 0.024017 -0.109741 0.025528 0.055420 -0.035034 0.036987 0.007515 -0.043732 -0.076782 -0.078735 0.110657 -0.079407 -0.035950 -0.041412 -0.048218 0.031616 -0.016083 -0.081970 -0.014015 -0.019241 0.048950 -0.077698 -0.032562 0.088989 -0.120178 0.118713 -0.021210 0.001942 0.062225 -0.024872 -0.034668 0.016403 -0.064392 0.011452 0.080566 -0.017426 0.007988 -0.010399 0.001991 0.002514 0.012474 -0.013641 0.063721 0.014748 0.064331 0.069824 -0.111450 -0.060699 -0.041199 0.053741 -0.033447 0.122681 0.055145 -0.037018 -0.078003 -0.044312 0.109619 -0.029160 -0.057770 0.092041 -0.087097 0.020737 0.011780 -0.014877 0.043213 0.157104 0.013802 -0.001750 -0.102783 -0.048615 0.028397 -0.114380 0.045258 -0.077942 -0.051392 -0.072021 0.063110 -0.056976 -0.049683 0.069885 0.005642 0.024658 0.067627 -0.033905 0.082336 -0.031616 -0.055603 0.076233 -0.071289 0.024704 0.048096 -0.029373 0.031235 -0.098694 -0.029358 -0.051636
|
||||
-0.004452 -0.003263 0.044342 -0.006626 -0.053192 0.069397 0.042877 -0.056915 -0.046265 0.008614 0.029205 0.022827 -0.115234 0.135010 0.019547 -0.107544 0.045074 -0.041199 0.021286 0.038055 -0.053955 0.044586 -0.040985 -0.052399 0.010002 0.046509 0.083252 0.088867 0.118347 0.006226 0.137695 -0.022202 -0.039490 0.046051 -0.126831 0.006031 -0.063843 0.069519 -0.022369 0.105652 0.003038 0.086365 -0.016495 -0.068909 -0.058624 0.046265 0.041656 -0.025833 -0.147827 0.074951 0.087585 -0.111328 -0.089783 -0.045929 -0.039398 -0.042816 0.020233 -0.039825 0.115112 -0.023148 0.064209 -0.119690 -0.067322 0.015686 -0.012474 0.029480 0.039520 -0.064575 0.069946 0.050079 0.045074 -0.043518 0.098206 0.012657 0.035065 -0.056824 -0.109619 0.025223 0.181030 0.065186 -0.042755 0.002779 -0.012924 0.016998 -0.074890 -0.020874 0.043762 0.030609 -0.012344 -0.064575 -0.027969 0.075317 -0.031830 -0.088074 -0.102173 -0.070312 0.048645 -0.054413 -0.077881 0.036102 0.006519 -0.100037 -0.084290 0.012535 -0.069458 0.001565 -0.011230 -0.068726 -0.033447 -0.057190 -0.034302 -0.009758 -0.048798 -0.059326 0.039276 -0.068848 -0.020523 0.094482 0.011330 0.043030 0.027939 -0.042725 0.054535 -0.037201 0.069885 -0.043793 0.076294 -0.003647 0.001885 -0.037964 -0.023758 0.065857 -0.118225 0.075134 0.091858 0.037872 0.010193 -0.075256 0.036346 -0.028183 -0.009163 -0.073242 0.034363 -0.046265 -0.061066 0.029587 0.015068 0.049042 0.014870 0.028641 0.002771 -0.004677 0.019989 -0.054474 -0.090332 -0.145630 -0.111145 0.144409 0.008011 0.021179 0.024017 -0.122192 0.022675 -0.038422 0.025162 0.049561 -0.044037 -0.019165 -0.047638 -0.083862 0.040771 -0.022903 0.056702 -0.056274 -0.073792 0.062195 -0.005711 -0.024521 0.060150 0.056305 0.059448 -0.111938 0.012901 0.081360 -0.014015 0.033936 -0.054382 0.023087 0.100586 0.006187 -0.010628 -0.044983 -0.104614 0.061401 0.101868 0.008530 0.007843 -0.097961 0.028030 0.008217 -0.117371 0.002672 0.015297 0.066162 0.060944 0.068481 -0.106323 -0.106628 -0.019516 0.086060 -0.014824 0.052307 0.153687 -0.034546 -0.062866 -0.079590 0.061523 0.054749 -0.015961 -0.017670 -0.028564 0.031555 -0.010193 0.001993 0.068970 0.194458 0.015320 -0.025223 -0.097961 -0.022797 0.008041 0.039307 -0.012276 -0.081604 0.062195 -0.112732 0.043121 -0.034241 -0.062866 0.054230 0.003893 -0.008354 0.059448 -0.064819 0.097900 0.029205 -0.097595 0.057068 -0.076172 -0.037506 0.039276 -0.005642 -0.021835 -0.007084 0.002829 -0.035126
|
||||
-0.080139 0.004890 -0.001188 0.046844 0.072693 0.085388 0.084534 -0.066772 -0.044617 -0.047699 -0.011375 0.073181 0.018509 0.016113 0.049194 -0.158936 0.030365 -0.027267 -0.007996 0.014519 -0.053772 0.057190 -0.085571 -0.049103 0.083740 -0.027191 -0.049347 0.051361 0.051422 0.041779 0.085693 -0.028198 0.012779 0.012482 -0.092712 -0.095398 -0.074829 -0.011581 0.019470 0.119629 0.044159 0.030579 0.025757 0.000083 -0.146851 0.000938 0.061279 0.013176 -0.099609 0.006954 0.043182 -0.188354 -0.097656 -0.082886 0.081238 0.083069 0.045135 0.009468 0.023773 -0.058685 0.018066 0.069092 -0.034332 0.019608 0.002611 0.055145 -0.013062 -0.083740 -0.012505 0.011131 0.061371 -0.009201 0.141357 -0.026199 -0.012093 -0.035156 -0.107788 0.054169 0.078979 0.015884 0.001720 0.011414 -0.000395 0.002388 -0.108826 -0.038513 -0.011688 0.020126 0.017487 -0.117859 0.001474 0.061646 -0.007038 -0.099609 -0.049377 0.022385 0.109009 -0.014183 -0.091675 0.050903 0.050476 -0.048248 -0.011078 0.019104 -0.001171 0.070435 -0.063477 0.000863 -0.054108 0.003925 -0.076904 0.012589 -0.035004 -0.063782 0.013916 -0.074951 -0.024246 0.123535 0.056976 -0.007507 0.017807 -0.104675 -0.013039 -0.002748 0.068481 -0.010826 0.069519 -0.019684 0.079712 0.008194 0.024170 -0.037933 -0.099243 0.041016 -0.020508 -0.035614 -0.032837 -0.054535 -0.007641 -0.051270 -0.032806 0.027237 -0.019363 -0.102844 -0.036621 0.020004 0.051178 -0.048828 0.022568 0.046082 0.014961 -0.015465 0.061035 0.025742 -0.050659 -0.103210 0.005821 0.090210 -0.042328 0.137695 0.047302 -0.056671 -0.088135 0.026230 0.009293 0.060486 -0.082214 -0.012062 -0.048553 -0.106201 0.036316 -0.059143 0.075867 -0.070923 -0.123840 0.009308 0.043732 -0.019302 0.046173 0.003698 0.048248 -0.068726 0.069641 0.036407 -0.002552 0.116455 -0.049225 -0.005409 0.101929 -0.024002 0.010139 -0.021988 -0.026489 0.043884 -0.013351 0.011971 0.002176 -0.134521 0.053864 0.043152 -0.145874 -0.009880 0.046692 0.069763 0.107300 0.033142 -0.075317 -0.113953 0.057220 0.077209 -0.058929 0.024109 0.078674 0.010574 -0.005505 -0.062317 -0.047791 0.089294 -0.067322 0.031433 -0.073792 0.165283 0.046631 0.052277 0.091003 0.161255 -0.064880 0.014786 -0.149048 -0.061127 0.018341 0.003496 -0.018280 -0.043152 -0.007374 -0.106079 0.107605 0.002144 -0.118347 0.058624 0.047455 -0.022339 0.051453 -0.018509 0.119446 -0.072937 -0.071106 -0.066040 -0.018814 -0.003826 0.042603 -0.009926 0.090393 0.017899 0.019165 -0.000245
|
||||
-0.030579 -0.037018 0.093201 0.015778 0.078064 0.032928 0.022293 0.082703 -0.059753 0.003086 -0.045227 0.000596 -0.054291 -0.059052 0.061707 -0.088745 -0.034332 -0.014809 0.086731 0.160278 -0.056366 -0.066589 0.036774 0.089905 0.090210 0.009636 0.026077 -0.027557 0.016968 0.083679 -0.018631 0.008858 0.003799 0.117126 0.026550 0.008095 0.037170 -0.028229 0.033295 0.040161 0.073914 0.005024 0.001634 -0.070068 -0.045959 0.003378 0.119141 -0.002274 0.080994 -0.085571 -0.057495 -0.076599 -0.026367 -0.031464 -0.032349 0.023834 0.024841 -0.012764 0.016953 -0.099731 -0.003805 0.074524 -0.208862 -0.037750 -0.047943 -0.038391 -0.048187 -0.069763 -0.091858 0.089111 0.118225 0.008972 -0.071716 -0.071350 0.172852 0.015701 -0.140259 0.027908 0.032715 -0.045319 -0.041779 -0.024933 0.084473 0.029877 0.050842 -0.041412 0.011452 0.068237 -0.089905 -0.071350 0.063354 0.056488 0.036224 -0.055786 -0.018738 -0.056885 0.116516 -0.026413 -0.086548 0.023834 0.003456 -0.014076 -0.033020 0.016556 -0.023911 -0.034790 -0.151733 -0.000883 0.007282 0.021057 -0.060242 -0.113281 -0.088074 -0.038452 -0.003799 -0.064636 -0.042694 0.023941 0.029373 -0.067871 0.026962 -0.071167 0.017639 -0.045990 0.175659 0.033539 0.085632 0.070190 0.128174 -0.032074 0.009315 -0.019562 -0.051971 0.042542 -0.012505 -0.010437 -0.022537 -0.078613 -0.066284 0.007004 0.042450 -0.038605 0.033142 -0.059052 -0.033142 -0.005440 0.029236 0.005566 0.004143 -0.050781 -0.080627 -0.057678 -0.090698 0.048889 -0.018723 -0.071594 -0.012131 0.097778 0.065002 -0.034515 0.014633 -0.086060 -0.095154 0.182861 0.037933 0.029266 0.042664 -0.020813 0.018372 -0.017059 0.061340 -0.045166 0.019165 0.017838 0.089233 -0.003374 -0.013435 0.050690 -0.005253 -0.067871 0.054901 -0.025330 -0.087952 0.077820 -0.061127 -0.020996 -0.034485 -0.053070 0.055450 -0.042877 -0.023346 0.032867 -0.033447 0.044708 -0.034271 -0.017487 0.050476 -0.171387 0.005592 0.011017 0.029465 0.005554 -0.027390 0.081787 -0.023773 0.083374 -0.061462 -0.067871 0.020706 0.000172 -0.124146 0.077881 -0.054108 0.109253 0.004658 0.000799 0.107300 -0.016739 -0.046753 0.033905 -0.065918 0.052002 0.015900 0.018280 0.033203 -0.024475 0.074829 0.086670 0.011276 -0.063782 0.028366 -0.084595 0.009186 0.057159 0.066040 -0.009193 -0.011086 0.063416 -0.104187 0.005638 0.014366 0.065186 -0.005424 -0.165405 0.008659 0.043091 -0.047668 -0.023590 0.128174 -0.068726 -0.009415 0.021774 0.091858 -0.136597 0.015137 -0.045898
|
||||
-0.097900 -0.018066 0.051697 0.019623 0.008308 0.054993 0.025314 0.018570 -0.082092 -0.039581 0.048065 0.013893 -0.109375 0.099854 0.100342 -0.077087 0.026047 0.072449 -0.006367 0.084534 0.055847 0.022552 -0.057312 -0.060486 0.006004 -0.032623 0.081543 0.034210 0.077637 0.053314 0.000253 -0.009506 -0.018860 0.089722 -0.050903 -0.019867 -0.038330 0.086731 0.004475 0.070068 -0.022797 0.084473 -0.011024 -0.071716 -0.089417 0.056183 0.073059 -0.011292 -0.130615 0.056915 0.068665 -0.116150 -0.125244 -0.077576 -0.018539 0.022568 -0.005653 0.009415 0.091187 -0.064270 0.009895 -0.085022 -0.014755 -0.078003 0.048340 0.013161 0.053345 0.062744 0.091125 0.020935 0.079407 -0.019775 0.131348 0.004440 0.037231 -0.047302 -0.085388 -0.055511 0.148926 0.048828 0.012016 0.061859 -0.052124 0.043701 -0.084106 0.016937 0.085449 -0.008255 -0.029602 -0.050293 -0.017563 -0.014091 -0.009750 0.044678 -0.108948 0.004478 0.055115 0.002878 -0.032898 -0.045074 0.082214 0.002533 -0.034515 0.052887 -0.027649 0.064697 -0.076904 0.002522 0.028824 -0.096069 -0.039642 -0.075378 -0.058044 0.027420 0.006630 -0.056244 -0.016632 0.046265 0.115295 0.037964 0.048584 -0.019958 0.029434 0.036774 0.031677 0.102539 0.026459 0.063293 -0.002195 -0.015373 0.055328 0.092224 -0.222046 -0.008385 0.105103 0.042145 -0.004360 0.073853 0.018982 -0.002781 0.087463 -0.057251 0.038391 -0.029236 -0.003014 0.008064 0.056366 0.065063 0.057526 0.026001 0.101929 -0.042145 -0.003368 -0.092712 -0.089111 -0.134155 -0.114685 0.151978 0.124756 -0.077515 0.033600 -0.085449 0.059052 0.060242 0.060303 0.068237 0.011040 0.039124 -0.060333 -0.064514 0.077393 0.022858 0.079651 -0.027756 -0.029053 0.028442 -0.040955 -0.069580 -0.007431 0.016357 0.113892 0.011200 0.002327 0.112061 0.005257 0.063049 -0.024750 0.065796 0.031769 -0.041870 -0.043793 0.047272 -0.039032 0.026520 0.028107 -0.060211 0.005028 -0.050201 -0.088867 -0.031158 -0.087830 -0.014725 0.121155 0.001140 0.015823 0.015404 -0.078125 -0.130859 0.043182 0.061218 -0.070740 -0.057983 0.125732 -0.048492 -0.028580 -0.128052 0.052490 0.029022 -0.032959 0.008850 -0.044250 0.009117 0.011604 0.011948 0.021652 0.154175 0.051300 0.027084 -0.116333 -0.057465 0.009033 -0.081299 0.069641 0.015854 -0.030167 -0.017487 -0.080994 0.013069 -0.023911 0.075012 -0.004845 0.028564 0.012962 -0.094604 0.042114 0.035065 -0.041901 0.061371 -0.045441 0.001947 0.041168 -0.013412 0.010803 -0.132324 -0.024384 0.009148
|
||||
-0.050232 -0.029907 0.029968 0.070984 0.040710 0.065491 0.114807 -0.041656 -0.019653 -0.049713 0.020020 0.046844 0.043121 0.021820 0.034637 -0.145630 0.047852 0.023804 -0.006161 -0.040955 -0.043427 0.136475 -0.111938 -0.082581 -0.001426 -0.034973 -0.012955 0.096436 0.057983 0.032257 0.080627 -0.060852 -0.016174 0.016693 -0.043213 -0.080688 -0.024429 0.023132 -0.031769 0.094055 0.025726 0.101501 0.004742 0.028336 -0.125488 0.051392 0.007545 -0.058228 -0.176270 0.028961 0.068970 -0.171387 -0.127075 -0.095520 0.025986 -0.006886 -0.003963 0.056519 0.089661 -0.105347 0.064758 0.019669 -0.063782 0.007202 0.014999 0.034882 -0.034515 -0.042053 0.035858 -0.013237 0.015320 -0.006924 0.108337 -0.011086 -0.015358 -0.022949 -0.088440 0.025055 0.085266 0.061005 -0.041260 0.001339 -0.058899 0.009125 -0.177124 -0.073792 0.059448 0.004276 -0.011566 -0.114624 0.002691 0.027420 -0.015915 -0.088440 -0.077026 0.015884 0.075745 0.013824 -0.046204 -0.033752 0.046173 -0.033112 -0.021545 0.055817 0.058533 0.073975 -0.020203 0.016922 0.015854 -0.007866 -0.065552 -0.027496 -0.030762 -0.083130 -0.013062 -0.079712 -0.051575 0.155884 0.075806 0.015732 0.021255 -0.049866 0.022003 0.001189 0.040924 -0.016296 0.103638 0.013123 0.013039 -0.034515 -0.007328 0.027924 -0.120667 -0.017715 0.004032 0.057098 0.083252 0.068054 0.028336 -0.015518 -0.012276 -0.002171 0.035767 -0.115479 -0.029968 -0.012703 0.080688 -0.033661 0.025665 0.030258 0.041992 0.010574 0.039276 -0.009750 -0.027176 -0.101196 0.001236 0.045654 -0.032471 0.082581 -0.019379 -0.112549 -0.007164 -0.027527 0.015656 0.076782 -0.042267 -0.071228 -0.061951 -0.131348 0.024002 -0.043549 0.032562 -0.092407 -0.122681 0.095642 0.008530 -0.117371 -0.001532 0.015182 0.058105 -0.061249 0.008995 0.044281 -0.008644 0.132935 -0.058197 -0.035675 0.070190 0.010468 0.012047 -0.007393 -0.053864 0.072571 0.029541 -0.009552 -0.011047 -0.050598 0.042328 0.004589 -0.117554 -0.022949 0.094116 0.025574 0.060303 0.010223 -0.022995 -0.119873 -0.039307 0.081360 -0.078552 -0.005035 0.116333 0.007858 -0.052277 -0.078552 0.024384 0.069702 -0.081299 0.028488 -0.078247 0.109619 0.064941 -0.002388 0.070129 0.161743 -0.045288 -0.000926 -0.184326 -0.087952 -0.029404 -0.009354 -0.010010 -0.072388 -0.047394 -0.092651 0.095642 -0.003744 -0.057465 0.071289 0.021484 -0.011467 0.009033 -0.077759 0.086975 -0.024933 -0.098328 -0.000576 -0.064819 -0.001911 0.031372 0.021484 0.007420 0.017944 0.024734 0.006130
|
||||
-0.070312 -0.005947 0.027618 -0.002037 0.045868 0.094788 -0.056000 -0.002676 -0.092529 -0.000098 -0.038666 0.000777 -0.112854 -0.026031 0.094971 -0.123108 -0.035004 0.058929 0.032867 0.143921 -0.101318 0.009460 0.048767 0.023743 0.085571 -0.051208 0.009773 0.037415 0.153442 -0.009506 -0.009415 0.047485 -0.008148 -0.026474 -0.073853 -0.024109 -0.130859 -0.002478 0.042175 0.065063 0.014091 -0.019730 -0.001864 -0.110046 -0.086609 -0.030090 0.122681 -0.036438 0.006531 -0.043915 -0.005352 -0.071289 -0.099792 -0.074951 0.020462 0.102295 0.080017 -0.046722 0.071350 -0.001657 -0.061432 -0.028610 -0.097229 -0.024887 -0.031525 0.010147 -0.036255 -0.037689 -0.015274 0.051361 0.073059 -0.043304 0.058685 -0.057983 0.124451 -0.046875 -0.077332 -0.012367 0.040070 -0.007004 -0.012955 -0.023727 0.041443 0.056854 0.003002 -0.048309 0.021881 0.006939 -0.093628 -0.066345 -0.004349 0.089478 0.017868 0.017838 -0.099304 -0.013039 0.048340 -0.071167 -0.080261 0.075989 0.008705 -0.080566 -0.064148 0.042450 -0.083374 -0.087280 -0.110718 -0.050629 -0.102295 -0.045929 -0.040955 -0.021957 -0.051788 -0.016785 0.003160 -0.040283 -0.007442 0.025772 0.054565 -0.064758 0.072998 -0.059113 -0.057770 -0.015366 0.114136 -0.001216 0.047028 0.026245 0.125000 0.076599 0.069824 0.006954 -0.129395 0.022415 0.060455 -0.057617 -0.141724 -0.126831 -0.048492 -0.066589 -0.018692 -0.019989 0.018097 0.004642 -0.044586 0.027374 0.009232 0.081543 0.006332 -0.012268 -0.023163 -0.063416 0.009834 -0.015190 -0.050354 -0.125854 -0.034637 0.161377 0.135254 -0.010040 0.093994 -0.096130 -0.037140 0.148193 0.019608 0.066284 -0.063049 0.018158 -0.025818 -0.031464 0.107483 -0.025482 -0.022354 -0.057739 0.009651 -0.041138 -0.025269 0.002100 0.043091 -0.059875 0.049072 -0.019424 -0.014809 0.080505 -0.093262 0.033081 0.023361 0.031952 0.056000 -0.024506 -0.039490 -0.036987 -0.076477 -0.077393 -0.005325 -0.055328 0.055359 -0.152344 -0.000388 -0.001614 -0.039124 -0.037048 0.022781 0.091675 0.016159 0.081970 -0.097595 -0.041138 0.042297 0.039703 -0.089233 0.108032 0.036102 0.006413 -0.089600 -0.045868 0.068665 -0.008690 -0.049316 0.040558 -0.070251 0.029251 0.045563 0.009613 0.018402 0.071106 -0.039612 0.086121 -0.033844 -0.010750 0.041962 -0.111572 -0.017242 -0.006210 0.042236 0.008698 0.037933 0.017273 -0.159790 0.076294 0.046417 -0.012756 0.083435 -0.056946 0.047729 0.075806 -0.023743 -0.013535 0.029831 0.017609 0.031708 -0.005264 0.139771 -0.110962 0.002268 -0.048065
|
||||
-0.035767 -0.028107 0.045929 -0.037933 0.070496 0.030014 -0.012184 -0.032318 -0.044220 -0.037415 -0.006599 -0.011330 -0.102112 -0.027328 0.026840 -0.131714 0.000075 -0.027939 0.042206 0.035828 -0.093262 0.045410 -0.005596 -0.039001 0.031158 -0.007919 0.068787 0.019775 0.079224 -0.026947 0.100586 -0.049438 -0.006439 0.016922 -0.156250 -0.088623 -0.143799 0.002457 0.034729 0.079590 0.053314 0.076050 0.067627 -0.045105 -0.054840 0.045074 0.089355 -0.026901 -0.108093 -0.014633 0.006062 -0.019257 -0.135010 -0.043091 -0.006924 0.009819 0.092285 -0.018723 0.063599 -0.013832 0.025146 -0.062317 -0.085999 0.012665 -0.025925 0.012329 0.038208 -0.059631 -0.033295 -0.005219 0.065918 -0.035797 0.147095 -0.098022 0.075745 -0.080505 -0.058929 0.057678 0.080933 0.002102 -0.039459 0.020325 -0.005451 -0.022675 -0.041809 -0.048492 0.052094 0.000624 -0.019958 -0.042084 -0.002735 0.118835 0.040894 -0.062866 -0.113464 -0.030167 0.006264 -0.055481 -0.066833 0.098206 0.023132 -0.157227 -0.057220 -0.055023 -0.093445 -0.007530 -0.026260 -0.098022 -0.075623 -0.070374 -0.055664 -0.030441 -0.048279 -0.001378 0.035217 -0.053864 0.032135 0.102173 0.018951 -0.026199 0.147583 -0.019958 0.011856 -0.044617 0.048828 -0.011116 0.110779 0.059631 0.029861 0.012886 -0.013382 0.018631 -0.055603 0.059906 0.041870 0.021408 -0.063843 -0.107910 0.060547 -0.055664 -0.073547 0.029037 0.039612 -0.057556 -0.074158 0.116821 -0.035431 -0.027084 -0.019653 0.024796 0.051483 -0.036377 0.030197 0.015320 -0.047394 -0.079163 -0.072998 0.112488 -0.006538 0.038269 0.031555 -0.084351 -0.020676 0.063049 0.054199 0.054077 -0.087952 -0.020065 -0.016617 -0.083801 0.092407 -0.069885 -0.009178 -0.080750 0.012032 0.029785 0.014832 -0.017441 0.030228 0.036194 0.063232 -0.088074 -0.005589 0.055847 -0.049408 0.054474 -0.069763 0.041809 0.150879 -0.020218 -0.037109 -0.076172 -0.051025 0.012947 0.016388 -0.071106 0.109802 -0.121643 0.075317 -0.041870 -0.148315 -0.014671 0.074036 0.124207 0.103149 0.084045 -0.095215 -0.055084 0.019196 0.047821 -0.036011 0.040833 0.103882 -0.032471 -0.097717 0.020737 -0.028336 0.044922 -0.089417 -0.019363 0.011261 0.056000 0.037628 -0.000360 0.052429 0.125732 0.008881 0.008469 -0.083374 -0.002447 0.065125 -0.005718 -0.024139 -0.027908 0.113953 -0.034790 0.071411 -0.088074 -0.095764 0.026947 0.019043 -0.036530 0.084534 -0.050842 0.095459 0.061249 -0.070190 -0.039642 -0.068420 -0.081421 0.086121 -0.024994 0.115662 0.010643 0.001048 -0.042938
|
||||
-0.091309 -0.041840 -0.017227 0.037476 0.069885 0.044189 0.057861 -0.029266 -0.035309 -0.055267 -0.106934 0.024063 -0.093384 0.016891 0.045410 -0.146362 0.001634 0.006683 -0.012306 -0.022766 -0.077454 0.142578 -0.045990 -0.073303 -0.001961 -0.089905 0.025497 0.131470 0.034973 -0.025711 0.072876 -0.081116 0.028412 -0.016251 -0.164062 -0.047333 -0.079407 -0.027161 -0.004993 0.115906 -0.000871 0.073303 0.066528 -0.007275 -0.096741 -0.039948 0.037781 -0.021149 -0.162842 0.002285 0.025742 -0.072144 -0.179810 -0.034698 0.064026 0.039551 -0.065430 0.031036 0.084961 -0.096802 0.046753 -0.069153 -0.085754 0.019531 0.001538 0.039551 -0.013947 -0.062134 -0.020050 -0.045135 0.008232 -0.022339 0.072754 -0.022461 0.042664 -0.027893 -0.066223 0.106750 0.055603 0.015106 -0.000353 -0.016129 -0.004581 0.042572 -0.094482 -0.113770 0.063538 -0.018570 0.047882 -0.108887 0.034668 0.083069 0.016022 -0.083069 -0.078003 0.029419 0.018051 -0.007244 -0.045563 0.074158 0.056213 -0.064514 0.036407 -0.005085 -0.079163 0.047119 -0.011284 -0.049530 0.023422 -0.042633 -0.030258 -0.032562 0.023331 -0.043365 0.062622 -0.031860 0.053589 0.091492 0.073608 -0.046844 0.089233 -0.118652 0.055664 -0.030838 0.002535 0.000182 0.031006 0.015556 0.028030 -0.007492 -0.024673 0.002804 -0.065674 -0.035919 -0.008743 0.040161 -0.004658 -0.004826 0.024841 -0.029205 -0.084839 -0.019821 -0.018845 -0.077515 -0.025772 0.092590 0.040924 -0.062927 -0.013405 0.046051 0.015869 0.004486 -0.002451 0.030060 -0.008904 -0.057587 0.004189 0.094482 -0.026001 0.055389 0.022614 -0.095093 -0.021057 0.026230 0.010574 0.017090 -0.046967 -0.122070 -0.079651 -0.090088 0.019547 -0.047516 -0.067566 -0.165405 -0.081055 0.008186 0.000103 0.003269 -0.035248 -0.039276 0.045563 -0.115479 -0.036804 0.019348 -0.029617 0.090759 -0.084106 -0.030762 0.057007 0.000660 -0.056763 0.034943 -0.035400 0.054810 -0.015884 0.019852 0.019379 -0.079041 0.067017 -0.085449 -0.099670 -0.030701 0.124390 0.064148 0.111633 -0.025208 -0.040375 -0.062103 -0.080139 0.138184 -0.017395 0.055206 0.063110 -0.013359 -0.071106 0.022064 -0.030945 0.079041 -0.114380 0.032623 -0.056000 0.107788 0.084167 -0.085693 0.073547 0.055695 -0.135986 -0.074097 -0.056183 -0.044922 0.000926 0.001854 -0.036560 -0.027893 0.038849 -0.101257 0.027390 -0.097290 -0.100708 0.075928 0.016922 0.016983 0.103394 -0.017441 0.029602 0.039764 -0.133789 -0.025330 -0.077148 -0.069824 0.042938 -0.094421 0.061188 0.018356 -0.027145 -0.025879
|
||||
-0.061066 -0.021957 0.035431 0.039612 0.062927 0.059570 0.050812 -0.066895 -0.020813 -0.034119 -0.001148 0.043549 -0.057648 0.027618 0.052643 -0.205322 0.026062 -0.054840 0.010536 -0.028885 -0.074707 0.044586 -0.067505 -0.072266 0.040802 -0.040161 -0.032990 0.038513 0.103943 0.008881 0.097107 -0.040070 0.016800 -0.012970 -0.144653 -0.059906 -0.068909 0.024048 -0.019058 0.117981 0.054718 0.063965 0.069275 -0.036316 -0.106079 0.026123 0.047852 -0.004196 -0.139160 0.018509 0.058411 -0.120972 -0.130737 -0.024231 0.047852 0.012466 0.039642 0.025833 0.072998 -0.072571 0.034790 -0.040039 -0.092712 0.003031 -0.043274 0.066650 0.022888 -0.055481 -0.055908 0.037231 0.093384 -0.040070 0.130981 -0.022552 0.026627 -0.030457 -0.127930 0.039185 0.125854 -0.011856 -0.034729 0.004208 -0.013329 0.027222 -0.098328 -0.038208 -0.004276 0.035645 0.026871 -0.069702 -0.033752 0.125366 -0.009605 -0.075562 -0.074463 -0.013626 0.070557 -0.060669 -0.076355 0.072571 0.039673 -0.134766 0.013535 0.013916 -0.059937 0.033691 -0.016647 -0.115356 -0.044189 -0.049225 -0.082092 0.000600 -0.055176 -0.054932 -0.003834 -0.064392 0.029053 0.121155 0.034332 -0.033508 0.079712 -0.024933 -0.009132 -0.041016 0.092529 -0.048798 0.056488 0.038147 0.050446 -0.014854 -0.034546 -0.025528 -0.074890 0.018234 0.001547 -0.002087 -0.014481 -0.023422 0.013733 -0.016922 -0.078247 -0.005035 0.004311 -0.041626 -0.010475 0.121460 -0.014023 -0.003683 -0.015335 0.021606 -0.012581 -0.027542 0.054810 0.007996 -0.063904 -0.077637 -0.014053 0.113525 -0.040710 0.091614 0.022186 -0.059570 -0.020645 0.021362 0.027283 0.066956 -0.056458 -0.046112 -0.014099 -0.104309 0.065491 -0.075256 0.044952 -0.117065 -0.089661 0.004448 0.041565 -0.029251 0.034943 0.019028 0.037933 -0.091064 0.006676 0.051117 -0.005554 0.119019 -0.100830 0.016006 0.124634 -0.021378 -0.024353 -0.039337 -0.066162 0.037781 0.008987 -0.010506 0.054413 -0.155273 0.069824 0.004520 -0.108948 -0.011665 0.039429 0.075989 0.123352 0.037445 -0.085571 -0.080505 0.030151 0.056213 -0.082275 0.067200 0.123779 0.005703 -0.033813 -0.027008 -0.048981 0.056152 -0.060150 0.013588 -0.044891 0.151123 0.009689 0.036743 0.106384 0.175293 -0.015526 0.007092 -0.106384 -0.048767 0.038971 0.006836 0.002825 -0.048950 0.058472 -0.086487 0.096802 -0.052094 -0.065979 0.015602 0.015030 -0.056427 0.105164 -0.034729 0.068726 -0.017593 -0.072266 0.001398 -0.032166 -0.016296 0.043579 -0.044891 0.073181 -0.002176 0.015717 -0.036774
|
||||
-0.011597 0.009224 0.061188 0.070740 0.073547 0.052887 -0.026871 0.083252 -0.070923 -0.001356 -0.093811 0.005955 -0.091614 -0.039978 0.073364 -0.068909 -0.029114 -0.033630 0.058228 0.120239 -0.106262 -0.059082 0.057251 0.069885 0.067627 -0.049286 0.014259 -0.031097 0.088196 0.033508 -0.025818 -0.014336 0.009621 0.014389 -0.079468 0.024826 -0.024017 -0.077820 0.016602 0.073914 0.024841 0.001710 0.062378 -0.100647 -0.078003 -0.022888 0.122253 0.000040 0.076477 -0.063660 -0.003466 -0.040161 -0.079285 -0.014557 0.041351 0.068359 0.052734 0.028244 0.029968 -0.084961 -0.066406 0.045776 -0.136475 -0.087402 -0.042419 0.018021 -0.061584 -0.041382 -0.070190 0.104126 0.098328 0.002977 -0.072937 -0.080078 0.143066 -0.029068 -0.132568 0.028336 0.015007 -0.030914 0.022186 -0.002262 0.049469 0.087830 0.045807 -0.076599 0.004013 0.071411 -0.085022 -0.018448 0.013542 0.060883 0.048798 -0.014961 -0.034607 0.030136 0.042328 -0.078186 -0.047882 0.059143 0.006111 -0.029709 -0.021576 0.013359 -0.017532 -0.040680 -0.119812 -0.066467 -0.069275 -0.033325 -0.018875 -0.096008 -0.067505 0.002481 0.014648 -0.038788 0.010139 0.038971 0.049042 -0.079041 0.011505 -0.084534 -0.050446 -0.005039 0.130249 0.012039 0.049469 0.085938 0.175659 0.074280 0.031830 -0.021423 -0.025299 -0.042999 0.006660 -0.051910 -0.071777 -0.079224 -0.076660 -0.045349 0.005753 0.008797 -0.035706 0.030579 -0.033783 0.053070 0.002026 0.114746 0.017044 -0.108704 -0.089905 -0.048492 -0.040924 0.036560 -0.011375 -0.103210 0.014679 0.131836 0.124023 -0.057343 0.045837 -0.080994 -0.054962 0.225952 0.025452 0.000490 0.022919 0.020508 -0.018982 0.003445 0.080078 -0.043701 -0.025253 -0.005783 0.083252 -0.078308 -0.010803 0.050323 -0.010391 -0.081543 0.032043 -0.020203 -0.036926 0.093506 -0.078491 -0.028183 -0.041382 -0.035553 0.061707 -0.043945 -0.007530 -0.010330 -0.018250 -0.056915 -0.019485 -0.027054 0.023788 -0.136719 -0.041107 0.009155 0.041870 -0.008469 0.007008 0.052856 0.003860 0.090637 -0.115417 -0.002768 0.017212 -0.024734 -0.053833 0.091553 -0.062744 0.034027 -0.034973 0.033691 0.096558 -0.058594 -0.018204 0.091980 -0.073120 0.035553 -0.003664 0.016418 0.012451 -0.008110 0.060913 0.102478 0.032410 -0.007519 0.040680 -0.139771 0.026581 0.017151 0.062439 0.025986 -0.003233 0.021759 -0.130249 0.036438 0.039551 0.060944 0.073242 -0.053162 0.029663 0.031250 -0.030518 0.022049 0.114746 -0.025497 -0.012901 -0.002275 0.155518 -0.161133 -0.037170 -0.063354
|
||||
-0.047546 -0.023758 0.042542 -0.047363 0.066833 -0.041779 0.041504 -0.040222 -0.007126 -0.023148 0.013535 0.075623 0.037292 0.117981 0.036499 -0.130005 0.065063 -0.047546 -0.057251 0.029495 0.096741 0.032898 -0.152954 0.003876 0.018631 -0.086853 -0.006409 0.061615 0.137817 0.045410 0.065552 -0.032776 0.040253 0.101868 0.046295 0.095825 -0.003689 0.045654 -0.001965 0.002628 0.003094 0.096252 0.092407 -0.000301 -0.030411 0.070801 -0.017792 0.035248 -0.086548 0.040710 0.054749 -0.144531 -0.140625 -0.026474 0.059601 -0.027328 0.003029 0.033813 0.067993 -0.014908 0.105164 -0.083557 -0.056946 -0.053192 0.002748 0.062561 -0.024384 -0.066895 0.061249 0.046051 0.103149 0.039368 0.154785 -0.015549 0.016678 0.009064 -0.130737 0.056152 0.083374 0.003569 -0.022964 0.046509 0.032196 0.001301 -0.147095 -0.020615 0.013458 0.006241 0.022507 -0.056213 -0.086853 0.069214 -0.021530 -0.022369 -0.067627 -0.040405 0.122925 -0.043274 -0.015564 -0.025757 0.032806 -0.054962 0.034637 -0.050781 0.043610 0.078064 0.010925 0.005165 0.043823 -0.012611 0.012711 -0.055298 -0.082886 -0.037628 0.066467 -0.057343 -0.035492 0.005573 0.058411 -0.018677 0.061371 0.014023 0.046448 -0.006062 0.133057 0.051208 0.087708 -0.036682 0.049042 -0.146362 0.006248 0.033600 -0.148071 0.060181 0.053619 -0.022552 0.049866 0.005589 0.027740 0.054840 0.017700 0.008614 -0.005390 -0.048889 0.056854 0.022598 -0.042847 -0.038269 0.069641 0.053619 -0.026962 -0.056732 0.002092 0.011528 -0.084106 -0.072876 0.011353 0.123413 -0.013611 0.046997 0.035767 -0.113037 -0.054047 0.012878 0.018555 -0.016571 -0.016068 -0.046722 -0.034576 -0.131836 -0.015221 0.083557 0.055145 -0.114807 -0.067139 -0.029114 0.051392 -0.038544 0.010284 0.048645 0.067322 -0.032104 0.003948 -0.030884 0.130859 0.050812 -0.085999 0.001678 0.091492 -0.013969 -0.018661 0.000199 -0.078308 0.139160 -0.080933 -0.039093 0.011566 -0.147583 -0.093506 0.002775 -0.182007 -0.064697 0.063904 0.039551 0.084534 0.064941 -0.064941 -0.081909 0.015106 -0.031647 -0.029648 -0.004768 0.049103 -0.009132 -0.000238 -0.073364 0.047211 0.071411 -0.005383 -0.143433 0.010498 0.102234 0.060913 0.069458 0.031860 0.054413 0.024933 -0.060486 -0.056671 -0.021652 0.030045 0.107666 0.000616 -0.051849 0.001122 -0.101013 0.022095 0.000906 -0.044556 0.032837 0.017914 0.101440 -0.040161 -0.076477 0.005505 -0.028046 -0.100037 0.004539 -0.033722 0.070374 0.022491 -0.028687 -0.061249 0.013702 0.033997 0.030701
|
||||
0.014473 -0.034119 0.076538 -0.039612 -0.028641 0.061066 0.025070 -0.008263 -0.005573 0.011421 -0.007374 -0.061554 -0.087097 0.022202 0.023483 -0.081116 -0.011429 -0.012222 0.002342 0.027771 -0.042023 0.060852 -0.086670 -0.025589 0.027206 -0.032440 0.048462 0.064453 0.123291 0.051361 0.125854 -0.123230 -0.093323 0.047607 -0.126587 -0.006531 -0.001294 0.017899 0.049347 0.108154 -0.029846 0.091553 0.049713 -0.031235 -0.083130 0.039703 0.069885 -0.061554 -0.088257 -0.031342 0.063354 -0.049011 -0.139160 -0.125122 -0.040863 -0.012276 0.014091 -0.006950 0.072876 -0.041565 -0.003115 -0.011948 -0.124146 -0.067383 -0.012741 -0.031219 -0.061920 -0.048340 0.064026 0.021210 0.057159 -0.006321 0.014450 -0.095825 0.084717 -0.098328 -0.084595 0.047943 0.068665 0.023560 -0.087341 -0.003687 -0.006123 0.002434 -0.054291 -0.087402 0.082031 0.042755 -0.143188 -0.068115 -0.005428 0.108215 0.049103 -0.070618 -0.098938 0.025558 -0.001887 -0.050659 -0.031464 0.047943 0.013100 -0.127686 -0.095276 0.018875 -0.006142 -0.009178 -0.046021 -0.020844 -0.091003 -0.032654 -0.036682 -0.068481 -0.017105 -0.079895 0.011940 -0.114563 -0.054688 0.088318 0.005554 0.003443 0.003407 -0.046753 0.018051 -0.080139 0.103638 -0.066956 0.122498 0.011688 0.087402 -0.040070 0.027115 0.026596 -0.058319 0.000517 0.048065 0.052429 0.082947 -0.065063 0.021484 0.012314 0.025787 0.012779 0.028336 -0.056519 -0.028610 0.026627 0.014771 0.013885 0.026306 -0.073730 0.003214 -0.005219 0.036652 0.012558 -0.054321 -0.135376 -0.006046 0.097778 0.049194 0.029404 0.053009 -0.162231 -0.052979 0.078552 0.017075 -0.005718 -0.014236 -0.096313 -0.058319 -0.086609 0.076782 0.018204 -0.008408 -0.052917 -0.016693 0.073547 -0.001875 -0.023941 0.035248 0.008995 0.055481 -0.131226 -0.072449 0.057892 -0.099121 -0.011238 -0.066101 -0.033051 0.144775 0.017151 -0.028503 -0.044769 -0.038635 0.047211 0.063477 -0.034912 0.005493 -0.143921 -0.007713 -0.073669 -0.118103 -0.075745 0.046417 0.080505 0.037750 0.116882 -0.116699 -0.062347 -0.059784 0.027313 -0.051025 0.061737 0.056671 0.023499 -0.138428 -0.059875 0.115784 0.025925 -0.123718 0.005402 -0.067627 0.060822 0.036591 -0.028976 0.015266 0.117188 0.032471 0.005711 -0.075623 -0.026398 0.034332 -0.024155 -0.017349 -0.085449 0.020905 -0.020660 -0.029572 -0.003895 -0.078003 0.029953 -0.027817 0.064880 0.003700 -0.083801 0.043823 -0.029938 -0.093872 0.063416 -0.011620 -0.064819 0.060669 0.093323 0.026871 -0.031494 -0.012276 -0.063843
|
||||
-0.061096 -0.034180 0.016708 -0.004459 0.078674 0.043854 0.034973 -0.013474 -0.020416 -0.079041 -0.052979 0.015152 -0.075928 -0.004086 0.027908 -0.154907 0.022537 -0.027115 0.061340 0.005032 -0.082458 0.102417 -0.106262 -0.059845 0.019073 -0.054169 0.025116 0.042633 0.013664 0.002943 0.083679 -0.076782 0.020721 -0.008904 -0.157715 -0.083618 -0.054688 0.002615 0.030457 0.119812 0.049530 0.081665 0.064941 0.007214 -0.043915 0.024017 0.088196 -0.016129 -0.106934 0.000476 0.054657 -0.065552 -0.165405 -0.052826 0.031311 0.023575 0.041382 0.019058 0.062561 -0.073364 0.031830 -0.015396 -0.106628 0.008072 -0.014641 0.039062 -0.029907 -0.038452 0.003872 0.006195 0.094971 0.007469 0.120117 -0.061401 0.070374 -0.066406 -0.123718 0.063721 0.054291 -0.002232 -0.036285 0.050110 -0.011627 -0.019592 -0.083435 -0.107056 0.039398 0.043976 -0.024170 -0.083496 -0.019394 0.110229 0.052704 -0.044373 -0.066772 0.033447 0.029785 -0.051575 -0.093140 0.103516 0.067261 -0.106812 -0.005936 -0.036285 -0.024399 0.024460 -0.033112 -0.065552 -0.056519 -0.051727 -0.047485 -0.035828 0.000826 0.006443 0.031616 -0.069580 -0.006382 0.119385 0.033997 -0.038025 0.072327 -0.051239 0.028107 -0.038940 0.007168 -0.042236 0.106689 -0.004845 0.066345 -0.024338 -0.018845 -0.015900 -0.054749 0.008995 0.011536 0.016815 0.004055 -0.008705 0.070190 0.020355 -0.052002 0.008987 0.011536 -0.023346 0.009384 0.072876 0.006355 -0.069458 -0.023331 0.021637 0.050232 0.031647 0.025726 0.027863 -0.042084 -0.059723 -0.018326 0.102600 -0.051544 0.081177 0.030106 -0.117065 -0.037018 0.068970 0.037140 0.065125 -0.077576 -0.099731 -0.036926 -0.136108 0.043549 -0.079773 -0.024719 -0.106995 -0.031677 0.022919 0.065308 -0.011642 -0.044739 0.002163 0.029343 -0.116821 -0.016449 0.059479 -0.075195 0.111328 -0.100525 0.004383 0.154663 0.004131 -0.028015 -0.032196 -0.026886 0.048737 -0.012581 -0.037201 0.073486 -0.138306 0.068420 -0.040649 -0.131348 -0.072205 0.120667 0.112854 0.150757 0.066406 -0.085205 -0.036255 0.022202 0.083191 -0.069092 0.037537 0.061035 0.019791 -0.041931 0.009712 -0.025162 0.044495 -0.122681 -0.018677 -0.011780 0.136597 0.057556 -0.032928 0.046082 0.146729 -0.019363 0.002245 -0.083191 -0.004807 0.050751 0.022430 -0.008263 -0.018570 0.085205 -0.088013 0.040436 -0.065125 -0.093872 0.017929 0.023941 0.022186 0.068237 -0.032104 0.045532 0.007732 -0.081238 -0.051208 -0.088257 -0.060059 0.066040 -0.064453 0.093262 0.009872 0.026764 -0.039276
|
||||
-0.055603 -0.061920 0.038422 -0.025848 0.053955 0.044678 0.032410 -0.068237 0.017670 -0.039398 -0.052277 0.017654 -0.041870 -0.048950 0.006226 -0.141968 0.011536 -0.020844 0.026443 0.006992 -0.059845 0.092346 -0.109375 -0.057953 0.053650 -0.040527 -0.006413 0.048279 0.083618 -0.001571 0.146118 -0.094421 0.018707 0.051605 -0.086853 -0.092407 -0.055298 -0.045898 0.077576 0.058716 0.029633 0.066467 0.063843 0.022690 -0.066711 0.006302 0.046997 -0.004311 -0.115662 -0.061005 0.006062 -0.081604 -0.133179 -0.049591 -0.009773 -0.013741 0.041199 0.008232 0.063110 -0.042633 0.049469 -0.019806 -0.149658 0.028763 -0.048523 -0.000068 -0.020737 -0.101135 -0.016647 -0.007118 0.062378 -0.001393 0.058441 -0.057922 0.080750 -0.014572 -0.076294 0.102356 0.034515 -0.024353 -0.062042 0.004822 0.025345 -0.024750 -0.057739 -0.088013 0.042908 -0.003452 -0.010773 -0.059357 -0.002190 0.195312 0.040192 -0.098206 -0.080322 -0.003990 0.053528 -0.011665 -0.017410 0.094177 0.028534 -0.157349 0.008324 -0.030838 -0.076965 -0.001004 -0.006222 -0.033081 -0.018646 -0.020279 -0.038116 -0.028366 -0.020126 -0.057648 0.027191 -0.070435 -0.004478 0.100525 -0.002728 -0.039032 0.098145 -0.054993 0.054871 -0.082825 0.053864 -0.095947 0.097534 0.013641 0.043243 -0.067810 0.001536 0.002729 -0.019699 0.060028 -0.022415 0.003891 0.025330 -0.024078 0.036713 0.057190 -0.063354 0.054535 0.026367 -0.128174 0.014526 0.079834 -0.006462 -0.133301 -0.047760 0.044189 -0.013390 -0.003633 0.014923 0.068909 -0.010109 -0.038940 0.031113 0.057648 -0.096313 0.079346 0.023987 -0.125000 -0.088684 0.045746 0.032776 0.016296 -0.081421 -0.131104 0.022369 -0.126709 0.001607 -0.028122 -0.036957 -0.127319 -0.025192 0.048279 0.045624 -0.029633 0.014297 0.009827 0.001327 -0.105896 -0.061401 0.037262 -0.055298 0.063599 -0.100952 -0.036652 0.161377 0.008453 -0.062103 -0.022156 -0.031586 0.092346 -0.052582 -0.010941 0.068359 -0.154907 0.080078 -0.063782 -0.126587 -0.076965 0.032318 0.052856 0.087708 0.072998 -0.037811 -0.019516 -0.027542 0.027939 -0.077637 0.080261 0.032562 -0.006676 -0.088928 -0.017548 0.027084 0.059784 -0.097839 -0.035126 -0.058441 0.135986 0.075928 -0.032806 0.076660 0.075195 -0.051819 0.003353 -0.062561 -0.012054 0.051422 0.019608 -0.047882 -0.066223 0.070740 -0.069336 0.075317 -0.101196 -0.091125 -0.022324 -0.021759 0.014168 0.027542 -0.055725 0.008873 -0.012512 -0.092407 -0.046783 -0.030624 -0.084290 0.065918 0.004498 0.040009 0.049805 -0.000741 -0.034882
|
||||
-0.060638 -0.070374 0.009338 0.015732 0.041565 0.058899 0.074402 -0.082520 0.070129 -0.046600 -0.068970 0.046387 -0.047943 -0.062378 0.004658 -0.173706 0.018311 -0.037323 -0.013893 -0.057983 -0.084229 0.062561 -0.109009 -0.099609 0.020355 -0.056549 -0.021133 0.057037 0.040405 0.013985 0.146362 -0.112732 0.021194 0.043304 -0.137451 -0.106018 -0.025864 -0.005577 0.046692 0.102051 0.048157 0.050018 0.086060 0.010963 -0.104248 0.023514 0.063660 -0.015594 -0.115784 -0.026093 0.039185 -0.105042 -0.106873 -0.002371 0.028488 -0.052368 0.026352 0.018463 0.036804 -0.101868 0.062286 -0.004162 -0.159790 0.035095 -0.095093 -0.013168 0.006760 -0.026688 -0.073364 -0.011673 0.044769 -0.021240 0.050720 -0.009956 0.035980 -0.026733 -0.094788 0.063049 0.076843 -0.016647 -0.053009 -0.017960 -0.016739 0.009552 -0.086975 -0.105652 0.009041 0.029953 0.025589 -0.046722 0.017044 0.108521 0.020798 -0.135864 -0.061707 0.016876 0.057404 -0.000764 -0.060303 0.104919 0.041534 -0.115417 0.063782 0.020691 -0.037567 0.025757 -0.011017 -0.075500 -0.008369 -0.030365 -0.066101 0.009224 0.000971 -0.067200 0.028931 -0.042053 0.034882 0.153442 0.008957 -0.010452 0.079773 -0.068176 0.009827 -0.056458 0.041168 -0.088440 0.056549 0.030792 0.023453 -0.038116 -0.049072 0.012306 -0.039520 0.001280 -0.043762 0.006691 0.038025 0.031555 0.029022 0.054901 -0.067688 0.036163 0.030090 -0.085022 0.005413 0.055389 0.002741 -0.067505 -0.063721 -0.010300 -0.031616 -0.008217 0.038391 0.036835 0.016052 -0.031982 0.032227 0.050110 -0.104614 0.097595 -0.009132 -0.100647 -0.064941 0.028381 0.028778 0.019699 -0.059875 -0.132080 0.026428 -0.114929 0.012909 -0.065308 0.002298 -0.118591 -0.045013 0.061707 0.011208 0.007904 -0.000392 0.024292 0.024170 -0.085022 -0.074219 0.060089 -0.051636 0.068481 -0.106750 -0.051636 0.149170 0.027512 -0.056519 -0.006786 -0.003473 0.075562 -0.011917 0.004318 -0.002480 -0.124817 0.132812 -0.087830 -0.069519 -0.049377 0.013985 0.055908 0.119812 0.024948 -0.002237 -0.070862 -0.019821 0.074219 -0.092224 0.062042 0.087341 0.043396 -0.049591 -0.018341 0.003220 0.064697 -0.106079 0.019821 -0.060059 0.128052 0.013252 -0.052917 0.097046 0.100342 -0.050690 0.025925 -0.099487 -0.027206 0.027390 0.031982 -0.034576 -0.093201 0.050415 -0.065369 0.071228 -0.104370 -0.064148 -0.010559 0.001022 -0.033173 0.056854 -0.078613 0.011581 -0.021362 -0.086487 -0.011368 0.001410 -0.093018 0.042023 -0.049072 0.053802 0.035553 -0.020889 -0.060089
|
||||
0.023193 0.001149 0.062744 0.003769 0.007133 0.086792 0.035675 0.007191 -0.062805 -0.018066 0.013443 0.092102 0.027893 0.075867 0.041992 -0.098022 0.043182 -0.023315 0.018387 0.077332 -0.068359 -0.022888 -0.045898 0.033783 0.117493 -0.015732 -0.013466 0.049042 0.117188 0.052155 0.031174 -0.058228 -0.023392 0.082825 -0.031097 0.065308 0.006081 -0.002943 0.050476 0.115784 -0.038452 -0.019394 -0.014137 -0.068115 -0.109558 0.029800 0.122192 -0.014748 -0.017899 0.034119 0.056885 -0.188599 -0.111023 -0.129761 0.006203 -0.004696 0.020798 0.011093 0.089844 -0.024490 0.016266 0.022446 -0.070129 -0.019897 -0.047516 -0.013306 -0.024277 -0.096436 0.030365 0.071777 0.135254 -0.033997 0.052582 -0.006252 0.070557 -0.011330 -0.152954 0.038940 0.096375 0.003012 0.033630 0.007126 0.079102 0.022110 -0.059174 0.022232 0.023743 0.047363 -0.059601 -0.083801 -0.051361 0.062378 -0.007526 -0.119080 -0.030197 -0.034607 0.107300 -0.078186 -0.035645 0.050110 0.032471 -0.045105 -0.023514 0.001751 0.003010 0.039948 -0.120972 0.004021 -0.085571 -0.038391 -0.049713 -0.049652 -0.117065 -0.047455 -0.012482 -0.065002 -0.077026 0.059448 0.040222 -0.044250 -0.033234 -0.067139 -0.010063 -0.019150 0.166260 0.049805 0.120300 -0.016617 0.070190 -0.018021 0.037933 -0.045044 -0.138184 0.043823 0.041290 -0.028854 -0.020981 -0.098267 -0.044952 -0.020554 0.029175 0.016891 0.026077 -0.061768 -0.033112 -0.009926 0.029526 0.022690 0.039032 -0.049316 -0.053040 0.019531 -0.011505 -0.028000 -0.035004 -0.158936 -0.028763 0.148315 0.082947 0.013809 0.079773 -0.126343 -0.108093 0.063660 0.050934 0.078003 -0.018356 0.002357 -0.036224 -0.085083 0.035065 0.004337 0.080200 -0.057281 -0.061523 -0.026016 0.031204 0.017181 0.063599 -0.004654 0.074341 -0.000058 0.058197 0.040527 -0.043732 -0.013779 -0.078674 0.001524 0.098877 -0.000624 0.016434 -0.038330 -0.078918 0.055664 0.017487 -0.021576 -0.031494 -0.174194 -0.031586 0.061829 -0.121277 -0.007286 0.013138 0.072876 0.016220 0.107849 -0.132690 -0.058075 0.043945 -0.003456 -0.078918 0.027039 0.079285 0.018265 -0.050232 -0.067200 0.079468 0.074951 -0.004425 -0.002911 -0.091431 0.101624 -0.008171 0.066284 0.049347 0.151611 0.017059 0.068298 -0.083740 -0.076660 0.024567 -0.059509 -0.021866 -0.022949 0.018204 -0.048981 -0.011070 0.066711 -0.094543 0.069580 0.025803 0.054993 -0.010719 -0.074646 0.047302 -0.001543 -0.061493 0.043182 0.057068 -0.007050 0.024445 0.080017 0.041992 -0.056915 -0.034302 -0.030548
|
||||
-0.032227 -0.010994 0.012581 0.011612 -0.009598 0.050751 0.035614 -0.057861 0.034912 -0.053345 -0.051361 0.006264 -0.113647 0.020279 0.014130 -0.161377 0.024353 -0.004150 -0.024460 -0.087830 -0.060638 0.078674 -0.105225 -0.079956 -0.003056 -0.030502 0.036102 0.129028 0.093628 0.007591 0.121338 -0.059753 -0.035065 -0.029800 -0.127563 -0.043732 -0.006145 0.038177 0.010666 0.149780 0.017517 0.110535 0.057068 0.022430 -0.078125 0.038849 -0.008675 -0.063904 -0.134033 0.004578 0.078003 -0.080078 -0.161133 -0.085022 0.044830 -0.017853 0.007332 0.000362 0.126587 -0.086182 0.020416 0.006371 -0.076294 0.006870 -0.008270 0.038483 -0.045074 0.005508 0.006691 0.008003 0.051178 -0.032990 0.095520 -0.000670 0.020523 -0.068420 -0.126587 0.049713 0.079590 0.038757 -0.067444 -0.007717 -0.049042 0.064026 -0.151245 -0.145264 0.058167 0.038910 -0.028976 -0.058594 -0.031006 0.066162 0.045654 -0.051422 -0.070618 0.070435 0.016281 -0.066406 -0.070984 0.050598 0.000807 -0.112610 -0.023788 0.039490 -0.006840 0.008278 0.009384 -0.050781 -0.055939 -0.051544 -0.027802 0.013062 0.041687 -0.054810 0.014130 -0.079834 0.012413 0.139771 0.034729 0.004448 0.056213 -0.067810 -0.012077 -0.023544 0.011772 -0.117554 0.035522 -0.061493 0.081299 -0.038971 -0.021088 0.018051 -0.050354 0.001351 0.041473 0.011345 0.050873 0.001576 0.071411 0.015358 -0.059174 -0.005672 0.025665 -0.024551 0.022980 0.025894 0.012794 -0.016144 -0.001170 -0.012070 0.011818 0.014244 0.052368 0.012451 -0.047699 -0.109558 0.025299 0.097290 -0.074585 0.116821 0.006001 -0.113281 -0.065613 -0.017914 -0.015991 0.025360 -0.074402 -0.111694 -0.084229 -0.099609 0.046814 -0.063171 -0.020050 -0.104492 -0.084900 0.069885 0.051514 -0.054138 0.002159 0.018646 0.071777 -0.124573 -0.038147 0.038818 -0.063660 0.093323 -0.086487 -0.004780 0.134277 0.053711 -0.011627 -0.005779 -0.039551 0.012016 0.016525 0.008698 -0.033173 -0.041504 0.056885 -0.026550 -0.110901 -0.035095 0.102051 0.071777 0.135132 0.068054 -0.080383 -0.069397 -0.057648 0.021729 -0.058441 0.065247 0.083069 -0.020020 -0.092041 -0.079529 0.021622 0.067627 -0.112366 -0.030472 -0.025085 0.090698 0.052002 -0.016571 0.022232 0.147827 -0.060120 -0.026093 -0.093140 -0.018387 0.032562 0.060883 0.003983 -0.096313 -0.047974 -0.080200 0.071350 -0.059509 -0.084045 0.049683 0.015381 0.036072 0.035614 -0.019470 0.051239 -0.050354 -0.084839 0.016510 -0.062561 0.022461 0.040619 -0.031982 0.011147 -0.004005 -0.018356 -0.036560
|
||||
-0.075134 -0.008278 0.033417 0.027756 0.126221 0.011703 0.049927 -0.051819 -0.031891 -0.074463 -0.035400 0.113342 -0.008476 0.070801 0.052887 -0.204468 0.033569 -0.004620 0.081909 0.032959 -0.017288 0.056580 -0.080688 -0.038116 0.053314 -0.052673 -0.003845 0.121643 0.066467 -0.006992 0.008842 -0.034210 0.065796 -0.027252 -0.073792 -0.019501 -0.077209 0.014946 -0.014816 0.076416 0.056732 0.030182 -0.002415 -0.009209 -0.054169 0.030365 0.054932 0.005394 -0.126465 0.043213 0.056030 -0.157593 -0.148438 -0.024673 0.066833 0.003017 0.021362 0.039185 0.110046 -0.060211 0.056519 -0.022202 -0.060303 0.016266 -0.032410 0.067444 -0.019150 -0.028824 -0.003399 0.009171 0.124207 -0.006424 0.171265 0.048676 -0.000312 0.010818 -0.154175 0.014587 0.066650 0.011513 0.008347 0.032623 0.018051 -0.018341 -0.133545 -0.029755 0.032043 0.022720 0.040802 -0.107300 -0.045685 0.043182 -0.005123 -0.060608 -0.047516 -0.052826 0.104126 -0.031769 -0.084351 0.083069 0.056854 -0.065735 0.014809 -0.023209 0.023392 0.037354 -0.059723 -0.048492 -0.007477 -0.038330 -0.038177 0.003105 -0.032318 0.000036 0.016891 -0.029861 -0.017273 0.080322 0.082703 -0.063904 0.088806 -0.042664 0.020538 0.005650 0.033539 0.037903 0.073853 -0.023315 0.031143 -0.037018 -0.011139 -0.015427 -0.142822 0.030441 0.019379 -0.013016 -0.043701 -0.012146 0.026566 -0.008453 -0.051514 -0.019623 0.047729 -0.035370 0.004627 0.014771 0.008995 -0.040863 0.016357 0.070374 0.003471 -0.000860 -0.012177 -0.006802 -0.054901 -0.063110 -0.049164 0.151001 -0.012665 0.113586 0.032593 -0.098816 -0.053955 0.008766 0.022156 0.094910 -0.071045 -0.021194 -0.026138 -0.129761 0.002737 -0.048431 0.025223 -0.118591 -0.100891 -0.027222 0.065491 -0.041718 -0.019745 0.009544 0.070923 -0.045929 0.060394 0.020767 0.018127 0.149170 -0.059753 0.023682 0.073181 0.002338 0.005871 -0.023178 -0.073120 0.086853 -0.025513 -0.005859 0.060059 -0.098022 0.071228 0.006298 -0.145508 -0.045685 0.102905 0.095825 0.142944 0.041290 -0.049896 -0.063354 0.043335 0.100281 -0.073975 0.015869 0.137451 -0.003206 0.008713 -0.021194 -0.050201 0.078552 -0.054504 -0.023499 -0.036987 0.142456 0.048431 0.024353 0.084473 0.133057 -0.055878 -0.009468 -0.105286 -0.060547 0.036743 0.030609 -0.015823 -0.022720 0.047241 -0.148438 0.088928 0.022034 -0.042389 0.071045 0.052246 -0.020050 0.031586 -0.053009 0.050323 0.014351 -0.090088 -0.053711 -0.032898 0.034149 0.044159 -0.066833 0.048157 0.018021 -0.000889 0.033264
|
||||
-0.066040 -0.024734 0.018906 -0.061371 0.065063 0.067810 -0.030350 -0.032257 -0.038818 -0.007263 -0.017715 -0.006317 -0.166016 -0.008316 0.040253 -0.107666 -0.032166 0.048187 -0.007004 0.083679 -0.065430 0.032593 -0.008751 -0.006649 0.075317 -0.009590 0.076965 0.018311 0.076355 -0.016785 0.080139 -0.005001 -0.005802 0.062805 -0.157959 -0.063538 -0.160156 0.021500 0.049408 0.097290 0.016861 0.029221 0.024933 -0.081299 -0.078430 -0.015854 0.077942 -0.012482 -0.106079 -0.026138 -0.005653 -0.053589 -0.075562 -0.079468 -0.032898 0.063660 0.078125 -0.074402 0.044434 0.008598 0.020859 -0.059601 -0.081726 -0.012428 -0.023209 0.021729 0.036957 -0.056519 -0.032867 0.042480 0.089600 -0.055389 0.075317 -0.045166 0.095703 -0.065552 -0.040070 0.032440 0.097168 0.048828 -0.039215 -0.033447 -0.001348 0.056244 -0.008209 -0.025513 0.046936 0.009064 -0.028763 -0.100769 -0.041077 0.074036 0.035278 -0.087830 -0.113281 -0.036133 0.040985 -0.041565 -0.114319 0.091309 0.039001 -0.108215 -0.056854 0.029633 -0.130859 -0.076843 -0.071594 -0.077942 -0.072571 -0.048676 -0.056335 -0.008301 -0.056488 -0.079285 0.015594 -0.052155 -0.006031 0.070984 0.038239 -0.033813 0.084656 -0.054047 0.002674 -0.039185 0.074585 -0.013084 0.015396 0.039459 0.066467 0.047607 0.011658 0.022873 -0.112183 0.055450 0.063782 -0.003454 -0.111023 -0.119324 -0.007423 -0.028503 -0.062561 -0.018509 0.030075 -0.039154 -0.133423 0.063538 0.027222 -0.026001 -0.020828 0.025543 0.035736 -0.039825 -0.000655 0.031174 -0.051208 -0.095093 -0.029678 0.163818 0.072632 0.026154 0.062469 -0.100891 -0.028915 0.050140 0.032196 0.047028 -0.027985 -0.012878 -0.009163 -0.066406 0.095642 -0.008583 -0.013420 -0.060028 0.011673 0.029587 -0.022873 0.043457 0.081116 0.021332 0.072449 -0.050964 -0.029907 0.055817 -0.069214 0.041779 -0.002172 0.033783 0.106201 -0.061493 -0.056610 -0.024475 -0.076172 0.007664 0.039093 -0.055481 0.045258 -0.146606 0.086609 -0.069702 -0.134277 -0.005939 0.004292 0.097839 0.094666 0.076233 -0.111938 -0.073669 0.066345 0.111328 -0.039764 0.107361 0.098267 -0.031616 -0.098999 -0.019775 0.029465 0.026428 -0.075378 0.024750 -0.033752 0.020935 0.001862 -0.056488 0.034485 0.111267 -0.035706 0.023071 -0.105530 0.017334 0.028732 -0.056519 -0.027008 -0.035919 0.072083 -0.035126 0.031372 -0.081787 -0.081604 0.035583 -0.005039 -0.033264 0.116882 -0.052002 0.067322 0.072876 -0.099487 -0.052551 -0.045837 -0.038757 0.109070 -0.025238 0.085815 -0.060486 -0.017059 -0.037506
|
||||
-0.031982 -0.021790 0.031555 0.021912 0.060516 0.075806 0.046448 -0.064026 -0.039215 -0.049469 -0.021423 0.049469 -0.033966 0.037079 0.047699 -0.167358 0.011520 -0.014488 0.036743 0.019913 -0.056396 0.066040 -0.031769 -0.033295 0.048401 -0.013565 0.017029 0.106018 0.080444 -0.009750 0.079224 -0.065979 -0.012459 -0.016876 -0.127808 -0.075562 -0.094055 0.012337 -0.004158 0.100586 0.029266 0.046722 0.011780 -0.003387 -0.098206 0.034363 0.048431 -0.048767 -0.140503 0.036713 0.033447 -0.119507 -0.143066 -0.073242 0.019608 0.026260 0.018021 0.008751 0.084900 -0.026169 0.030304 -0.026779 -0.052338 0.041412 -0.017075 0.024506 -0.005310 -0.096802 0.006416 -0.027725 0.030884 -0.050323 0.172607 -0.030350 0.022537 -0.044830 -0.088013 0.071655 0.078186 0.020309 -0.008057 -0.014351 -0.001354 -0.014725 -0.133423 -0.037598 0.033051 -0.005108 0.023010 -0.116638 0.000167 0.079773 -0.002316 -0.123840 -0.068726 -0.042999 0.033783 -0.031494 -0.068604 0.059845 0.032318 -0.095459 -0.063049 -0.008667 -0.017761 0.044617 -0.054596 -0.033600 -0.037292 -0.039703 -0.061676 -0.002571 -0.003704 -0.048035 0.012253 -0.072876 -0.020325 0.099304 0.061096 -0.021072 0.078918 -0.048798 0.014511 -0.022507 0.055786 0.021500 0.116699 -0.025696 0.033691 -0.000589 0.004452 -0.000154 -0.112061 0.030563 -0.000870 0.005127 -0.029694 -0.097046 0.024933 -0.066895 -0.059387 -0.000053 0.017685 -0.082458 -0.050690 0.040497 0.030060 -0.065674 0.024109 0.060089 0.014839 0.002800 0.032532 -0.018768 -0.044434 -0.110352 -0.056061 0.112000 -0.025238 0.095154 0.042145 -0.106506 -0.048981 -0.029465 0.034454 0.062134 -0.090881 -0.037048 -0.065918 -0.096802 0.039948 -0.056274 0.046539 -0.097473 -0.092102 0.058136 0.037354 -0.047485 0.060455 0.013588 0.075562 -0.101257 0.056091 0.018341 -0.002752 0.091370 -0.063538 0.001582 0.097778 0.019562 0.025192 -0.056732 -0.088623 0.048248 0.028030 -0.020157 0.042755 -0.097717 0.059662 -0.008942 -0.182739 -0.021896 0.073730 0.125244 0.083618 0.046875 -0.056824 -0.097351 -0.030396 0.102783 -0.045959 0.019608 0.141113 -0.032471 -0.079346 -0.050262 -0.038116 0.111938 -0.088501 -0.009193 -0.048767 0.113464 0.047760 0.011429 0.060120 0.150879 -0.060730 -0.020203 -0.126953 -0.074097 0.009468 0.018555 -0.027481 -0.040344 0.032959 -0.105713 0.086487 0.000989 -0.094971 0.093506 0.040375 -0.032562 0.034760 -0.040314 0.093750 0.028824 -0.118042 -0.036316 -0.044067 -0.020691 0.048096 0.022095 0.074097 0.031006 -0.009438 -0.003340
|
||||
-0.010719 -0.047516 0.054260 -0.028244 0.075684 -0.020187 -0.030701 -0.037933 0.010094 -0.063660 -0.090820 -0.022995 -0.117493 -0.111267 -0.000849 -0.157471 -0.006535 -0.065674 0.036835 0.008980 -0.076416 0.007378 0.016113 0.004253 0.023972 -0.017670 0.074219 0.046722 0.011253 -0.012955 0.108643 -0.105774 -0.006603 0.033295 -0.138306 -0.087891 -0.069824 -0.020798 0.038300 0.071838 0.069458 0.076355 0.117737 -0.009850 -0.032928 0.075317 0.059296 -0.024017 -0.052521 -0.062469 -0.024734 0.052704 -0.158447 -0.004654 0.006565 -0.044983 0.078979 -0.015495 0.048676 -0.052246 0.024277 0.001264 -0.123230 0.003538 -0.064636 -0.023834 0.008736 -0.029434 -0.073120 -0.025101 0.073303 -0.020126 0.080688 -0.092651 0.089844 -0.069824 -0.072205 0.072266 0.013466 -0.014198 -0.039062 -0.043030 -0.006359 -0.016235 -0.037720 -0.090454 0.033691 0.007835 -0.021576 -0.007618 0.058136 0.101746 0.090149 -0.106812 -0.083618 -0.008278 -0.005859 -0.051666 -0.020248 0.143555 0.022537 -0.144775 -0.027939 -0.077271 -0.052826 0.000447 -0.023163 -0.118530 -0.063110 -0.044800 -0.027557 -0.030960 0.006832 0.020248 0.029144 -0.055267 0.021576 0.080505 -0.011185 -0.060150 0.177612 -0.031891 0.019363 -0.032471 0.056915 -0.018036 0.113770 0.036133 0.029388 -0.025772 -0.041138 0.003038 -0.025589 0.041260 -0.003250 0.014160 -0.013855 -0.087463 0.040161 -0.004322 -0.096680 0.065979 0.056793 -0.076355 -0.061096 0.106140 -0.045624 -0.087891 -0.029770 -0.028839 0.004711 -0.031708 0.011780 0.036682 -0.007244 -0.016739 -0.018936 0.106201 -0.062469 0.020096 -0.007771 -0.088623 -0.089783 0.081787 0.038940 -0.027237 -0.050171 -0.076721 -0.007412 -0.039124 0.047363 -0.069641 -0.058502 -0.093079 0.081055 0.034546 0.031311 0.049286 0.010574 0.026428 0.064087 -0.098755 -0.059418 0.021332 -0.051514 -0.029816 -0.098572 -0.021713 0.163940 0.016495 -0.026810 -0.044830 -0.010437 0.013260 -0.007965 -0.056641 0.071228 -0.107910 0.099182 -0.113770 -0.119995 -0.004932 0.077087 0.129150 0.110596 0.095825 -0.053162 -0.053253 -0.061310 0.020645 -0.024933 0.036133 0.062500 -0.018158 -0.099243 0.053955 -0.031708 0.063599 -0.094971 -0.064758 0.010223 0.062134 0.055420 -0.051086 0.042969 0.044373 -0.017044 0.024536 -0.036438 0.011887 0.089172 0.047363 -0.037537 -0.032532 0.110474 -0.010170 0.052917 -0.098694 -0.087402 0.001915 0.023849 0.006237 0.043945 -0.088135 0.029907 0.075989 -0.085022 -0.045990 -0.029343 -0.091431 0.067078 -0.025650 0.126587 0.032471 -0.028030 -0.056061
|
||||
-0.026825 -0.001142 0.095154 0.014915 0.076599 -0.012466 0.003685 0.010399 -0.107178 -0.000659 -0.077393 -0.002531 -0.100342 -0.023651 0.034363 -0.146362 -0.026962 -0.043976 0.073914 0.039612 -0.093262 0.040222 0.046600 0.035706 0.071716 -0.087769 0.016632 0.047699 0.067261 -0.026886 0.003588 -0.095642 -0.040344 -0.014626 -0.146484 -0.021500 -0.088440 -0.058685 -0.003698 0.095886 0.014420 0.003836 0.072571 -0.117065 -0.069153 0.027924 0.092773 -0.036438 -0.040619 -0.091248 0.021271 0.026306 -0.177368 -0.085266 0.033417 0.011795 0.036163 -0.006542 0.038300 -0.061523 -0.008820 0.023422 -0.082153 -0.030930 -0.044495 0.000344 -0.046631 -0.069153 -0.091858 0.043823 0.083069 -0.018173 0.020981 -0.083435 0.104614 -0.073608 -0.078796 0.035889 0.015839 -0.006546 -0.024384 -0.038147 0.055878 0.058502 0.014389 -0.058960 0.075867 0.035095 -0.074280 -0.071899 0.016006 0.075439 0.066528 -0.087097 -0.094788 -0.003847 -0.006168 -0.060486 -0.011993 0.150391 0.000656 -0.122070 -0.022919 -0.033752 -0.061127 -0.040100 -0.060242 -0.107910 -0.079529 -0.029907 -0.019394 -0.080322 -0.037598 0.010284 0.034882 -0.052185 0.035095 0.050262 0.033234 -0.094299 0.112000 -0.042816 -0.027237 -0.013023 0.090515 0.038025 0.094788 0.069641 0.085388 0.051483 -0.022247 -0.060974 -0.042023 0.017105 -0.007587 0.028717 -0.054810 -0.149292 -0.024857 -0.060913 -0.052460 0.028793 0.013969 -0.057251 -0.076355 0.114624 -0.010818 -0.000941 -0.009178 -0.066589 -0.014999 -0.044037 -0.009758 0.054108 -0.016388 -0.068604 -0.004456 0.141846 0.069702 -0.000619 0.060913 -0.072876 -0.080688 0.148804 0.013145 -0.039032 -0.028122 -0.011429 -0.035034 -0.011734 0.080017 -0.046448 -0.084106 -0.065979 0.071777 -0.037140 0.015007 0.017715 0.005112 -0.021027 0.070312 -0.083801 -0.008057 0.002850 -0.085449 0.012077 -0.050781 -0.019516 0.098083 -0.010155 -0.026947 -0.046509 -0.044708 0.006699 0.008621 -0.052338 0.067688 -0.125977 0.031006 -0.069336 -0.078247 0.009003 0.070312 0.147339 0.051117 0.117004 -0.103516 -0.035919 -0.085266 0.018402 0.000220 0.108948 0.068298 -0.053955 -0.105408 0.074768 -0.002300 0.033569 -0.048279 0.010574 -0.048676 0.049133 0.045502 -0.030334 0.085266 0.020142 -0.026855 0.014938 -0.016037 -0.034332 0.106628 -0.077209 -0.019073 0.008835 0.096008 -0.026810 0.028778 -0.045227 -0.097229 0.065796 0.022873 -0.010498 0.067627 -0.059692 0.061981 0.084229 -0.062500 -0.007957 -0.001264 -0.080383 0.068237 0.016998 0.151978 -0.034576 -0.055176 -0.057098
|
||||
-0.004070 -0.031494 0.024445 0.001722 0.036530 0.064453 0.096924 -0.097107 -0.022339 -0.053741 0.003220 0.037750 0.040558 -0.000585 0.019043 -0.163696 0.021500 -0.009216 0.011467 0.008682 -0.037659 0.088989 -0.055023 -0.046875 0.037292 -0.023849 -0.016541 0.125732 0.062500 0.011032 0.096436 -0.056091 -0.019897 0.012421 -0.068481 -0.054230 -0.048828 0.024414 -0.000864 0.084656 0.031952 0.040253 0.003229 0.034271 -0.093201 0.056824 0.049377 -0.051697 -0.125732 0.028778 0.028763 -0.143311 -0.136597 -0.082703 0.017212 -0.008499 0.006886 0.016556 0.063904 -0.050110 0.055542 0.007164 -0.054413 0.066284 -0.024826 -0.009468 -0.014763 -0.109070 0.029022 -0.060486 0.004425 -0.029022 0.169067 -0.033325 -0.016449 -0.034546 -0.082214 0.053223 0.061462 0.023346 -0.029327 -0.012932 0.018555 -0.052856 -0.143433 -0.034302 0.040497 -0.022659 0.007858 -0.097351 0.041412 0.070190 -0.012215 -0.117065 -0.087585 -0.030899 0.051941 -0.001621 -0.043457 0.042480 0.040070 -0.093994 -0.035736 -0.025787 0.010101 0.088867 -0.042297 0.008209 -0.031372 -0.002741 -0.066833 -0.012344 -0.017181 -0.053131 0.008247 -0.063110 -0.040649 0.106873 0.018707 -0.005123 0.069214 -0.049133 0.017792 -0.052887 0.060089 0.024902 0.144043 -0.046631 -0.025574 -0.047424 0.006733 0.010895 -0.094116 0.068848 0.001453 0.026962 0.036743 -0.049835 0.036133 -0.038269 -0.031830 0.031082 0.040070 -0.134399 -0.042725 -0.003952 0.044739 -0.087219 0.018066 0.054413 0.015381 0.012909 0.041962 -0.013947 -0.030106 -0.097412 -0.052917 0.067322 -0.056580 0.113220 0.019257 -0.089478 -0.070557 -0.023529 0.021576 0.064392 -0.106628 -0.059906 -0.055542 -0.110901 0.004768 -0.025757 0.038422 -0.100830 -0.109558 0.089905 0.051117 -0.062744 0.046021 0.032166 0.070129 -0.067566 0.032349 0.018539 -0.001149 0.072021 -0.076660 -0.013885 0.091492 0.047699 0.029663 -0.049500 -0.068970 0.077026 -0.012909 -0.001268 0.021774 -0.098267 0.051270 -0.000048 -0.182007 -0.008110 0.089172 0.106750 0.053101 0.044159 -0.004147 -0.101990 -0.050293 0.064209 -0.064819 -0.023270 0.145874 0.004982 -0.055511 -0.061829 -0.024124 0.135254 -0.078552 -0.048401 -0.056671 0.119629 0.094360 0.046509 0.083130 0.136597 -0.086853 -0.028305 -0.119568 -0.097595 0.003109 0.062988 -0.059814 -0.049652 0.011078 -0.087952 0.101624 0.044983 -0.084290 0.061066 0.014557 -0.024445 -0.026123 -0.071045 0.096741 0.012817 -0.087646 -0.031586 -0.035828 -0.036011 0.046814 0.038147 0.035736 0.077148 0.010597 0.013542
|
||||
-0.089478 -0.001444 0.014336 -0.060852 0.055878 0.036224 -0.029312 -0.086670 -0.066650 -0.050171 0.043976 0.012482 -0.034546 0.020737 0.031891 -0.158936 -0.008736 0.054901 0.033325 0.057861 -0.022369 0.103210 -0.058014 -0.055267 0.081543 -0.035492 -0.037445 0.112671 0.131836 0.001912 0.071106 -0.061615 0.026718 0.017014 -0.010139 -0.044556 -0.117493 -0.002420 0.043213 0.031250 0.003841 0.045776 -0.029953 -0.049530 -0.053009 -0.021027 -0.000838 0.001067 -0.141968 -0.031616 0.030014 -0.099487 -0.140747 -0.104553 0.006149 0.037354 0.021408 -0.022644 0.109924 0.001818 0.050934 -0.064819 -0.042389 -0.003883 0.023865 0.038361 0.001685 -0.041809 0.062622 -0.040436 0.134888 -0.009613 0.107849 -0.007965 0.013290 0.005394 -0.047424 0.039551 -0.022278 0.031708 -0.034515 -0.030197 0.014763 -0.070557 -0.054169 0.012512 0.076538 -0.079773 -0.027557 -0.059998 -0.006908 0.146240 0.032410 0.004662 -0.116333 -0.071167 0.074768 0.000502 0.011696 0.094727 0.023148 -0.162109 -0.016769 -0.055847 -0.107300 -0.023804 0.020004 0.023529 -0.051239 0.000063 -0.046082 0.002375 -0.063110 -0.027664 -0.005657 -0.068970 -0.072266 0.019440 0.035187 -0.076294 0.115723 -0.048798 0.126953 -0.054230 0.075500 -0.038422 0.051056 0.063660 -0.039032 -0.060699 0.050049 0.010971 -0.103271 0.071655 0.051727 0.057098 -0.040863 -0.072632 -0.018005 0.009201 -0.032532 0.026688 0.110413 -0.147461 -0.026855 0.078735 -0.033905 -0.103699 -0.003283 0.101135 0.047089 -0.076965 -0.004360 0.054291 -0.113770 -0.023148 -0.063721 0.117004 0.004364 0.048584 0.078613 -0.103027 -0.013367 0.008011 0.016708 0.058685 -0.048523 -0.056580 0.037842 -0.072998 0.019241 0.012833 -0.022568 -0.140137 -0.083923 0.003632 0.024277 -0.002558 -0.000967 0.001655 0.017136 -0.072144 -0.006947 0.005230 -0.021301 0.085632 0.009605 0.036255 0.058319 0.002375 -0.066162 0.022552 -0.060486 0.076538 0.013504 -0.004963 0.113831 -0.130859 0.094116 -0.092163 -0.165161 -0.070312 0.064392 0.050140 0.064026 0.060059 -0.081848 -0.036682 0.020309 0.078430 -0.050751 0.074524 0.074219 -0.015656 -0.057617 0.001320 -0.003748 0.034241 -0.056183 -0.067200 -0.056732 0.092590 0.085693 0.020050 0.108398 0.110352 -0.080750 -0.020859 -0.069092 -0.029388 0.044891 -0.014008 -0.088745 -0.055084 0.033081 -0.081726 0.059967 -0.034912 -0.068237 0.026260 -0.023468 -0.059692 0.076172 -0.075989 -0.020721 -0.010353 -0.044464 -0.068726 -0.066345 -0.008331 0.061829 0.027527 0.031464 0.080872 0.038513 0.028366
|
||||
-0.062408 -0.005272 0.035858 0.024475 0.013756 0.063599 0.076172 -0.012306 -0.046051 -0.010338 0.046051 0.047089 -0.020370 0.125977 0.032806 -0.044434 0.043762 0.031525 -0.032593 -0.036285 -0.016846 0.110229 -0.091736 -0.060394 -0.014778 -0.024841 0.057587 0.054138 0.046539 -0.015022 0.097229 -0.061920 -0.042023 0.043427 -0.091248 -0.060913 -0.045197 0.009727 -0.016266 0.100098 -0.019348 0.131348 0.002016 -0.001991 -0.119385 0.069336 0.021545 -0.038818 -0.149536 0.046021 0.066711 -0.136597 -0.059021 -0.120605 -0.007526 0.016983 -0.029251 0.012665 0.054901 -0.055206 0.084778 -0.060425 -0.007553 -0.017395 0.066528 0.074036 0.067505 -0.029099 0.032806 0.006680 -0.004990 -0.008743 0.113831 0.021347 -0.024155 -0.042786 -0.072388 0.059479 0.149658 0.075378 -0.047089 0.028458 -0.089294 0.038361 -0.113831 -0.077026 0.103210 -0.009605 0.037354 -0.161621 -0.035461 0.005459 -0.025620 -0.107483 -0.056305 -0.006897 0.070251 -0.029190 -0.008888 -0.013275 -0.000651 -0.013863 -0.058502 0.045013 -0.030060 0.001821 -0.009804 -0.007607 0.039581 -0.040863 -0.076416 0.003191 0.018143 -0.084351 0.050446 -0.079956 0.004322 0.112183 0.060577 0.040894 0.027771 -0.041229 0.088013 0.039764 0.024078 -0.018387 0.011353 -0.009911 0.040375 -0.019012 -0.021194 0.000870 -0.094238 0.032318 0.036957 0.085999 0.003948 0.016327 0.025085 -0.032959 -0.012283 -0.080994 0.007828 -0.084900 -0.073181 0.012978 0.102600 -0.067017 0.028152 0.097717 0.066284 0.010513 0.042389 -0.028870 -0.000340 -0.100525 -0.023438 0.055084 -0.036896 0.041748 0.013954 -0.100525 -0.028107 -0.092346 0.005375 0.023224 -0.072510 -0.029663 -0.089783 -0.081360 0.074585 -0.081604 0.076477 -0.070251 -0.090637 0.098511 -0.017960 -0.079651 0.053375 0.010002 0.062042 -0.080994 0.024063 0.038239 -0.007313 0.090820 -0.045624 0.004478 0.088989 -0.018555 -0.023315 0.010490 -0.039551 0.105225 0.082581 -0.026443 -0.044159 -0.026978 0.003798 -0.021225 -0.147827 -0.054535 0.053833 0.026993 0.085815 -0.001345 -0.092773 -0.122253 -0.054199 0.123108 0.026001 0.034058 0.122681 -0.040314 -0.052612 -0.094543 -0.016525 0.056152 -0.062164 0.049469 -0.018387 0.083130 -0.025772 -0.039520 0.033325 0.184326 -0.015305 -0.046356 -0.188232 -0.051666 -0.050781 0.003689 0.007957 -0.068359 -0.035461 -0.109070 0.043793 -0.083435 -0.001154 0.075562 0.038330 0.033325 0.044281 -0.020157 0.088684 -0.042419 -0.149170 0.006863 -0.094788 -0.051361 0.057861 -0.017487 -0.015320 -0.014015 -0.031647 0.013161
|
||||
-0.067444 0.000429 -0.001907 -0.031860 0.010582 0.110718 0.027420 -0.031677 -0.004593 -0.075073 0.053162 0.039581 -0.036407 0.003826 0.068542 -0.119995 0.066406 -0.017776 -0.005981 0.014107 -0.057861 0.055878 -0.105591 -0.071838 0.102051 -0.018311 -0.011719 0.038208 0.111877 0.064453 0.075012 -0.036102 -0.049561 -0.016373 -0.062317 -0.128296 -0.097046 0.009689 0.053955 0.136841 -0.011200 0.006046 -0.058594 0.006577 -0.176636 0.029816 0.088440 0.004833 -0.089478 0.027252 0.067810 -0.174316 -0.099182 -0.072021 0.034088 0.078491 0.057098 -0.032867 0.060120 -0.027267 0.001397 0.029449 -0.016098 -0.046661 0.012794 0.018646 0.033539 -0.012070 0.059143 0.026306 0.112244 -0.003887 0.098633 0.007183 -0.000101 -0.002554 -0.121704 -0.058258 0.121521 0.062317 -0.000849 0.032410 -0.032745 0.024734 -0.085327 -0.016525 0.040894 0.010452 -0.027374 -0.055359 -0.028488 0.061249 -0.015854 -0.036316 -0.052795 0.030609 0.120544 -0.057404 -0.020386 0.065247 0.026840 -0.078674 -0.027267 0.012054 -0.051361 -0.012642 -0.018112 0.019577 -0.026978 -0.053802 -0.051086 0.016815 -0.082214 -0.033112 -0.054321 -0.075195 -0.040649 0.087463 0.072021 -0.018967 0.014931 -0.067871 -0.011574 -0.034027 0.054565 -0.044281 0.018768 -0.021057 -0.016037 0.033691 0.082764 -0.055023 -0.084534 0.054352 0.060608 0.011398 -0.009903 0.033142 0.027710 -0.005997 -0.040955 0.008484 0.069580 -0.091736 0.003775 0.011002 0.058746 0.000948 -0.015762 0.041229 0.086487 0.035095 0.051819 -0.031143 -0.033569 -0.122192 -0.046997 0.083740 0.006359 0.104614 0.062164 -0.065369 -0.054413 0.076965 0.015236 0.130127 -0.050812 0.038391 -0.015060 -0.095520 0.045441 -0.046417 0.098206 -0.044281 -0.076965 0.053558 0.017288 -0.034393 0.055969 0.048096 0.023300 0.019592 0.030258 0.113892 -0.100952 0.097839 -0.018906 0.061798 0.152100 -0.074646 -0.019089 0.005634 -0.026855 0.037201 0.027618 -0.033356 0.026581 -0.112183 0.011452 0.051941 -0.090332 -0.072937 0.027786 -0.006287 0.106079 0.103210 -0.111511 -0.028900 0.075806 0.051483 -0.100769 0.031372 0.110229 -0.021194 -0.041199 -0.058167 -0.055511 0.064026 -0.011803 -0.000834 -0.081116 0.149048 0.031891 0.040680 0.069336 0.243896 -0.003000 0.066284 -0.158691 -0.042786 0.006226 -0.039154 0.005371 -0.067383 -0.057678 -0.075317 0.088806 -0.057983 -0.055573 0.016876 0.026413 -0.019943 0.022720 -0.023499 0.067810 -0.040100 -0.020248 -0.024200 -0.057922 -0.002216 0.069153 0.012398 0.050140 -0.017487 -0.019272 0.023651
|
||||
-0.043671 -0.044678 0.047729 0.014687 0.095642 0.017212 0.028351 -0.019348 -0.039185 -0.052765 -0.075378 0.017715 -0.024185 -0.091919 0.069336 -0.204102 0.000704 -0.074829 0.043365 0.039551 -0.105713 0.018829 0.015747 -0.014244 0.080627 -0.026230 0.034790 0.042114 0.023254 -0.015869 0.056213 -0.021530 -0.008255 -0.028488 -0.085815 -0.101746 -0.076721 -0.027466 0.044891 0.093445 0.104675 0.023865 0.058289 0.013519 -0.087219 0.059052 0.128906 -0.022736 -0.026108 -0.053192 -0.035187 -0.041473 -0.119812 -0.002947 0.015701 0.007988 0.078186 0.008095 0.038971 -0.070251 0.031006 0.055756 -0.129761 0.027756 -0.076294 -0.029861 -0.011528 -0.088745 -0.096680 0.012352 0.041748 -0.031952 0.092224 -0.080505 0.065857 -0.023895 -0.115112 0.034302 0.072998 -0.026215 -0.054199 -0.024521 0.048065 0.008133 -0.062439 -0.063599 -0.008324 0.011948 -0.007542 -0.055847 0.046173 0.091980 0.005680 -0.109070 -0.060333 -0.025208 0.054749 -0.066406 -0.062103 0.103699 0.022171 -0.121704 -0.021713 -0.056549 -0.030701 0.032104 -0.077759 -0.089905 -0.035126 -0.034241 -0.035645 -0.030441 -0.052338 -0.027451 0.001888 -0.043976 0.026718 0.109802 0.003271 -0.075317 0.140381 -0.053162 -0.034760 -0.043854 0.084839 0.012459 0.131470 -0.003733 0.041870 -0.021561 -0.003759 -0.057495 -0.038940 0.079041 -0.027267 -0.022873 -0.023438 -0.066772 0.039032 -0.034729 -0.098022 0.046783 0.043060 -0.113098 -0.026901 0.084534 -0.014526 -0.029083 -0.031036 -0.002348 -0.023178 0.008476 0.017380 0.016708 -0.003544 -0.066956 -0.030533 0.077820 -0.048370 0.094055 0.025864 -0.041443 -0.117859 0.122559 0.027054 0.082947 -0.064941 -0.033691 -0.034424 -0.093384 0.042725 -0.096802 -0.021591 -0.105835 0.012260 0.014900 0.031143 -0.033997 0.049744 -0.005253 0.045471 -0.062378 -0.039581 0.046661 -0.077271 0.062622 -0.088196 -0.016602 0.105225 -0.030136 -0.017166 -0.046814 -0.038025 0.008324 -0.067078 -0.037140 0.086853 -0.138916 0.072754 0.037872 -0.085999 -0.012009 0.063965 0.144287 0.088135 0.088318 -0.032928 -0.060974 -0.012642 0.022842 -0.082336 0.035309 0.075867 0.026794 -0.060577 0.027206 -0.066284 0.097473 -0.062561 -0.043274 -0.035187 0.140869 0.081055 0.011383 0.075684 0.089417 -0.033630 0.024872 -0.075073 -0.039276 0.076721 0.019577 -0.008881 0.019363 0.065247 -0.045197 0.129272 -0.045105 -0.112122 0.018097 0.053192 -0.012909 0.026047 -0.077332 0.122253 0.078674 -0.042786 -0.065430 -0.018356 -0.059845 0.061127 -0.054840 0.125732 0.017395 0.005493 -0.031677
|
||||
0.001164 -0.007889 0.024002 0.004211 0.020706 0.098999 -0.011993 -0.006130 -0.000281 -0.056091 -0.043091 0.040649 -0.030945 -0.003162 0.082581 -0.150024 0.054230 -0.017761 0.032074 0.098511 -0.099121 0.007664 -0.062164 -0.020187 0.060394 -0.003134 0.013832 0.114685 0.145020 0.065369 0.048096 -0.045288 -0.010880 -0.030518 -0.036377 -0.039032 -0.045166 0.025574 0.024597 0.096069 0.025284 0.031250 0.000423 -0.018127 -0.090637 0.010307 0.120972 -0.038330 -0.024521 0.048096 0.052521 -0.144531 -0.133179 -0.032440 0.011749 0.008255 0.044342 -0.001781 0.149414 -0.013947 0.002848 -0.012970 -0.125732 -0.031281 -0.064880 -0.005775 -0.054840 -0.008331 0.082397 0.031189 0.127075 -0.003881 0.091003 -0.008003 0.071472 0.010323 -0.173584 -0.008095 0.071777 0.002977 -0.019073 -0.005424 -0.004250 -0.026947 -0.108032 -0.054199 0.004913 0.057648 -0.093323 -0.037659 -0.016342 0.101318 0.001986 -0.038727 -0.034393 -0.040253 0.101196 -0.083557 -0.059174 0.056152 0.047485 -0.082031 -0.073486 0.003059 0.068542 0.001768 -0.092163 -0.032532 -0.073425 -0.052612 -0.032104 -0.021667 -0.045593 -0.018433 -0.046967 -0.081787 -0.104309 0.048126 0.052216 -0.061798 0.024963 -0.072754 -0.004253 -0.046051 0.124878 -0.017990 0.131592 -0.043213 0.054474 -0.018845 0.047485 -0.013100 -0.130493 0.006847 0.049530 -0.024048 0.025253 -0.003454 -0.002123 0.003275 -0.023209 -0.016083 0.064514 -0.038727 0.044037 -0.022079 -0.005821 0.064636 0.038727 -0.023987 -0.036896 0.035858 0.020767 -0.063782 -0.054962 -0.124207 -0.050812 0.158081 0.044403 0.067749 0.056458 -0.157715 -0.064026 0.095337 0.051270 0.131714 -0.036530 -0.032257 -0.041779 -0.098328 0.008469 -0.018417 0.060974 -0.081848 -0.074951 -0.014259 0.008675 0.005146 0.039886 -0.005363 0.022293 -0.043732 0.014374 0.078369 -0.062195 0.032776 -0.045471 -0.003633 0.111389 0.004295 0.012482 -0.046173 -0.054749 0.021057 0.031616 -0.017715 0.051239 -0.153564 0.032043 0.023361 -0.083801 -0.098083 0.034485 0.057953 0.067566 0.097534 -0.093140 -0.027161 0.048157 0.051392 -0.137329 0.022491 0.060638 0.063721 -0.080627 -0.048859 0.054321 0.046539 -0.043427 0.000618 -0.069824 0.132812 0.045959 0.013954 0.014832 0.185181 0.006157 0.103149 -0.086487 -0.013969 0.010307 -0.037598 -0.021408 -0.067261 0.033234 -0.055634 0.070679 0.045959 -0.106445 0.040070 0.073120 0.032410 0.006523 -0.087036 0.034088 0.017502 -0.062683 0.008438 0.003162 0.041382 0.009300 0.052734 0.055573 -0.020050 -0.002001 -0.015381
|
||||
-0.048859 -0.030777 0.000655 -0.051544 0.023270 0.056366 0.023071 -0.088745 -0.016068 -0.035614 -0.055237 0.032227 -0.106079 -0.016068 0.066101 -0.179688 0.008842 -0.006176 0.026794 0.039062 -0.065857 0.037323 -0.050323 -0.081116 0.075989 -0.040466 0.028564 0.074097 0.080505 -0.051025 0.095215 -0.038452 -0.006481 0.002453 -0.139648 -0.099426 -0.112244 0.039093 0.088196 0.119324 0.059906 0.002907 0.052063 -0.033295 -0.086975 0.023544 0.110901 -0.015442 -0.073059 -0.021393 0.044434 -0.084229 -0.117981 -0.047974 0.014778 0.009102 0.073608 -0.031464 0.040588 -0.006077 0.023468 -0.008865 -0.089966 0.050720 -0.086304 -0.030060 0.007065 -0.060455 -0.041718 0.006069 0.046783 -0.054993 0.142700 -0.036896 0.062866 -0.069275 -0.096619 0.036804 0.111389 -0.002861 -0.056702 0.002335 0.029221 0.034332 -0.071167 -0.048676 0.002871 0.024094 0.001997 -0.057465 -0.033630 0.070618 0.022430 -0.095764 -0.110352 -0.015778 0.011658 -0.025558 -0.109131 0.119812 0.043640 -0.127808 -0.008148 -0.002499 -0.041168 0.016281 -0.059509 -0.082703 -0.078064 -0.067932 -0.027939 0.008659 -0.018127 -0.030228 0.052185 -0.031708 0.044861 0.119690 0.023880 -0.013481 0.110901 -0.055542 -0.052338 -0.057281 0.027039 -0.018829 0.076660 -0.021698 0.033508 0.013329 0.016342 0.015656 -0.118286 0.077087 0.017609 -0.044006 -0.067017 -0.089417 0.064514 0.003893 -0.050415 0.049957 0.009140 -0.067505 -0.012100 0.044006 -0.018890 -0.012764 -0.021973 -0.019089 0.001949 -0.008644 0.050140 -0.009819 -0.022095 -0.109863 -0.022659 0.114563 -0.016052 0.109863 0.090576 -0.086609 -0.076294 0.062073 0.017380 0.062561 -0.100708 -0.035461 -0.027695 -0.116821 0.053833 -0.036957 -0.004070 -0.080505 -0.020203 0.021667 0.033691 -0.017731 0.073425 0.039185 0.070740 -0.058105 -0.005924 0.054871 -0.078003 0.090820 -0.049255 0.019379 0.127075 0.011093 -0.035156 -0.062622 -0.042572 0.024872 -0.039734 -0.036255 0.036499 -0.104065 0.085571 -0.024826 -0.130615 -0.039429 0.039368 0.133789 0.107788 0.092712 -0.038300 -0.079895 0.035095 0.053986 -0.055878 0.061432 0.130127 -0.035614 -0.097412 -0.052887 0.002048 0.100159 -0.067505 -0.033875 -0.053253 0.084534 0.033813 0.013580 0.047760 0.135132 -0.054413 0.012276 -0.113403 -0.005337 0.082886 0.002254 -0.012665 -0.043732 0.043274 -0.061127 0.073486 -0.051849 -0.109558 0.038086 0.008926 -0.029297 0.027161 -0.038361 0.105530 0.062561 -0.018860 -0.019562 -0.040131 -0.025650 0.078369 -0.056732 0.089233 -0.006195 -0.039612 -0.047333
|
||||
-0.001166 0.010895 0.002741 0.019150 -0.003345 0.100403 0.091431 -0.059937 -0.039917 -0.050903 0.020706 0.076111 0.012131 0.071472 0.063965 -0.100891 0.102600 0.026535 -0.043762 0.036560 -0.066528 0.091980 -0.107422 -0.109680 0.005711 -0.031158 -0.013802 0.112122 0.107910 0.000538 0.100098 -0.034058 0.021286 0.048981 -0.033478 -0.026550 -0.020523 0.047943 -0.000154 0.101013 0.016098 0.103455 0.040955 0.001747 -0.099487 0.018768 0.078674 -0.011574 -0.092285 0.077087 0.076599 -0.209961 -0.106323 -0.084412 0.028778 -0.011780 -0.038696 0.050232 0.112000 -0.062469 0.091125 -0.066895 -0.069031 0.024506 -0.016022 0.052826 0.035217 -0.050659 0.072021 0.006279 0.029785 -0.009750 0.152954 0.014076 0.008110 -0.006203 -0.139160 0.061951 0.137573 0.036865 -0.041595 0.043701 -0.034149 -0.011147 -0.122253 -0.057007 0.042389 0.015793 0.016220 -0.061523 -0.029068 0.079590 -0.034546 -0.043060 -0.083862 -0.017776 0.114746 -0.011864 -0.018906 -0.020691 0.059875 -0.036133 0.005272 0.006901 0.009941 0.081543 -0.032227 -0.028503 0.004406 -0.053314 -0.092163 -0.038422 -0.059418 -0.053711 0.043701 -0.061737 -0.038147 0.097229 0.039795 0.021774 0.030838 -0.091919 0.071533 -0.048126 0.092957 -0.035309 0.080322 -0.012589 -0.002171 -0.063416 -0.000635 0.038055 -0.113403 0.048706 0.058441 0.039246 0.057159 0.067322 0.015236 0.012215 -0.009430 -0.034698 -0.002417 -0.114685 0.007637 -0.003164 0.035309 0.000844 0.036194 0.045624 -0.007515 0.027100 0.063721 -0.058563 -0.048065 -0.126221 -0.032471 0.092163 -0.048218 0.060852 0.033630 -0.104614 -0.016403 -0.011086 0.029343 0.098083 -0.078979 -0.057007 -0.075378 -0.119080 0.013596 -0.033447 0.061615 -0.100525 -0.145386 0.026627 0.000723 -0.060730 0.030823 0.006855 0.025223 -0.052032 0.028183 0.068848 0.023117 0.082275 -0.093201 -0.002077 0.084534 0.020767 -0.035858 -0.008858 -0.043396 0.107910 0.017258 0.022842 -0.013603 -0.092651 0.008057 0.018173 -0.137207 -0.060059 0.070923 0.008690 0.044189 0.004776 -0.064636 -0.094604 0.017929 0.044159 -0.054199 -0.008286 0.076477 0.033630 -0.046692 -0.075317 0.042297 0.069946 -0.022324 0.007179 -0.044067 0.128174 0.048828 0.058136 0.041626 0.208618 -0.034912 0.009781 -0.130737 -0.046173 -0.033386 0.005070 -0.028259 -0.078979 0.000317 -0.091248 0.082214 -0.004185 -0.075623 0.032257 0.030838 0.046143 0.030914 -0.046143 0.080750 -0.037628 -0.089355 0.024200 -0.063660 -0.011574 0.024948 -0.015625 -0.011009 0.017914 0.008499 0.011322
|
||||
-0.062378 0.026535 0.004150 0.000620 0.027817 0.069214 0.012505 -0.007492 -0.012291 -0.070618 0.008972 0.037079 -0.111572 0.032379 0.050262 -0.138062 0.059021 0.056854 0.023621 0.005459 -0.100037 0.119141 -0.117737 -0.116638 0.031708 -0.024826 0.045868 0.096619 0.080261 -0.011246 0.055695 -0.026093 0.010155 -0.032104 -0.089722 -0.093018 -0.080078 0.034973 0.042511 0.139771 0.029816 0.087280 -0.007462 -0.012817 -0.073730 -0.019379 0.051361 -0.039764 -0.118774 0.013588 0.088074 -0.117310 -0.130737 -0.114075 0.032928 0.018188 0.025864 0.011612 0.133545 -0.075073 0.022064 0.003918 -0.054230 -0.001420 0.002138 0.055725 -0.032806 0.046234 0.021408 0.026535 0.080261 -0.021820 0.103943 0.021149 0.035248 -0.044922 -0.108032 0.015282 0.085999 0.054596 -0.048340 0.059814 -0.059479 0.035187 -0.088257 -0.097534 0.083496 0.045410 -0.069031 -0.045868 -0.079407 0.059235 0.035522 0.021225 -0.078613 0.057587 0.057373 -0.034454 -0.094604 0.044952 0.035126 -0.067688 -0.011627 0.048035 -0.025146 -0.027130 -0.017731 -0.038727 -0.053741 -0.077148 -0.040192 -0.010078 -0.042328 -0.037750 0.022629 -0.049591 0.004871 0.132812 0.077881 0.001681 0.040619 -0.098755 0.000537 -0.040436 -0.027054 -0.122192 0.013718 0.009972 0.057465 0.010681 0.018082 0.007648 -0.080872 0.002913 0.078003 0.036713 0.012413 0.046600 0.073120 0.001769 -0.047882 -0.018112 0.054962 -0.036255 0.018005 -0.004375 0.012695 0.038361 -0.036255 0.009399 0.061676 0.034393 0.026855 0.015625 -0.070923 -0.112427 -0.020432 0.103943 -0.006359 0.101135 0.043213 -0.108765 0.004704 0.045776 -0.000290 0.129150 -0.054504 -0.052246 -0.064331 -0.135010 0.061157 -0.078918 -0.046021 -0.066650 -0.094055 0.004139 0.005238 -0.087219 -0.038849 -0.001846 0.048615 -0.077271 -0.013664 0.091187 -0.101868 0.182617 -0.027679 0.039856 0.085022 -0.006748 -0.072205 -0.012222 -0.014297 0.028107 0.036560 -0.010910 0.018433 -0.035187 0.080933 -0.000783 -0.074890 -0.076904 0.119446 0.041260 0.133789 0.057617 -0.112183 -0.024323 0.062012 0.060333 -0.070984 0.065369 0.048767 -0.007660 -0.081055 -0.023926 0.027328 0.000690 -0.082214 0.040741 -0.031677 0.074829 0.050171 -0.006275 0.020599 0.188965 -0.038696 0.019943 -0.117798 -0.001084 0.040436 -0.056976 0.006424 -0.069763 -0.013321 -0.101807 0.070984 -0.064453 -0.068726 0.048981 0.013702 0.007206 0.071167 -0.001639 0.069275 -0.028214 -0.033844 -0.021164 -0.106934 0.008148 0.075684 -0.057220 0.024246 -0.030930 0.016113 -0.020020
|
||||
-0.065186 -0.059052 0.035492 0.022552 0.102356 -0.026459 0.013931 -0.061310 0.030151 -0.001068 -0.119507 0.046692 -0.110901 -0.092834 0.043762 -0.211060 -0.027374 -0.083801 0.076660 0.024338 -0.056030 0.001520 -0.006508 -0.078918 0.050659 -0.047760 0.012932 0.065979 0.032532 -0.038513 0.077576 -0.057831 0.052887 -0.020432 -0.136230 -0.069397 -0.081970 -0.014381 0.029068 0.044281 0.098206 -0.006912 0.103394 -0.040070 -0.062866 0.036499 0.096130 0.013519 -0.060608 -0.045105 0.003340 -0.014160 -0.128784 0.096863 0.008804 -0.052612 0.061951 0.004765 0.031525 -0.056061 0.034546 -0.000740 -0.164551 0.018723 -0.132568 -0.044678 -0.008385 -0.012566 -0.107117 -0.013695 0.086548 -0.027573 0.048706 0.007782 0.026611 0.009178 -0.111084 0.005573 0.034210 -0.059143 -0.041992 -0.042297 0.047882 0.007759 -0.031372 -0.076050 -0.026779 0.048706 0.018250 -0.018616 0.040070 0.087036 0.003002 -0.109802 -0.077942 -0.063110 0.018112 0.006435 -0.052032 0.166016 0.045563 -0.156372 0.022720 -0.034332 -0.020508 0.012085 -0.048706 -0.139648 -0.022644 -0.017700 0.012711 0.012047 -0.012558 -0.004494 0.037079 0.006783 0.091919 0.075134 -0.004856 -0.080078 0.151611 -0.008293 -0.052856 -0.051514 0.014084 -0.027069 0.056427 0.027802 0.028091 -0.033020 -0.039337 -0.030685 -0.053589 0.036621 -0.060425 -0.047546 -0.004341 -0.012825 0.031219 0.020218 -0.106384 0.043762 0.029831 -0.047302 -0.000170 0.066223 -0.040924 -0.012215 -0.075012 0.000321 -0.091736 -0.034302 -0.012657 0.027466 0.008247 0.007164 -0.019516 0.104675 -0.031174 0.093201 -0.005280 -0.064331 -0.071533 0.095947 0.024597 0.022003 -0.065613 -0.069031 0.055420 -0.089417 0.007980 -0.048981 -0.035492 -0.104370 0.007534 -0.014366 0.035767 0.032684 0.006218 0.015518 0.027771 -0.065125 -0.067383 0.035400 -0.042908 0.060638 -0.079285 -0.025818 0.109802 -0.015175 -0.028564 -0.058014 -0.029236 0.051819 -0.058624 -0.030212 0.084045 -0.104614 0.137085 -0.075073 -0.016144 -0.012451 -0.001327 0.119934 0.131714 0.049347 0.041382 -0.036224 -0.026703 0.062225 -0.082153 0.078857 0.097168 0.000224 -0.043427 0.035492 -0.042572 0.069519 -0.050354 0.009949 -0.060699 0.077393 0.042297 -0.053833 0.123962 0.014854 -0.076111 0.021210 -0.019897 -0.005096 0.094788 -0.014542 -0.023239 -0.056152 0.131348 -0.090393 0.101135 -0.059296 -0.016907 -0.033112 0.014816 -0.094849 0.020081 -0.096558 0.044769 0.101074 -0.058014 -0.022919 0.028015 -0.045319 0.067749 -0.086853 0.085510 0.032898 -0.072021 -0.042542
|
||||
-0.044037 -0.017609 -0.003967 0.025787 -0.033356 0.087036 0.052643 -0.085632 -0.028549 -0.049774 -0.004349 0.000102 -0.095947 0.099731 0.009697 -0.097656 -0.008499 0.013268 0.043060 -0.088501 -0.092468 0.114990 -0.066101 -0.149902 -0.021530 -0.033142 0.019958 0.072693 0.088013 -0.057831 0.123535 -0.063171 -0.035126 -0.038910 -0.149902 -0.097900 -0.044312 0.011398 0.022293 0.124634 0.005680 0.098145 -0.008568 0.006710 -0.091675 0.013802 0.002211 -0.047729 -0.178223 0.011108 0.105530 -0.115845 -0.076965 -0.039215 0.019409 -0.009087 -0.002985 0.021515 0.086975 -0.087769 0.043549 -0.063599 -0.037048 0.060913 0.035095 0.061737 0.022415 -0.018860 0.036469 0.003260 -0.022354 -0.040009 0.095032 0.008095 -0.016403 -0.059265 -0.072937 0.050293 0.094299 0.067078 -0.064453 0.036377 -0.049988 0.032196 -0.091492 -0.123779 0.090393 -0.016113 0.058899 -0.062866 0.001644 0.054565 -0.005520 -0.037048 -0.106750 0.038727 -0.013275 0.003876 -0.028824 0.037750 -0.020172 -0.113098 0.000759 0.035950 -0.101257 -0.006878 0.072205 -0.028534 -0.002104 -0.047913 -0.063538 0.027924 0.046906 -0.042145 0.063171 -0.054352 0.076721 0.181030 0.017090 0.055511 0.064148 -0.070129 0.067261 -0.022568 -0.059631 -0.135620 0.003609 0.021454 -0.010277 0.017029 -0.014076 0.065674 -0.027390 0.014503 0.042297 0.055817 -0.006687 -0.014267 0.088379 -0.025696 -0.027466 -0.038239 0.011536 -0.066895 -0.017960 0.059967 0.045441 -0.015358 -0.025345 0.054962 0.061310 -0.010460 0.058777 -0.009186 -0.004234 -0.105408 -0.042542 0.008270 -0.081055 0.079773 0.000951 -0.079224 0.033295 -0.055847 -0.012527 0.022034 -0.119568 -0.088867 -0.029083 -0.091064 0.062805 -0.116089 -0.018814 -0.093872 -0.087097 0.120483 0.012550 -0.102661 -0.026321 0.007473 0.013695 -0.090820 -0.012321 0.084045 -0.096436 0.116211 -0.056946 0.007290 0.090515 0.067871 -0.028885 0.010910 -0.041473 0.023331 0.051575 0.025269 0.018494 0.004665 0.054840 -0.019928 -0.050201 -0.037018 0.083496 0.016907 0.075989 0.006336 -0.025681 -0.065735 -0.056976 0.079712 -0.012032 0.068604 0.104248 -0.046906 -0.030563 -0.073914 0.032532 0.023239 -0.093567 0.017670 -0.044434 0.067505 0.009964 -0.003929 0.073547 0.176025 -0.038116 -0.055908 -0.112488 -0.052582 0.005180 0.021210 0.012222 -0.081421 -0.031799 -0.085693 0.084351 -0.102661 -0.059753 0.056213 0.004128 -0.018127 0.074280 0.004330 0.061523 -0.066772 -0.048248 0.034851 -0.098267 -0.047913 0.030518 -0.076355 0.033478 0.016205 -0.012535 -0.042542
|
||||
-0.037567 -0.018387 0.045563 0.016235 -0.037048 0.093018 0.060608 -0.068909 -0.042664 0.020874 0.045776 0.017776 -0.015244 0.056732 0.034210 -0.156616 0.039795 -0.019760 0.015640 -0.002621 -0.077515 0.069153 -0.070496 -0.030380 0.058380 -0.007351 -0.033661 0.065674 0.159668 0.049530 0.098389 -0.056366 -0.074890 -0.031525 -0.083679 -0.053619 -0.056519 0.016769 -0.014328 0.128662 -0.024460 0.031403 -0.019073 -0.055634 -0.140259 0.020050 0.045532 -0.047974 -0.107117 0.004341 0.083923 -0.153198 -0.125610 -0.126953 0.061981 0.016525 0.036987 -0.018875 0.075562 -0.039398 -0.020935 0.009315 -0.060394 0.019669 -0.015366 -0.006897 -0.047546 -0.060730 0.020325 0.006557 0.047150 -0.028259 0.106018 -0.044861 0.034851 -0.060547 -0.087341 0.015587 0.130981 0.002357 -0.020447 -0.000444 -0.003511 0.002573 -0.084412 -0.026291 0.028458 0.050415 -0.100952 -0.088806 -0.023849 0.119751 -0.015503 -0.079163 -0.064453 0.017502 0.065735 -0.074219 -0.054108 0.068176 0.011147 -0.097839 -0.058289 0.070129 -0.009781 0.014503 -0.021255 -0.013092 -0.103210 -0.028290 -0.070007 -0.007164 -0.042236 -0.064026 -0.003733 -0.083435 -0.026459 0.097900 0.038330 0.005661 -0.005699 -0.060455 -0.058838 -0.057495 0.087280 -0.053955 0.103394 -0.010056 0.047211 0.018570 0.013260 -0.045868 -0.099976 0.031738 0.023575 0.012123 0.014061 -0.086975 0.014816 -0.042694 -0.003559 0.003906 0.023346 -0.077332 0.007069 0.016159 0.024155 0.043335 0.024246 -0.017670 0.025314 -0.011322 0.072083 -0.024185 -0.048981 -0.135498 -0.007710 0.093201 0.025772 0.093079 0.071472 -0.101929 -0.062256 0.030899 0.011818 0.055664 -0.091187 -0.024475 -0.044037 -0.084900 0.067444 -0.039703 0.063232 -0.059265 -0.107788 0.006542 0.024261 -0.054504 0.060333 0.041931 0.052368 -0.085388 0.049530 0.052307 -0.061859 0.081726 -0.040619 0.014763 0.124817 0.016571 -0.011169 -0.071350 -0.027237 0.017059 0.054901 -0.015251 -0.004173 -0.157227 0.023834 0.039703 -0.095276 -0.024475 0.012993 0.037994 0.057861 0.085876 -0.116516 -0.084656 -0.021957 0.026901 -0.083740 0.073181 0.130859 0.001221 -0.087341 -0.093811 0.004791 0.072876 -0.061707 0.035431 -0.099731 0.119263 0.035736 0.052429 0.081604 0.201538 -0.024857 0.030411 -0.129395 -0.069580 0.040405 -0.024902 -0.020096 -0.066467 0.014465 -0.062927 0.066772 0.004543 -0.120117 0.066223 0.015350 -0.044128 0.014572 -0.020935 0.091919 -0.053741 -0.022049 0.040131 -0.018784 -0.022980 0.016830 0.079773 0.044586 -0.006500 0.026611 -0.045532
|
||||
-0.033173 -0.038910 0.041443 -0.022934 0.004532 0.071899 0.005272 -0.051056 -0.012466 -0.067139 -0.024704 0.005486 -0.195190 0.102722 0.019897 -0.125977 0.006180 0.018005 0.051300 -0.024002 -0.047394 0.067322 -0.076599 -0.101257 0.035339 0.003508 0.048218 0.090454 0.090149 -0.041443 0.104187 -0.070801 -0.029037 0.032104 -0.180176 -0.090149 -0.042603 0.045044 0.031616 0.116028 0.003031 0.087769 0.009178 0.000744 -0.044556 0.004803 -0.005760 -0.071533 -0.172119 0.024673 0.086426 -0.086914 -0.140625 -0.068665 -0.019577 -0.025284 0.015007 0.000917 0.123291 -0.039398 -0.002161 -0.053192 -0.048096 0.044495 0.006908 0.050446 -0.025299 -0.014351 0.031097 0.017014 0.060425 -0.069214 0.126953 0.000859 0.074524 -0.068848 -0.081665 0.068665 0.082214 0.043976 -0.057007 0.026306 -0.024521 0.033630 -0.076904 -0.096252 0.086426 0.052277 -0.001371 -0.072083 -0.042572 0.111206 0.046692 -0.052460 -0.107971 0.022949 -0.008743 0.002626 -0.070923 0.027664 0.023651 -0.143188 -0.039215 0.033325 -0.075684 -0.001597 0.009712 -0.052002 -0.041962 -0.056702 -0.040436 -0.020081 0.016174 -0.018036 0.037323 -0.089050 0.030426 0.112122 0.038788 0.025406 0.064270 -0.031082 0.025269 -0.071472 -0.037781 -0.114807 0.037201 -0.025497 0.049866 0.005981 -0.001042 0.065979 -0.081238 0.030548 0.052246 0.015076 0.031235 -0.040344 0.089111 0.007820 -0.050537 -0.042847 0.001695 -0.039764 -0.010811 0.036743 0.028122 -0.062073 -0.028427 0.041046 0.076111 0.022171 0.019226 0.012497 -0.061218 -0.121277 -0.037750 0.094360 -0.027588 0.067871 0.002193 -0.139038 0.002125 -0.039154 0.028595 0.011581 -0.072571 -0.113281 -0.034851 -0.106384 0.058777 -0.034302 -0.029053 -0.052734 -0.048401 0.092957 0.045807 -0.081787 -0.023315 0.042725 0.062927 -0.126221 -0.010536 0.065491 -0.058807 0.123840 -0.082642 0.020416 0.119202 0.055511 -0.014702 -0.021194 -0.082153 0.043152 0.021591 -0.011375 0.052460 -0.045013 0.038971 -0.057068 -0.113403 -0.043243 0.106201 0.067322 0.081604 0.053070 -0.058807 -0.040985 -0.026306 0.051208 -0.052368 0.066162 0.078247 -0.096619 -0.070007 -0.081665 0.061890 0.044830 -0.117188 -0.007866 -0.039856 0.046722 0.047882 -0.027985 0.026581 0.151733 -0.021057 -0.027252 -0.072510 -0.032440 0.037964 -0.006611 0.034210 -0.071960 0.014946 -0.098389 0.047516 -0.049805 -0.054871 0.052795 -0.015884 0.019424 0.026382 -0.013390 0.022095 -0.020401 -0.101990 0.009636 -0.101013 -0.024231 0.075989 0.009132 0.046875 -0.036804 -0.023529 -0.039276
|
||||
0.024765 0.013641 0.069031 0.026260 -0.038086 0.073608 -0.000193 -0.009422 -0.077454 -0.049744 -0.008705 0.017868 -0.154175 0.078308 0.089905 -0.135742 0.047150 -0.103699 0.045074 0.019226 -0.102905 -0.021515 0.020218 -0.096619 0.076660 -0.015213 0.022263 0.052429 0.112915 -0.020950 0.055115 -0.073486 -0.078125 -0.016495 -0.149780 -0.083740 -0.030472 0.006916 0.005970 0.165039 0.010254 0.023239 0.002136 -0.053558 -0.147705 0.051239 0.094055 -0.007942 -0.045044 0.041107 0.102966 -0.073364 -0.137329 -0.000795 -0.006554 -0.015137 -0.002796 0.011002 0.083374 -0.053436 0.004238 -0.010704 -0.024475 -0.047150 -0.031403 0.036774 0.058990 -0.023834 0.015099 0.079529 0.103638 -0.059540 0.036469 0.017517 0.047913 0.005543 -0.182861 -0.025681 0.149658 0.063843 -0.025360 -0.012749 0.016220 0.084717 -0.010193 -0.025177 0.032562 0.063660 0.009819 0.002153 -0.002142 0.082581 -0.020584 -0.060394 -0.102295 -0.011353 0.058533 -0.057617 0.069580 0.058197 0.014580 -0.127441 -0.025650 -0.036469 -0.099670 0.019165 0.001848 -0.131836 -0.029449 -0.074890 -0.029678 -0.042450 -0.098938 0.012848 -0.015549 -0.085205 0.028641 0.060394 0.015060 -0.061005 0.064453 -0.042877 0.001800 -0.065308 0.091064 -0.068604 0.037628 0.019455 -0.026428 0.023270 0.037750 -0.062225 -0.056091 0.060364 0.046600 0.040619 0.054932 0.007812 0.012886 -0.024582 -0.082092 -0.027740 -0.003609 -0.107178 -0.027847 0.099243 0.040680 0.071655 -0.024841 -0.011650 0.012375 0.046326 0.034576 -0.058899 -0.033752 -0.143433 -0.092102 0.109436 0.038300 0.027969 0.021393 -0.040619 -0.021393 0.105591 0.021118 0.057983 0.006222 0.020523 -0.033386 -0.012535 0.061218 -0.071289 0.040558 -0.048431 -0.007534 0.032043 0.015366 -0.028137 0.058105 0.025421 0.008781 -0.041077 -0.005630 0.126343 -0.096497 0.024216 -0.103577 0.039429 0.113159 -0.045288 -0.010056 0.005428 -0.071045 0.032501 0.072632 -0.015289 0.061554 -0.079407 -0.046234 0.044556 0.000374 0.001034 0.040039 0.039856 0.035034 0.098267 -0.109863 -0.017517 -0.030090 -0.008537 -0.025314 0.063232 0.093079 -0.079041 -0.043854 0.003139 -0.010094 0.044525 0.027939 -0.014282 -0.083923 0.106995 0.022217 0.037750 0.098999 0.225342 0.040222 0.031586 -0.046478 -0.064697 0.061401 -0.069336 0.052277 -0.043182 0.003111 -0.073486 0.101379 -0.060059 -0.021957 -0.002312 0.020065 -0.000199 0.044617 -0.056213 0.083435 0.020538 -0.036072 0.078979 -0.077148 -0.040863 0.077271 0.004623 0.075562 -0.042328 -0.085083 -0.030380
|
||||
0.001683 0.035309 0.014091 -0.016830 -0.051758 0.094299 0.049835 -0.086304 -0.088623 0.001838 0.031525 0.029373 -0.062378 0.119019 0.043274 -0.061554 0.027847 0.060913 0.009857 0.078369 -0.019348 0.070618 0.007751 -0.043427 -0.002445 0.024277 0.044983 0.168457 0.110962 -0.010437 0.076416 -0.007538 -0.044922 0.021790 -0.036194 0.003620 -0.072937 0.066162 -0.024490 0.071838 0.005402 0.064758 -0.061737 -0.057129 -0.054352 0.030823 0.030914 -0.038940 -0.106201 0.066956 0.067017 -0.128784 -0.073608 -0.108704 -0.027023 0.008163 -0.033203 -0.037262 0.099670 0.011559 0.071228 -0.101196 0.004795 0.039215 0.036346 0.027222 0.035645 -0.069580 0.132568 -0.030014 -0.012436 -0.035858 0.142700 0.025375 -0.016479 -0.040833 -0.080994 0.041870 0.080566 0.085266 -0.034790 -0.029236 -0.017975 -0.009163 -0.095093 -0.019943 0.075378 -0.046112 0.011345 -0.099609 0.024078 0.006474 -0.038025 -0.044189 -0.122864 -0.091187 0.049530 0.007278 -0.022949 0.006344 -0.008057 -0.038116 -0.102478 0.002180 -0.037537 0.007866 -0.029495 0.014854 -0.009705 -0.027756 -0.062317 0.004036 0.010361 -0.051056 0.080383 -0.055206 -0.060638 0.023163 0.025818 0.041382 0.056427 -0.074768 0.106201 -0.006535 0.064758 0.020340 0.057251 -0.039001 -0.022095 -0.048828 0.029251 0.071472 -0.145630 0.087036 0.087891 0.057617 -0.030777 -0.094482 -0.009369 -0.062103 0.020294 -0.082214 0.043518 -0.097473 -0.074524 -0.053589 0.062317 -0.023987 0.072327 0.097534 0.015335 -0.035492 0.032898 -0.085999 -0.084656 -0.129761 -0.114441 0.122986 0.009232 0.035553 0.067200 -0.107117 0.008217 -0.090027 -0.013176 0.027756 -0.096802 -0.003054 -0.094360 -0.022766 0.024231 -0.013062 0.070557 -0.068787 -0.111755 0.074219 -0.007309 -0.019913 0.071716 -0.003485 0.063599 -0.092041 0.043243 0.025131 0.024200 0.007641 0.015129 0.025406 0.037109 0.041077 0.004162 -0.000073 -0.096191 0.074219 0.094727 0.034485 -0.020905 -0.022400 0.011505 -0.029602 -0.164062 -0.012695 0.044708 0.082581 0.000236 0.022232 -0.060547 -0.148560 -0.067383 0.115906 0.025131 0.015236 0.132812 -0.032196 -0.074890 -0.108704 0.047485 0.080383 -0.023422 -0.043091 -0.026459 0.004879 0.038452 0.028244 0.049408 0.155884 -0.080688 -0.058075 -0.091797 -0.049011 -0.045288 0.043091 -0.057129 -0.071289 -0.020828 -0.111877 0.045868 0.049164 -0.078064 0.103577 0.021988 0.008766 0.025848 -0.068115 0.090698 0.010666 -0.097534 0.020340 -0.064087 0.013916 0.014030 0.028152 -0.022598 0.031250 -0.008415 0.029190
|
||||
-0.030441 0.005058 0.003736 -0.004818 0.008118 0.096985 0.018341 -0.067200 0.010612 -0.053619 -0.017181 0.037933 -0.060028 0.036072 0.034363 -0.182373 0.043335 -0.019318 0.020920 0.009766 -0.067200 0.060699 -0.105591 -0.051727 0.033691 -0.022385 -0.025391 0.118958 0.124817 0.047699 0.091614 -0.082458 0.000361 -0.031342 -0.111145 -0.042297 -0.029236 0.038452 0.018753 0.126953 -0.002131 0.050598 0.008438 -0.015442 -0.060181 -0.014206 0.049469 -0.029404 -0.091919 0.042816 0.087585 -0.138794 -0.149658 -0.079407 0.062164 0.010269 0.006035 -0.005280 0.105347 -0.048035 0.001196 -0.037537 -0.078674 0.002470 -0.032532 0.033569 -0.037170 -0.007664 0.048492 0.004082 0.120117 -0.017624 0.123047 0.007038 0.052429 -0.041718 -0.149292 0.044525 0.076233 0.003391 -0.020981 0.015266 -0.016769 -0.036926 -0.110229 -0.059296 0.028687 0.039154 -0.043030 -0.059326 -0.048889 0.125366 0.021957 -0.019257 -0.051514 0.013672 0.085815 -0.073242 -0.067078 0.099426 0.035126 -0.103943 -0.011566 -0.005695 -0.020981 0.006992 -0.009209 -0.048584 -0.083679 -0.063538 -0.068848 0.015480 -0.006779 -0.018188 0.011452 -0.073669 -0.050995 0.074524 0.034821 -0.024933 0.024261 -0.074158 0.027603 -0.055420 0.067444 -0.088257 0.079346 -0.049316 0.046387 -0.036987 0.010139 -0.016724 -0.089539 0.004669 0.039642 0.001071 0.017685 -0.034424 0.014992 0.016037 -0.025009 -0.022125 0.036896 -0.012566 0.053253 0.020706 -0.007751 -0.012451 0.009453 0.021393 -0.002148 0.009537 0.059296 -0.013901 -0.087646 -0.083496 -0.011116 0.129272 -0.045410 0.111755 0.054626 -0.125732 -0.035095 0.016220 0.018311 0.075378 -0.085083 -0.075806 -0.038483 -0.097900 0.020401 -0.060760 0.042999 -0.119507 -0.114746 0.004990 0.052826 0.013725 -0.009201 0.002411 0.029800 -0.120300 0.001229 0.054596 -0.044495 0.089600 -0.075684 0.011383 0.147461 0.048065 -0.028366 -0.021164 -0.029358 0.043365 0.049347 0.010307 0.013489 -0.153198 0.065063 -0.019669 -0.122498 -0.100525 0.063416 0.086060 0.126953 0.063354 -0.119690 -0.050720 0.029678 0.063843 -0.088562 0.053070 0.082581 0.054230 -0.053223 -0.046875 -0.015472 0.056396 -0.095215 -0.023987 -0.035675 0.153564 0.037811 0.015076 0.050781 0.203491 -0.036346 0.012558 -0.077026 -0.020294 0.016495 0.039093 -0.032471 -0.068298 0.026428 -0.116089 0.037262 -0.019363 -0.107605 0.041992 0.031982 0.006493 0.079407 -0.032715 0.008957 -0.064087 -0.070190 -0.005875 -0.046356 -0.011818 0.012238 -0.006649 0.042694 0.026016 0.029388 -0.025711
|
||||
-0.092346 -0.061859 0.064636 0.016190 -0.011208 0.003059 0.068542 -0.064453 0.013496 -0.043915 -0.048431 0.031158 -0.097961 0.120422 -0.042786 -0.114990 0.011200 -0.024490 0.009338 -0.086914 0.011444 0.110657 -0.107544 -0.040253 -0.025772 -0.068359 0.043457 0.115784 0.059052 0.003843 0.080750 -0.087585 -0.010796 0.095154 -0.152222 -0.011078 -0.019455 0.025848 0.030807 0.066284 -0.049011 0.060211 -0.004284 0.003906 -0.040344 0.035065 -0.052521 -0.053741 -0.217285 0.014046 0.092346 -0.060516 -0.149414 -0.086731 0.000065 -0.074951 -0.017395 -0.015144 0.084839 -0.031204 0.026169 -0.070251 -0.008286 0.018448 0.000338 0.052368 0.001972 -0.043304 0.000965 0.011864 -0.009834 -0.029297 0.119995 0.020721 0.074890 -0.076172 -0.049713 0.046906 0.098816 0.039948 -0.001049 0.071594 0.026825 0.052429 -0.119629 -0.061310 0.115723 -0.007202 0.045471 -0.112915 -0.034149 0.043427 0.029160 -0.096313 -0.090149 0.052307 0.022446 0.001012 -0.052155 0.026550 -0.001058 -0.058899 0.039612 0.019379 -0.092407 -0.004250 0.029648 -0.046906 0.025665 -0.051392 0.001493 -0.017776 0.023880 -0.007988 0.079834 -0.025040 0.068481 0.139160 0.024353 0.046783 0.066895 -0.016922 0.029785 0.022675 -0.041840 -0.034424 0.047394 -0.042328 0.024002 -0.029373 -0.047760 0.074402 -0.123169 0.013611 0.028534 0.021912 0.004181 -0.047729 0.066284 -0.021637 -0.021362 -0.022675 0.002602 0.002033 -0.020706 0.043579 0.047028 -0.091187 -0.038727 0.037994 0.066895 0.009323 0.011887 0.023148 -0.031464 -0.102661 -0.012566 0.066406 -0.057648 0.030640 -0.023041 -0.114258 -0.009094 -0.053162 0.001650 -0.064575 -0.081726 -0.088013 -0.054718 -0.113953 0.014565 -0.014565 -0.060303 -0.105469 -0.030869 0.078125 0.043793 -0.095825 -0.063477 0.011551 0.092163 -0.089539 -0.016647 0.005489 -0.018982 0.088928 -0.089966 -0.001853 0.119141 0.055603 -0.035339 0.009117 -0.070374 0.057343 0.004524 -0.003967 -0.017303 -0.021606 -0.013084 -0.061737 -0.143188 -0.038666 0.128418 0.087830 0.115479 0.020142 -0.037079 -0.045258 -0.066223 0.033051 0.007793 0.020187 0.104736 -0.111084 -0.053650 -0.087402 0.024872 0.106262 -0.098022 -0.046143 -0.006088 0.012596 0.028244 -0.070374 0.074646 0.058868 -0.057922 -0.090454 -0.065430 -0.051697 0.032928 0.086548 0.001606 -0.085693 0.001943 -0.119934 -0.020660 -0.091431 -0.033997 0.102417 -0.011475 0.062500 0.046112 -0.039032 -0.009071 -0.018570 -0.128418 0.020874 -0.115234 -0.080933 0.062439 -0.049377 0.030472 -0.003914 -0.037140 -0.040588
|
||||
-0.076355 -0.016800 0.036438 0.028854 0.002865 0.054474 0.033936 -0.019562 -0.085815 -0.018036 0.072449 0.045715 -0.023636 0.152710 0.098694 -0.097290 0.036041 0.045135 0.005322 0.030441 0.025406 0.047180 -0.053864 -0.081421 -0.018188 -0.057922 0.024124 0.051941 0.100037 -0.002913 0.013496 -0.038910 -0.018417 0.018570 -0.050903 -0.023590 -0.018127 0.083008 -0.011833 0.071411 -0.028305 0.101807 0.005505 -0.056732 -0.102722 0.066467 0.056366 -0.026047 -0.124878 0.082947 0.089111 -0.154663 -0.112671 -0.086975 0.020599 0.007843 -0.033539 0.036743 0.097107 -0.039276 0.031586 -0.121643 -0.005344 -0.028152 0.036682 0.052155 0.078613 0.031799 0.070618 -0.007496 0.048370 -0.034149 0.193604 0.023758 -0.008118 -0.028992 -0.109985 -0.006493 0.164917 0.023331 -0.000519 0.056458 -0.052124 -0.003832 -0.124695 0.007481 0.064148 -0.017944 0.028625 -0.100952 -0.030792 0.009163 -0.050995 0.000345 -0.084778 -0.040527 0.061920 -0.038727 0.014633 -0.040192 0.049988 -0.006680 -0.030746 0.038177 -0.015480 0.072632 -0.030975 -0.027222 0.022049 -0.092163 -0.080200 -0.021240 -0.023605 0.016693 0.024307 -0.054413 0.017853 0.058228 0.075562 0.017059 0.073059 0.017578 0.039978 0.049713 0.045837 0.069641 0.042542 0.028198 -0.016846 -0.026123 0.018097 0.029572 -0.223877 0.010040 0.061279 0.043579 -0.025101 0.038605 0.033234 -0.029694 0.044525 -0.067383 0.005478 -0.037628 0.017868 0.032867 0.052155 0.035675 0.063965 0.071533 0.069519 -0.027802 0.058228 -0.122925 -0.040131 -0.121155 -0.086914 0.102844 0.056824 -0.023880 0.039032 -0.076782 0.036743 -0.033325 0.046204 0.080444 -0.067810 0.006123 -0.064453 -0.075562 0.088623 -0.045807 0.119629 -0.091064 -0.106445 0.028641 -0.013626 -0.088074 0.022858 0.001543 0.082764 -0.011200 0.044556 0.067261 0.019608 0.088562 -0.056946 0.054138 0.039703 0.007446 -0.032074 0.008430 -0.046478 0.042725 0.051880 -0.064697 0.018555 -0.060486 -0.072815 0.002707 -0.102783 -0.047546 0.096069 0.016891 0.034485 -0.026123 -0.061096 -0.137939 0.022781 0.075989 -0.053833 -0.043335 0.160645 -0.014679 -0.016495 -0.136353 -0.007889 0.056122 -0.040436 0.007717 -0.036865 0.084290 -0.015213 0.044525 0.021729 0.218018 0.036041 0.001776 -0.151123 -0.088745 -0.012070 -0.044098 0.052856 -0.006870 -0.026077 -0.043610 -0.022552 0.003536 0.000071 0.074646 0.037537 0.012733 0.017776 -0.066772 0.041382 -0.008270 -0.054871 0.074524 -0.066772 0.009590 0.010582 -0.029388 0.010422 -0.059753 -0.018417 0.008064
|
||||
-0.061890 -0.039551 0.072510 -0.015511 0.042847 0.019516 -0.046082 0.015228 -0.013947 0.047913 -0.014160 -0.010521 -0.098694 0.078491 0.012909 -0.078613 -0.057953 -0.037445 0.031799 0.107178 0.027527 -0.050232 -0.031921 0.037231 0.100464 0.024445 0.056122 0.016693 0.075134 0.101685 0.070190 -0.120728 -0.038483 0.111023 -0.092773 0.026108 -0.032990 -0.021942 0.050201 0.047913 -0.060089 0.003527 -0.044312 -0.116333 -0.077087 -0.009789 0.050964 0.012131 -0.082458 -0.027512 0.048828 -0.073120 -0.050537 -0.054993 -0.039337 0.006485 0.033813 -0.044403 0.052673 -0.022385 0.003109 -0.012634 -0.098755 -0.123779 -0.000731 -0.027206 -0.019363 0.009132 0.045898 0.053589 0.172363 -0.001333 -0.080750 -0.008438 0.060913 -0.020782 -0.058441 -0.001517 0.061432 0.049561 -0.016602 -0.042450 0.025070 -0.029480 0.029434 0.042084 0.050079 0.020874 -0.114868 -0.091187 0.000793 0.045990 0.020386 -0.110413 -0.042023 -0.076721 0.097351 -0.014015 -0.027191 0.083679 0.023849 -0.059937 -0.091736 0.016815 -0.030197 -0.042236 -0.085510 0.012650 -0.048035 0.009407 -0.012695 -0.024567 -0.070312 -0.084961 -0.022934 -0.080505 -0.109253 0.009560 0.042236 -0.037720 -0.048889 -0.050812 0.082947 0.001262 0.121948 0.025162 0.053375 0.075134 0.063232 -0.030746 0.031708 0.023575 -0.141602 -0.008881 0.046997 0.014778 -0.003922 -0.119751 -0.084534 0.005833 0.062988 -0.020538 0.064087 -0.057983 -0.118713 0.016281 0.029434 0.035400 0.035858 -0.015129 -0.005802 -0.065979 -0.060730 0.037506 -0.082092 -0.061279 -0.049347 0.169922 0.149902 -0.029480 0.040497 -0.144043 -0.046204 0.073425 0.045685 -0.023788 0.088379 -0.002628 0.071533 -0.015152 0.046173 0.070679 0.044800 -0.018021 -0.015213 0.007294 -0.058594 0.105530 0.025711 0.013092 0.059204 -0.084229 -0.042694 0.044952 -0.045288 -0.046875 0.018646 -0.027054 0.055267 -0.051086 -0.028366 0.030670 -0.029022 0.052765 0.124939 -0.012573 0.014542 -0.194092 0.042480 -0.100708 -0.055206 -0.021896 -0.059662 0.031738 0.024445 0.081665 -0.138306 -0.085266 0.040588 0.123474 -0.028107 0.080322 0.064087 0.029160 -0.025192 -0.027786 0.099182 -0.021759 -0.067017 0.055969 -0.109253 0.036011 -0.052612 -0.092957 0.072937 0.065125 0.059021 0.042328 -0.077209 -0.008865 0.030518 -0.072327 -0.016037 -0.051849 0.057068 -0.058441 -0.091431 -0.005932 -0.033173 0.035828 -0.019562 -0.025238 0.066650 -0.149780 -0.008934 -0.024734 -0.121155 0.012817 0.050934 -0.069031 0.045990 0.090759 0.029129 -0.066284 -0.017639 -0.030655
|
||||
0.037872 -0.030411 0.065491 -0.066345 0.024139 0.051453 -0.011505 -0.052368 -0.018646 -0.018967 -0.039948 -0.013763 -0.110840 -0.002972 0.040710 -0.152344 -0.006618 -0.011940 0.065369 0.066528 -0.067993 0.008232 -0.003304 -0.007904 0.069824 0.010941 0.038757 0.108032 0.134033 -0.013596 0.095947 -0.077698 -0.061462 -0.002569 -0.114319 -0.054199 -0.062500 0.033600 0.015038 0.089600 0.034149 0.042480 0.027206 -0.033569 -0.054871 0.042603 0.086609 -0.065857 -0.061584 -0.009270 0.024628 -0.060547 -0.132080 -0.053314 -0.036407 -0.022934 0.038116 -0.021759 0.113281 -0.002869 0.009758 -0.031982 -0.122864 0.013100 -0.060303 -0.017746 -0.027649 -0.060638 0.010231 0.004429 0.100769 -0.048828 0.103088 -0.045074 0.088928 -0.035858 -0.114136 0.036469 0.063965 0.004143 -0.080750 -0.056671 0.015053 -0.031677 -0.055664 -0.058228 0.051605 0.042633 -0.072327 -0.074036 0.002657 0.125000 0.036743 -0.105347 -0.089417 -0.078674 0.034515 -0.054657 -0.036621 0.098938 0.008148 -0.171143 -0.105408 -0.016830 -0.016663 -0.029755 -0.060333 -0.072876 -0.084900 -0.035278 -0.057831 -0.020462 -0.012711 -0.040741 -0.015053 -0.100525 -0.048462 0.040039 0.005207 -0.058594 0.099670 -0.020294 0.011292 -0.099731 0.118774 -0.036804 0.120728 -0.033630 0.038757 -0.015930 0.013008 -0.000036 -0.079956 0.065796 0.037048 0.011459 0.015190 -0.112305 0.018326 -0.006958 -0.057892 -0.019684 0.051422 -0.082703 -0.042389 0.031433 -0.001151 -0.032623 0.021286 -0.008308 -0.017868 -0.001355 0.021606 -0.021393 -0.038574 -0.099976 -0.036560 0.143066 0.021103 0.071045 0.039825 -0.143311 -0.088928 0.030731 0.036438 0.037109 -0.061005 -0.069885 -0.020508 -0.058624 0.058197 -0.012260 0.010788 -0.066345 -0.016037 0.055084 0.020248 0.001548 0.077209 0.036072 0.055481 -0.098816 -0.016815 0.036804 -0.059357 0.010712 -0.064697 -0.005898 0.134521 0.030975 0.008690 -0.077087 -0.083557 0.052856 0.035675 -0.033600 0.083252 -0.153809 0.060822 -0.056946 -0.127563 -0.045227 0.021759 0.111877 0.040833 0.119202 -0.075867 -0.058746 -0.049408 0.054718 -0.083435 0.075684 0.118408 0.003222 -0.116394 -0.032379 0.039673 0.064209 -0.088074 -0.017120 -0.059662 0.093079 0.047455 -0.004372 0.028259 0.137329 -0.011383 0.037750 -0.073547 -0.041901 0.039917 -0.003773 -0.031219 -0.058472 0.069214 -0.048431 0.069763 0.015198 -0.076538 0.026321 0.017822 -0.005577 -0.013290 -0.090820 0.050720 0.050995 -0.107361 0.006077 -0.009552 -0.030014 0.065002 0.085327 0.065552 0.002981 -0.033813 -0.028625
|
||||
-0.112000 -0.065613 0.082397 0.127197 0.102661 -0.021759 -0.018616 0.000806 -0.097168 -0.024445 -0.131836 -0.011772 -0.074585 0.042389 0.028900 -0.165405 -0.037628 -0.101990 0.115723 0.052216 -0.024811 -0.036499 0.035461 0.026398 -0.021271 -0.016220 0.038788 0.046783 -0.000107 0.009521 0.014137 -0.018539 -0.013023 -0.060944 -0.085144 -0.096497 0.002235 -0.069214 -0.037323 0.013794 0.085083 0.070923 0.020340 0.006546 0.016235 0.058319 0.045502 -0.048981 -0.009430 -0.036346 0.018478 -0.010460 -0.131470 0.083862 0.058990 -0.028320 0.098511 -0.004219 0.037567 -0.082214 -0.033203 0.042023 -0.085693 0.028336 0.002293 0.010948 -0.093262 0.036774 0.012260 0.033905 0.065552 0.027908 0.088074 -0.054565 0.063171 -0.025040 -0.134399 -0.013298 0.005455 -0.010048 -0.062744 0.002703 0.018570 -0.053375 -0.060059 -0.143311 0.012718 0.046722 -0.038757 -0.058380 0.106995 0.052490 0.011658 0.010033 -0.065552 -0.020355 0.081421 -0.035675 -0.017548 0.032013 0.008171 -0.066833 -0.090759 -0.055969 0.042969 0.006832 -0.028152 -0.070923 -0.012566 0.035675 0.025070 -0.033051 0.073303 0.113037 0.043182 -0.100464 -0.025940 0.039398 0.017441 -0.059448 0.125244 -0.013748 0.009254 0.079346 0.009773 -0.012123 0.166260 -0.068298 0.095276 -0.022141 -0.040802 0.041168 -0.064270 0.054077 -0.022949 -0.036469 0.026581 -0.062347 0.052704 -0.036163 0.013634 -0.087769 -0.004974 -0.040863 0.011047 0.013107 0.020416 -0.007298 0.053528 0.078186 0.042328 -0.034332 0.008850 -0.012260 -0.035156 -0.032318 -0.062561 0.077759 -0.013229 0.052216 -0.063599 -0.081848 -0.079102 0.115051 0.049927 -0.043121 -0.110718 -0.041962 -0.002954 -0.017609 -0.002710 -0.095520 -0.025894 -0.061523 0.062866 0.042053 0.029160 -0.041412 -0.107605 0.005695 0.028992 -0.124939 -0.012680 0.046204 -0.041931 0.038971 -0.049103 -0.052094 0.080994 0.074280 0.051361 -0.002745 -0.009933 -0.055603 -0.032593 -0.047699 0.122009 -0.087891 -0.005188 0.027176 0.014091 -0.019974 0.121582 0.121704 0.045197 0.051239 0.006561 -0.096863 -0.064636 0.013847 -0.040802 0.015373 0.022644 -0.018265 0.069580 -0.025055 0.001861 0.037292 -0.105408 -0.105347 0.018784 0.102966 0.115417 -0.070984 0.057861 0.049438 0.004341 0.026627 -0.024338 0.012405 0.085449 0.068054 0.066895 0.031128 0.076477 -0.088562 0.147217 -0.004913 -0.142944 0.081543 0.153931 0.035553 0.015335 -0.113037 0.082947 0.016510 -0.079224 -0.075378 -0.063110 -0.022919 -0.018158 -0.044464 0.152710 0.003454 0.017349 -0.001744
|
||||
0.024445 -0.004959 0.021393 -0.007038 0.014244 0.074524 0.087280 -0.074158 -0.004257 -0.042816 0.008919 0.074097 0.011314 0.064880 0.026398 -0.125732 0.051178 -0.037018 0.030655 0.028885 -0.038483 0.010880 -0.094116 -0.034302 0.013962 0.000459 -0.005886 0.045410 0.089294 0.038055 0.110413 -0.046112 0.016556 0.058228 -0.048676 -0.011101 -0.005836 0.056671 -0.025009 0.108276 0.068420 0.079407 0.059448 -0.010284 -0.090515 0.070129 0.059387 0.021088 -0.084473 0.063599 0.085022 -0.198242 -0.077820 -0.024704 0.015488 -0.002390 0.026215 0.020309 0.072449 -0.036804 0.087158 -0.026337 -0.109314 0.017731 -0.037506 0.050171 0.015884 -0.103271 0.043762 0.044067 0.088867 0.003057 0.150513 -0.020325 0.021378 -0.010582 -0.184204 0.064270 0.118286 0.029083 -0.025162 0.012474 -0.005775 0.002539 -0.150269 -0.047638 -0.024475 0.051086 0.048431 -0.082336 -0.033447 0.054291 -0.016647 -0.110657 -0.055267 -0.063782 0.085144 -0.040771 -0.091187 0.017014 0.044647 -0.067322 -0.015297 0.004799 0.058228 0.067993 -0.040314 -0.030045 -0.023438 -0.023712 -0.086121 -0.022034 -0.037598 -0.058044 0.024063 -0.082642 -0.068176 0.117676 0.034210 0.006729 0.025101 -0.037476 0.036438 -0.039001 0.127441 0.000664 0.119690 -0.011345 0.043243 -0.059113 -0.003496 0.019028 -0.125732 0.045990 0.013664 0.003201 -0.000055 -0.036713 0.017227 0.026199 0.005135 0.002310 -0.005512 -0.052521 -0.008881 0.005119 0.001591 -0.036407 0.068420 0.005283 -0.041870 -0.024521 0.038300 -0.035370 -0.042725 -0.119019 -0.025635 0.116638 -0.050873 0.085876 0.031952 -0.117920 -0.044861 -0.026932 0.025986 0.051727 -0.057159 -0.035522 -0.039948 -0.106384 0.017654 -0.041016 0.141357 -0.058533 -0.084656 0.055206 0.072571 0.005478 0.075867 0.033112 0.045471 -0.039124 0.062408 0.047638 0.040558 0.037048 -0.086182 -0.011314 0.137573 0.009262 0.058075 -0.042755 -0.089172 0.111877 0.013428 0.007027 0.003151 -0.131104 0.021729 0.026016 -0.153320 -0.007889 -0.002403 0.057526 0.087036 0.073120 -0.070068 -0.120117 0.033203 0.053223 -0.068420 0.003628 0.113342 0.041046 -0.008690 -0.084595 0.048889 0.066223 -0.025330 -0.031799 -0.041626 0.114441 -0.025009 0.099609 0.052368 0.190796 0.048645 0.016983 -0.124939 -0.060059 -0.013924 0.051483 -0.013954 -0.063416 0.027985 -0.086914 0.078979 0.045837 -0.071411 0.013458 0.019608 0.025742 -0.003618 -0.085388 0.065735 -0.031677 -0.074463 0.016113 0.011948 0.041656 0.004967 0.005054 0.012589 -0.005062 0.017532 -0.011566
|
||||
0.029953 -0.013474 0.005219 0.002035 0.036438 0.116882 0.053589 -0.086487 0.025543 -0.071228 -0.028503 0.045746 -0.036041 -0.035278 0.020935 -0.167480 0.026062 -0.015396 0.001961 -0.016571 -0.115295 0.022934 -0.049438 -0.045227 0.035950 -0.010551 -0.011765 0.055298 0.073364 0.010277 0.121826 -0.084473 -0.006413 -0.003103 -0.108093 -0.085815 -0.040924 0.004807 0.010979 0.148926 0.074402 0.053284 0.072937 0.013420 -0.113464 0.037689 0.065918 -0.027008 -0.069885 0.004993 0.047455 -0.155396 -0.089783 -0.035217 0.047302 0.013351 0.044128 0.024063 0.055450 -0.080566 0.057281 0.025635 -0.116211 0.045532 -0.056000 0.022171 -0.012932 -0.075500 -0.013382 0.007359 0.054871 -0.044830 0.113159 -0.052612 0.022385 -0.042480 -0.135498 0.096924 0.050842 0.025711 -0.035339 -0.042694 -0.038208 0.014427 -0.136841 -0.105286 -0.008705 0.026199 0.026550 -0.054749 0.009018 0.073730 0.022873 -0.121338 -0.058472 -0.000524 0.051208 -0.042358 -0.086426 0.083374 0.025757 -0.103516 -0.008835 0.012268 0.010529 0.035583 -0.036377 -0.047058 -0.066467 -0.036163 -0.109863 0.006222 -0.008209 -0.089172 0.022842 -0.073303 -0.032593 0.131104 0.033112 -0.007282 0.062012 -0.097046 0.010574 -0.066833 0.108398 -0.062744 0.093872 -0.002075 0.072998 -0.005943 0.002975 -0.005527 -0.043213 0.004768 -0.013397 -0.006516 -0.014000 -0.061157 0.004002 0.005531 -0.055267 0.027863 0.025208 -0.070923 -0.024551 0.020645 -0.008316 -0.059326 0.021240 -0.007599 -0.040771 -0.024139 0.055939 -0.001364 -0.014488 -0.087219 0.006828 0.093262 -0.082947 0.124084 0.037567 -0.106873 -0.081299 -0.000940 0.010704 0.051056 -0.084412 -0.085449 -0.037170 -0.075928 0.038391 -0.093994 0.069702 -0.090210 -0.069641 0.078491 0.049774 0.012657 0.062744 0.009048 0.042297 -0.074707 0.005501 0.048553 -0.026596 0.038727 -0.088745 -0.021088 0.159058 0.035614 0.025772 -0.036469 -0.047668 0.050629 0.016006 0.010376 -0.012001 -0.133057 0.102722 -0.020599 -0.138794 -0.022644 0.027054 0.093872 0.096008 0.073120 -0.069092 -0.106201 -0.017929 0.072937 -0.075562 0.045990 0.088806 0.055054 -0.065125 -0.041687 0.008331 0.059509 -0.088562 -0.004913 -0.044037 0.125488 0.007214 0.046326 0.055695 0.166382 -0.024643 0.035248 -0.120117 -0.051453 -0.011063 0.034363 -0.034760 -0.066223 0.013374 -0.056030 0.101868 -0.005829 -0.125488 0.024704 0.035126 -0.002274 0.052002 -0.053436 0.063904 -0.032135 -0.082581 -0.023102 0.028015 0.003983 0.021683 0.001993 0.084351 0.007034 0.012581 -0.039917
|
||||
-0.087769 0.036560 -0.014854 -0.026093 0.032013 0.087830 -0.023117 -0.024857 -0.040527 -0.076050 0.055786 0.048889 -0.098328 0.078857 0.061951 -0.124268 0.045410 0.056091 -0.023148 -0.006985 -0.083801 0.085632 -0.086304 -0.098145 0.065735 -0.033936 -0.003508 0.066345 0.118591 -0.011742 0.038269 -0.028809 0.005920 -0.010269 -0.085266 -0.078186 -0.106689 0.024307 0.035065 0.133667 -0.021729 0.058624 -0.034790 -0.043762 -0.120056 -0.024948 0.032166 -0.018829 -0.130737 0.033630 0.086975 -0.145508 -0.110291 -0.122253 0.049194 0.072693 0.013710 -0.004509 0.120789 -0.035492 0.021652 -0.049286 0.016449 -0.037872 0.042084 0.098328 0.041840 0.028641 0.025024 0.030563 0.123596 -0.035248 0.113708 0.035736 0.019577 -0.022858 -0.091431 0.013084 0.095642 0.081726 -0.005825 0.030334 -0.060547 0.045776 -0.072571 -0.017334 0.081848 -0.014679 -0.002552 -0.061462 -0.085205 0.064575 0.017456 0.021927 -0.078613 0.030411 0.088013 -0.048950 -0.029282 0.039398 0.013512 -0.074646 0.020996 0.023804 -0.108582 -0.049500 0.018555 -0.020584 -0.031799 -0.078857 -0.075745 0.013847 -0.082397 -0.034393 -0.004452 -0.054504 -0.010002 0.092712 0.093872 -0.025604 0.054260 -0.073547 0.054626 -0.010284 0.032959 -0.068420 -0.044983 0.047974 0.012131 0.038391 0.040283 -0.004875 -0.103577 0.010002 0.095154 0.051270 -0.063538 0.004436 0.007282 -0.019165 -0.056183 -0.030655 0.060638 -0.050812 -0.026428 0.063110 0.013168 0.007820 -0.023697 0.053162 0.095947 -0.009369 0.035278 0.011040 -0.078308 -0.113525 -0.034821 0.108521 0.022324 0.054718 0.066956 -0.073547 0.028915 0.010056 0.007179 0.112854 -0.019485 0.001120 -0.038330 -0.081299 0.088074 -0.061768 0.010460 -0.090271 -0.100586 -0.001813 -0.009277 -0.035065 -0.006092 -0.000404 0.045380 -0.028732 0.018387 0.068726 -0.064453 0.147095 -0.012383 0.081299 0.068420 -0.037445 -0.078491 0.038208 -0.049896 0.021713 0.067261 -0.015533 0.026550 -0.064331 0.056641 -0.019501 -0.101318 -0.057007 0.086731 -0.001513 0.119324 0.042389 -0.153076 -0.031921 0.099487 0.073486 -0.041077 0.077759 0.076721 -0.029739 -0.042633 -0.016678 -0.019562 0.003281 -0.037598 0.026978 -0.038055 0.091553 0.005447 0.023407 0.046204 0.220337 -0.022858 0.016800 -0.130127 -0.016876 0.007256 -0.073120 0.004986 -0.063416 -0.050507 -0.079773 0.054016 -0.091248 -0.055267 0.059845 0.008247 -0.015854 0.132935 0.005527 0.018799 -0.061218 -0.043396 -0.028030 -0.105957 0.017517 0.067932 -0.042023 0.046173 -0.028458 0.005692 0.008682
|
||||
-0.033905 -0.010063 0.010475 0.028061 0.000831 0.092346 0.066772 -0.061890 -0.022461 -0.038391 -0.023987 0.047791 -0.089417 0.077515 0.033020 -0.158936 0.044373 -0.005390 0.007298 -0.049622 -0.062805 0.061127 -0.090576 -0.058411 0.037201 0.019714 0.006535 0.118103 0.107910 0.011147 0.113403 -0.028152 -0.020752 0.012268 -0.110291 -0.040619 -0.012619 0.035553 -0.012932 0.143921 0.011864 0.072144 0.002089 -0.005554 -0.071960 0.014870 0.002523 -0.054810 -0.154053 0.034454 0.084351 -0.159912 -0.133545 -0.073669 0.024261 -0.016525 -0.007549 0.012573 0.112671 -0.079712 0.030670 -0.025208 -0.060913 0.046600 -0.009300 0.039520 -0.031311 -0.053864 0.025101 0.031891 0.083862 -0.068115 0.095703 0.016052 0.045746 -0.037903 -0.137329 0.057800 0.126465 0.035156 -0.046997 -0.015930 -0.025940 0.052124 -0.133911 -0.069824 0.032745 0.047363 0.007706 -0.090759 -0.049957 0.089966 0.001418 -0.070557 -0.063416 0.007286 0.063965 -0.045227 -0.076355 0.038208 0.022064 -0.095642 -0.025391 0.036377 -0.030136 0.032959 -0.002844 -0.034363 -0.035461 -0.058136 -0.062866 0.012177 -0.004219 -0.051819 0.014893 -0.086060 -0.031128 0.113525 0.061066 0.003689 0.021027 -0.069519 0.004791 -0.038544 0.037201 -0.074158 0.051666 -0.062927 0.051819 -0.039001 -0.019623 0.018753 -0.079712 0.026642 0.030151 -0.007431 0.034454 -0.016739 0.032898 0.012856 -0.035248 -0.051880 0.009262 -0.056061 0.019958 0.022934 0.042877 -0.031586 0.013885 0.030228 0.005589 0.012245 0.030975 -0.014542 -0.069641 -0.114502 0.013329 0.107056 -0.059784 0.109802 0.022842 -0.117126 -0.031433 -0.059418 0.014366 0.057556 -0.075073 -0.085999 -0.051727 -0.103638 0.021164 -0.058899 0.034485 -0.107117 -0.113586 0.062134 0.058411 -0.043884 0.016235 0.033386 0.058685 -0.120605 0.006039 0.044220 -0.026627 0.105652 -0.097778 0.000656 0.133057 0.043579 0.002386 -0.000733 -0.081299 0.048187 0.020477 0.022964 -0.022614 -0.089478 0.054169 0.027222 -0.121887 -0.010696 0.054169 0.060516 0.083984 0.054321 -0.092896 -0.102966 -0.025711 0.049805 -0.069092 0.072083 0.113281 -0.028076 -0.065979 -0.103699 0.019089 0.085693 -0.073120 -0.026154 -0.057983 0.112488 0.046417 0.002396 0.048737 0.194580 -0.052795 -0.022827 -0.119019 -0.047028 -0.002781 0.034302 0.004517 -0.045349 -0.025986 -0.120300 0.070129 -0.039703 -0.109863 0.063782 0.016815 0.006935 0.052399 -0.022034 0.068359 -0.034088 -0.101135 0.008308 -0.055573 0.016754 0.015465 -0.000374 0.007195 -0.009209 -0.002911 -0.021408
|
||||
-0.043091 -0.074707 0.030762 0.044189 0.068420 0.064697 0.070557 -0.066711 0.023422 -0.018509 -0.068115 0.015182 0.015259 -0.031021 0.004971 -0.173340 -0.047028 -0.085815 -0.002056 -0.055786 -0.067444 0.063293 -0.015465 -0.020035 0.030167 -0.042603 -0.023300 0.080322 0.056793 0.006626 0.108521 -0.078430 -0.032959 0.001125 -0.131714 -0.067383 -0.053436 -0.029114 0.023041 0.051941 0.024460 0.018204 0.018951 0.028656 -0.114868 0.057922 0.021469 -0.083435 -0.149658 -0.013062 0.002634 -0.074219 -0.098755 -0.028625 -0.016525 0.002815 0.051331 0.014877 0.036224 -0.028854 0.029007 -0.013840 -0.087097 0.013306 -0.050018 -0.002832 -0.003235 -0.139893 -0.032013 -0.032379 -0.026428 -0.041199 0.093018 -0.061249 0.011299 -0.043488 -0.068909 0.066772 0.039917 0.016357 -0.031982 -0.050903 0.030884 -0.006672 -0.155518 -0.059631 0.021103 -0.055878 0.049042 -0.136841 0.058929 0.076721 -0.021622 -0.182251 -0.069580 -0.034363 0.028671 -0.032654 -0.035553 0.047241 -0.015701 -0.119263 -0.038696 -0.027405 -0.034515 0.028381 -0.032013 -0.031494 0.001493 0.000972 -0.043457 0.012154 0.006317 -0.078064 -0.001413 -0.044128 -0.005516 0.138794 -0.003353 -0.024109 0.081909 0.020981 0.002401 0.013618 0.064697 0.018433 0.130615 -0.029724 0.027985 -0.014122 -0.015076 0.014168 -0.069763 0.021881 -0.057343 -0.018723 -0.013161 -0.102844 0.002810 -0.068542 -0.075195 0.033783 0.019791 -0.076599 -0.082825 0.070618 0.046234 -0.102051 -0.022705 0.054321 -0.025116 -0.003193 0.033783 0.020203 0.003263 -0.080505 -0.028366 0.029434 -0.066040 0.090759 -0.017670 -0.090271 -0.055359 -0.022873 0.026093 0.003563 -0.091675 -0.077026 -0.012459 -0.096680 0.018005 -0.052368 0.018585 -0.139160 -0.061554 0.139038 0.042145 -0.051941 0.045349 -0.013756 0.051697 -0.088867 -0.030624 0.006317 -0.030533 0.047272 -0.082031 -0.050598 0.115112 0.030975 0.045471 -0.038574 -0.118958 0.009911 -0.013443 -0.020813 0.036499 -0.113037 0.054443 -0.031128 -0.144897 -0.019470 0.033966 0.141113 0.071655 0.030624 0.018234 -0.082947 -0.068115 0.085388 -0.046967 0.022537 0.127686 -0.006241 -0.070862 -0.053101 -0.033081 0.125366 -0.101135 -0.025787 -0.065186 0.108337 0.043793 -0.034058 0.087830 0.066711 -0.067688 -0.030396 -0.114014 -0.064880 -0.030090 0.061493 -0.038361 -0.081726 0.008476 -0.071838 0.104797 -0.027725 -0.072205 0.060272 0.018280 -0.041992 0.053253 -0.085815 0.059601 0.029129 -0.146851 -0.035278 -0.010963 -0.057373 0.040222 0.020554 0.108521 0.056427 -0.013786 -0.013420
|
||||
-0.039215 -0.067261 0.094055 -0.064087 0.059204 -0.040588 -0.004719 -0.043976 -0.040375 0.006104 -0.084229 -0.029160 -0.164185 0.001306 0.024918 -0.141968 -0.058075 -0.036530 0.089294 0.020020 -0.039429 0.009346 0.022797 0.000039 0.045959 -0.077148 0.057648 0.022858 0.077393 -0.075012 0.054077 -0.072083 -0.042786 0.010666 -0.177368 -0.047852 -0.090759 -0.008438 0.018585 0.064026 0.038452 0.020096 0.077148 -0.079285 -0.039581 0.061005 0.077576 -0.025085 -0.065613 -0.094971 0.011909 0.048462 -0.112488 -0.000763 -0.017792 -0.027252 0.058228 -0.030045 0.029221 -0.021332 0.008820 -0.056274 -0.120544 -0.008987 -0.070496 0.001659 0.014915 -0.063232 -0.118469 0.045441 0.052368 -0.028946 0.052734 -0.067017 0.122498 -0.068542 -0.069641 0.016251 0.082214 -0.012611 -0.082092 -0.028564 0.052734 0.062256 0.025452 -0.066101 0.062866 0.030960 -0.004002 -0.079895 0.003546 0.091309 0.051483 -0.108765 -0.112549 -0.041412 -0.020218 -0.046265 -0.027588 0.148315 -0.014610 -0.169067 -0.013329 -0.013206 -0.105103 -0.082336 -0.026978 -0.146606 -0.031464 -0.043732 -0.024704 -0.042877 0.009636 0.002218 0.044769 -0.041443 0.087524 0.066895 -0.008499 -0.061340 0.165283 0.025574 -0.020477 -0.053375 0.052490 0.004951 0.055481 0.045013 0.047241 0.031494 -0.040131 -0.001564 -0.050476 0.064880 0.008156 0.017136 -0.073730 -0.138916 0.030197 -0.003706 -0.076477 0.003685 0.006142 -0.031616 -0.073914 0.134155 -0.013878 -0.037811 -0.032990 -0.037109 0.002953 -0.051514 0.000969 0.029892 0.021820 -0.051971 -0.006363 0.112793 0.029617 0.013397 0.036743 -0.077454 -0.070007 0.090759 0.009613 -0.065186 -0.046967 -0.044037 0.014175 -0.028412 0.096252 -0.030090 -0.072571 -0.059479 0.109558 0.024170 0.024841 -0.001913 0.044861 0.033081 0.063354 -0.066040 -0.055328 0.026306 -0.077393 0.016174 -0.059357 0.000043 0.123230 -0.007015 -0.043549 -0.053009 -0.068298 0.030396 -0.021835 -0.059265 0.101685 -0.119019 0.038910 -0.106201 -0.064331 -0.011925 0.016785 0.110779 0.070557 0.111938 -0.042145 -0.030884 -0.067566 0.029221 -0.007294 0.128784 0.121887 -0.074097 -0.081421 0.020447 0.013786 0.037659 -0.068787 -0.013481 -0.035614 0.033630 0.006725 -0.046417 0.061432 0.023666 0.006065 -0.009491 -0.026978 -0.022049 0.107727 -0.006538 0.009056 -0.015793 0.110046 -0.008354 0.036865 -0.082458 -0.034393 0.011353 -0.011482 -0.016418 0.030472 -0.069458 0.033051 0.090698 -0.068787 0.010857 -0.011711 -0.089050 0.087891 -0.033722 0.123901 -0.053345 -0.069336 -0.062683
|
||||
-0.112854 -0.025482 0.005482 0.020279 0.059692 -0.042267 0.031586 -0.048950 -0.040253 -0.008797 -0.152100 -0.019165 -0.092712 0.010941 0.067322 -0.196411 -0.033844 -0.128418 0.088440 -0.000941 -0.011795 0.060852 -0.057220 -0.080078 0.030167 -0.071960 0.015747 0.114380 0.041992 -0.030792 0.071228 -0.067261 -0.022034 -0.100281 -0.171021 -0.104553 -0.062744 -0.014526 0.041565 0.075012 0.055084 0.038727 0.058868 -0.008957 -0.048981 0.021347 0.071350 -0.002934 -0.083008 -0.048096 0.058441 0.016479 -0.157471 0.041962 0.062988 0.012779 0.034943 0.006897 0.017471 -0.050293 -0.016953 0.004257 -0.076538 -0.017776 -0.031067 -0.000585 -0.045929 -0.025711 -0.016251 -0.004734 0.053497 0.028519 0.076660 -0.033356 0.027313 -0.052063 -0.125488 -0.010010 0.077148 -0.005856 -0.081116 0.015457 0.038208 -0.011597 -0.062988 -0.092346 0.008179 0.033844 -0.002117 -0.068359 0.028885 0.069336 0.012299 -0.041962 -0.082153 0.001546 0.020584 -0.035828 -0.025558 0.138916 0.010719 -0.124268 -0.024048 -0.078857 -0.009933 0.028809 0.010895 -0.094849 -0.002447 -0.027924 0.041931 0.009644 0.069641 0.064941 0.050018 -0.048584 0.053802 0.081238 0.006062 -0.069580 0.112488 -0.035706 -0.007183 -0.000055 -0.043152 -0.015388 0.080627 -0.061707 0.012703 -0.020157 -0.009735 -0.017563 -0.061432 0.052826 -0.030060 -0.027008 0.017593 -0.034180 0.079041 -0.005634 -0.054993 0.007370 -0.028214 -0.054626 0.047760 0.097351 0.009506 0.006466 -0.007553 0.018219 0.018982 0.004433 0.056000 0.005699 -0.029144 -0.038330 -0.012337 0.068604 -0.049377 0.138794 0.038452 -0.048859 -0.057190 0.119629 -0.011131 -0.016388 -0.085999 -0.041748 -0.026672 -0.086365 -0.005589 -0.055542 -0.055328 -0.126465 -0.010002 -0.000075 0.053864 -0.018692 -0.035675 0.012138 0.006001 -0.150146 -0.037598 0.029358 -0.077698 0.111450 -0.063232 -0.025040 0.106018 0.013931 -0.026550 -0.011070 -0.001914 0.011086 -0.045319 -0.014580 0.110291 -0.079956 0.046265 -0.014252 -0.047577 -0.076416 0.076904 0.119873 0.131226 0.067993 -0.004433 -0.053619 -0.027161 0.069031 0.002426 0.054901 0.091003 -0.032990 -0.026718 0.008980 -0.078064 0.097534 -0.083130 -0.061493 -0.047638 0.164429 0.107849 -0.063660 0.074524 0.083435 -0.049347 -0.061462 -0.059631 0.017822 0.106140 0.058350 0.019424 -0.014931 0.043335 -0.115051 0.099854 -0.094849 -0.084900 0.024323 0.053223 -0.014671 0.043610 -0.033905 0.098694 0.012497 -0.041504 -0.034546 -0.106934 -0.053223 0.045807 -0.100769 0.110535 0.067444 -0.041168 -0.007671
|
||||
0.017929 -0.018723 -0.028030 -0.025391 -0.024414 0.104248 0.000623 -0.090576 0.012886 -0.088074 -0.033875 0.031174 -0.089233 0.002180 0.017212 -0.142944 0.062256 0.000796 -0.041046 -0.027954 -0.096313 0.043091 -0.066956 -0.069275 0.053711 0.016785 0.011047 0.129639 0.107422 0.004948 0.141479 -0.057739 -0.037903 -0.012688 -0.108948 -0.051483 -0.035034 0.022781 0.030731 0.154053 -0.013000 0.054474 0.030518 0.028152 -0.082092 0.015396 0.034088 -0.048859 -0.096619 0.042938 0.058502 -0.138428 -0.170166 -0.067566 0.056458 -0.012047 0.028152 -0.009102 0.133301 -0.045746 0.004971 -0.000458 -0.037506 0.070374 -0.028275 -0.009819 -0.040436 -0.026962 0.068970 -0.034058 0.070068 -0.070984 0.132202 -0.013420 0.021973 -0.052765 -0.103882 0.072327 0.060364 0.022430 -0.001070 -0.031494 -0.021042 -0.002335 -0.120117 -0.080688 0.014008 0.025497 -0.028107 -0.007694 -0.004406 0.115601 0.030579 -0.062622 -0.068481 0.046753 0.018555 -0.059967 -0.034088 0.076965 0.049377 -0.135620 -0.026871 -0.005478 -0.021561 0.064209 0.002422 -0.012718 -0.115234 -0.056885 -0.036591 0.015289 -0.011833 -0.022507 0.001439 -0.073853 -0.038391 0.088257 0.024506 -0.002724 0.050873 -0.104797 -0.018936 -0.078918 0.032776 -0.081909 0.076416 -0.085388 0.011993 -0.019592 0.017456 0.025284 -0.053833 0.039703 0.056122 -0.031097 0.040771 -0.040741 0.060303 0.008430 -0.068237 0.038300 0.034637 -0.087036 0.021988 0.003504 -0.006550 -0.035339 0.009674 -0.004513 0.029251 0.043396 0.049835 -0.022720 -0.046173 -0.121399 -0.010719 0.112610 -0.057343 0.103699 0.038666 -0.120850 -0.086792 -0.016953 0.029556 0.070862 -0.096436 -0.106140 -0.059906 -0.092346 0.007980 -0.026062 0.008110 -0.095581 -0.107666 0.038788 0.058289 0.006073 0.033997 0.066467 0.055206 -0.080505 0.024368 0.040283 -0.058960 0.023438 -0.107239 0.017838 0.144287 0.062073 0.005550 -0.036774 -0.038910 -0.003952 -0.001529 0.014221 -0.024261 -0.099182 0.055969 -0.010254 -0.140259 -0.009117 0.089600 0.045227 0.080200 0.082581 -0.085815 -0.054718 -0.025909 0.009064 -0.076782 0.021667 0.086670 -0.027649 -0.095337 -0.069458 0.016449 0.102173 -0.077820 -0.062378 -0.053497 0.096436 0.087646 0.025070 0.020370 0.190552 -0.091797 0.025452 -0.078735 -0.017929 0.026031 0.049042 -0.031311 -0.075256 -0.015388 -0.050415 0.075134 -0.027069 -0.144165 0.044617 0.023788 0.020142 0.003881 0.007057 0.047974 -0.027649 -0.059631 -0.002188 -0.046631 0.020798 0.024246 0.027603 0.028336 0.039246 -0.015083 -0.034363
|
BIN
practice/data_.bin
Normal file
BIN
practice/data_.bin
Normal file
Binary file not shown.
90
practice/json_to_data.py
Normal file
90
practice/json_to_data.py
Normal file
@ -0,0 +1,90 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
"""
|
||||
Created on Wed Dec 18 15:44:33 2024
|
||||
|
||||
@author: ieemoo-zl003
|
||||
"""
|
||||
|
||||
import json
|
||||
import struct
|
||||
import numpy as np
|
||||
|
||||
json_path = r"D:\DetectTracking\practice\resv11_test.json"
|
||||
|
||||
def write_binary_file(filename, datas):
|
||||
with open(filename, 'wb') as f:
|
||||
# 先写入数据中的key数量(为C++读取提供便利)
|
||||
key_count = len(datas)
|
||||
f.write(struct.pack('I', key_count)) # 'I'代表无符号整型(4字节)
|
||||
|
||||
feats_32, feats_16 = [], []
|
||||
for data in datas:
|
||||
key = data['key']
|
||||
feats = data['value']
|
||||
key_bytes = key.encode('utf-8')
|
||||
key_len = len(key)
|
||||
length_byte = struct.pack('<B', key_len)
|
||||
f.write(length_byte)
|
||||
# f.write(struct.pack('Q', len(key_bytes)))
|
||||
f.write(key_bytes)
|
||||
value_count = len(feats)
|
||||
f.write(struct.pack('I', (value_count * 256)))
|
||||
# 遍历字典,写入每个key及其对应的浮点数值列表
|
||||
for values in feats:
|
||||
# 写入每个浮点数值(保留小数点后六位)
|
||||
feat16 = []
|
||||
for value in values:
|
||||
# 使用'f'格式(单精度浮点,4字节),并四舍五入保留六位小数
|
||||
value_half = np.float16(value)
|
||||
# print(value_half.tobytes())
|
||||
f.write(value_half.tobytes())
|
||||
|
||||
feat16.append(value_half)
|
||||
|
||||
feats_16.append(feat16)
|
||||
feats_32.append(values)
|
||||
|
||||
feats16 = np.array(feats_16)
|
||||
feats32 = np.array(feats_32)
|
||||
|
||||
|
||||
print("Done")
|
||||
|
||||
|
||||
def main_xh():
|
||||
|
||||
# 1. 打开JSON文件
|
||||
with open(json_path, 'r', encoding='utf-8') as file:
|
||||
# 2. 读取并解析JSON文件内容
|
||||
data = json.load(file)
|
||||
|
||||
for flag, values in data.items():
|
||||
# 逐个写入values中的每个值,保留小数点后六位,每个值占一行
|
||||
write_binary_file(r"D:\DetectTracking\practice\data_.bin", values)
|
||||
|
||||
|
||||
|
||||
'''
|
||||
with open('D://07Test/全实时/output.txt', 'w', encoding='utf-8') as txt_file:
|
||||
for flag, values in data.items():
|
||||
# 逐个写入values中的每个值,保留小数点后六位,每个值占一行
|
||||
for value in values:
|
||||
key = value['key']
|
||||
feats = value['value']
|
||||
# 写入key
|
||||
txt_file.write(key)
|
||||
txt_file.write("\n")
|
||||
for feat in feats:
|
||||
for number in feat:
|
||||
# 使用格式化字符串保留六位小数,并写入文件
|
||||
txt_file.write(f"{number:.6f} ")
|
||||
txt_file.write("\n")
|
||||
|
||||
'''
|
||||
def main_wang():
|
||||
pass
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main_xh()
|
||||
|
BIN
realtime/__pycache__/event_time_specify.cpython-312.pyc
Normal file
BIN
realtime/__pycache__/event_time_specify.cpython-312.pyc
Normal file
Binary file not shown.
BIN
realtime/__pycache__/event_time_specify.cpython-39.pyc
Normal file
BIN
realtime/__pycache__/event_time_specify.cpython-39.pyc
Normal file
Binary file not shown.
BIN
realtime/__pycache__/intrude_detect.cpython-312.pyc
Normal file
BIN
realtime/__pycache__/intrude_detect.cpython-312.pyc
Normal file
Binary file not shown.
@ -9,11 +9,10 @@ import numpy as np
|
||||
# from matplotlib.pylab import mpl
|
||||
# mpl.use('Qt5Agg')
|
||||
import matplotlib.pyplot as plt
|
||||
from move_detect import MoveDetect
|
||||
|
||||
import sys
|
||||
sys.path.append(r"D:\DetectTracking")
|
||||
|
||||
from move_detect import MoveDetect
|
||||
# from tracking.utils.read_data import extract_data, read_deletedBarcode_file, read_tracking_output, read_weight_timeConsuming
|
||||
from tracking.utils.read_data import read_weight_timeConsuming
|
||||
|
||||
@ -124,25 +123,28 @@ def devide_motion_state(tboxes, width):
|
||||
|
||||
'''
|
||||
|
||||
periods = []
|
||||
if len(tboxes) < width:
|
||||
return periods
|
||||
|
||||
fboxes, frameTstamp = array2frame(tboxes)
|
||||
|
||||
fnum = len(frameTstamp)
|
||||
if fnum < width: return periods
|
||||
|
||||
state = np.zeros((fnum, 2), dtype=np.int64)
|
||||
frameState = np.concatenate((frameTstamp, state), axis = 1).astype(np.int64)
|
||||
handState = np.concatenate((frameTstamp, state), axis = 1).astype(np.int64)
|
||||
|
||||
|
||||
|
||||
if fnum < width:
|
||||
return frameState, handState
|
||||
|
||||
mtrackFid = {}
|
||||
handFid = {}
|
||||
'''frameState 标记由图像判断的购物车状态:0: 静止,1: 运动'''
|
||||
for idx in range(width, fnum+1):
|
||||
idx0 = idx-width
|
||||
|
||||
# if idx == 40:
|
||||
# print("123")
|
||||
|
||||
lboxes = np.concatenate(fboxes[idx0:idx], axis = 0)
|
||||
md = MoveDetect(lboxes)
|
||||
md.classify()
|
||||
|
@ -9,9 +9,10 @@ import sys
|
||||
import numpy as np
|
||||
import matplotlib.pyplot as plt
|
||||
from datetime import datetime
|
||||
from contrast.utils.event import ShoppingEvent
|
||||
|
||||
sys.path.append(r"D:\DetectTracking")
|
||||
|
||||
from contrast.utils.event import ShoppingEvent
|
||||
from tracking.utils.read_data import read_weight_sensor, extract_data_realtime, read_tracking_output_realtime
|
||||
from tracking.utils.read_data import read_process
|
||||
|
||||
|
420
realtime/intrude_detect.py
Normal file
420
realtime/intrude_detect.py
Normal file
@ -0,0 +1,420 @@
|
||||
#!/usr/bin/env python3
|
||||
# -*- coding: utf-8 -*-
|
||||
"""
|
||||
Created on Tue Apr 8 10:07:17 2025
|
||||
|
||||
@author: wqg
|
||||
"""
|
||||
|
||||
import csv
|
||||
import os
|
||||
import platform
|
||||
import sys
|
||||
import pickle
|
||||
import cv2
|
||||
import numpy as np
|
||||
from pathlib import Path
|
||||
import matplotlib.pyplot as plt
|
||||
import matplotlib.pyplot as plt
|
||||
from typing import List, Tuple
|
||||
from scipy.spatial.distance import cdist
|
||||
from scipy.spatial import ConvexHull
|
||||
from shapely.geometry import Point, Polygon
|
||||
|
||||
##################################################### for method: run_yrt()
|
||||
FILE = Path(__file__).resolve()
|
||||
ROOT = FILE.parents[1]
|
||||
if str(ROOT) not in sys.path:
|
||||
sys.path.insert(0, str(ROOT))
|
||||
|
||||
from track_reid import yolov10_resnet_tracker
|
||||
from event_time_specify import devide_motion_state
|
||||
|
||||
|
||||
def cross(o: Tuple[float, float], a: Tuple[float, float], b: Tuple[float, float]) -> float:
|
||||
""" 计算向量 OA × OB 的叉积 """
|
||||
return (a[0] - o[0]) * (b[1] - o[1]) - (a[1] - o[1]) * (b[0] - o[0])
|
||||
|
||||
def compute_convex_hull(points: List[Tuple[float, float]]) -> List[Tuple[float, float]]:
|
||||
""" 使用 Andrew's Monotone Chain 算法求二维点集的凸包 """
|
||||
points = sorted(set(points)) # 排序并去重
|
||||
if len(points) <= 1:
|
||||
return points
|
||||
|
||||
lower = []
|
||||
for p in points:
|
||||
while len(lower) >= 2 and cross(lower[-2], lower[-1], p) <= 0:
|
||||
lower.pop()
|
||||
lower.append(p)
|
||||
|
||||
upper = []
|
||||
for p in reversed(points):
|
||||
while len(upper) >= 2 and cross(upper[-2], upper[-1], p) <= 0:
|
||||
upper.pop()
|
||||
upper.append(p)
|
||||
|
||||
# 去掉重复的连接点
|
||||
return lower[:-1] + upper[:-1]
|
||||
|
||||
def is_point_in_convex_hull(point: Tuple[float, float], hull: List[Tuple[float, float]]) -> bool:
|
||||
""" 判断一个点是否在凸包(含边界)内 """
|
||||
n = len(hull)
|
||||
if n < 3:
|
||||
# 对于点或线段,直接判断是否共线或在线段上
|
||||
if n == 1:
|
||||
return point == hull[0]
|
||||
if n == 2:
|
||||
a, b = hull
|
||||
return abs(cross(a, b, point)) < 1e-10 and min(a[0], b[0]) <= point[0] <= max(a[0], b[0]) and min(a[1], b[1]) <= point[1] <= max(a[1], b[1])
|
||||
return False
|
||||
|
||||
for i in range(n):
|
||||
a = hull[i]
|
||||
b = hull[(i + 1) % n]
|
||||
if cross(a, b, point) < -1e-10: # 必须全部在左边或边上
|
||||
return False
|
||||
return True
|
||||
|
||||
|
||||
|
||||
def plot_convex_hull(points: List[Tuple[float, float]], hull: List[Tuple[float, float]], test_points: List[Tuple[float, float]] = None):
|
||||
x_all, y_all = zip(*points)
|
||||
fig, ax = plt.subplots()
|
||||
|
||||
ax.set_xlim(0, 1024)
|
||||
ax.set_ylim(1280, 0)
|
||||
|
||||
ax.plot(x_all, y_all, 'o', label='Points')
|
||||
|
||||
# 凸包闭环线
|
||||
hull_loop = hull + [hull[0]]
|
||||
hx, hy = zip(*hull_loop)
|
||||
ax.plot(hx, hy, 'r-', linewidth=2, label='Convex Hull')
|
||||
|
||||
# 如果有测试点
|
||||
if test_points:
|
||||
for pt in test_points:
|
||||
color = 'green' if is_point_in_convex_hull(pt, hull) else 'black'
|
||||
ax.plot(pt[0], pt[1], 's', color=color, markersize=8)
|
||||
ax.text(pt[0] + 0.05, pt[1], f'{pt}', fontsize=9)
|
||||
|
||||
ax.legend()
|
||||
ax.grid(True)
|
||||
plt.title("Convex Hull Visualization")
|
||||
plt.show()
|
||||
|
||||
|
||||
def convex_scipy():
|
||||
points = np.array([
|
||||
[0, 0],
|
||||
[2, 0],
|
||||
[1, 1],
|
||||
[2, 2],
|
||||
[0, 2],
|
||||
[1, 0.5]])
|
||||
hull = ConvexHull(points)
|
||||
|
||||
# 凸包顶点的索引
|
||||
print("凸包顶点索引:{}".format(hull.vertices))
|
||||
print("凸包顶点坐标:")
|
||||
for i in hull.vertices:
|
||||
print(points[i])
|
||||
|
||||
|
||||
# 将凸包坐标构造成 Polygon
|
||||
hull_points = points[hull.vertices]
|
||||
polygon = Polygon(hull_points)
|
||||
|
||||
# 判断一个点是否在凸包内
|
||||
p = Point(1, 1) # 示例点
|
||||
print("是否在凸包内:", polygon.contains(p)) # True or False
|
||||
|
||||
|
||||
def test_convex():
|
||||
# 测试数据
|
||||
sample_points = [(0, 0), (1, 1), (2, 2), (2, 0), (0, 2), (1, 0.5)]
|
||||
convex_hull = compute_convex_hull(sample_points)
|
||||
|
||||
# 测试点在凸包内
|
||||
test_point_inside = (1, 1)
|
||||
test_point_outside = (3, 3)
|
||||
test_point_on_edge = (1, 0)
|
||||
|
||||
inside = is_point_in_convex_hull(test_point_inside, convex_hull)
|
||||
outside = is_point_in_convex_hull(test_point_outside, convex_hull)
|
||||
on_edge = is_point_in_convex_hull(test_point_on_edge, convex_hull)
|
||||
|
||||
convex_hull, inside, outside, on_edge
|
||||
|
||||
# 展示图像
|
||||
plot_convex_hull(sample_points, convex_hull, [test_point_inside, test_point_outside, test_point_on_edge])
|
||||
|
||||
def array2frame(tboxes):
|
||||
"tboxes: [x1, y1, x2, y2, track_id, score, cls, frame_index, box_index]"
|
||||
idx = np.where(tboxes[:, 6] != 0)[0]
|
||||
bboxes = tboxes[idx, :]
|
||||
frameID = np.sort(np.unique(bboxes[:, 7].astype(int)))
|
||||
fboxes = []
|
||||
for fid in frameID:
|
||||
idx = np.where(bboxes[:, 7] == fid)[0]
|
||||
box = bboxes[idx, :]
|
||||
fboxes.append(box)
|
||||
return fboxes
|
||||
|
||||
def convex_based(tboxes, width, TH=40):
|
||||
fboxes = array2frame(tboxes)
|
||||
fnum = len(fboxes)
|
||||
|
||||
fids = np.array([i+1 for i in range(fnum)])[:, np.newaxis]
|
||||
state = np.zeros((fnum, 1), dtype=np.int64)
|
||||
frameState = np.concatenate((fids, state), axis = 1).astype(np.int64)
|
||||
if fnum < width:
|
||||
return frameState
|
||||
|
||||
for idx1 in range(width, fnum+1):
|
||||
idx0 = idx1 - width
|
||||
idx = idx1 - width//2 - 1
|
||||
|
||||
iboxes = fboxes[:idx]
|
||||
cboxes = fboxes[idx][:, 0:4]
|
||||
|
||||
cur_xy = np.zeros((len(cboxes), 2))
|
||||
cur_xy[:, 0] = (fboxes[idx][:, 0]+fboxes[idx][:, 2])/2
|
||||
cur_xy[:, 1] = (fboxes[idx][:, 1]+fboxes[idx][:, 3])/2
|
||||
for i in range(width//2):
|
||||
x1, y1, x2, y2 = iboxes[i][:, 0], iboxes[i][:, 1], iboxes[i][:, 2], iboxes[i][:, 3]
|
||||
|
||||
boxes = np.array([(x1, y1), (x1, y2), (x2, y1), (x2, y2)]).transpose(0, 2, 1).reshape(-1, 2)
|
||||
box1 = [(x, y) for x, y in boxes]
|
||||
convex_hull = compute_convex_hull(box1)
|
||||
|
||||
for pt in cur_xy:
|
||||
inside = is_point_in_convex_hull(pt, convex_hull)
|
||||
|
||||
if not inside:
|
||||
break
|
||||
if not inside:
|
||||
break
|
||||
|
||||
# Based on the distance between the four corners of the current frame boxes
|
||||
# and adjacent frame boxes
|
||||
iboxes = fboxes[idx0:idx] + fboxes[idx+1:idx1]
|
||||
cboxes = fboxes[idx][:, 0:4]
|
||||
cx1, cy1, cx2, cy2 = cboxes[:, 0], cboxes[:, 1], cboxes[:, 2], cboxes[:, 3]
|
||||
cxy = np.array([(cx1, cy1), (cx1, cy2), (cx2, cy1), (cx2, cy2)]).transpose(0, 2, 1).reshape(-1, 2)
|
||||
|
||||
iiboxes = np.concatenate(iboxes, axis=0)
|
||||
ix1, iy1, ix2, iy2 = iiboxes[:, 0], iiboxes[:, 1], iiboxes[:, 2], iiboxes[:, 3]
|
||||
ixy = np.array([(ix1, iy1), (ix1, iy2), (ix2, iy1), (ix2, iy2)]).transpose(0, 2, 1).reshape(-1, 2)
|
||||
|
||||
Dist = cdist(cxy, ixy).round(2)
|
||||
max_dist = np.max(np.min(Dist, axis=1))
|
||||
if max_dist > TH and not inside:
|
||||
frameState[idx, 1] = 1
|
||||
# plot_convex_hull(boxes, convex_hull, [pt])
|
||||
frameState[idx, 1] = 1
|
||||
|
||||
return frameState
|
||||
|
||||
|
||||
def single_point(tboxes, width, TH=60):
|
||||
"""width: window width, >=2"""
|
||||
|
||||
|
||||
fboxes = array2frame(tboxes)
|
||||
fnum = len(fboxes)
|
||||
|
||||
fids = np.array([i+1 for i in range(fnum)])[:, np.newaxis]
|
||||
state = np.zeros((fnum, 1), dtype=np.int64)
|
||||
frameState = np.concatenate((fids, state), axis = 1).astype(np.int64)
|
||||
|
||||
|
||||
if fnum < width:
|
||||
return frameState
|
||||
|
||||
for idx1 in range(width, fnum+1):
|
||||
idx0 = idx1 - width
|
||||
idx = idx1 - width//2 - 1
|
||||
|
||||
iboxe1 = fboxes[idx0:idx]
|
||||
iboxe2 = fboxes[idx+1:idx1]
|
||||
iboxes = fboxes[idx0:idx] + fboxes[idx+1:idx1]
|
||||
|
||||
cboxes = fboxes[idx][:, 0:4]
|
||||
cur_xy = np.zeros((len(cboxes), 2))
|
||||
cur_xy[:, 0] = (fboxes[idx][:, 0]+fboxes[idx][:, 2])/2
|
||||
cur_xy[:, 1] = (fboxes[idx][:, 1]+fboxes[idx][:, 3])/2
|
||||
Dist = np.empty((len(cboxes), 0))
|
||||
for i in range(width-1):
|
||||
boxes = iboxes[i][:, 0:4]
|
||||
|
||||
box_xy = np.zeros((len(boxes), 2))
|
||||
box_xy[:, 0] = (boxes[:, 0]+boxes[:, 2])/2
|
||||
box_xy[:, 1] = (boxes[:, 1]+boxes[:, 3])/2
|
||||
dist2 = cdist(cur_xy, box_xy).round(2)
|
||||
|
||||
Dist = np.concatenate((Dist, dist2), axis=1)
|
||||
|
||||
max_dist = np.max(np.min(Dist, axis=1))
|
||||
|
||||
if max_dist > TH:
|
||||
frameState[idx, 1] = 1
|
||||
|
||||
return frameState
|
||||
|
||||
|
||||
|
||||
def intrude():
|
||||
pkpath = Path("/home/wqg/dataset/small-goods/pkfiles")
|
||||
savepath = Path("/home/wqg/dataset/small-goods/illustration_convex")
|
||||
|
||||
if not savepath.exists():
|
||||
savepath.mkdir(parents=True, exist_ok=True)
|
||||
|
||||
err_trail, err_single, err_all = [], [], []
|
||||
num = 0
|
||||
for pth in pkpath.iterdir():
|
||||
# item = r"69042386_20250407-145737_front_returnGood_b82d28427666_15_17700000001.pickle"
|
||||
# pth = pkpath/item
|
||||
|
||||
with open(str(pth), 'rb') as f:
|
||||
yrt = pickle.load(f)
|
||||
|
||||
evtname = pth.stem
|
||||
|
||||
bboxes = []
|
||||
trackerboxes = np.empty((0, 10), dtype=np.float64)
|
||||
for frameDict in yrt:
|
||||
boxes = frameDict["bboxes"]
|
||||
tboxes = frameDict["tboxes"]
|
||||
tboxes = np.concatenate((tboxes, tboxes[:,7][:, None]), axis=1)
|
||||
|
||||
bboxes.append(boxes)
|
||||
|
||||
trackerboxes = np.concatenate((trackerboxes, np.array(tboxes)), axis=0)
|
||||
|
||||
'''single-points based for intrusion detection'''
|
||||
# wd =5
|
||||
# fstate1 = single_point(trackerboxes, wd)
|
||||
|
||||
'''convex-based '''
|
||||
width = 5
|
||||
fstate = convex_based(trackerboxes, width, TH=60)
|
||||
|
||||
# fstate = np.zeros(fstate1.shape)
|
||||
# fstate[:, 0] = fstate1[:, 0]
|
||||
# fstate[:, 1] = fstate1[:, 1] * fstate2[:, 1]
|
||||
|
||||
'''trajectory based for intrusion detection
|
||||
period: 0 1 2 3
|
||||
fid timestamp(fid) 基于滑动窗的tid扩展 滑动窗覆盖的运动区间
|
||||
'''
|
||||
win_width = 12
|
||||
period, handState = devide_motion_state(trackerboxes, win_width)
|
||||
|
||||
num += 1
|
||||
if np.all(period[:,2:4]==0):
|
||||
err_trail.append(evtname)
|
||||
if np.all(fstate[:,1]==0):
|
||||
err_single.append(evtname)
|
||||
if np.all(period[:,2:4]==0) and np.all(fstate[:,1]==0):
|
||||
err_all.append(evtname)
|
||||
|
||||
fig, (ax1, ax2) = plt.subplots(2, 1)
|
||||
ax1.plot(period[:, 1], period[:, 2], 'bo-', linewidth=1, markersize=4)
|
||||
ax1.plot(period[:, 1], period[:, 3], 'rx-', linewidth=1, markersize=8)
|
||||
|
||||
ax2.plot(fstate[:, 0], fstate[:, 1], 'rx-', linewidth=1, markersize=8)
|
||||
plt.savefig(os.path.join(str(savepath), f"{evtname}.png"))
|
||||
|
||||
|
||||
plt.close()
|
||||
# if num==1:
|
||||
# break
|
||||
|
||||
rate_trail = 1 - len(err_trail)/num
|
||||
rate_single = 1 - len(err_single)/num
|
||||
rate_all = 1 - len(err_all)/num
|
||||
|
||||
print(f"rate_trail: {rate_trail}")
|
||||
print(f"rate_single: {rate_single}")
|
||||
print(f"rate_all: {rate_all}")
|
||||
|
||||
txtpath = savepath.parents[0] / "error.txt"
|
||||
with open(str(txtpath), "w") as f:
|
||||
f.write(f"rate_trail: {rate_trail}" + "\n")
|
||||
f.write(f"rate_single: {rate_single}" + "\n")
|
||||
f.write(f"rate_all: {rate_all}" + "\n")
|
||||
|
||||
f.write("\n" + "err_trail" + "\n")
|
||||
for line in err_trail:
|
||||
f.write(line + "\n")
|
||||
|
||||
f.write("\n" + "err_single" + "\n")
|
||||
for line in err_single:
|
||||
f.write(line + "\n")
|
||||
|
||||
f.write("\n" + "err_all" + "\n")
|
||||
for line in err_all:
|
||||
f.write(line + "\n")
|
||||
print("Done!")
|
||||
|
||||
|
||||
|
||||
|
||||
def run_yrt():
|
||||
datapath = Path("/home/wqg/dataset/small-goods/videos/")
|
||||
savepath = Path("/home/wqg/dataset/small-goods/result/")
|
||||
pkpath = Path("/home/wqg/dataset/small-goods/pkfiles/")
|
||||
|
||||
if not savepath.exists():
|
||||
savepath.mkdir(parents=True, exist_ok=True)
|
||||
if not pkpath.exists():
|
||||
pkpath.mkdir(parents=True, exist_ok=True)
|
||||
|
||||
|
||||
optdict = {}
|
||||
optdict["weights"] = ROOT / 'ckpts/best_v10s_width0375_1205.pt'
|
||||
optdict["is_save_img"] = False
|
||||
optdict["is_save_video"] = True
|
||||
|
||||
k = 0
|
||||
for pth in datapath.iterdir():
|
||||
item = "69042386_20250407-145819_back_returnGood_b82d28427666_15_17700000001.mp4"
|
||||
pth = pth.parents[0] /item
|
||||
|
||||
optdict["source"] = pth
|
||||
optdict["save_dir"] = savepath
|
||||
|
||||
# try:
|
||||
yrtOut = yolov10_resnet_tracker(**optdict)
|
||||
|
||||
pkpath_ = pkpath / f"{Path(pth).stem}.pickle"
|
||||
with open(str(pkpath_), 'wb') as f:
|
||||
pickle.dump(yrtOut, f)
|
||||
|
||||
k += 1
|
||||
if k==1:
|
||||
break
|
||||
# except Exception as e:
|
||||
# print("abc")
|
||||
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
# run_yrt()
|
||||
|
||||
intrude()
|
||||
|
||||
# test_convex()
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
@ -13,10 +13,25 @@ from pathlib import Path
|
||||
import glob
|
||||
import numpy as np
|
||||
import copy
|
||||
|
||||
import matplotlib.pyplot as plt
|
||||
from collections import OrderedDict
|
||||
|
||||
from event_time_specify import devide_motion_state #, state_measure
|
||||
|
||||
import sys
|
||||
|
||||
|
||||
FILE = Path(__file__).resolve()
|
||||
ROOT = FILE.parents[1] # YOLOv5 root directory
|
||||
if str(ROOT) not in sys.path:
|
||||
sys.path.append(str(ROOT)) # add ROOT to PATH
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
from imgs_inference import run_yolo
|
||||
from event_time_specify import devide_motion_state#, state_measure
|
||||
from tracking.utils.read_data import read_weight_sensor
|
||||
|
||||
# IMG_FORMATS = 'bmp', 'dng', 'jpeg', 'jpg', 'mpo', 'png', 'tif', 'tiff', 'webp', 'pfm' # include image suffixes
|
||||
@ -400,8 +415,8 @@ def splitevent(imgpath, MotionSlice):
|
||||
|
||||
|
||||
def runyolo():
|
||||
eventdirs = r"\\192.168.1.28\share\realtime\eventdata"
|
||||
savedir = r"\\192.168.1.28\share\realtime\result"
|
||||
eventdirs = r"\\192.168.1.28\share\个人文件\wqg\realtime\eventdata"
|
||||
savedir = r"\\192.168.1.28\share\个人文件\wqg\realtime\result"
|
||||
|
||||
k = 0
|
||||
for edir in os.listdir(eventdirs):
|
||||
@ -419,12 +434,40 @@ def run_tracking(trackboxes, MotionSlice):
|
||||
pass
|
||||
|
||||
|
||||
|
||||
def read_wsensor(filepath):
|
||||
WeightDict = OrderedDict()
|
||||
with open(filepath, 'r', encoding='utf-8') as f:
|
||||
lines = f.readlines()
|
||||
clean_lines = [line.strip().replace("'", '').replace('"', '') for line in lines]
|
||||
for i, line in enumerate(clean_lines):
|
||||
line = line.strip()
|
||||
|
||||
line = line.strip()
|
||||
|
||||
if line.find(':') < 0: continue
|
||||
# if line.find("Weight") >= 0:
|
||||
# label = "Weight"
|
||||
# continue
|
||||
|
||||
|
||||
keyword = line.split(':')[0]
|
||||
value = line.split(':')[1]
|
||||
|
||||
# if label == "Weight":
|
||||
if len(keyword) and len(value):
|
||||
vdata = [float(s) for s in value.split(',') if len(s)]
|
||||
WeightDict[keyword] = vdata[-1]
|
||||
|
||||
|
||||
weights = [(float(t), w) for t, w in WeightDict.items()]
|
||||
weights = np.array(weights).astype(np.int64)
|
||||
|
||||
return weights
|
||||
|
||||
|
||||
def show_seri():
|
||||
datapath = r"\\192.168.1.28\share\个人文件\wqg\realtime\eventdata\1731316835560"
|
||||
savedir = r"D:\DetectTracking\realtime\1"
|
||||
savedir = r"\\192.168.1.28\share\个人文件\wqg\realtime\1"
|
||||
|
||||
|
||||
imgdir = datapath.split('\\')[-2] + "_" + datapath.split('\\')[-1]
|
||||
@ -450,7 +493,7 @@ def show_seri():
|
||||
|
||||
'''===============读取重力信号数据==================='''
|
||||
seneorfile = os.path.join(datapath, 'sensor.txt')
|
||||
weights = read_weight_sensor(seneorfile)
|
||||
weights = read_wsensor(seneorfile)
|
||||
|
||||
# weights = [(float(t), w) for t, w in WeightDict.items()]
|
||||
# weights = np.array(weights)
|
||||
@ -471,10 +514,8 @@ def show_seri():
|
||||
|
||||
def main():
|
||||
# runyolo()
|
||||
|
||||
show_seri()
|
||||
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
|
||||
|
281
realtime/tracker_test.py
Normal file
281
realtime/tracker_test.py
Normal file
@ -0,0 +1,281 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
"""
|
||||
Created on Sun Mar 2 14:15:57 2025
|
||||
|
||||
@author: ym
|
||||
"""
|
||||
import numpy as np
|
||||
import cv2
|
||||
import os
|
||||
from pathlib import Path
|
||||
|
||||
import sys
|
||||
sys.path.append(r"D:\DetectTracking")
|
||||
|
||||
# from tracking.utils.read_data import extract_data_realtime, read_tracking_output_realtime
|
||||
from tracking.utils.plotting import Annotator, colors
|
||||
from tracking.utils import Boxes, IterableSimpleNamespace, yaml_load, boxes_add_fid
|
||||
from tracking.trackers import BOTSORT, BYTETracker
|
||||
from tracking.utils.showtrack import drawtracks
|
||||
from hands.hand_inference import hand_pose
|
||||
from tracking.utils.read_data import read_weight_sensor, extract_data_realtime, read_tracking_output_realtime
|
||||
from contrast.feat_extract.config import config as conf
|
||||
from contrast.feat_extract.inference import FeatsInterface
|
||||
from tracking.utils.drawtracks import drawTrack
|
||||
|
||||
|
||||
ReIDEncoder = FeatsInterface(conf)
|
||||
|
||||
|
||||
W, H = 1024, 1280
|
||||
Mode = 'front' #'back'
|
||||
ImgFormat = ['.jpg', '.jpeg', '.png', '.bmp']
|
||||
|
||||
|
||||
'''调用tracking()函数,利用本地跟踪算法获取各目标轨迹,可以比较本地跟踪算法与现场跟踪算法的区别。'''
|
||||
def init_tracker(tracker_yaml = None, bs=1):
|
||||
"""
|
||||
Initialize tracker for object tracking during prediction.
|
||||
"""
|
||||
TRACKER_MAP = {'bytetrack': BYTETracker, 'botsort': BOTSORT}
|
||||
cfg = IterableSimpleNamespace(**yaml_load(tracker_yaml))
|
||||
|
||||
tracker = TRACKER_MAP[cfg.tracker_type](args=cfg, frame_rate=30)
|
||||
|
||||
return tracker
|
||||
|
||||
|
||||
def init_trackers(tracker_yaml = None, bs=1):
|
||||
"""
|
||||
Initialize trackers for object tracking during prediction.
|
||||
"""
|
||||
# tracker_yaml = r"./tracking/trackers/cfg/botsort.yaml"
|
||||
|
||||
TRACKER_MAP = {'bytetrack': BYTETracker, 'botsort': BOTSORT}
|
||||
|
||||
cfg = IterableSimpleNamespace(**yaml_load(tracker_yaml))
|
||||
trackers = []
|
||||
for _ in range(bs):
|
||||
tracker = TRACKER_MAP[cfg.tracker_type](args=cfg, frame_rate=30)
|
||||
trackers.append(tracker)
|
||||
|
||||
return trackers
|
||||
|
||||
|
||||
def draw_box(img, tracks):
|
||||
annotator = Annotator(img.copy(), line_width=2)
|
||||
# for *xyxy, conf, cls in reversed(tracks):
|
||||
# name = f'{int(cls)} {conf:.2f}'
|
||||
# color = colors(int(cls), True)
|
||||
# annotator.box_label(xyxy, name, color=color)
|
||||
|
||||
for *xyxy, id, conf, cls, fid, bid in reversed(tracks):
|
||||
name = f'ID:{int(id)} {int(cls)} {conf:.2f}'
|
||||
color = colors(int(cls), True)
|
||||
annotator.box_label(xyxy, name, color=color)
|
||||
|
||||
|
||||
|
||||
im0 = annotator.result()
|
||||
|
||||
return im0
|
||||
|
||||
|
||||
|
||||
|
||||
def tracking(bboxes, ffeats):
|
||||
tracker_yaml = "./tracking/trackers/cfg/botsort.yaml"
|
||||
|
||||
tracker = init_tracker(tracker_yaml)
|
||||
|
||||
TrackBoxes = np.empty((0, 9), dtype = np.float32)
|
||||
TracksDict = {}
|
||||
|
||||
frmIds = []
|
||||
'''========================== 执行跟踪处理 ============================='''
|
||||
# dets 与 feats 应保持严格对应
|
||||
k=0
|
||||
for dets, feats in zip(bboxes, ffeats):
|
||||
|
||||
frmIds.append(np.unique(dets[:, 6]).astype(np.int64)[0])
|
||||
|
||||
boxes = dets[:, :6]
|
||||
det_tracking = Boxes(boxes).cpu().numpy()
|
||||
tracks, outfeats = tracker.update(det_tracking, features=feats)
|
||||
'''tracks: [x1, y1, x2, y2, track_id, score, cls, frame_index, box_index]
|
||||
0 1 2 3 4 5 6 7 8
|
||||
这里,frame_index 也可以用视频的 帧ID 代替, box_index 保持不变
|
||||
'''
|
||||
k += 1
|
||||
imgpath = r"D:\全实时\202502\tracker\Yolos_Tracking\tracker\1_1740891284792\1_1740891284792_{}.png".format(int(k))
|
||||
img = cv2.imread(imgpath)
|
||||
|
||||
im0 = draw_box(img, tracks)
|
||||
savepath = r"D:\全实时\202502\tracker\Yolos_Tracking\tracker\1_1740891284792\b\1_1740891284792_{}_b.png".format(k)
|
||||
cv2.imwrite(savepath, im0)
|
||||
|
||||
|
||||
if len(tracks):
|
||||
TrackBoxes = np.concatenate([TrackBoxes, tracks], axis=0)
|
||||
|
||||
# =============================================================================
|
||||
# FeatDict = {}
|
||||
# for track in tracks:
|
||||
# tid = int(track[8])
|
||||
# FeatDict.update({tid: feats[tid, :]})
|
||||
#
|
||||
# frameID = tracks[0, 7]
|
||||
#
|
||||
# # print(f"frameID: {int(frameID)}")
|
||||
# assert len(tracks) == len(FeatDict), f"Please check the func: tracker.update() at frameID({int(frameID)})"
|
||||
#
|
||||
# TracksDict[f"frame_{int(frameID)}"] = {"feats":FeatDict}
|
||||
# =============================================================================
|
||||
|
||||
|
||||
return TrackBoxes, TracksDict
|
||||
|
||||
def dotrack():
|
||||
|
||||
datapath = r"D:\全实时\202502\tracker\1_tracker_in.data"
|
||||
|
||||
bboxes, ffeats = extract_data_realtime(datapath)
|
||||
trackerboxes, tracker_feat_dict = tracking(bboxes, ffeats)
|
||||
|
||||
print("done!")
|
||||
|
||||
|
||||
# def plotbox():
|
||||
|
||||
# fpath = r"\\192.168.1.28\share\测试视频数据以及日志\全实时测试\V12\2025-3-3\20250303-103833-338_6928804010091_6928804010091\1_tracking_output.data"
|
||||
# imgpath = r"D:\全实时\202502\result\Yolos_Tracking\20250303-103833-338_6928804010091_6928804010091\1_1740969517953"
|
||||
# trackingboxes, trackingfeats, tracking_outboxes, tracking_outfeats = read_tracking_output_realtime(fpath)
|
||||
|
||||
# for *xyxy, id, conf, cls, fid, bid in tracking_outboxes[0]:
|
||||
# imgname = f"1_1740969517953_{int(fid)}.png"
|
||||
|
||||
# img_path = os.path.join(imgpath, imgname)
|
||||
# img = cv2.imread(img_path)
|
||||
# annotator = Annotator(img.copy(), line_width=2)
|
||||
|
||||
# name = f'ID:{int(id)} {int(cls)} {conf:.2f}'
|
||||
# color = colors(int(cls), True)
|
||||
# annotator.box_label(xyxy, name, color=color)
|
||||
# im0 = annotator.result()
|
||||
# cv2.imwrite(os.path.join(imgpath, f"1_1740969517953_{int(fid)}_.png"), im0)
|
||||
|
||||
# print(f"1_1740969676295_{int(fid)}_.png")
|
||||
|
||||
# print("done")
|
||||
|
||||
def video2imgs(videopath):
|
||||
cap = cv2.VideoCapture(str(videopath))
|
||||
k = 0
|
||||
while True:
|
||||
ret, frame = cap.read()
|
||||
if frame is None:
|
||||
break
|
||||
k += 1
|
||||
imgpath = videopath.parent / f"{videopath.stem}_{k}.png"
|
||||
cv2.imwrite(str(imgpath), frame)
|
||||
|
||||
|
||||
|
||||
def extract_evtimgs(evtpath):
|
||||
vidpaths = [v for v in evtpath.iterdir() if v.suffix == '.mp4']
|
||||
for vidpath in vidpaths:
|
||||
video2imgs(vidpath)
|
||||
|
||||
stamps = [name.stem.split('_')[1] for name in vidpaths]
|
||||
|
||||
if len(set(stamps)==1):
|
||||
return stamps[0]
|
||||
return None
|
||||
|
||||
def draw_tracking_boxes(evtpath, stamp):
|
||||
for datapath in evtpath.iterdir():
|
||||
if datapath.name.find('_tracking_output.data')<=0:
|
||||
continue
|
||||
|
||||
camera = datapath.stem.split('_')[0]
|
||||
trackingboxes, trackingfeats, tracking_outboxes, tracking_outfeats = read_tracking_output_realtime(str(datapath))
|
||||
|
||||
## 该模块先读取轨迹数据,再根据帧ID读取相应图像
|
||||
for *xyxy, id, conf, cls, fid, bid in tracking_outboxes[0]:
|
||||
imgpath = evtpath / f"{camera}_{stamp}_{int(fid)}.png"
|
||||
|
||||
img = cv2.imread(str(imgpath))
|
||||
annotator = Annotator(img.copy(), line_width=2)
|
||||
|
||||
name = f'ID:{int(id)} {int(cls)} {conf:.2f}'
|
||||
color = colors(int(cls), True)
|
||||
annotator.box_label(xyxy, name, color=color)
|
||||
im0 = annotator.result()
|
||||
cv2.imwrite(imgpath, im0)
|
||||
|
||||
print(datapath.name)
|
||||
|
||||
def draw_traj(evtpath):
|
||||
for datapath in evtpath.iterdir():
|
||||
if datapath.name.find('_tracking_output.data')<=0:
|
||||
continue
|
||||
|
||||
fname = datapath.name
|
||||
trackingboxes, trackingfeats, tracking_outboxes, tracking_outfeats = read_tracking_output_realtime(datapath)
|
||||
|
||||
CamerType = fname.split('_')[0]
|
||||
if CamerType == '1':
|
||||
edgeline = cv2.imread("./CartTemp/board_ftmp_line.png")
|
||||
if CamerType == '0':
|
||||
edgeline = cv2.imread("./CartTemp/edgeline.png")
|
||||
edgeline = drawTrack(tracking_outboxes, edgeline)
|
||||
|
||||
|
||||
imgpath = datapath.parent / f"{datapath.stem}.png"
|
||||
cv2.imwrite(str(imgpath), edgeline)
|
||||
|
||||
|
||||
def main():
|
||||
|
||||
path = r"\\192.168.1.28\share\测试视频数据以及日志\全实时测试\V12\2025-3-3\20250303-104225-381_6920459958674"
|
||||
evtpaths = [p for p in Path(path).iterdir() if p.is_dir()]
|
||||
for evtpath in evtpaths:
|
||||
#1. 从事件的前后摄视频提取图像
|
||||
stamp = extract_evtimgs(evtpath)
|
||||
|
||||
#2. 根据 0/1_tracking_output.data 中提取的轨迹在img中绘制box
|
||||
draw_tracking_boxes(evtpath, stamp)
|
||||
|
||||
#3. 根据 0/1_tracking_output.data 中提取的轨迹在edgeline中绘制box
|
||||
draw_traj(evtpath)
|
||||
|
||||
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
# dotrack()
|
||||
# plotbox()
|
||||
|
||||
vpath = r"D:\datasets\ym\VID_20250307_105606"
|
||||
extract_evtimgs(Path(vpath))
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
240
track_reid.py
240
track_reid.py
@ -38,6 +38,7 @@ import glob
|
||||
import numpy as np
|
||||
import pickle
|
||||
import torch
|
||||
from scipy.spatial.distance import cdist
|
||||
|
||||
FILE = Path(__file__).resolve()
|
||||
ROOT = FILE.parents[0] # YOLOv5 root directory
|
||||
@ -63,7 +64,10 @@ from hands.hand_inference import hand_pose
|
||||
from contrast.feat_extract.config import config as conf
|
||||
from contrast.feat_extract.inference import FeatsInterface
|
||||
|
||||
from ultralytics import YOLOv10
|
||||
|
||||
ReIDEncoder = FeatsInterface(conf)
|
||||
print(f'load model {conf.testbackbone} in {Path(__file__).stem}')
|
||||
|
||||
IMG_FORMATS = '.bmp', '.dng', '.jpeg', '.jpg', '.mpo', '.png', '.tif', '.tiff', '.webp', '.pfm' # include image suffixes
|
||||
VID_FORMATS = '.asf', '.avi', '.gif', '.m4v', '.mkv', '.mov', '.mp4', '.mpeg', '.mpg', '.ts', '.wmv' # include video suffixes
|
||||
@ -124,18 +128,166 @@ def init_trackers(tracker_yaml = None, bs=1):
|
||||
"""
|
||||
# tracker_yaml = r"./tracking/trackers/cfg/botsort.yaml"
|
||||
|
||||
tracker_yaml = str(tracker_yaml)
|
||||
|
||||
TRACKER_MAP = {'bytetrack': BYTETracker, 'botsort': BOTSORT}
|
||||
|
||||
cfg = IterableSimpleNamespace(**yaml_load(tracker_yaml))
|
||||
trackers = []
|
||||
for _ in range(bs):
|
||||
tracker = TRACKER_MAP[cfg.tracker_type](args=cfg, frame_rate=30)
|
||||
if cfg.with_reid:
|
||||
tracker.encoder = ReIDEncoder
|
||||
|
||||
trackers.append(tracker)
|
||||
|
||||
return trackers
|
||||
|
||||
'''=============== used in pipeline.py for Yolov10 =================='''
|
||||
def yolov10_resnet_tracker(
|
||||
weights = ROOT / 'ckpts/best_v10s_width0375_1205.pt', # model path or triton URL
|
||||
source = '', # file/dir/URL/glob/screen/0(webcam)
|
||||
save_dir = '',
|
||||
is_save_img = True,
|
||||
is_save_video = True,
|
||||
|
||||
tracker_yaml = ROOT / "tracking/trackers/cfg/botsort.yaml",
|
||||
line_thickness=3, # bounding box thickness (pixels)
|
||||
hide_labels=False, # hide labels
|
||||
):
|
||||
|
||||
## load a custom model
|
||||
model = YOLOv10(weights)
|
||||
|
||||
'''=============== used in pipeline.py =================='''
|
||||
custom = {"conf": 0.1, "batch": 1, "save": False, "mode": "predict"}
|
||||
kwargs = {"save": True, "imgsz": 640, "conf": 0.1}
|
||||
args = {**model.overrides, **custom, **kwargs}
|
||||
predictor = model.task_map[model.task]["predictor"](overrides=args, _callbacks=model.callbacks)
|
||||
|
||||
vid_path, vid_writer = None, None
|
||||
tracker = init_trackers(tracker_yaml)[0]
|
||||
yoloResnetTracker = []
|
||||
for i, result in enumerate(predictor.stream_inference(source)):
|
||||
datamode = predictor.dataset.mode
|
||||
|
||||
det = result.boxes.data.cpu().numpy()
|
||||
im0 = result.orig_img
|
||||
names = result.names
|
||||
path = result.path
|
||||
im_array = result.plot()
|
||||
|
||||
|
||||
## to do tracker.update()
|
||||
det_tracking = Boxes(det, im0.shape)
|
||||
tracks, outfeats = tracker.update(det_tracking, im0)
|
||||
|
||||
|
||||
|
||||
if datamode == "video":
|
||||
frameId = predictor.dataset.frame
|
||||
elif datamode == "image":
|
||||
frameId = predictor.dataset.count
|
||||
annotator = Annotator(im0.copy(), line_width=line_thickness, example=str(names))
|
||||
|
||||
simdict, simdict1 = {}, {}
|
||||
for fid, bid, mfeat, cfeat, features in outfeats:
|
||||
if mfeat is not None and cfeat is not None:
|
||||
simi = 1 - np.maximum(0.0, cdist(mfeat[None, :], cfeat[None, :], "cosine"))[0][0]
|
||||
simdict.update({f"{int(frameId)}_{int(bid)}":simi})
|
||||
|
||||
if cfeat is not None and len(features)>=2:
|
||||
mfeat = features[-2]
|
||||
simi = 1 - np.maximum(0.0, cdist(mfeat[None, :], cfeat[None, :], "cosine"))[0][0]
|
||||
simdict1.update({f"{int(frameId)}_{int(bid)}":simi})
|
||||
|
||||
|
||||
if len(tracks) > 0:
|
||||
tracks[:, 7] = frameId
|
||||
# trackerBoxes = np.concatenate([trackerBoxes, tracks], axis=0)
|
||||
'''================== 1. 存储 dets/subimgs/features Dict ============='''
|
||||
imgs, features = ReIDEncoder.inference(im0, tracks)
|
||||
imgdict, featdict = {}, {}
|
||||
for ii, bid in enumerate(tracks[:, 8]):
|
||||
featdict.update({f"{int(frameId)}_{int(bid)}": features[ii, :]}) # [f"feat_{int(bid)}"] = features[i, :]
|
||||
imgdict.update({f"{int(frameId)}_{int(bid)}": imgs[ii]})
|
||||
|
||||
frameDict = {"path": path,
|
||||
"fid": int(frameId),
|
||||
"bboxes": det,
|
||||
"tboxes": tracks,
|
||||
"imgs": imgdict,
|
||||
"feats": featdict,
|
||||
"featsimi": simdict, # 当前 box 特征和该轨迹 smooth_feat 特征的相似度
|
||||
"featsimi1": simdict1 # 当前 box 特征和该轨迹前一个 box 特征的相似度
|
||||
}
|
||||
yoloResnetTracker.append(frameDict)
|
||||
|
||||
# imgs, features = inference_image(im0, tracks)
|
||||
# TrackerFeats = np.concatenate([TrackerFeats, features], axis=0)
|
||||
|
||||
'''================== 2. 提取手势位置 ==================='''
|
||||
for *xyxy, id, conf, cls, fid, bid in reversed(tracks):
|
||||
name = ('' if id==-1 else f'id:{int(id)} ') + names[int(cls)]
|
||||
if f"{int(frameId)}_{int(bid)}" in simdict.keys():
|
||||
sim = simdict[f"{int(frameId)}_{int(bid)}"]
|
||||
label = f"{name} {sim:.2f}"
|
||||
else:
|
||||
label = None if hide_labels else name
|
||||
|
||||
|
||||
# label = None if hide_labels else (name if hide_conf else f'{name} {conf:.1f}')
|
||||
|
||||
if id >=0 and cls==0:
|
||||
color = colors(int(cls), True)
|
||||
elif id >=0 and cls!=0:
|
||||
color = colors(int(id), True)
|
||||
else:
|
||||
color = colors(19, True) # 19为调色板的最后一个元素
|
||||
annotator.box_label(xyxy, label, color=color)
|
||||
|
||||
'''====== Save results (image and video) ======'''
|
||||
# save_path = str(save_dir / Path(path).name) # 带有后缀名
|
||||
im0 = annotator.result()
|
||||
if is_save_img:
|
||||
save_path_img = str(save_dir / Path(path).stem)
|
||||
if datamode == 'image':
|
||||
imgpath = save_path_img + ".png"
|
||||
if datamode == 'video' :
|
||||
imgpath = save_path_img + f"_{frameId}.png"
|
||||
cv2.imwrite(Path(imgpath), im0)
|
||||
|
||||
# if dataset.mode == 'video' and is_save_video:
|
||||
|
||||
if is_save_video:
|
||||
if datamode == 'video':
|
||||
video_path = str(save_dir / Path(path).stem) + '.mp4' # 带有后缀名
|
||||
else:
|
||||
videoname = str(Path(path).stem).split('_')[0] + '.mp4'
|
||||
video_path = str(save_dir / videoname)
|
||||
|
||||
if vid_path != video_path: # new video
|
||||
vid_path = video_path
|
||||
vid_cap = predictor.dataset.cap
|
||||
|
||||
if isinstance(vid_writer, cv2.VideoWriter):
|
||||
vid_writer.release() # release previous video writer
|
||||
if vid_cap: # video
|
||||
fps = vid_cap.get(cv2.CAP_PROP_FPS)
|
||||
w = int(vid_cap.get(cv2.CAP_PROP_FRAME_WIDTH))
|
||||
h = int(vid_cap.get(cv2.CAP_PROP_FRAME_HEIGHT))
|
||||
else: # stream
|
||||
fps, w, h = 25, im0.shape[1], im0.shape[0]
|
||||
## for image rotating in dataloader.LoadImages.__next__()
|
||||
w, h = im0.shape[1], im0.shape[0]
|
||||
|
||||
video_path = str(Path(video_path).with_suffix('.mp4')) # force *.mp4 suffix on results videos
|
||||
vid_writer = cv2.VideoWriter(video_path, cv2.VideoWriter_fourcc(*'mp4v'), fps, (w, h))
|
||||
vid_writer.write(im0)
|
||||
|
||||
return yoloResnetTracker
|
||||
|
||||
|
||||
'''=============== used in pipeline.py for Yolov5 =================='''
|
||||
@smart_inference_mode()
|
||||
def yolo_resnet_tracker(
|
||||
weights=ROOT / 'yolov5s.pt', # model path or triton URL
|
||||
@ -144,7 +296,7 @@ def yolo_resnet_tracker(
|
||||
is_save_img = True,
|
||||
is_save_video = True,
|
||||
|
||||
tracker_yaml = "./tracking/trackers/cfg/botsort.yaml",
|
||||
tracker_yaml = ROOT / "tracking/trackers/cfg/botsort.yaml",
|
||||
imgsz=(640, 640), # inference size (height, width)
|
||||
conf_thres=0.25, # confidence threshold
|
||||
iou_thres=0.45, # NMS IOU threshold
|
||||
@ -209,21 +361,34 @@ def yolo_resnet_tracker(
|
||||
# Process predictions
|
||||
for i, det in enumerate(pred): # per image
|
||||
im0 = im0s.copy()
|
||||
|
||||
annotator = Annotator(im0.copy(), line_width=line_thickness, example=str(names))
|
||||
s += '%gx%g ' % im.shape[2:] # print string
|
||||
if len(det):
|
||||
# Rescale boxes from img_size to im0 size
|
||||
det[:, :4] = scale_boxes(im.shape[2:], det[:, :4], im0.shape).round()
|
||||
|
||||
# det = det.cpu().numpy()
|
||||
det = det.cpu().numpy()
|
||||
## ================================================================ writed by WQG
|
||||
'''tracks: [x1, y1, x2, y2, track_id, score, cls, frame_index, box_index]
|
||||
0 1 2 3 4 5 6 7 8
|
||||
这里,frame_index 也可以用视频的 帧ID 代替, box_index 保持不变
|
||||
'''
|
||||
det_tracking = Boxes(det, im0.shape).cpu().numpy()
|
||||
tracks = tracker.update(det_tracking, im0)
|
||||
tracks, outfeats = tracker.update(det_tracking, im0)
|
||||
|
||||
simdict, simdict1 = {}, {}
|
||||
for fid, bid, mfeat, cfeat, features in outfeats:
|
||||
if mfeat is not None and cfeat is not None:
|
||||
simi = 1 - np.maximum(0.0, cdist(mfeat[None, :], cfeat[None, :], "cosine"))[0][0]
|
||||
simdict.update({f"{int(frameId)}_{int(bid)}":simi})
|
||||
|
||||
if cfeat is not None and len(features)>=2:
|
||||
mfeat = features[-2]
|
||||
simi = 1 - np.maximum(0.0, cdist(mfeat[None, :], cfeat[None, :], "cosine"))[0][0]
|
||||
simdict1.update({f"{int(frameId)}_{int(bid)}":simi})
|
||||
|
||||
|
||||
if len(tracks) > 0:
|
||||
tracks[:, 7] = frameId
|
||||
# trackerBoxes = np.concatenate([trackerBoxes, tracks], axis=0)
|
||||
@ -239,7 +404,10 @@ def yolo_resnet_tracker(
|
||||
"bboxes": det,
|
||||
"tboxes": tracks,
|
||||
"imgs": imgdict,
|
||||
"feats": featdict}
|
||||
"feats": featdict,
|
||||
"featsimi": simdict, # 当前 box 特征和该轨迹 smooth_feat 特征的相似度
|
||||
"featsimi1": simdict1 # 当前 box 特征和该轨迹前一个 box 特征的相似度
|
||||
}
|
||||
yoloResnetTracker.append(frameDict)
|
||||
|
||||
# imgs, features = inference_image(im0, tracks)
|
||||
@ -247,8 +415,15 @@ def yolo_resnet_tracker(
|
||||
|
||||
'''================== 2. 提取手势位置 ==================='''
|
||||
for *xyxy, id, conf, cls, fid, bid in reversed(tracks):
|
||||
name = ('' if id==-1 else f'id:{int(id)} ') + names[int(cls)]
|
||||
label = None if hide_labels else (name if hide_conf else f'{name} {conf:.2f}')
|
||||
name = ('' if id==-1 else f'id:{int(id)} ') + names[int(cls)]
|
||||
if f"{int(frameId)}_{int(bid)}" in simdict.keys():
|
||||
sim = simdict[f"{int(frameId)}_{int(bid)}"]
|
||||
label = f"{name} {sim:.2f}"
|
||||
else:
|
||||
label = None if hide_labels else name
|
||||
|
||||
|
||||
# label = None if hide_labels else (name if hide_conf else f'{name} {conf:.1f}')
|
||||
|
||||
if id >=0 and cls==0:
|
||||
color = colors(int(cls), True)
|
||||
@ -266,7 +441,7 @@ def yolo_resnet_tracker(
|
||||
if dataset.mode == 'image':
|
||||
imgpath = save_path_img + ".png"
|
||||
else:
|
||||
imgpath = save_path_img + f"_{frameId}.png"
|
||||
imgpath = save_path_img + f"_{frameId}.png"
|
||||
cv2.imwrite(Path(imgpath), im0)
|
||||
|
||||
# if dataset.mode == 'video' and is_save_video:
|
||||
@ -288,6 +463,10 @@ def yolo_resnet_tracker(
|
||||
h = int(vid_cap.get(cv2.CAP_PROP_FRAME_HEIGHT))
|
||||
else: # stream
|
||||
fps, w, h = 25, im0.shape[1], im0.shape[0]
|
||||
## for image rotating in dataloader.LoadImages.__next__()
|
||||
|
||||
w, h = im0.shape[1], im0.shape[0]
|
||||
|
||||
vdieo_path = str(Path(vdieo_path).with_suffix('.mp4')) # force *.mp4 suffix on results videos
|
||||
vid_writer[i] = cv2.VideoWriter(vdieo_path, cv2.VideoWriter_fourcc(*'mp4v'), fps, (w, h))
|
||||
vid_writer[i].write(im0)
|
||||
@ -309,7 +488,7 @@ def run(
|
||||
project=ROOT / 'runs/detect', # save results to project/name
|
||||
name='exp', # save results to project/name
|
||||
|
||||
tracker_yaml = "./tracking/trackers/cfg/botsort.yaml",
|
||||
tracker_yaml = ROOT / "tracking/trackers/cfg/botsort.yaml",
|
||||
imgsz=(640, 640), # inference size (height, width)
|
||||
conf_thres=0.25, # confidence threshold
|
||||
iou_thres=0.45, # NMS IOU threshold
|
||||
@ -489,7 +668,7 @@ def run(
|
||||
'''
|
||||
|
||||
det_tracking = Boxes(det, im0.shape).cpu().numpy()
|
||||
tracks = tracker.update(det_tracking, im0)
|
||||
tracks, outfeats = tracker.update(det_tracking, im0)
|
||||
if len(tracks) == 0:
|
||||
continue
|
||||
|
||||
@ -571,6 +750,9 @@ def run(
|
||||
h = int(vid_cap.get(cv2.CAP_PROP_FRAME_HEIGHT))
|
||||
else: # stream
|
||||
fps, w, h = 30, im0.shape[1], im0.shape[0]
|
||||
|
||||
## for image rotating in dataloader.LoadImages.__next__()
|
||||
w, h = im0.shape[1], im0.shape[0]
|
||||
save_path = str(Path(save_path).with_suffix('.mp4')) # force *.mp4 suffix on results videos
|
||||
vid_writer[i] = cv2.VideoWriter(save_path, cv2.VideoWriter_fourcc(*'mp4v'), fps, (w, h))
|
||||
vid_writer[i].write(im0)
|
||||
@ -631,8 +813,6 @@ def run(
|
||||
|
||||
def parse_opt():
|
||||
modelpath = ROOT / 'ckpts/best_cls10_0906.pt' # 'ckpts/best_15000_0908.pt', 'ckpts/yolov5s.pt', 'ckpts/best_20000_cls30.pt, best_yolov5m_250000'
|
||||
|
||||
|
||||
'''datapath为视频文件目录或视频文件'''
|
||||
datapath = r"D:/datasets/ym/videos/标记视频/" # ROOT/'data/videos', ROOT/'data/images' images
|
||||
# datapath = r"D:\datasets\ym\highvalue\videos"
|
||||
@ -685,7 +865,7 @@ def find_video_imgs(root_dir):
|
||||
|
||||
|
||||
|
||||
def main():
|
||||
def main_v5():
|
||||
'''
|
||||
run(): 单张图像或单个视频文件的推理,不支持图像序列,
|
||||
'''
|
||||
@ -704,10 +884,10 @@ def main():
|
||||
# p = r"D:\exhibition\images\153112511_0_seek_105.mp4"
|
||||
# p = r"D:\exhibition\images\image"
|
||||
|
||||
p = r"\\192.168.1.28\share\数据\原始数据\小物品数据\视频\82654976401_20241213-143457_front_addGood_5478c9a53bbe_40_17700000001.mp4"
|
||||
optdict["project"] = r"D:\小物品入侵检测\result"
|
||||
|
||||
# optdict["project"] = r"D:\exhibition\result"
|
||||
p = r"D:\datasets\ym\后台数据\unzip\20250310-175352-741"
|
||||
optdict["project"] = r"D:\work\result"
|
||||
|
||||
optdict["weights"] = ROOT / 'ckpts/best_cls10_0906.pt'
|
||||
if os.path.isdir(p):
|
||||
files = find_video_imgs(p)
|
||||
k = 0
|
||||
@ -716,17 +896,39 @@ def main():
|
||||
run(**optdict)
|
||||
|
||||
k += 1
|
||||
if k == 1:
|
||||
if k == 2:
|
||||
break
|
||||
elif os.path.isfile(p):
|
||||
optdict["source"] = p
|
||||
run(**optdict)
|
||||
|
||||
|
||||
def main_v10():
|
||||
datapath = r'D:\datasets\ym\后台数据\unzip\20250310-175352-741\0.mp4'
|
||||
savepath = r'D:\work\result'
|
||||
savepath = savepath / Path(str(Path(datapath).stem))
|
||||
if not savepath.exists():
|
||||
savepath.mkdir(parents=True, exist_ok=True)
|
||||
|
||||
weightpath = ROOT / 'ckpts/best_v10s_width0375_1205.pt'
|
||||
|
||||
optdict = {}
|
||||
optdict["weights"] = weightpath
|
||||
optdict["source"] = datapath
|
||||
optdict["save_dir"] = savepath
|
||||
optdict["is_save_img"] = True
|
||||
optdict["is_save_video"] = True
|
||||
|
||||
yrtOut = yolov10_resnet_tracker(**optdict)
|
||||
|
||||
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
# main_v5()
|
||||
|
||||
|
||||
main_v10()
|
||||
|
||||
|
||||
|
||||
|
BIN
tracking/__pycache__/__init__.cpython-312.pyc
Normal file
BIN
tracking/__pycache__/__init__.cpython-312.pyc
Normal file
Binary file not shown.
BIN
tracking/dotrack/__pycache__/__init__.cpython-312.pyc
Normal file
BIN
tracking/dotrack/__pycache__/__init__.cpython-312.pyc
Normal file
Binary file not shown.
BIN
tracking/dotrack/__pycache__/dotracks.cpython-312.pyc
Normal file
BIN
tracking/dotrack/__pycache__/dotracks.cpython-312.pyc
Normal file
Binary file not shown.
Binary file not shown.
BIN
tracking/dotrack/__pycache__/dotracks_back.cpython-312.pyc
Normal file
BIN
tracking/dotrack/__pycache__/dotracks_back.cpython-312.pyc
Normal file
Binary file not shown.
Binary file not shown.
BIN
tracking/dotrack/__pycache__/dotracks_front.cpython-312.pyc
Normal file
BIN
tracking/dotrack/__pycache__/dotracks_front.cpython-312.pyc
Normal file
Binary file not shown.
Binary file not shown.
BIN
tracking/dotrack/__pycache__/track_back.cpython-312.pyc
Normal file
BIN
tracking/dotrack/__pycache__/track_back.cpython-312.pyc
Normal file
Binary file not shown.
Binary file not shown.
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user