日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

GCN代码超详解析Two-stream adaptive graph convolutional network for Skeleton-Based Action Recognition(一)

發(fā)布時間:2025/4/16 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 GCN代码超详解析Two-stream adaptive graph convolutional network for Skeleton-Based Action Recognition(一) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

代碼地址:https://github.com/lshiwjx/2s-AGCN

這個圖用于說明人體關(guān)鍵節(jié)點的定義及其連接方式

這個文件是根據(jù)NTURGB-D中關(guān)鍵點的定義計算骨骼長度

所以最終得到的數(shù)據(jù)結(jié)構(gòu)
N=sample數(shù)量,C=(channel,3固定),T=幀,V=(關(guān)節(jié)數(shù),固定25),M=(最大人數(shù),固定2)

上述文件合并了關(guān)節(jié)和骨骼信息
下面對2s-AGCN/data_gen/preprocess.py文件注釋說明,注釋寫的有點長,一幕放不下,所以我把代碼拆分了,這樣滾輪可以在一幕里方便查看,但是代碼行號就與原代碼對應(yīng)不上了,見諒

import syssys.path.extend(['../']) from data_gen.rotation import * from tqdm import tqdmdef pre_normalization(data, zaxis=[0, 1], xaxis=[8, 4]):N, C, T, V, M = data.shapes = np.transpose(data, [0, 4, 2, 3, 1]) # N, C, T, V, M to N, M, T, V, Cprint('pad the null frames with the previous frames')for i_s, skeleton in enumerate(tqdm(s)): # 選中一個sample if skeleton.sum() == 0:print(i_s, ' has no skeleton')for i_p, person in enumerate(skeleton):#在sample中選中一個personif person.sum() == 0:#對當前矩陣所有內(nèi)容求和continueif person[0].sum() == 0:#如果這個person的第0幀對應(yīng)的所有內(nèi)容=0index = (person.sum(-1).sum(-1) != 0)#如果最后一幀的最后一個關(guān)節(jié)存在,index=1,否則為0tmp = person[index].copy()#復(fù)制這一幀的內(nèi)容person *= 0#清空person[:len(tmp)] = tmp#全部賦值為相同的內(nèi)容for i_f, frame in enumerate(person):#選中一幀if frame.sum() == 0:if person[i_f:].sum() == 0:#如果當前這個人對應(yīng)的這個幀之后的內(nèi)容都為0rest = len(person) - i_fnum = int(np.ceil(rest / i_f))#使用有意義的數(shù)據(jù)循環(huán)填充pad = np.concatenate([person[0:i_f] for _ in range(num)], 0)[:rest]s[i_s, i_p, i_f:] = padbreak print('sub the center joint #1 (spine joint in ntu and neck joint in kinetics)')for i_s, skeleton in enumerate(tqdm(s)):if skeleton.sum() == 0:continuemain_body_center = skeleton[0][:, 1:2, :].copy()#選取一個sample下的一個person,它的第1個節(jié)點定義為main_body_centerfor i_p, person in enumerate(skeleton):if person.sum() == 0:continuemask = (person.sum(-1) != 0).reshape(T, V, 1)s[i_s, i_p] = (s[i_s, i_p] - main_body_center) * mask#減去main_body_center的內(nèi)容print('parallel the bone between hip(jpt 0) and spine(jpt 1) of the first person to the z axis')#將第一個人的髖部(jpt 0)與脊柱(jpt 1)之間的骨與z軸平行for i_s, skeleton in enumerate(tqdm(s)):if skeleton.sum() == 0:continuejoint_bottom = skeleton[0, 0, zaxis[0]]joint_top = skeleton[0, 0, zaxis[1]]axis = np.cross(joint_top - joint_bottom, [0, 0, 1]) angle = angle_between(joint_top - joint_bottom, [0, 0, 1])matrix_z = rotation_matrix(axis, angle)for i_p, person in enumerate(skeleton):if person.sum() == 0:continuefor i_f, frame in enumerate(person):if frame.sum() == 0:continuefor i_j, joint in enumerate(frame):s[i_s, i_p, i_f, i_j] = np.dot(matrix_z, joint)print('parallel the bone between right shoulder(jpt 8) and left shoulder(jpt 4) of the first person to the x axis')#將第一個人的右肩(jpt 8)和左肩(jpt 4)之間的骨與x軸平行for i_s, skeleton in enumerate(tqdm(s)):if skeleton.sum() == 0:continuejoint_rshoulder = skeleton[0, 0, xaxis[0]]joint_lshoulder = skeleton[0, 0, xaxis[1]]axis = np.cross(joint_rshoulder - joint_lshoulder, [1, 0, 0])angle = angle_between(joint_rshoulder - joint_lshoulder, [1, 0, 0])matrix_x = rotation_matrix(axis, angle) for i_p, person in enumerate(skeleton):if person.sum() == 0:continuefor i_f, frame in enumerate(person):if frame.sum() == 0:continuefor i_j, joint in enumerate(frame):s[i_s, i_p, i_f, i_j] = np.dot(matrix_x, joint)data = np.transpose(s, [0, 4, 2, 3, 1])return dataif __name__ == '__main__':data = np.load('../data/ntu/xview/val_data.npy')pre_normalization(data)np.save('../data/ntu/xview/data_val_pre.npy', data)

總結(jié)

以上是生活随笔為你收集整理的GCN代码超详解析Two-stream adaptive graph convolutional network for Skeleton-Based Action Recognition(一)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 欧美国产91| 中文在线а√天堂 | 欧美大黄 | 制服丝袜国产精品 | 亚洲一区91 | 久久久精品麻豆 | 精品久久久999 | 欧美三级在线视频 | 国产毛片久久 | 国产成人综合久久 | 欧洲精品久久 | 人妻与黑人一区二区三区 | 第四色成人网 | 少妇高潮惨叫久久久久 | 曰韩一级片| 日韩三区在线 | 九九精品在线观看 | a视频在线免费观看 | 国产亚洲欧美日韩精品一区二区三区 | 波多野吉衣视频在线观看 | 国产精品九九九 | 亚洲欧洲一区 | 日韩欧美大片在线观看 | 97超碰在 | 国产片高清在线观看 | 嫩草影院中文字幕 | 91在线观看免费高清完整版在线观看 | 久久婷婷综合色丁香五月 | 午夜精品视频 | 草莓视频18免费观看 | 亚洲欧洲日韩国产 | 国产第一页在线播放 | 欧美日韩一区二区视频观看 | 国产在线毛片 | 国产成年人视频 | 亚洲精品一区二区三区在线 | 韩国三级hd中文字幕 | 国产精品无码人妻一区二区在线 | 精品自拍一区 | 国产欧美一区二区三区在线看蜜臀 | 黄页网站免费观看 | 亚洲精品日韩精品 | 91精品福利 | 能看av的网站 | 欧美黄频 | 日韩一级片网站 | 欧美人与性禽动交精品 | 国产精品久久久久永久免费看 | 大黑人交xxx极品hd | 视频一区二区在线观看 | 九九综合九九综合 | 国产美女主播视频 | 天堂va蜜桃一区二区三区漫画版 | 7788色淫网站小说 | 久色精品视频 | 成人午夜电影网站 | 96视频在线观看 | 久久精品无码Av中文字幕 | 国产三级黄色 | 四季av国产一区二区三区 | 丨国产丨调教丨91丨 | 国产伦理一区二区三区 | 国产精品系列在线观看 | 久久久在线观看 | 最好看的mv中文字幕国语电影 | 国产精品免费看片 | 青青操影院| 丰满大乳露双乳呻吟 | 欧美精品免费视频 | 欧美成人一级视频 | 日韩一卡二卡三卡四卡 | 91精品国产综合久久久久久久 | 好紧好爽再浪一点视频 | 中文字字幕一区二区三区四区五区 | 成人av在线一区二区 | 亚洲欧美视频 | 亚洲精品在线观 | 麻豆一区二区三区精品视频 | 色狠狠一区二区 | 干爹你真棒插曲免费 | 欧美又大又硬又粗bbbbb | 久久久亚洲欧洲 | 东北熟女一区二区三区 | 色性av | 白石茉莉奈黑人 | 亚洲熟女少妇一区二区 | 啄木乌欧美一区二区三区 | 黄色免费视频网站 | 欧美成人黄色片 | 亚洲成人国产精品 | 国产伦精品一区二区三区视频网站 | 中文字幕乱码中文乱码b站 国产一区二区三区在线观看视频 | 午夜剧场免费观看 | 大尺码肥胖女系列av | 一级少妇片 | 欧美性受xxxx白人性爽 | 日韩毛片无码永久免费看 | 在线播放毛片 | 国产一级不卡毛片 |