def predictwithViewPoint(state, viewPoint):
    moved = copy.deepcopy(state)
    for m in viewPoint[0]["mean"]:
        moved[m] = viewPoint[0]["mean"][m]
    moved = encoder.retransformforViewPoint(moved, viewPoint[0]["base"],
                                            viewPoint[0]["ref"])
    output = {}
    for s in state:
        if s in viewPoint[0]["mean"]:
            output[s] = moved[s]
        else:
            output[s] = state[s]
    return output
예제 #2
0
def predictwithViewPoint(state, viewPoint):
    moved = copy.deepcopy(state)
    base = viewPoint["base"]
    ref = viewPoint["ref"]
    mean = viewPoint["mean"]
    for m in mean:
        moved[m] = viewPoint["mean"][m]
    moved = encoder.retransformforViewPoint(moved, base, ref)
    output = {}
    for s in state:
        if s in mean:
            output[s] = moved[s]
        else:
            output[s] = state[s]
    return output
예제 #3
0
def getStateswithViewPoint(filepathList, baseList, refList, detail=False):
    output = {}
    for fpath in filepathList:
        if fpath[-4:] != ".csv":
            if detail == True:
                text = "[ViewPointManager]getSateswithViewPoint:"
                print(text + fpath + " is not csv file")
            continue
        # パスをキーにして管理すると面倒なのでファイル名に変更
        filename = os.path.basename(fpath)
        # print("file:"+filename)
        output[filename] = []
        with open(fpath, "r", encoding="utf-8") as f:
            while True:
                line = f.readline()
                if line == "":
                    break
                bstate = encoder.encodeState(line)
                astate = encoder.transformforViewPoint(bstate, baseList,
                                                       refList)
                # data   = encoder.serialize(astate)
                data = astate
                output[filename].append(data)
    return output
예제 #4
0
def getDistribution(stateDict, baseList, refList, movedObject):
    # データの数を取得しておく
    size = len(stateDict["before"])
    # 前後のデータ数が違えばそこでエラー終了
    if size != len(stateDict["after"]):
        print("[ViewPointManager]getDistribution:different size")
        return []
    # ゼロ個だったら何かおかしいのでエラー終了
    if size == 0:
        print("[ViewPointManager]getDistribution:size is zero")
        return []
    move = []
    transafter = []
    for i in range(size):
        transafter.append( \
            encoder.transformforViewPoint( \
                stateDict["after"][i], baseList, refList \
            ) \
        )
    # 選択した物体の最終位置のブレをスコアとして返す
    # 観点変換はここで使う
    diffDict = {}
    for o in movedObject:
        diffDict[o] = []
    for i in range(size):
        for s in movedObject:
            diffDict[s].append(np.array(transafter[i][s]))
    meanDict = {}
    for s in movedObject:
        meanDict[s] = sum(diffDict[s]) / size

    diff = 0
    for i in range(size):
        for s in movedObject:
            diff += np.linalg.norm(np.array(transafter[i][s]) - meanDict[s])
    return [meanDict, diff]
# coding = utf-8

# log データを可視化してチェックするだけ

import glob
import os
import HDP_HMM.MakerMain as makerMain
import DPM.ViewPointEncoder as encoder
import DPM.ViewPointManager as manager

fpaths = glob.glob("tmp/log_MakerMain/*")

for fpath in fpaths:
    if os.path.basename(fpath)[:3] != "log" \
            or fpath[-4:] != ".csv":
        continue
    if int(os.path.basename(fpath)[-6:-4]) > 2:
        continue
    with open(fpath, "r", encoding="utf-8") as f:
        count = 0
        while True:
            line = f.readline()
            if line == "":
                break
            if count%100 == 0:
                manager.show(encoder.encodeState(line), title=fpath)
            count += 1
예제 #6
0
# coding = utf-8

import DPM.ViewPointEncoder as encoder
import DPM.ViewPointManager as manager

interList = []
path="tmp/log_MakerMain/GettingIntermediated/3-2500-2500-9/inter000000000.csv"
with open(path) as f:
    while True:
        line = f.readline()
        if line == "":
            break
        interList.append(int(line.split(",")[0]))
print("inters:"+str(interList))

with open("tmp/log_MakerMain/log000000000.csv", "r", encoding="utf-8") as f:
    counter = 0
    while True:
        counter+=1
        line = f.readline()
        if line == "":
            break
        elif counter%6 != 0 and counter not in interList:
            continue
        state = encoder.encodeState(line)
        name = "log000000000_"+str(counter)+".png"
        inter = counter in interList
        manager.savefig(state, name=name, log=True, inter=inter)