자신의 노트 작성 및 브라우저 설정

(2019.09.18 업데이트)
@timtoronto634씨 덕분에 Detectron과 Video opose 3D의 구축이 성공했습니다.고마워, 고마워.
이 원문을 인용해야 합니다
https://qiita.com/timtoronto634/items/ee018ac89e6b9f779194
여기에 기재된 콘다로 제작된 환경은 어느 포장의 어느 버전을 넣느냐가 관건이다.@timtoronto634선생님도 많이 힘드신 것 같아요.
내 경우는 위쪽 방법으로 환경을 조정해 그전보다 성공한 비디오 ose 3D 공식 빌딩에서 매번 필요한 것을 가져왔다.
파이톤이라 매번 오류가 발생할 때마다 하면 되지만, 파이톤이 만든 대상을 가져올 때는 꽉 찼다.Cython이니까.파이썬 코드가 아닙니다.
따라서 공식적인 방법으로 다시 한 번make(cython의 부분은 그걸로 제작)하고 그 폴더 그룹을 토비스cz씨의 코드로 구축된 폴더인 비디오 포스트 3D 폴더 아래로 복사합니다.
detectrpm_tools/detectron 폴더는 tobiascz 씨의 실제 실체이기 때문에 이곳에서 많이 복사됩니다. 그러나 정식을 한 번 만들면 어디에 두어야 하는지 바로 알 수 있습니다.
따라서 한 번에 공식적인 방법으로 구축하는 것을 강력히 추천합니다
여기 한 가지 주의해 주세요.
위의 방법대로 순서대로 하면 문제없지만 나중에 처리하면 카페2 주변에 오류가 발생할 수 있습니다.
이 경우 @timtoronto634 제작된 콘다 환경이 존재하는지 재확인이 필요하다.각양각색의 총서 버전을 사용해야 하기 때문에 갑자기 버전 차이가 날 때도 있다.이하 확인, 버전이 다르면
conda list
conda install あるいは uninstall [package名]
나중에 옮기면 왜 실수가 카페2 주변에 많을까 아까처럼 옮기면
ImportError: No module named past.builtins
이런 말이 나왔다.이거는 밑에서 간단하게 해결할게요.
$ pip install future
https://github.com/facebookarchive/caffe2/issues/712
왜냐면왜 이렇게 해결할까, 여기 쓴 마지막 사람과 나 모두??하지만 낡은 카페2니까 신경 쓰지 마세요.
Detectron에서 자신의 영상을 처리해야 합니다. 여기 있습니다.
AttributeError: 'NoneType' object has no attribute 'astype'
나는 매우 괴롭다.
https://github.com/alexgkendall/SegNet-Tutorial/issues/87
그리고 여기 링크를 보면 OpenCV에 자주 있는 것 같아요. 입력한 이미지와 동영상 파일이 있는 폴더의 경로에 대한 기술이 원활하지 않아요.
내 경우 ~/Video Pose 3D/detectrontools 아래에skateframes라는 폴더(영화부터 쓰는 png)와 demo/output 폴더가 있습니다.VideoPose3D/detectron_tools에서 위의 명령으로 detectron을 시작하는 경우, 일반적으로 이 폴더 지정은 "./"이 필요하지 않습니다.
python infer_simple.py --cfg e2e_keypoint_rcnn_R-101-FPN_s1x.yaml --output-dir ./demo/output --image-ext png --wts model_final.pkl ./skateframes
순조롭게 진행되면 데모/output에서 슬라이더에 덮인 pdf 파일 (프레임 수량만) 과 데이터2d_detections.npz 파일 생성
3D 추정 부분(Video ose 3D 바디)
~/Video Pose 3D/에서
out_cutted.mp4는detectron의 입력으로 (ffmpeg 장미로 끝난) 애니메이션 파일 이름,outputvideo.mp4는 이 애니메이션 옆에 추정된 해골 애니메이션의 출력 애니메이션 파일 이름입니다
python run_wild.py -k detections -arc 3,3,3,3,3 -c checkpoint --evaluate d-pt-243.bin --render --viz-subject S1 --viz-action Directions --viz-video out_cutted.mp4 --viz-camera 0 --viz-output output_video.mp4 --viz-size 5 --viz-downsample 1 --viz-skip 0
그리고 제 경우는detectron의python2입니다.7conda 환경과 비디오 포즈 3D의 ptyhon3.6conda 환경에서 여러 번 왕복하면 카페2에 수수께끼 같은 오류가 발생할 수 있으니 주의해야 한다.리본으로 고칠 수 있지만
비교해 보면 역주행을 하고 두 개의 터미널을 열고 두 개의 conda, detectron과 비디오pose 3D의 conda 환경을 운전하고 있어 나의 상황은 비교적 안정적이다.
좌표 데이터의 출력을 추측하다
https://github.com/facebookresearch/VideoPose3D/issues/40
삼차원aray에 저장된binary가 아니면 flattten () 을 낼 수 없고 텍스트 파일에 제출하는 방법도 있지만 구조를 존중하기로 결정했습니다
내 생각엔
np.Aray의 2진법 읽기와 쓰기 해설은 여기에 있다.간단하다
https://note.nkmk.me/python-numpy-load-save-savez-npy-npz/
본체runwild.304 줄py에서 아래 줄만 입력하였습니다
    # save predicted marker positions (np.array) to np binary file
    np.save('predictions',prediction)

(내부 연락~세미나 여러분, 위에 패치 myrun wild.py 사용)
예상 해골 뷰어
Jupter notebook에서 띄어쓰기,
총괄해도 움직일 것 같아서요.
직접 작성한 데이터 형식이 아니기 때문에 확인하면서 이동하는 것이 좋습니다.
    import numpy as np
    import pandas as pd
    import matplotlib
    matplotlib.use('TkAgg') # Need to use in order to run on mac",
    from matplotlib import pyplot as plt
    from mpl_toolkits.mplot3d import Axes3D
    from matplotlib.colors import cnames
    from matplotlib import animation
    %matplotlib notebook

    arrayMarker3Dcoordinates = np.load('../data/predictions.npy')
일단 2차원. 열,marker1x,marker1y,marker1z,marker2x,marker2y가 되면...형상표기는 17가지가 있어요.
기호 데이터의 배열은 상당히 혼란스러운데 왜 이렇게 배열합니까?
나는 그림을 그리면서 확정한 것이니, 만약 잘못이 있으면 반드시 나에게 알려주시오
또한 삼차원 장량의 데이터를 2D표의 형식으로 바꾸면 프로그램상 무용하지만 다른 전통 생물 역학의 데이터 분석과 호환성을 가지기 위해 Xz,yz,xy의 각 평면 투영에서 세밀한 분석을 한다
arrayMarker3Dcoordinates.shape
df = pd.DataFrame(arrayMarker3Dcoordinates.reshape(584,17*3),
                  columns=['pelvisX','pelvisY','pelvisZ', 'R-troX','R-troY','R-troZ', 'R-kneeX','R-kneeY','R-kneeZ', 'R-ankleX','R-ankleY','R-ankleZ',  'L-troX','L-troY','L-troZ', 'L-kneeX','L-kneeY','L-kneeZ','L-ankleX','L-ankleY','L-ankleZ','centerX', 'centerY','centerZ', 'neckX','neckY','neckZ','noseX','noseY','noseZ', 'headX','headY','headZ',  'L-shoX','L-shoY','L-shoZ', 'L-elbX','L-elbY','L-elbZ', 'L-wristX','L-wristY','L-wristZ','R-shoX','R-shoY','R-shoZ','R-elbX','R-elbY','R-elbZ', 'R-wristX', 'R-wristY','R-wristZ'])
3D 애니메이션을 위한 numby arayxt는 [태그 수 [x, y,z]의 3차원 장량이기 때문에 좌표 데이터를 다시 불러오는 중입니다.
Stickpicture animation 표현
https://stackoverflow.com/questions/21367541/3d-animation-with-matplotlib-connect-points-to-create-moving-stick-figure를 패드로 설치
 import numpy as np
    import pandas as pd
    import matplotlib
    #matplotlib.use('TkAgg') # Need to use in order to run on mac
    from matplotlib import pyplot as plt
    from mpl_toolkits.mplot3d import Axes3D
    from matplotlib.colors import cnames
    from matplotlib import animation
    %matplotlib notebook

    t_start = 0 # start frame
    t_end = df.shape[0] 

    N_tag = df.shape[1]# nr of tags used (all)
    #print(N_tag)
    N_trajectories = N_tag

    t = np.linspace(0,t_end/30,df.shape[0]) # pseudo time-vector for first walking activity
    x_t = np.zeros(shape=(int(N_tag),df.shape[0],3)) # empty animation array (3D)

    for tag in range(17):
        # store data in numpy 3D array: (tag,time-stamp,xyz-coordinates)
        x_t[tag,:,:] = df.iloc[:,tag*3 :tag*3+3]

    #===STICK-LINES========================================================================================
    #xx = [x_t[1,:,0],x_t[2,:,0]]
    #yy = [x_t[1,:,1],x_t[2,:,1]]
    #zz = [x_t[1,:,2],x_t[2,:,2]] 
    #======================================================================================================


    # Set up figure & 3D axis for animation
    fig = plt.figure()
    ax = fig.add_axes([0, 0, 1, 1], projection='3d')
    ax.axis('on')

    # choose a different color for each trajectory
    colors = plt.cm.jet(np.linspace(0, 1, int(N_trajectories)))
    #colors
    # set up trajectory lines
    lines = sum([ax.plot([], [], [], '-', c=c) for c in colors], [])
    # set up points
    pts = sum([ax.plot([], [], [], 'o', c=c) for c in colors], [])
    # set up lines which create the stick figures

    stick_defines = [
        (0,1),
        (0,4),
        (4,5),
        (5,6),
        (0,7),
        (1,2),
        (2,3),
        (7,8),
        (8,9),
        (9,10),
        (8,14),
        (8,11),
        (11,12),
        (12,13),
        (14,15),
        (15,16)
    ]

    stick_lines = [ax.plot([], [], [], 'k-')[0] for _ in stick_defines] #上で定義されたstick_definesにある点の間に線をひく

    # Automatically set axes limits
    # prepare the axes limits 
    #ax.set_xlim(df_minmax.loc['x'].values)
    #ax.set_ylim(df_minmax.loc['y'].values) 
    #ax.set_zlim(df_minmax.loc['z'].values) 

    # Setting the axes properties
    # https://matplotlib.org/2.1.2/gallery/animation/simple_3danim.html
    mid_x =0
    x_range = 1
    ax.set_xlim3d(mid_x - x_range, mid_x + x_range)
    ax.set_xlabel('X')

    mid_y =0
    y_range = 1
    ax.set_ylim3d(mid_y - x_range, mid_y + x_range)
    ax.set_ylabel('Y')

    mid_z = 0.5
    z_range = 1
    ax.set_zlim3d(mid_z - z_range, 1.5)
    ax.set_zlabel('Z')

    ax.set_title('markers in 3D')

    # set point-of-view: specified by (altitude degrees, azimuth degrees)
    ax.view_init(20,45)

    # initialization function: plot the background of each frame
    def init():
        for line, pt in zip(lines, pts): # lines, ptsのリストから,同時にi番目のデータを取得する.linesからline, pts からpt
            # trajectory lines
            line.set_data([], [])
            line.set_3d_properties([])
            # points
            pt.set_data([], [])
            pt.set_3d_properties([])
        return lines + pts + stick_lines

    # animation function.  This will be called sequentially with the frame number
    def animate(i):
        # 1 * i means show every frame, 2*i means one frame show one frame no-show
        i = (1 * i) % x_t.shape[1] 

        for line, pt, xi in zip(lines, pts, x_t):
            x, y, z = xi[:i].T # note ordering of points to line up with true exogenous registration (x,z,y)
            print(x)
            pt.set_data(x[-1:], y[-1:])
            pt.set_3d_properties(z[-1:])

        for stick_line, (sp, ep) in zip(stick_lines, stick_defines):
            stick_line._verts3d = x_t[[sp,ep], i, :].T.tolist()

        #ax.view_init(30, 0.3 * i)
        ax.view_init(20,60+i*2)
        fig.canvas.draw()
        return lines + pts + stick_lines

    # instantiate the animator.
    anim = animation.FuncAnimation(fig, animate, init_func=init, frames=t_end, interval=1, repeat = False, blit=True)

    # GIF animationで保存の場合.画面描画と両立する.
    #anim.save('3Dplotanimation.gif', writer='pillow', fps=10)

    plt.show()
자신의 필기라 부족한 점이 많다고 생각한다.
질문해 주세요.
아래 GIF 애니메이션이 자동으로 재생되지 않으면 흰색 부분을 클릭하여 다른 창에서 ↓

좋은 웹페이지 즐겨찾기