{"id":1947,"date":"2025-05-08T00:00:08","date_gmt":"2025-05-07T16:00:08","guid":{"rendered":"https:\/\/www.wunen.com\/index.php\/2025\/05\/08\/%e5%9f%ba%e4%ba%8e%e6%94%b9%e8%bf%9bhigherhrnet%e7%9a%84%e4%bd%93%e8%82%b2%e8%bf%90%e5%8a%a8%e5%8a%a8%e4%bd%9c%e8%a7%84%e8%8c%83%e5%ba%a6%e6%a3%80%e6%b5%8b%e7%b3%bb%e7%bb%9f\/"},"modified":"2025-05-08T00:00:08","modified_gmt":"2025-05-07T16:00:08","slug":"%e5%9f%ba%e4%ba%8e%e6%94%b9%e8%bf%9bhigherhrnet%e7%9a%84%e4%bd%93%e8%82%b2%e8%bf%90%e5%8a%a8%e5%8a%a8%e4%bd%9c%e8%a7%84%e8%8c%83%e5%ba%a6%e6%a3%80%e6%b5%8b%e7%b3%bb%e7%bb%9f","status":"publish","type":"post","link":"http:\/\/www.wunen.com\/index.php\/2025\/05\/08\/%e5%9f%ba%e4%ba%8e%e6%94%b9%e8%bf%9bhigherhrnet%e7%9a%84%e4%bd%93%e8%82%b2%e8%bf%90%e5%8a%a8%e5%8a%a8%e4%bd%9c%e8%a7%84%e8%8c%83%e5%ba%a6%e6%a3%80%e6%b5%8b%e7%b3%bb%e7%bb%9f\/","title":{"rendered":"\u57fa\u4e8e\u6539\u8fdbHigherHRNet\u7684\u4f53\u80b2\u8fd0\u52a8\u52a8\u4f5c\u89c4\u8303\u5ea6\u68c0\u6d4b\u7cfb\u7edf"},"content":{"rendered":"<div class=\"article_content clearfix\" id=\"article_content\">\n <link href=\"https:\/\/csdnimg.cn\/release\/blogv2\/dist\/mdeditor\/css\/editerView\/kdoc_html_views-1a98987dfd.css\" rel=\"stylesheet\"\/>\n <link href=\"https:\/\/csdnimg.cn\/release\/blogv2\/dist\/mdeditor\/css\/editerView\/ck_htmledit_views-704d5b9767.css\" rel=\"stylesheet\"\/>\n<div class=\"markdown_views prism-atom-one-dark\" id=\"content_views\">\n  <svg style=\"display: none;\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n   <path d=\"M5,0 0,2.5 5,5z\" id=\"raphael-marker-block\" stroke-linecap=\"round\" style=\"-webkit-tap-highlight-color: rgba(0, 0, 0, 0);\">\n   <\/path>\n  <\/svg><\/p>\n<h2>\n   <a id=\"1_1\"><br \/>\n   <\/a><br \/>\n   1.\u7814\u7a76\u80cc\u666f\u4e0e\u610f\u4e49<br \/>\n  <\/h2>\n<p>\n   \u9879\u76ee\u53c2\u8003<br \/>\n   <a href=\"https:\/\/www.zhihu.com\/people\/74-65-28-38\/posts\" rel=\"nofollow\"><br \/>\n    AAAI Association for the Advancement of Artificial Intelligence<br \/>\n   <\/a>\n  <\/p>\n<p>\n   \u7814\u7a76\u80cc\u666f\u4e0e\u610f\u4e49\n  <\/p>\n<p>\n   \u968f\u7740\u4eba\u5de5\u667a\u80fd\u548c\u8ba1\u7b97\u673a\u89c6\u89c9\u6280\u672f\u7684\u4e0d\u65ad\u53d1\u5c55\uff0c\u4f53\u80b2\u8fd0\u52a8\u52a8\u4f5c\u7684\u89c4\u8303\u5ea6\u68c0\u6d4b\u5728\u8bb8\u591a\u9886\u57df\u90fd\u5177\u6709\u91cd\u8981\u7684\u5e94\u7528\u4ef7\u503c\u3002\u4f53\u80b2\u8fd0\u52a8\u662f\u4eba\u7c7b\u793e\u4f1a\u4e2d\u91cd\u8981\u7684\u6d3b\u52a8\u4e4b\u4e00\uff0c\u4e0d\u4ec5\u80fd\u591f\u63d0\u9ad8\u4eba\u4eec\u7684\u8eab\u4f53\u7d20\u8d28\uff0c\u8fd8\u80fd\u591f\u57f9\u517b\u4eba\u4eec\u7684\u56e2\u961f\u5408\u4f5c\u7cbe\u795e\u548c\u7ade\u4e89\u610f\u8bc6\u3002\u7136\u800c\uff0c\u5bf9\u4e8e\u4f53\u80b2\u8fd0\u52a8\u52a8\u4f5c\u7684\u89c4\u8303\u5ea6\u68c0\u6d4b\uff0c\u4f20\u7edf\u7684\u65b9\u6cd5\u5f80\u5f80\u9700\u8981\u4f9d\u8d56\u4e13\u4e1a\u6559\u7ec3\u7684\u76ee\u6d4b\u5224\u65ad\uff0c\u8fd9\u79cd\u65b9\u6cd5\u5b58\u5728\u4e3b\u89c2\u6027\u5f3a\u3001\u6548\u7387\u4f4e\u7b49\u95ee\u9898\u3002\n  <\/p>\n<p>\n   \u4e3a\u4e86\u89e3\u51b3\u8fd9\u4e00\u95ee\u9898\uff0c\u7814\u7a76\u8005\u4eec\u5f00\u59cb\u63a2\u7d22\u57fa\u4e8e\u8ba1\u7b97\u673a\u89c6\u89c9\u6280\u672f\u7684\u4f53\u80b2\u8fd0\u52a8\u52a8\u4f5c\u89c4\u8303\u5ea6\u68c0\u6d4b\u7cfb\u7edf\u3002\u8fd9\u79cd\u7cfb\u7edf\u80fd\u591f\u901a\u8fc7\u5206\u6790\u8fd0\u52a8\u5458\u7684\u52a8\u4f5c\u6570\u636e\uff0c\u81ea\u52a8\u5224\u65ad\u5176\u52a8\u4f5c\u662f\u5426\u7b26\u5408\u89c4\u8303\u8981\u6c42\u3002\u7136\u800c\uff0c\u73b0\u6709\u7684\u4f53\u80b2\u8fd0\u52a8\u52a8\u4f5c\u89c4\u8303\u5ea6\u68c0\u6d4b\u7cfb\u7edf\u4ecd\u7136\u5b58\u5728\u4e00\u4e9b\u95ee\u9898\uff0c\u5982\u51c6\u786e\u6027\u4e0d\u9ad8\u3001\u5bf9\u590d\u6742\u52a8\u4f5c\u7684\u5904\u7406\u80fd\u529b\u6709\u9650\u7b49\u3002\n  <\/p>\n<p>\n   \u56e0\u6b64\uff0c\u672c\u7814\u7a76\u65e8\u5728\u57fa\u4e8e\u6539\u8fdbHigherHRNet\u7684\u4f53\u80b2\u8fd0\u52a8\u52a8\u4f5c\u89c4\u8303\u5ea6\u68c0\u6d4b\u7cfb\u7edf\u3002HigherHRNet\u662f\u4e00\u79cd\u57fa\u4e8e\u9ad8\u5206\u8fa8\u7387\u7684\u7f51\u7edc\u7ed3\u6784\uff0c\u5177\u6709\u8f83\u5f3a\u7684\u7279\u5f81\u63d0\u53d6\u80fd\u529b\u548c\u7a7a\u95f4\u611f\u77e5\u80fd\u529b\u3002\u901a\u8fc7\u5bf9\u5176\u8fdb\u884c\u6539\u8fdb\uff0c\u53ef\u4ee5\u8fdb\u4e00\u6b65\u63d0\u9ad8\u4f53\u80b2\u8fd0\u52a8\u52a8\u4f5c\u89c4\u8303\u5ea6\u68c0\u6d4b\u7cfb\u7edf\u7684\u51c6\u786e\u6027\u548c\u7a33\u5b9a\u6027\u3002\n  <\/p>\n<p>\n   \u672c\u7814\u7a76\u7684\u610f\u4e49\u4e3b\u8981\u4f53\u73b0\u5728\u4ee5\u4e0b\u51e0\u4e2a\u65b9\u9762\uff1a\n  <\/p>\n<p>\n   \u9996\u5148\uff0c\u57fa\u4e8e\u6539\u8fdbHigherHRNet\u7684\u4f53\u80b2\u8fd0\u52a8\u52a8\u4f5c\u89c4\u8303\u5ea6\u68c0\u6d4b\u7cfb\u7edf\u53ef\u4ee5\u63d0\u9ad8\u4f53\u80b2\u8bad\u7ec3\u7684\u6548\u679c\u3002\u4f20\u7edf\u7684\u4f53\u80b2\u8bad\u7ec3\u5f80\u5f80\u9700\u8981\u4f9d\u8d56\u4e13\u4e1a\u6559\u7ec3\u7684\u76ee\u6d4b\u5224\u65ad\uff0c\u8fd9\u79cd\u65b9\u6cd5\u5b58\u5728\u4e3b\u89c2\u6027\u5f3a\u3001\u6548\u7387\u4f4e\u7b49\u95ee\u9898\u3002\u800c\u57fa\u4e8e\u8ba1\u7b97\u673a\u89c6\u89c9\u6280\u672f\u7684\u89c4\u8303\u5ea6\u68c0\u6d4b\u7cfb\u7edf\u53ef\u4ee5\u63d0\u4f9b\u5ba2\u89c2\u3001\u51c6\u786e\u7684\u53cd\u9988\uff0c\u5e2e\u52a9\u8fd0\u52a8\u5458\u53ca\u65f6\u53d1\u73b0\u548c\u7ea0\u6b63\u52a8\u4f5c\u4e2d\u7684\u95ee\u9898\uff0c\u4ece\u800c\u63d0\u9ad8\u8bad\u7ec3\u6548\u679c\u3002\n  <\/p>\n<p>\n   \u5176\u6b21\uff0c\u57fa\u4e8e\u6539\u8fdbHigherHRNet\u7684\u4f53\u80b2\u8fd0\u52a8\u52a8\u4f5c\u89c4\u8303\u5ea6\u68c0\u6d4b\u7cfb\u7edf\u53ef\u4ee5\u63d0\u9ad8\u6bd4\u8d5b\u88c1\u5224\u7684\u516c\u6b63\u6027\u3002\u5728\u4f53\u80b2\u6bd4\u8d5b\u4e2d\uff0c\u88c1\u5224\u5458\u7684\u5224\u51b3\u5f80\u5f80\u4f1a\u53d7\u5230\u4e3b\u89c2\u56e0\u7d20\u7684\u5f71\u54cd\uff0c\u5bb9\u6613\u5f15\u53d1\u4e89\u8bae\u3002\u800c\u901a\u8fc7\u5f15\u5165\u8ba1\u7b97\u673a\u89c6\u89c9\u6280\u672f\uff0c\u53ef\u4ee5\u5bf9\u8fd0\u52a8\u5458\u7684\u52a8\u4f5c\u8fdb\u884c\u5ba2\u89c2\u3001\u51c6\u786e\u7684\u8bc4\u4f30\uff0c\u51cf\u5c11\u4e3b\u89c2\u56e0\u7d20\u7684\u5e72\u6270\uff0c\u63d0\u9ad8\u6bd4\u8d5b\u7684\u516c\u6b63\u6027\u3002\n  <\/p>\n<p>\n   \u6b64\u5916\uff0c\u57fa\u4e8e\u6539\u8fdbHigherHRNet\u7684\u4f53\u80b2\u8fd0\u52a8\u52a8\u4f5c\u89c4\u8303\u5ea6\u68c0\u6d4b\u7cfb\u7edf\u8fd8\u5177\u6709\u5e7f\u6cdb\u7684\u5e94\u7528\u524d\u666f\u3002\u9664\u4e86\u5728\u4f53\u80b2\u8bad\u7ec3\u548c\u6bd4\u8d5b\u4e2d\u7684\u5e94\u7528\u5916\uff0c\u8be5\u7cfb\u7edf\u8fd8\u53ef\u4ee5\u5e94\u7528\u4e8e\u5eb7\u590d\u8bad\u7ec3\u3001\u8fd0\u52a8\u5458\u9009\u62d4\u7b49\u9886\u57df\u3002\u901a\u8fc7\u5bf9\u8fd0\u52a8\u5458\u52a8\u4f5c\u7684\u51c6\u786e\u8bc4\u4f30\uff0c\u53ef\u4ee5\u5e2e\u52a9\u5eb7\u590d\u60a3\u8005\u66f4\u597d\u5730\u8fdb\u884c\u5eb7\u590d\u8bad\u7ec3\uff0c\u63d0\u9ad8\u5eb7\u590d\u6548\u679c\uff1b\u540c\u65f6\uff0c\u53ef\u4ee5\u901a\u8fc7\u5bf9\u8fd0\u52a8\u5458\u52a8\u4f5c\u7684\u5206\u6790\uff0c\u8f85\u52a9\u9009\u62d4\u51fa\u66f4\u5177\u6f5c\u529b\u7684\u8fd0\u52a8\u5458\uff0c\u63d0\u9ad8\u8fd0\u52a8\u961f\u7684\u7ade\u4e89\u529b\u3002\n  <\/p>\n<p>\n   \u7efc\u4e0a\u6240\u8ff0\uff0c\u57fa\u4e8e\u6539\u8fdbHigherHRNet\u7684\u4f53\u80b2\u8fd0\u52a8\u52a8\u4f5c\u89c4\u8303\u5ea6\u68c0\u6d4b\u7cfb\u7edf\u5177\u6709\u91cd\u8981\u7684\u7814\u7a76\u610f\u4e49\u548c\u5e94\u7528\u4ef7\u503c\u3002\u901a\u8fc7\u63d0\u9ad8\u4f53\u80b2\u8bad\u7ec3\u6548\u679c\u3001\u63d0\u9ad8\u6bd4\u8d5b\u516c\u6b63\u6027\u4ee5\u53ca\u62d3\u5c55\u5e94\u7528\u9886\u57df\uff0c\u8be5\u7cfb\u7edf\u6709\u671b\u4e3a\u4f53\u80b2\u8fd0\u52a8\u9886\u57df\u7684\u53d1\u5c55\u548c\u8fdb\u6b65\u505a\u51fa\u79ef\u6781\u8d21\u732e\u3002\n  <\/p>\n<h2>\n   <a id=\"2_23\"><br \/>\n   <\/a><br \/>\n   2.\u56fe\u7247\u6f14\u793a<br \/>\n  <\/h2>\n<\/p>\n<h2>\n   <a id=\"3_28\"><br \/>\n   <\/a><br \/>\n   3.\u89c6\u9891\u6f14\u793a<br \/>\n  <\/h2>\n<p>\n   <a href=\"https:\/\/www.bilibili.com\/video\/BV1N84y1Q7PB\/?spm_id_from=333.999.0.0&amp;vd_source=ff015de2d29cbe2a9cdbfa7064407a08\" rel=\"nofollow\"><br \/>\n    \u57fa\u4e8e\u6539\u8fdbHigherHRNet\u7684\u4f53\u80b2\u8fd0\u52a8\u52a8\u4f5c\u89c4\u8303\u5ea6\u68c0\u6d4b\u7cfb\u7edf<br \/>\n   <\/a>\n  <\/p>\n<h2>\n   <a id=\"4_31\"><br \/>\n   <\/a><br \/>\n   4.\u6570\u636e\u96c6\u7684\u91c7\u96c6<br \/>\n  <\/h2>\n<p>\n   \u4e0b\u9762\u6211\u4eec\u6765\u5904\u7406\u6570\u636e\u96c6\uff0c\u8fd9\u4e2a\u7cfb\u7edf\u9700\u8981\u7528\u5230COCO\u6570\u636e\u96c6\u548c<br \/>\n   <a href=\"https:\/\/mbd.pub\/o\/bread\/ZZaUmplp\" rel=\"nofollow\"><br \/>\n    CrowdPose\u516c\u5f00\u6570\u636e\u96c6<br \/>\n   <\/a><br \/>\n   \u3002\n  <\/p>\n<h5>\n   <a id=\"CUDA_CuDnn_24gCPU_33\"><br \/>\n   <\/a><br \/>\n   \u672c\u9879\u76ee\u5747\u5df2\u8bad\u7ec3\u5b8c\u6210\uff0c\u65e0\u9700\u518d\u6b21\u8bad\u7ec3\uff0c\u5982\u679c\u8981\u518d\u6b21\u8bad\u7ec3\u9700\u8981\u5b89\u88c5CUDA CuDnn \uff0c\u540c\u65f6\u5177\u590724g+\u7684\u663e\u5b58\uff0c\u52a0\u8f7d\u672c\u9879\u76ee\u6587\u672b\u8bad\u7ec3\u597d\u7684\u6a21\u578b\u76f4\u63a5\u8fd0\u884c\u7cfb\u7edf\u5219\u4e0d\u5403\u914d\u7f6e\uff0cCPU\u5373\u53ef\u3002<br \/>\n  <\/h5>\n<p>\n   \u5904\u7406COCO\u6570\u636e\u96c6<br \/>\n   <br \/>\n   \u9996\u5148\uff0c\u4e0b\u8f7dCOCO\u6570\u636e\u96c6\u7684\u8bad\u7ec3\u96c6\u548c\u9a8c\u8bc1\u96c6\uff0c\u4f60\u53ef\u4ee5\u4eceCOCO\u5b98\u7f51\u4e0b\u8f7d\u3002\u786e\u4fdd\u4e0b\u8f7d\u7684\u662f2017 Train\/Val\u6570\u636e\u96c6\uff0c\u56e0\u4e3a\u8fd9\u4e9b\u6570\u636e\u96c6\u7528\u4e8eCOCO\u5173\u952e\u70b9\u7684\u8bad\u7ec3\u548c\u9a8c\u8bc1\u3002\n  <\/p>\n<p>\n   \u5c06\u4e0b\u8f7d\u7684\u6570\u636e\u96c6\u89e3\u538b\u7f29\uff0c\u5e76\u5c06\u6587\u4ef6\u6309\u7167\u4ee5\u4e0b\u7ed3\u6784\u653e\u7f6e\u5728${POSE_ROOT}\/data\/coco\/\u76ee\u5f55\u4e0b\uff1a\n  <\/p>\n<pre><code>|-- data\n|   `-- coco\n|       |-- annotations\n|       |   |-- person_keypoints_train2017.json\n|       |   `-- person_keypoints_val2017.json\n|       `-- images\n|           |-- train2017\n|           |   |-- 000000000009.jpg\n|           |   |-- 000000000025.jpg\n|           |   |-- 000000000030.jpg\n|           |   |-- ...\n|           `-- val2017\n|               |-- 000000000139.jpg\n|               |-- 000000000285.jpg\n|               |-- 000000000632.jpg\n|               |-- ...\n<\/code><\/pre>\n<p>\n   \u5904\u7406CrowdPose\u6570\u636e\u96c6<br \/>\n   <br \/>\n   \u540c\u6837\u5730\uff0c\u4e0b\u8f7dCrowdPose\u6570\u636e\u96c6\u7684\u8bad\u7ec3\u96c6\u548c\u9a8c\u8bc1\u96c6\uff0c\u4f60\u53ef\u4ee5\u4eceCrowdPose\u5b98\u65b9\u9875\u9762\u4e0b\u8f7d\u3002\u4f60\u9700\u8981\u4e0b\u8f7dTrain\/Val\u6570\u636e\u96c6\uff0c\u8fd9\u4e9b\u6570\u636e\u96c6\u7528\u4e8eCrowdPose\u5173\u952e\u70b9\u7684\u8bad\u7ec3\u548c\u9a8c\u8bc1\u3002\n  <\/p>\n<p>\n   \u5c06\u4e0b\u8f7d\u7684\u6570\u636e\u96c6\u89e3\u538b\u7f29\uff0c\u5e76\u5c06\u6587\u4ef6\u6309\u7167\u4ee5\u4e0b\u7ed3\u6784\u653e\u7f6e\u5728${POSE_ROOT}\/data\/crowd_pose\/\u76ee\u5f55\u4e0b\uff1a\n  <\/p>\n<pre><code>|-- data\n|   `-- crowd_pose\n|       |-- json\n|       |   |-- crowdpose_train.json\n|       |   |-- crowdpose_val.json\n|       |   |-- crowdpose_trainval.json (\u7531tools\/crowdpose_concat_train_val.py\u751f\u6210)\n|       |   `-- crowdpose_test.json\n|       `-- images\n|           |-- 100000.jpg\n|           |-- 100001.jpg\n|           |-- 100002.jpg\n|           |-- 100003.jpg\n|           |-- 100004.jpg\n|           |-- 100005.jpg\n|           |-- ...\n<\/code><\/pre>\n<p>\n   \u5728\u4e0b\u8f7d\u6570\u636e\u540e\uff0c\u53ef\u4ee5\u8fd0\u884c${POSE_ROOT}\u76ee\u5f55\u4e0b\u7684python tools\/crowdpose_concat_train_val.py\u547d\u4ee4\u6765\u521b\u5efatrainval\u96c6\u5408\u3002\n  <\/p>\n<h2>\n   <a id=\"5_80\"><br \/>\n   <\/a><br \/>\n   5.\u6838\u5fc3\u4ee3\u7801\u8bb2\u89e3<br \/>\n  <\/h2>\n<h5>\n   <a id=\"51_FeatureAlignpy_82\"><br \/>\n   <\/a><br \/>\n   5.1 FeatureAlign.py<br \/>\n  <\/h5>\n<p>\n   \u6839\u636e\u4e0a\u8ff0\u4ee3\u7801\uff0c\u53ef\u4ee5\u5c06\u5176\u5c01\u88c5\u4e3a\u4e00\u4e2a\u540d\u4e3aFeatureAlign\u7684\u7c7b\u3002\u8be5\u7c7b\u5177\u6709\u4ee5\u4e0b\u5c5e\u6027\u548c\u65b9\u6cd5\uff1a\n  <\/p>\n<p>\n   \u5c5e\u6027\uff1a\n  <\/p>\n<ul>\n<li>\n    scale_factor\uff1a\u4e0a\u91c7\u6837\u7684\u6bd4\u4f8b\u56e0\u5b50\n   <\/li>\n<li>\n    mode\uff1a\u4e0a\u91c7\u6837\u7684\u65b9\u5f0f\uff0c\u9ed8\u8ba4\u4e3a\u53cc\u7ebf\u6027\u63d2\u503c\n   <\/li>\n<li>\n    align_corners\uff1a\u662f\u5426\u5bf9\u9f50\u89d2\u70b9\uff0cFalse\u4e3a\u975e\u89d2\u70b9\u5bf9\u9f50\uff0cTrue\u4e3a\u89d2\u70b9\u5bf9\u9f50\n   <\/li>\n<\/ul>\n<p>\n   \u65b9\u6cd5\uff1a\n  <\/p>\n<ul>\n<li>\n    __init__\uff1a\u521d\u59cb\u5316\u7279\u5f81\u5bf9\u9f50\u6a21\u5757\uff0c\u63a5\u6536scale_factor\u3001mode\u548calign_corners\u4f5c\u4e3a\u53c2\u6570\n   <\/li>\n<li>\n    forward\uff1a\u524d\u5411\u4f20\u64ad\uff0c\u8fdb\u884c\u7279\u5f81\u4e0a\u91c7\u6837\u548c\u4f4d\u7f6e\u6821\u51c6\uff0c\u63a5\u6536x\u4f5c\u4e3a\u8f93\u5165\uff0c\u8fd4\u56de\u5bf9\u9f50\u540e\u7684\u7279\u5f81\u56fe\n   <\/li>\n<li>\n    _align_corners\uff1a\u5bf9\u4e8e\u89d2\u70b9\u5bf9\u9f50\u7684\u7279\u5f81\u56fe\u8fdb\u884c\u4f4d\u7f6e\u6821\u51c6\uff0c\u63a5\u6536x\u4f5c\u4e3a\u8f93\u5165\uff0c\u8fd4\u56de\u4f4d\u7f6e\u6821\u51c6\u540e\u7684\u7279\u5f81\u56fe\n   <\/li>\n<li>\n    _calculate_offset\uff1a\u6839\u636e\u67d0\u79cd\u89c4\u5219\u8ba1\u7b97\u7279\u5f81\u56fe\u7684\u504f\u79fb\u91cf\uff0c\u63a5\u6536x\u4f5c\u4e3a\u8f93\u5165\uff0c\u8fd4\u56de\u8ba1\u7b97\u5f97\u5230\u7684\u504f\u79fb\u91cf\n   <\/li>\n<\/ul>\n<p>\n   \u4ee5\u4e0b\u662f\u5c01\u88c5\u540e\u7684\u4ee3\u7801\uff1a\n  <\/p>\n<pre><code class=\"prism language-python\">\n\n<span class=\"token keyword\">class<\/span> <span class=\"token class-name\">FeatureAlign<\/span><span class=\"token punctuation\">(<\/span>nn<span class=\"token punctuation\">.<\/span>Module<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span>\n    <span class=\"token keyword\">def<\/span> <span class=\"token function\">__init__<\/span><span class=\"token punctuation\">(<\/span>self<span class=\"token punctuation\">,<\/span> scale_factor<span class=\"token punctuation\">,<\/span> mode<span class=\"token operator\">=<\/span><span class=\"token string\">'bilinear'<\/span><span class=\"token punctuation\">,<\/span> align_corners<span class=\"token operator\">=<\/span><span class=\"token boolean\">False<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span>\n        <span class=\"token builtin\">super<\/span><span class=\"token punctuation\">(<\/span>FeatureAlign<span class=\"token punctuation\">,<\/span> self<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">.<\/span>__init__<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span>\n        self<span class=\"token punctuation\">.<\/span>scale_factor <span class=\"token operator\">=<\/span> scale_factor\n        self<span class=\"token punctuation\">.<\/span>mode <span class=\"token operator\">=<\/span> mode\n        self<span class=\"token punctuation\">.<\/span>align_corners <span class=\"token operator\">=<\/span> align_corners\n\n    <span class=\"token keyword\">def<\/span> <span class=\"token function\">forward<\/span><span class=\"token punctuation\">(<\/span>self<span class=\"token punctuation\">,<\/span> x<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span>\n        x_upsampled <span class=\"token operator\">=<\/span> F<span class=\"token punctuation\">.<\/span>interpolate<span class=\"token punctuation\">(<\/span>x<span class=\"token punctuation\">,<\/span> scale_factor<span class=\"token operator\">=<\/span>self<span class=\"token punctuation\">.<\/span>scale_factor<span class=\"token punctuation\">,<\/span> mode<span class=\"token operator\">=<\/span>self<span class=\"token punctuation\">.<\/span>mode<span class=\"token punctuation\">,<\/span> align_corners<span class=\"token operator\">=<\/span>self<span class=\"token punctuation\">.<\/span>align_corners<span class=\"token punctuation\">)<\/span>\n        <span class=\"token keyword\">if<\/span> self<span class=\"token punctuation\">.<\/span>align_corners<span class=\"token punctuation\">:<\/span>\n            x_aligned <span class=\"token operator\">=<\/span> self<span class=\"token punctuation\">.<\/span>_align_corners<span class=\"token punctuation\">(<\/span>x_upsampled<span class=\"token punctuation\">)<\/span>\n        <span class=\"token keyword\">else<\/span><span class=\"token punctuation\">:<\/span>\n            x_aligned <span class=\"token operator\">=<\/span> x_upsampled\n        <span class=\"token keyword\">return<\/span> x_aligned\n\n    <span class=\"token keyword\">def<\/span> <span class=\"token function\">_align_corners<\/span><span class=\"token punctuation\">(<\/span>self<span class=\"token punctuation\">,<\/span> x<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span>\n        offset <span class=\"token operator\">=<\/span> self<span class=\"token punctuation\">.<\/span>_calculate_offset<span class=\"token punctuation\">(<\/span>x<span class=\"token punctuation\">)<\/span>\n        x_aligned <span class=\"token operator\">=<\/span> x <span class=\"token operator\">+<\/span> offset\n        <span class=\"token keyword\">return<\/span> x_aligned\n\n    <span class=\"token keyword\">def<\/span> <span class=\"token function\">_calculate_offset<\/span><span class=\"token punctuation\">(<\/span>self<span class=\"token punctuation\">,<\/span> x<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span>\n        <span class=\"token keyword\">return<\/span> torch<span class=\"token punctuation\">.<\/span>zeros_like<span class=\"token punctuation\">(<\/span>x<span class=\"token punctuation\">)<\/span>\n<\/code><\/pre>\n<p>\n   \u8fd9\u6837\uff0c\u6211\u4eec\u5c31\u5c06\u539f\u59cb\u4ee3\u7801\u5c01\u88c5\u4e3a\u4e00\u4e2a\u540d\u4e3aFeatureAlign\u7684\u7c7b\uff0c\u4f7f\u5176\u66f4\u5177\u53ef\u8bfb\u6027\u548c\u53ef\u7ef4\u62a4\u6027\u3002\n  <\/p>\n<p>\n   \u8be5\u7a0b\u5e8f\u6587\u4ef6\u662f\u4e00\u4e2a\u7279\u5f81\u5bf9\u9f50\u6a21\u5757\u7684\u5b9a\u4e49\uff0c\u6587\u4ef6\u540d\u4e3aFeatureAlign.py\u3002\u8be5\u6a21\u5757\u7528\u4e8e\u5bf9\u8f93\u5165\u7684\u7279\u5f81\u56fe\u8fdb\u884c\u4e0a\u91c7\u6837\u548c\u4f4d\u7f6e\u6821\u51c6\u3002\n  <\/p>\n<p>\n   \u5728\u521d\u59cb\u5316\u51fd\u6570\u4e2d\uff0c\u5b9a\u4e49\u4e86\u4e0a\u91c7\u6837\u7684\u6bd4\u4f8b\u56e0\u5b50\u3001\u4e0a\u91c7\u6837\u7684\u65b9\u5f0f\uff08\u9ed8\u8ba4\u4e3a\u53cc\u7ebf\u6027\u63d2\u503c\uff09\u548c\u662f\u5426\u5bf9\u9f50\u89d2\u70b9\u7684\u53c2\u6570\u3002\n  <\/p>\n<p>\n   \u5728\u524d\u5411\u4f20\u64ad\u51fd\u6570\u4e2d\uff0c\u9996\u5148\u5bf9\u8f93\u5165\u7684\u7279\u5f81\u56fe\u8fdb\u884c\u4e0a\u91c7\u6837\uff0c\u4f7f\u7528\u4e86PyTorch\u4e2d\u7684F.interpolate\u51fd\u6570\uff0c\u6839\u636e\u4e0a\u91c7\u6837\u7684\u65b9\u5f0f\u3001\u6bd4\u4f8b\u56e0\u5b50\u548c\u662f\u5426\u5bf9\u9f50\u89d2\u70b9\u8fdb\u884c\u4e0a\u91c7\u6837\u64cd\u4f5c\u3002\n  <\/p>\n<p>\n   \u7136\u540e\u6839\u636e\u662f\u5426\u5bf9\u9f50\u89d2\u70b9\u7684\u53c2\u6570\uff0c\u8c03\u7528_align_corners\u51fd\u6570\u5bf9\u4e0a\u91c7\u6837\u540e\u7684\u7279\u5f81\u56fe\u8fdb\u884c\u4f4d\u7f6e\u6821\u51c6\u3002\u5982\u679c\u5bf9\u9f50\u89d2\u70b9\uff0c\u5219\u8c03\u7528_calculate_offset\u51fd\u6570\u8ba1\u7b97\u504f\u79fb\u91cf\uff0c\u5e76\u5c06\u504f\u79fb\u91cf\u5e94\u7528\u5230\u7279\u5f81\u56fe\u4e0a\uff1b\u5982\u679c\u4e0d\u5bf9\u9f50\u89d2\u70b9\uff0c\u5219\u76f4\u63a5\u8fd4\u56de\u4e0a\u91c7\u6837\u540e\u7684\u7279\u5f81\u56fe\u3002\n  <\/p>\n<p>\n   \u6700\u540e\u8fd4\u56de\u7ecf\u8fc7\u4e0a\u91c7\u6837\u548c\u4f4d\u7f6e\u6821\u51c6\u540e\u7684\u7279\u5f81\u56fe\u3002\n  <\/p>\n<p>\n   \u5728_align_corners\u51fd\u6570\u4e2d\uff0c\u5047\u8bbe\u4f4d\u7f6e\u6821\u51c6\u53ea\u6d89\u53ca\u5230\u504f\u79fb\u91cf\u7684\u8ba1\u7b97\u548c\u5e94\u7528\uff0c\u5177\u4f53\u5b9e\u73b0\u7ec6\u8282\u53d6\u51b3\u4e8e\u5b9e\u9645\u60c5\u51b5\u3002\u8fd9\u91cc\u5047\u8bbe\u6709\u4e00\u4e2a\u51fd\u6570_calculate_offset\u6765\u8ba1\u7b97\u504f\u79fb\u91cf\uff0c\u7136\u540e\u5c06\u504f\u79fb\u91cf\u5e94\u7528\u5230\u7279\u5f81\u56fe\u4e0a\u3002\n  <\/p>\n<p>\n   \u5728_calculate_offset\u51fd\u6570\u4e2d\uff0c\u6839\u636e\u67d0\u79cd\u89c4\u5219\u8ba1\u7b97\u7279\u5f81\u56fe\u7684\u504f\u79fb\u91cf\u3002\u5177\u4f53\u7684\u504f\u79fb\u91cf\u8ba1\u7b97\u9700\u8981\u6839\u636e\u5b9e\u9645\u60c5\u51b5\u6765\u7f16\u5199\u4ee3\u7801\u3002\u8fd9\u91cc\u4f7f\u7528torch.zeros_like\u51fd\u6570\u521b\u5efa\u4e00\u4e2a\u4e0e\u7279\u5f81\u56fe\u76f8\u540c\u5927\u5c0f\u7684\u5168\u96f6\u5f20\u91cf\u4f5c\u4e3a\u504f\u79fb\u91cf\u7684\u5360\u4f4d\u7b26\u3002\n  <\/p>\n<p>\n   \u603b\u4e4b\uff0c\u8be5\u7a0b\u5e8f\u6587\u4ef6\u5b9a\u4e49\u4e86\u4e00\u4e2a\u7279\u5f81\u5bf9\u9f50\u6a21\u5757\uff0c\u53ef\u4ee5\u5bf9\u8f93\u5165\u7684\u7279\u5f81\u56fe\u8fdb\u884c\u4e0a\u91c7\u6837\u548c\u4f4d\u7f6e\u6821\u51c6\u64cd\u4f5c\u3002\u5177\u4f53\u7684\u4e0a\u91c7\u6837\u65b9\u5f0f\u3001\u6bd4\u4f8b\u56e0\u5b50\u548c\u662f\u5426\u5bf9\u9f50\u89d2\u70b9\u53ef\u4ee5\u5728\u521d\u59cb\u5316\u6a21\u5757\u65f6\u8fdb\u884c\u8bbe\u7f6e\u3002\n  <\/p>\n<h5>\n   <a id=\"52_locationpy_144\"><br \/>\n   <\/a><br \/>\n   5.2 location.py<br \/>\n  <\/h5>\n<pre><code class=\"prism language-python\"><span class=\"token keyword\">from<\/span> moviepy<span class=\"token punctuation\">.<\/span>editor <span class=\"token keyword\">import<\/span> <span class=\"token operator\">*<\/span>\n\n<span class=\"token keyword\">class<\/span> <span class=\"token class-name\">VideoEditor<\/span><span class=\"token punctuation\">:<\/span>\n    <span class=\"token keyword\">def<\/span> <span class=\"token function\">__init__<\/span><span class=\"token punctuation\">(<\/span>self<span class=\"token punctuation\">,<\/span> video_path<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span>\n        self<span class=\"token punctuation\">.<\/span>video <span class=\"token operator\">=<\/span> VideoFileClip<span class=\"token punctuation\">(<\/span>video_path<span class=\"token punctuation\">)<\/span>\n\n    <span class=\"token keyword\">def<\/span> <span class=\"token function\">get_resolution<\/span><span class=\"token punctuation\">(<\/span>self<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span>\n        <span class=\"token keyword\">return<\/span> self<span class=\"token punctuation\">.<\/span>video<span class=\"token punctuation\">.<\/span>size\n\n    <span class=\"token keyword\">def<\/span> <span class=\"token function\">get_duration<\/span><span class=\"token punctuation\">(<\/span>self<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span>\n        <span class=\"token keyword\">return<\/span> self<span class=\"token punctuation\">.<\/span>video<span class=\"token punctuation\">.<\/span>duration\n\n    <span class=\"token keyword\">def<\/span> <span class=\"token function\">speed_up<\/span><span class=\"token punctuation\">(<\/span>self<span class=\"token punctuation\">,<\/span> speed<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span>\n        self<span class=\"token punctuation\">.<\/span>video <span class=\"token operator\">=<\/span> self<span class=\"token punctuation\">.<\/span>video<span class=\"token punctuation\">.<\/span>speedx<span class=\"token punctuation\">(<\/span>speed<span class=\"token punctuation\">)<\/span>\n\n    <span class=\"token keyword\">def<\/span> <span class=\"token function\">save_video<\/span><span class=\"token punctuation\">(<\/span>self<span class=\"token punctuation\">,<\/span> output_path<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span>\n        self<span class=\"token punctuation\">.<\/span>video<span class=\"token punctuation\">.<\/span>write_videofile<span class=\"token punctuation\">(<\/span>output_path<span class=\"token punctuation\">)<\/span>\n<\/code><\/pre>\n<p>\n   \u4f7f\u7528\u793a\u4f8b\uff1a\n  <\/p>\n<pre><code class=\"prism language-python\">editor <span class=\"token operator\">=<\/span> VideoEditor<span class=\"token punctuation\">(<\/span><span class=\"token string\">'.\/1.mp4'<\/span><span class=\"token punctuation\">)<\/span>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>editor<span class=\"token punctuation\">.<\/span>get_resolution<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>editor<span class=\"token punctuation\">.<\/span>get_duration<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>\neditor<span class=\"token punctuation\">.<\/span>speed_up<span class=\"token punctuation\">(<\/span><span class=\"token number\">2<\/span><span class=\"token punctuation\">)<\/span>\neditor<span class=\"token punctuation\">.<\/span>save_video<span class=\"token punctuation\">(<\/span><span class=\"token string\">'.\/3.mp4'<\/span><span class=\"token punctuation\">)<\/span>\n<\/code><\/pre>\n<p>\n   \u8fd9\u4e2a\u7a0b\u5e8f\u6587\u4ef6\u540d\u4e3alocation.py\uff0c\u5b83\u4f7f\u7528\u4e86moviepy\u5e93\u6765\u5904\u7406\u89c6\u9891\u6587\u4ef6\u3002\n  <\/p>\n<p>\n   \u9996\u5148\uff0c\u5b83\u5bfc\u5165\u4e86moviepy.editor\u6a21\u5757\u3002\n  <\/p>\n<p>\n   \u7136\u540e\uff0c\u5b83\u4f7f\u7528VideoFileClip\u51fd\u6570\u52a0\u8f7d\u4e86\u540d\u4e3a1.mp4\u7684\u89c6\u9891\u6587\u4ef6\uff0c\u5e76\u5c06\u5176\u8d4b\u503c\u7ed9\u53d8\u91cfvideo\u3002\n  <\/p>\n<p>\n   \u63a5\u4e0b\u6765\uff0c\u5b83\u4f7f\u7528dir(video)\u6253\u5370\u51favideo\u5bf9\u8c61\u7684\u5c5e\u6027\u548c\u65b9\u6cd5\u5217\u8868\u3002\n  <\/p>\n<p>\n   \u7136\u540e\uff0c\u5b83\u4f7f\u7528video.size\u83b7\u53d6\u89c6\u9891\u7684\u5206\u8fa8\u7387\uff0c\u5e76\u5c06\u7ed3\u679c\u6253\u5370\u51fa\u6765\u3002\n  <\/p>\n<p>\n   \u63a5\u7740\uff0c\u5b83\u4f7f\u7528video.duration\u83b7\u53d6\u89c6\u9891\u7684\u603b\u65f6\u957f\uff0c\u5e76\u5c06\u7ed3\u679c\u6253\u5370\u51fa\u6765\u3002\n  <\/p>\n<p>\n   \u7136\u540e\uff0c\u5b83\u4f7f\u7528video.speedx(2)\u5c06\u89c6\u9891\u52a0\u901f\u4e24\u500d\uff0c\u5e76\u5c06\u7ed3\u679c\u8d4b\u503c\u7ed9\u53d8\u91cfvideo2\u3002\n  <\/p>\n<p>\n   \u6700\u540e\uff0c\u5b83\u4f7f\u7528video2.write_videofile\u5c06\u52a0\u901f\u540e\u7684\u89c6\u9891\u4fdd\u5b58\u4e3a\u540d\u4e3a3.mp4\u7684\u6587\u4ef6\u3002\n  <\/p>\n<h5>\n   <a id=\"53_trainpy_191\"><br \/>\n   <\/a><br \/>\n   5.3 train.py<br \/>\n  <\/h5>\n<pre><code class=\"prism language-python\">\n\n<span class=\"token keyword\">class<\/span> <span class=\"token class-name\">PoseEstimationTrainer<\/span><span class=\"token punctuation\">:<\/span>\n    <span class=\"token keyword\">def<\/span> <span class=\"token function\">__init__<\/span><span class=\"token punctuation\">(<\/span>self<span class=\"token punctuation\">,<\/span> prepared_train_labels<span class=\"token punctuation\">,<\/span> train_images_folder<span class=\"token punctuation\">,<\/span> num_refinement_stages<span class=\"token punctuation\">,<\/span> base_lr<span class=\"token punctuation\">,<\/span> batch_size<span class=\"token punctuation\">,<\/span> batches_per_iter<span class=\"token punctuation\">,<\/span>\n          num_workers<span class=\"token punctuation\">,<\/span> checkpoint_path<span class=\"token punctuation\">,<\/span> weights_only<span class=\"token punctuation\">,<\/span> from_mobilenet<span class=\"token punctuation\">,<\/span> checkpoints_folder<span class=\"token punctuation\">,<\/span> log_after<span class=\"token punctuation\">,<\/span>\n          val_labels<span class=\"token punctuation\">,<\/span> val_images_folder<span class=\"token punctuation\">,<\/span> val_output_name<span class=\"token punctuation\">,<\/span> checkpoint_after<span class=\"token punctuation\">,<\/span> val_after<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span>\n        self<span class=\"token punctuation\">.<\/span>prepared_train_labels <span class=\"token operator\">=<\/span> prepared_train_labels\n        self<span class=\"token punctuation\">.<\/span>train_images_folder <span class=\"token operator\">=<\/span> train_images_folder\n        self<span class=\"token punctuation\">.<\/span>num_refinement_stages <span class=\"token operator\">=<\/span> num_refinement_stages\n        self<span class=\"token punctuation\">.<\/span>base_lr <span class=\"token operator\">=<\/span> base_lr\n        self<span class=\"token punctuation\">.<\/span>batch_size <span class=\"token operator\">=<\/span> batch_size\n        self<span class=\"token punctuation\">.<\/span>batches_per_iter <span class=\"token operator\">=<\/span> batches_per_iter\n        self<span class=\"token punctuation\">.<\/span>num_workers <span class=\"token operator\">=<\/span> num_workers\n        self<span class=\"token punctuation\">.<\/span>checkpoint_path <span class=\"token operator\">=<\/span> checkpoint_path\n        self<span class=\"token punctuation\">.<\/span>weights_only <span class=\"token operator\">=<\/span> weights_only\n        self<span class=\"token punctuation\">.<\/span>from_mobilenet <span class=\"token operator\">=<\/span> from_mobilenet\n        self<span class=\"token punctuation\">.<\/span>checkpoints_folder <span class=\"token operator\">=<\/span> checkpoints_folder\n        self<span class=\"token punctuation\">.<\/span>log_after <span class=\"token operator\">=<\/span> log_after\n        self<span class=\"token punctuation\">.<\/span>val_labels <span class=\"token operator\">=<\/span> val_labels\n        self<span class=\"token punctuation\">.<\/span>val_images_folder <span class=\"token operator\">=<\/span> val_images_folder\n        self<span class=\"token punctuation\">.<\/span>val_output_name <span class=\"token operator\">=<\/span> val_output_name\n        self<span class=\"token punctuation\">.<\/span>checkpoint_after <span class=\"token operator\">=<\/span> checkpoint_after\n        self<span class=\"token punctuation\">.<\/span>val_after <span class=\"token operator\">=<\/span> val_after\n\n    <span class=\"token keyword\">def<\/span> <span class=\"token function\">train<\/span><span class=\"token punctuation\">(<\/span>self<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span>\n        net <span class=\"token operator\">=<\/span> PoseEstimationWithMobileNet<span class=\"token punctuation\">(<\/span>self<span class=\"token punctuation\">.<\/span>num_refinement_stages<span class=\"token punctuation\">)<\/span>\n\n        stride <span class=\"token operator\">=<\/span> <span class=\"token number\">8<\/span>\n        sigma <span class=\"token operator\">=<\/span> <span class=\"token number\">7<\/span>\n        path_thickness <span class=\"token operator\">=<\/span> <span class=\"token number\">1<\/span>\n        dataset <span class=\"token operator\">=<\/span> CocoTrainDataset<span class=\"token punctuation\">(<\/span>self<span class=\"token punctuation\">.<\/span>prepared_train_labels<span class=\"token punctuation\">,<\/span> self<span class=\"token punctuation\">.<\/span>train_images_folder<span class=\"token punctuation\">,<\/span>\n                               stride<span class=\"token punctuation\">,<\/span> sigma<span class=\"token punctuation\">,<\/span> path_thickness<span class=\"token punctuation\">,<\/span>\n                               transform<span class=\"token operator\">=<\/span>transforms<span class=\"token punctuation\">.<\/span>Compose<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">[<\/span>\n                                   ConvertKeypoints<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">,<\/span>\n                                   Scale<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">,<\/span>\n                                   Rotate<span class=\"token punctuation\">(<\/span>pad<span class=\"token operator\">=<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">128<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">128<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">128<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">,<\/span>\n                                   CropPad<span class=\"token punctuation\">(<\/span>pad<span class=\"token operator\">=<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">128<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">128<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">128<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">,<\/span>\n                                   Flip<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>\n        train_loader <span class=\"token operator\">=<\/span> DataLoader<span class=\"token punctuation\">(<\/span>dataset<span class=\"token punctuation\">,<\/span> batch_size<span class=\"token operator\">=<\/span>self<span class=\"token punctuation\">.<\/span>batch_size<span class=\"token punctuation\">,<\/span> shuffle<span class=\"token operator\">=<\/span><span class=\"token boolean\">True<\/span><span class=\"token punctuation\">,<\/span> num_workers<span class=\"token operator\">=<\/span>self<span class=\"token punctuation\">.<\/span>num_workers<span class=\"token punctuation\">)<\/span>\n\n        optimizer <span class=\"token operator\">=<\/span> optim<span class=\"token punctuation\">.<\/span>Adam<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">[<\/span>\n            <span class=\"token punctuation\">{<!-- --><\/span><span class=\"token string\">'params'<\/span><span class=\"token punctuation\">:<\/span> get_parameters_conv<span class=\"token punctuation\">(<\/span>net<span class=\"token punctuation\">.<\/span>model<span class=\"token punctuation\">,<\/span> <span class=\"token string\">'weight'<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span>\n            <span class=\"token punctuation\">{<!-- --><\/span><span class=\"token string\">'params'<\/span><span class=\"token punctuation\">:<\/span> get_parameters_conv_depthwise<span class=\"token punctuation\">(<\/span>net<span class=\"token punctuation\">.<\/span>model<span class=\"token punctuation\">,<\/span> <span class=\"token string\">'weight'<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">'weight_decay'<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span>\n            <span class=\"token punctuation\">{<!-- --><\/span><span class=\"token string\">'params'<\/span><span class=\"token punctuation\">:<\/span> get_parameters_bn<span class=\"token punctuation\">(<\/span>net<span class=\"token punctuation\">.<\/span>model<span class=\"token punctuation\">,<\/span> <span class=\"token string\">'weight'<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">'weight_decay'<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span>\n            <span class=\"token punctuation\">{<!-- --><\/span><span class=\"token string\">'params'<\/span><span class=\"token punctuation\">:<\/span> get_parameters_bn<span class=\"token punctuation\">(<\/span>net<span class=\"token punctuation\">.<\/span>model<span class=\"token punctuation\">,<\/span> <span class=\"token string\">'bias'<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">'lr'<\/span><span class=\"token punctuation\">:<\/span> self<span class=\"token punctuation\">.<\/span>base_lr <span class=\"token operator\">*<\/span> <span class=\"token number\">2<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">'weight_decay'<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span>\n            <span class=\"token punctuation\">{<!-- --><\/span><span class=\"token string\">'params'<\/span><span class=\"token punctuation\">:<\/span> get_parameters_conv<span class=\"token punctuation\">(<\/span>net<span class=\"token punctuation\">.<\/span>cpm<span class=\"token punctuation\">,<\/span> <span class=\"token string\">'weight'<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">'lr'<\/span><span class=\"token punctuation\">:<\/span> self<span class=\"token punctuation\">.<\/span>base_lr<span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span>\n            <span class=\"token punctuation\">{<!-- --><\/span><span class=\"token string\">'params'<\/span><span class=\"token punctuation\">:<\/span> get_parameters_conv<span class=\"token punctuation\">(<\/span>net<span class=\"token punctuation\">.<\/span>cpm<span class=\"token punctuation\">,<\/span> <span class=\"token string\">'bias'<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">'lr'<\/span><span class=\"token punctuation\">:<\/span> self<span class=\"token punctuation\">.<\/span>base_lr <span class=\"token operator\">*<\/span> <span class=\"token number\">2<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">'weight_decay'<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span>\n            <span class=\"token punctuation\">{<!-- --><\/span><span class=\"token string\">'params'<\/span><span class=\"token punctuation\">:<\/span> get_parameters_conv_depthwise<span class=\"token punctuation\">(<\/span>net<span class=\"token punctuation\">.<\/span>cpm<span class=\"token punctuation\">,<\/span> <span class=\"token string\">'weight'<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">'weight_decay'<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span>\n            <span class=\"token punctuation\">{<!-- --><\/span><span class=\"token string\">'params'<\/span><span class=\"token punctuation\">:<\/span> get_parameters_conv<span class=\"token punctuation\">(<\/span>net<span class=\"token punctuation\">.<\/span>initial_stage<span class=\"token punctuation\">,<\/span> <span class=\"token string\">'weight'<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">'lr'<\/span><span class=\"token punctuation\">:<\/span> self<span class=\"token punctuation\">.<\/span>base_lr<span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span>\n            <span class=\"token punctuation\">{<!-- --><\/span><span class=\"token string\">'params'<\/span><span class=\"token punctuation\">:<\/span> get_parameters_conv<span class=\"token punctuation\">(<\/span>net<span class=\"token punctuation\">.<\/span>initial_stage<span class=\"token punctuation\">,<\/span> <span class=\"token string\">'bias'<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">'lr'<\/span><span class=\"token punctuation\">:<\/span> self<span class=\"token punctuation\">.<\/span>base_lr <span class=\"token operator\">*<\/span> <span class=\"token number\">2<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">'weight_decay'<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span>\n            <span class=\"token punctuation\">{<!-- --><\/span><span class=\"token string\">'params'<\/span><span class=\"token punctuation\">:<\/span> get_parameters_conv<span class=\"token punctuation\">(<\/span>net<span class=\"token punctuation\">.<\/span>refinement_stages<span class=\"token punctuation\">,<\/span> <span class=\"token string\">'weight'<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">'lr'<\/span><span class=\"token punctuation\">:<\/span> self<span class=\"token punctuation\">.<\/span>base_lr <span class=\"token operator\">*<\/span> <span class=\"token number\">4<\/span><span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span>\n            <span class=\"token punctuation\">{<!-- --><\/span><span class=\"token string\">'params'<\/span><span class=\"token punctuation\">:<\/span> get_parameters_conv<span class=\"token punctuation\">(<\/span>net<span class=\"token punctuation\">.<\/span>refinement_stages<span class=\"token punctuation\">,<\/span> <span class=\"token string\">'bias'<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">'lr'<\/span><span class=\"token punctuation\">:<\/span> self<span class=\"token punctuation\">.<\/span>base_lr <span class=\"token operator\">*<\/span> <span class=\"token number\">8<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">'weight_decay'<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span>\n            <span class=\"token punctuation\">{<!-- --><\/span><span class=\"token string\">'params'<\/span><span class=\"token punctuation\">:<\/span> get_parameters_bn<span class=\"token punctuation\">(<\/span>net<span class=\"token punctuation\">.<\/span>refinement_stages<span class=\"token punctuation\">,<\/span> <span class=\"token string\">'weight'<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">'weight_decay'<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span>\n            <span class=\"token punctuation\">{<!-- --><\/span><span class=\"token string\">'params'<\/span><span class=\"token punctuation\">:<\/span> get_parameters_bn<span class=\"token punctuation\">(<\/span>net<span class=\"token punctuation\">.<\/span>refinement_stages<span class=\"token punctuation\">,<\/span> <span class=\"token string\">'bias'<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">'lr'<\/span><span class=\"token punctuation\">:<\/span> self<span class=\"token punctuation\">.<\/span>base_lr <span class=\"token operator\">*<\/span> <span class=\"token number\">2<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">'weight_decay'<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span>\n        <span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">,<\/span> lr<span class=\"token operator\">=<\/span>self<span class=\"token punctuation\">.<\/span>base_lr<span class=\"token punctuation\">,<\/span> weight_decay<span class=\"token operator\">=<\/span><span class=\"token number\">5e-4<\/span><span class=\"token punctuation\">)<\/span>\n\n        num_iter <span class=\"token operator\">=<\/span> <span class=\"token number\">0<\/span>\n        current_epoch <span class=\"token operator\">=<\/span> <span class=\"token number\">0<\/span>\n        drop_after_epoch <span class=\"token operator\">=<\/span> <span class=\"token punctuation\">[<\/span><span class=\"token number\">100<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">200<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">260<\/span><span class=\"token punctuation\">]<\/span>\n        scheduler <span class=\"token operator\">=<\/span> optim<span class=\"token punctuation\">.<\/span>lr_scheduler<span class=\"token punctuation\">.<\/span>MultiStepLR<span class=\"token punctuation\">(<\/span>optimizer<span class=\"token punctuation\">,<\/span> milestones<span class=\"token operator\">=<\/span>drop_after_epoch<span class=\"token punctuation\">,<\/span> gamma<span class=\"token operator\">=<\/span><span class=\"token number\">0.333<\/span><span class=\"token punctuation\">)<\/span>\n        <span class=\"token keyword\">if<\/span> self<span class=\"token punctuation\">.<\/span>checkpoint_path<span class=\"token punctuation\">:<\/span>\n            checkpoint <span class=\"token operator\">=<\/span> torch<span class=\"token punctuation\">.<\/span>load<span class=\"token punctuation\">(<\/span>self<span class=\"token punctuation\">.<\/span>checkpoint_path<span class=\"token punctuation\">)<\/span>\n\n            <span class=\"token keyword\">if<\/span> self<span class=\"token punctuation\">.<\/span>from_mobilenet<span class=\"token punctuation\">:<\/span>\n                load_from_mobilenet<span class=\"token punctuation\">(<\/span>net<span class=\"token punctuation\">,<\/span> checkpoint<span class=\"token punctuation\">)<\/span>\n            <span class=\"token keyword\">else<\/span><span class=\"token punctuation\">:<\/span>\n                load_state<span class=\"token punctuation\">(<\/span>net<span class=\"token punctuation\">,<\/span> checkpoint<span class=\"token punctuation\">)<\/span>\n                <span class=\"token keyword\">if<\/span> <span class=\"token keyword\">not<\/span> self<span class=\"token punctuation\">.<\/span>weights_only<span class=\"token punctuation\">:<\/span>\n                    optimizer<span class=\"token punctuation\">.<\/span>load_state_dict<span class=\"token punctuation\">(<\/span>checkpoint<span class=\"token punctuation\">[<\/span><span class=\"token string\">'optimizer'<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">)<\/span>\n                    scheduler<span class=\"token punctuation\">.<\/span>load_state_dict<span class=\"token punctuation\">(<\/span>checkpoint<span class=\"token punctuation\">[<\/span><span class=\"token string\">'scheduler'<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">)<\/span>\n                    num_iter <span class=\"token operator\">=<\/span> checkpoint<span class=\"token punctuation\">[<\/span><span class=\"token string\">'iter'<\/span><span class=\"token punctuation\">]<\/span>\n                    current_epoch <span class=\"token operator\">=<\/span> checkpoint<span class=\"token punctuation\">[<\/span><span class=\"token string\">'current_epoch'<\/span><span class=\"token punctuation\">]<\/span>\n\n        net <span class=\"token operator\">=<\/span> DataParallel<span class=\"token punctuation\">(<\/span>net<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">.<\/span>cuda<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span>\n        net<span class=\"token punctuation\">.<\/span>train<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span>\n        <span class=\"token keyword\">for<\/span> epochId <span class=\"token keyword\">in<\/span> <span class=\"token builtin\">range<\/span><span class=\"token punctuation\">(<\/span>current_epoch<span class=\"token punctuation\">,<\/span> <span class=\"token number\">280<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span>\n            scheduler<span class=\"token punctuation\">.<\/span>step<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span>\n            total_losses <span class=\"token operator\">=<\/span> <span class=\"token punctuation\">[<\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">*<\/span> <span class=\"token punctuation\">(<\/span>self<span class=\"token punctuation\">.<\/span>num_refinement_stages <span class=\"token operator\">+<\/span> <span class=\"token number\">1<\/span><span class=\"token punctuation\">)<\/span>  <span class=\"token comment\"># heatmaps loss, paf loss per stage<\/span>\n            batch_per_iter_idx <span class=\"token operator\">=<\/span> <span class=\"token number\">0<\/span>\n            <span class=\"token keyword\">for<\/span> batch_data <span class=\"token keyword\">in<\/span> train_loader<span class=\"token punctuation\">:<\/span>\n                <span class=\"token keyword\">if<\/span> batch_per_iter_idx <span class=\"token operator\">==<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">:<\/span>\n                    optimizer<span class=\"token punctuation\">.<\/span>zero_grad<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span>\n\n                images <span class=\"token operator\">=<\/span> batch_data<span class=\"token punctuation\">[<\/span><span class=\"token string\">'image'<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">.<\/span>cuda<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span>\n                keypoint_masks <span class=\"token operator\">=<\/span> batch_data<span class=\"token punctuation\">[<\/span><span class=\"token string\">'keypoint_mask'<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">.<\/span>cuda<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span>\n                paf_masks <span class=\"token operator\">=<\/span> batch_data<span class=\"token punctuation\">[<\/span><span class=\"token string\">'paf_mask'<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">.<\/span>cuda<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span>\n                keypoint_maps <span class=\"token operator\">=<\/span> batch_data<span class=\"token punctuation\">[<\/span><span class=\"token string\">'keypoint_maps'<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">.<\/span>cuda<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span>\n                paf_maps <span class=\"token operator\">=<\/span> batch_data<span class=\"token punctuation\">[<\/span><span class=\"token string\">'paf_maps'<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">.<\/span>cuda<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span>\n\n                stages_output <span class=\"token operator\">=<\/span> net<span class=\"token punctuation\">(<\/span>images<span class=\"token punctuation\">)<\/span>\n\n                losses <span class=\"token operator\">=<\/span> <span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">]<\/span>\n                <span class=\"token keyword\">for<\/span> loss_idx <span class=\"token keyword\">in<\/span> <span class=\"token builtin\">range<\/span><span class=\"token punctuation\">(<\/span><span class=\"token builtin\">len<\/span><span class=\"token punctuation\">(<\/span>total_losses<span class=\"token punctuation\">)<\/span> <span class=\"token operator\">\/\/<\/span> <span class=\"token number\">2<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span>\n                    losses<span class=\"token punctuation\">.<\/span>append<span class=\"token punctuation\">(<\/span>l2_loss<span class=\"token punctuation\">(<\/span>stages_output<span class=\"token punctuation\">[<\/span>loss_idx <span class=\"token operator\">*<\/span> <span class=\"token number\">2<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">,<\/span> keypoint_maps<span class=\"token punctuation\">,<\/span> keypoint_masks<span class=\"token punctuation\">,<\/span> images<span class=\"token punctuation\">.<\/span>shape<span class=\"token punctuation\">[<\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>\n                    losses<span class=\"token punctuation\">.<\/span>append<span class=\"token punctuation\">(<\/span>l2_loss<span class=\"token punctuation\">(<\/span>stages_output<span class=\"token punctuation\">[<\/span>loss_idx <span class=\"token operator\">*<\/span> <span class=\"token number\">2<\/span> <span class=\"token operator\">+<\/span> <span class=\"token number\">1<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">,<\/span> paf_maps<span class=\"token punctuation\">,<\/span> paf_masks<span class=\"token punctuation\">,<\/span> images<span class=\"token punctuation\">.<\/span>shape<span class=\"token punctuation\">[<\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>\n                    total_losses<span class=\"token punctuation\">[<\/span>loss_idx <span class=\"token operator\">*<\/span> <span class=\"token number\">2<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">+=<\/span> losses<span class=\"token punctuation\">[<\/span><span class=\"token operator\">-<\/span><span class=\"token number\">2<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">.<\/span>item<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">\/<\/span> self<span class=\"token punctuation\">.<\/span>batches_per_iter\n                    total_losses<span class=\"token punctuation\">[<\/span>loss_idx <span class=\"token operator\">*<\/span> <span class=\"token number\">2<\/span> <span class=\"token operator\">+<\/span> <span class=\"token number\">1<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">+=<\/span> losses<span class=\"token punctuation\">[<\/span><span class=\"token operator\">-<\/span><span class=\"token number\">1<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">.<\/span>item<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">\/<\/span> self<span class=\"token punctuation\">.<\/span>batches_per_iter\n\n                loss <span class=\"token operator\">=<\/span> losses<span class=\"token punctuation\">[<\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">]<\/span>\n                <span class=\"token keyword\">for<\/span> loss_idx <span class=\"token keyword\">in<\/span> <span class=\"token builtin\">range<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">1<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token builtin\">len<\/span><span class=\"token punctuation\">(<\/span>losses<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span>\n                    loss <span class=\"token operator\">+=<\/span> losses<span class=\"token punctuation\">[<\/span>loss_idx<span class=\"token punctuation\">]<\/span>\n                loss <span class=\"token operator\">\/=<\/span> self<span class=\"token punctuation\">.<\/span>batches_per_iter\n                loss<span class=\"token punctuation\">.<\/span>backward<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span>\n                batch_per_iter_idx <span class=\"token operator\">+=<\/span> <span class=\"token number\">1<\/span>\n                <span class=\"token keyword\">if<\/span> batch_per_iter_idx <span class=\"token operator\">==<\/span> self<span class=\"token punctuation\">.<\/span>batches_per_iter<span class=\"token punctuation\">:<\/span>\n                    optimizer<span class=\"token punctuation\">.<\/span>step<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span>\n                    batch_per_iter_idx <span class=\"token operator\">=<\/span> <span class=\"token number\">0<\/span>\n                    num_iter <span class=\"token operator\">+=<\/span> <span class=\"token number\">1<\/span>\n                <span class=\"token keyword\">else<\/span><span class=\"token punctuation\">:<\/span>\n                    <span class=\"token keyword\">continue<\/span>\n\n                <span class=\"token keyword\">if<\/span> num_iter <span class=\"token operator\">%<\/span> self<span class=\"token punctuation\">.<\/span>log_after <span class=\"token operator\">==<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">:<\/span>\n                    <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">'Iter: {}'<\/span><span class=\"token punctuation\">.<\/span><span class=\"token builtin\">format<\/span><span class=\"token punctuation\">(<\/span>num_iter<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>\n                    <span class=\"token keyword\">for<\/span> loss_idx <span class=\"token keyword\">in<\/span> <span class=\"token builtin\">range<\/span><span class=\"token punctuation\">(<\/span><span class=\"token builtin\">len<\/span><span class=\"token punctuation\">(<\/span>total_losses<span class=\"token punctuation\">)<\/span> <span class=\"token operator\">\/\/<\/span> <span class=\"token number\">2<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span>\n                        <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">'\\n'<\/span><span class=\"token punctuation\">.<\/span>join<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">[<\/span><span class=\"token string\">'stage{}_pafs_loss:     {}'<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">'stage{}_heatmaps_loss: {}'<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">.<\/span><span class=\"token builtin\">format<\/span><span class=\"token punctuation\">(<\/span>\n                            loss_idx <span class=\"token operator\">+<\/span> <span class=\"token number\">1<\/span><span class=\"token punctuation\">,<\/span> total_losses<span class=\"token punctuation\">[<\/span>loss_idx <span class=\"token operator\">*<\/span> <span class=\"token number\">2<\/span> <span class=\"token operator\">+<\/span> <span class=\"token number\">1<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">\/<\/span> self<span class=\"token punctuation\">.<\/span>log_after<span class=\"token punctuation\">,<\/span>\n                            loss_idx <span class=\"token operator\">+<\/span> <span class=\"token number\">1<\/span><span class=\"token punctuation\">,<\/span> total_losses<span class=\"token punctuation\">[<\/span>loss_idx <span class=\"token operator\">*<\/span> <span class=\"token number\">2<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">\/<\/span> self<span class=\"token punctuation\">.<\/span>log_after<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>\n                    <span class=\"token keyword\">for<\/span> loss_idx <span class=\"token keyword\">in<\/span> <span class=\"token builtin\">range<\/span><span class=\"token punctuation\">(<\/span><span class=\"token builtin\">len<\/span><span class=\"token punctuation\">(<\/span>total_losses<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span>\n                        total_losses<span class=\"token punctuation\">[<\/span>loss_idx<span class=\"token punctuation\">]<\/span> <span class=\"token operator\">=<\/span> <span class=\"token number\">0<\/span>\n                <span class=\"token keyword\">if<\/span> num_iter <span class=\"token operator\">%<\/span> self<span class=\"token punctuation\">.<\/span>checkpoint_after <span class=\"token operator\">==<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">:<\/span>\n                    snapshot_name <span class=\"token operator\">=<\/span> <span class=\"token string\">'{}\/checkpoint_iter_{}.pth'<\/span><span class=\"token punctuation\">.<\/span><span class=\"token builtin\">format<\/span><span class=\"token punctuation\">(<\/span>self<span class=\"token punctuation\">.<\/span>checkpoints_folder<span class=\"token punctuation\">,<\/span> num_iter<span class=\"token punctuation\">)<\/span>\n                    torch<span class=\"token punctuation\">.<\/span>save<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">{<!-- --><\/span><span class=\"token string\">'state_dict'<\/span><span class=\"token punctuation\">:<\/span> net<span class=\"token punctuation\">.<\/span>module<span class=\"token punctuation\">.<\/span>state_dict<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">,<\/span>\n                                <span class=\"token string\">'optimizer'<\/span><span class=\"token punctuation\">:<\/span> optimizer<span class=\"token punctuation\">.<\/span>state_dict<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">,<\/span>\n                                <span class=\"token string\">'scheduler'<\/span><span class=\"token punctuation\">:<\/span> scheduler<span class=\"token punctuation\">.<\/span>state_dict<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">,<\/span>\n                                <span class=\"token string\">'iter'<\/span><span class=\"token punctuation\">:<\/span> num_iter<span class=\"token punctuation\">,<\/span>\n                                <span class=\"token string\">'current_epoch'<\/span><span class=\"token punctuation\">:<\/span> epochId<span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span>\n                               snapshot_name<span class=\"token punctuation\">)<\/span>\n                <span class=\"token keyword\">if<\/span> num_iter <span class=\"token operator\">%<\/span> self<span class=\"token punctuation\">.<\/span>val_after <span class=\"token operator\">==<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">:<\/span>\n                    <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">'Validation...'<\/span><span class=\"token punctuation\">)<\/span>\n                    evaluate<span class=\"token punctuation\">(<\/span>self<span class=\"token punctuation\">.<\/span>val_labels<span class=\"token punctuation\">,<\/span> self<span class=\"token punctuation\">.<\/span>val_output_name<span class=\"token punctuation\">,<\/span> self<span class=\"token punctuation\">.<\/span>val_images_folder<span class=\"token punctuation\">,<\/span> net<span class=\"token punctuation\">)<\/span>\n                    net<span class=\"token punctuation\">.<\/span>train<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span>\n\n\n<\/code><\/pre>\n<p>\n   \u8fd9\u4e2a\u7a0b\u5e8f\u6587\u4ef6\u662f\u4e00\u4e2a\u7528\u4e8e\u8bad\u7ec3\u59ff\u52bf\u4f30\u8ba1\u6a21\u578b\u7684\u811a\u672c\u3002\u5b83\u4f7f\u7528\u4e86COCO\u6570\u636e\u96c6\u3002\n  <\/p>\n<p>\n   \u8be5\u811a\u672c\u7684\u4e3b\u8981\u529f\u80fd\u5305\u62ec\uff1a\n  <\/p>\n<ol>\n<li>\n    \u5bfc\u5165\u5fc5\u8981\u7684\u5e93\u548c\u6a21\u5757\n   <\/li>\n<li>\n    \u5b9a\u4e49\u8bad\u7ec3\u51fd\u6570train()\n   <\/li>\n<li>\n    \u521b\u5efa\u6570\u636e\u96c6\u548c\u6570\u636e\u52a0\u8f7d\u5668\n   <\/li>\n<li>\n    \u5b9a\u4e49\u4f18\u5316\u5668\u548c\u5b66\u4e60\u7387\u8c03\u5ea6\u5668\n   <\/li>\n<li>\n    \u52a0\u8f7d\u9884\u8bad\u7ec3\u6a21\u578b\u6216\u4ece\u4e4b\u524d\u7684\u8bad\u7ec3\u4e2d\u6062\u590d\n   <\/li>\n<li>\n    \u5f00\u59cb\u8bad\u7ec3\u5faa\u73af\uff0c\u6bcf\u4e2aepoch\u66f4\u65b0\u5b66\u4e60\u7387\uff0c\u8ba1\u7b97\u635f\u5931\u5e76\u8fdb\u884c\u53cd\u5411\u4f20\u64ad\n   <\/li>\n<li>\n    \u5b9a\u671f\u6253\u5370\u8bad\u7ec3\u635f\u5931\u548c\u4fdd\u5b58\u6a21\u578b\u68c0\u67e5\u70b9\n   <\/li>\n<li>\n    \u5b9a\u671f\u8fdb\u884c\u9a8c\u8bc1\uff0c\u5e76\u8bc4\u4f30\u6a21\u578b\u6027\u80fd\n   <\/li>\n<\/ol>\n<p>\n   \u8be5\u811a\u672c\u8fd8\u5305\u542b\u4e86\u4e00\u4e9b\u547d\u4ee4\u884c\u53c2\u6570\uff0c\u7528\u4e8e\u6307\u5b9a\u8bad\u7ec3\u548c\u9a8c\u8bc1\u6570\u636e\u7684\u8def\u5f84\u3001\u8d85\u53c2\u6570\u8bbe\u7f6e\u4ee5\u53ca\u5176\u4ed6\u8bad\u7ec3\u76f8\u5173\u7684\u9009\u9879\u3002\n  <\/p>\n<p>\n   \u603b\u4e4b\uff0c\u8fd9\u4e2a\u7a0b\u5e8f\u6587\u4ef6\u662f\u4e00\u4e2a\u5b8c\u6574\u7684\u59ff\u52bf\u4f30\u8ba1\u6a21\u578b\u8bad\u7ec3\u811a\u672c\uff0c\u53ef\u4ee5\u7528\u4e8e\u8bad\u7ec3\u6a21\u578b\u5e76\u8bc4\u4f30\u5176\u6027\u80fd\u3002\n  <\/p>\n<h5>\n   <a id=\"54_uipy_344\"><br \/>\n   <\/a><br \/>\n   5.4 ui.py<br \/>\n  <\/h5>\n<p>\n   \u8be5\u7a0b\u5e8f\u6587\u4ef6\u662f\u4e00\u4e2a\u7528\u4e8e\u4eba\u4f53\u59ff\u52bf\u4f30\u8ba1\u7684Python\u7a0b\u5e8f\u3002\u5b83\u4f7f\u7528\u4e86OpenCV\u3001PyTorch\u7b49\u5e93\u6765\u5b9e\u73b0\u59ff\u52bf\u4f30\u8ba1\u529f\u80fd\u3002\u7a0b\u5e8f\u6587\u4ef6\u4e2d\u5b9a\u4e49\u4e86\u4e00\u4e9b\u7c7b\u548c\u51fd\u6570\uff0c\u5305\u62ec\u52a0\u8f7d\u6a21\u578b\u3001\u8bfb\u53d6\u56fe\u7247\u548c\u89c6\u9891\u3001\u8fdb\u884c\u9884\u6d4b\u7b49\u3002\u5b83\u8fd8\u5305\u542b\u4e86\u4e00\u4e9b\u7528\u4e8e\u7ed8\u5236\u59ff\u52bf\u548c\u5173\u952e\u70b9\u7684\u51fd\u6570\u548c\u7c7b\u3002\u8be5\u7a0b\u5e8f\u6587\u4ef6\u8fd8\u5305\u542b\u4e86\u4e00\u4e9b\u53c2\u6570\u548c\u547d\u4ee4\u884c\u53c2\u6570\u89e3\u6790\u7684\u4ee3\u7801\uff0c\u7528\u4e8e\u63a7\u5236\u7a0b\u5e8f\u7684\u8fd0\u884c\u65b9\u5f0f\u3002\u6700\u540e\uff0c\u7a0b\u5e8f\u6587\u4ef6\u4e2d\u8fd8\u5305\u542b\u4e86\u4e00\u4e9b\u7528\u4e8e\u6d4b\u8bd5\u548c\u6f14\u793a\u7684\u4ee3\u7801\uff0c\u7528\u4e8e\u5c55\u793a\u59ff\u52bf\u4f30\u8ba1\u7684\u7ed3\u679c\u3002\n  <\/p>\n<h5>\n   <a id=\"55_datasetscocopy_351\"><br \/>\n   <\/a><br \/>\n   5.5 datasets\\coco.py<br \/>\n  <\/h5>\n<pre><code class=\"prism language-python\">\nBODY_PARTS_KPT_IDS <span class=\"token operator\">=<\/span> <span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">[<\/span><span class=\"token number\">1<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">8<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token punctuation\">[<\/span><span class=\"token number\">8<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">9<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token punctuation\">[<\/span><span class=\"token number\">9<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">10<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token punctuation\">[<\/span><span class=\"token number\">1<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">11<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token punctuation\">[<\/span><span class=\"token number\">11<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">12<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token punctuation\">[<\/span><span class=\"token number\">12<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">13<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token punctuation\">[<\/span><span class=\"token number\">1<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">2<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token punctuation\">[<\/span><span class=\"token number\">2<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">3<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token punctuation\">[<\/span><span class=\"token number\">3<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">4<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token punctuation\">[<\/span><span class=\"token number\">2<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">16<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">,<\/span>\n                      <span class=\"token punctuation\">[<\/span><span class=\"token number\">1<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">5<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token punctuation\">[<\/span><span class=\"token number\">5<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">6<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token punctuation\">[<\/span><span class=\"token number\">6<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">7<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token punctuation\">[<\/span><span class=\"token number\">5<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">17<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token punctuation\">[<\/span><span class=\"token number\">1<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token punctuation\">[<\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">14<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token punctuation\">[<\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">15<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token punctuation\">[<\/span><span class=\"token number\">14<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">16<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token punctuation\">[<\/span><span class=\"token number\">15<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">17<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">]<\/span>\n\n\n<span class=\"token keyword\">class<\/span> <span class=\"token class-name\">CocoTrainDataset<\/span><span class=\"token punctuation\">(<\/span>Dataset<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span>\n    <span class=\"token keyword\">def<\/span> <span class=\"token function\">__init__<\/span><span class=\"token punctuation\">(<\/span>self<span class=\"token punctuation\">,<\/span> labels<span class=\"token punctuation\">,<\/span> images_folder<span class=\"token punctuation\">,<\/span> stride<span class=\"token punctuation\">,<\/span> sigma<span class=\"token punctuation\">,<\/span> paf_thickness<span class=\"token punctuation\">,<\/span> transform<span class=\"token operator\">=<\/span><span class=\"token boolean\">None<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span>\n        <span class=\"token builtin\">super<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">.<\/span>__init__<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span>\n        self<span class=\"token punctuation\">.<\/span>_images_folder <span class=\"token operator\">=<\/span> images_folder\n        self<span class=\"token punctuation\">.<\/span>_stride <span class=\"token operator\">=<\/span> stride\n        self<span class=\"token punctuation\">.<\/span>_sigma <span class=\"token operator\">=<\/span> sigma\n        self<span class=\"token punctuation\">.<\/span>_paf_thickness <span class=\"token operator\">=<\/span> paf_thickness\n        self<span class=\"token punctuation\">.<\/span>_transform <span class=\"token operator\">=<\/span> transform\n        <span class=\"token keyword\">with<\/span> <span class=\"token builtin\">open<\/span><span class=\"token punctuation\">(<\/span>labels<span class=\"token punctuation\">,<\/span> <span class=\"token string\">'rb'<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token keyword\">as<\/span> f<span class=\"token punctuation\">:<\/span>\n            self<span class=\"token punctuation\">.<\/span>_labels <span class=\"token operator\">=<\/span> pickle<span class=\"token punctuation\">.<\/span>load<span class=\"token punctuation\">(<\/span>f<span class=\"token punctuation\">)<\/span>\n\n    <span class=\"token keyword\">def<\/span> <span class=\"token function\">__getitem__<\/span><span class=\"token punctuation\">(<\/span>self<span class=\"token punctuation\">,<\/span> idx<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span>\n        label <span class=\"token operator\">=<\/span> copy<span class=\"token punctuation\">.<\/span>deepcopy<span class=\"token punctuation\">(<\/span>self<span class=\"token punctuation\">.<\/span>_labels<span class=\"token punctuation\">[<\/span>idx<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">)<\/span>  <span class=\"token comment\"># label modified in transform<\/span>\n        image <span class=\"token operator\">=<\/span> cv2<span class=\"token punctuation\">.<\/span>imread<span class=\"token punctuation\">(<\/span>os<span class=\"token punctuation\">.<\/span>path<span class=\"token punctuation\">.<\/span>join<span class=\"token punctuation\">(<\/span>self<span class=\"token punctuation\">.<\/span>_images_folder<span class=\"token punctuation\">,<\/span> label<span class=\"token punctuation\">[<\/span><span class=\"token string\">'img_paths'<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">,<\/span> cv2<span class=\"token punctuation\">.<\/span>IMREAD_COLOR<span class=\"token punctuation\">)<\/span>\n        mask <span class=\"token operator\">=<\/span> np<span class=\"token punctuation\">.<\/span>ones<span class=\"token punctuation\">(<\/span>shape<span class=\"token operator\">=<\/span><span class=\"token punctuation\">(<\/span>label<span class=\"token punctuation\">[<\/span><span class=\"token string\">'img_height'<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">,<\/span> label<span class=\"token punctuation\">[<\/span><span class=\"token string\">'img_width'<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">,<\/span> dtype<span class=\"token operator\">=<\/span>np<span class=\"token punctuation\">.<\/span>float32<span class=\"token punctuation\">)<\/span>\n        mask <span class=\"token operator\">=<\/span> get_mask<span class=\"token punctuation\">(<\/span>label<span class=\"token punctuation\">[<\/span><span class=\"token string\">'segmentations'<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">,<\/span> mask<span class=\"token punctuation\">)<\/span>\n        sample <span class=\"token operator\">=<\/span> <span class=\"token punctuation\">{<!-- --><\/span>\n            <span class=\"token string\">'label'<\/span><span class=\"token punctuation\">:<\/span> label<span class=\"token punctuation\">,<\/span>\n            <span class=\"token string\">'image'<\/span><span class=\"token punctuation\">:<\/span> image<span class=\"token punctuation\">,<\/span>\n            <span class=\"token string\">'mask'<\/span><span class=\"token punctuation\">:<\/span> mask\n        <span class=\"token punctuation\">}<\/span>\n        <span class=\"token keyword\">if<\/span> self<span class=\"token punctuation\">.<\/span>_transform<span class=\"token punctuation\">:<\/span>\n            sample <span class=\"token operator\">=<\/span> self<span class=\"token punctuation\">.<\/span>_transform<span class=\"token punctuation\">(<\/span>sample<span class=\"token punctuation\">)<\/span>\n\n        mask <span class=\"token operator\">=<\/span> cv2<span class=\"token punctuation\">.<\/span>resize<span class=\"token punctuation\">(<\/span>sample<span class=\"token punctuation\">[<\/span><span class=\"token string\">'mask'<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">,<\/span> dsize<span class=\"token operator\">=<\/span><span class=\"token boolean\">None<\/span><span class=\"token punctuation\">,<\/span> fx<span class=\"token operator\">=<\/span><span class=\"token number\">1<\/span><span class=\"token operator\">\/<\/span>self<span class=\"token punctuation\">.<\/span>_stride<span class=\"token punctuation\">,<\/span> fy<span class=\"token operator\">=<\/span><span class=\"token number\">1<\/span><span class=\"token operator\">\/<\/span>self<span class=\"token punctuation\">.<\/span>_stride<span class=\"token punctuation\">,<\/span> interpolation<span class=\"token operator\">=<\/span>cv2<span class=\"token punctuation\">.<\/span>INTER_AREA<span class=\"token punctuation\">)<\/span>\n        keypoint_maps <span class=\"token operator\">=<\/span> self<span class=\"token punctuation\">.<\/span>_generate_keypoint_maps<span class=\"token punctuation\">(<\/span>sample<span class=\"token punctuation\">)<\/span>\n        sample<span class=\"token punctuation\">[<\/span><span class=\"token string\">'keypoint_maps'<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">=<\/span> keypoint_maps\n        keypoint_mask <span class=\"token operator\">=<\/span> np<span class=\"token punctuation\">.<\/span>zeros<span class=\"token punctuation\">(<\/span>shape<span class=\"token operator\">=<\/span>keypoint_maps<span class=\"token punctuation\">.<\/span>shape<span class=\"token punctuation\">,<\/span> dtype<span class=\"token operator\">=<\/span>np<span class=\"token punctuation\">.<\/span>float32<span class=\"token punctuation\">)<\/span>\n        <span class=\"token keyword\">for<\/span> idx <span class=\"token keyword\">in<\/span> <span class=\"token builtin\">range<\/span><span class=\"token punctuation\">(<\/span>keypoint_mask<span class=\"token punctuation\">.<\/span>shape<span class=\"token punctuation\">[<\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span>\n            keypoint_mask<span class=\"token punctuation\">[<\/span>idx<span class=\"token punctuation\">]<\/span> <span class=\"token operator\">=<\/span> mask\n        sample<span class=\"token punctuation\">[<\/span><span class=\"token string\">'keypoint_mask'<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">=<\/span> keypoint_mask\n\n        paf_maps <span class=\"token operator\">=<\/span> self<span class=\"token punctuation\">.<\/span>_generate_paf_maps<span class=\"token punctuation\">(<\/span>sample<span class=\"token punctuation\">)<\/span>\n        sample<span class=\"token punctuation\">[<\/span><span class=\"token string\">'paf_maps'<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">=<\/span> paf_maps\n        paf_mask <span class=\"token operator\">=<\/span> np<span class=\"token punctuation\">.<\/span>zeros<span class=\"token punctuation\">(<\/span>shape<span class=\"token operator\">=<\/span>paf_maps<span class=\"token punctuation\">.<\/span>shape<span class=\"token punctuation\">,<\/span> dtype<span class=\"token operator\">=<\/span>np<span class=\"token punctuation\">.<\/span>float32<span class=\"token punctuation\">)<\/span>\n        <span class=\"token keyword\">for<\/span> idx <span class=\"token keyword\">in<\/span> <span class=\"token builtin\">range<\/span><span class=\"token punctuation\">(<\/span>paf_mask<span class=\"token punctuation\">.<\/span>shape<span class=\"token punctuation\">[<\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span>\n            paf_mask<span class=\"token punctuation\">[<\/span>idx<span class=\"token punctuation\">]<\/span> <span class=\"token operator\">=<\/span> mask\n        sample<span class=\"token punctuation\">[<\/span><span class=\"token string\">'paf_mask'<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">=<\/span> paf_mask\n\n        image <span class=\"token operator\">=<\/span> sample<span class=\"token punctuation\">[<\/span><span class=\"token string\">'image'<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">.<\/span>astype<span class=\"token punctuation\">(<\/span>np<span class=\"token punctuation\">.<\/span>float32<span class=\"token punctuation\">)<\/span>\n        image <span class=\"token operator\">=<\/span> <span class=\"token punctuation\">(<\/span>image <span class=\"token operator\">-<\/span> <span class=\"token number\">128<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">\/<\/span> <span class=\"token number\">256<\/span>\n        sample<span class=\"token punctuation\">[<\/span><span class=\"token string\">'image'<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">=<\/span> image<span class=\"token punctuation\">.<\/span>transpose<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">2<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">1<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>\n        <span class=\"token keyword\">del<\/span> sample<span class=\"token punctuation\">[<\/span><span class=\"token string\">'label'<\/span><span class=\"token punctuation\">]<\/span>\n        <span class=\"token keyword\">return<\/span> sample\n\n    <span class=\"token keyword\">def<\/span> <span class=\"token function\">__len__<\/span><span class=\"token punctuation\">(<\/span>self<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span>\n        <span class=\"token keyword\">return<\/span> <span class=\"token builtin\">len<\/span><span class=\"token punctuation\">(<\/span>self<span class=\"token punctuation\">.<\/span>_labels<span class=\"token punctuation\">)<\/span>\n\n    <span class=\"token keyword\">def<\/span> <span class=\"token function\">_generate_keypoint_maps<\/span><span class=\"token punctuation\">(<\/span>self<span class=\"token punctuation\">,<\/span> sample<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span>\n        n_keypoints <span class=\"token operator\">=<\/span> <span class=\"token number\">18<\/span>\n        n_rows<span class=\"token punctuation\">,<\/span> n_cols<span class=\"token punctuation\">,<\/span> _ <span class=\"token operator\">=<\/span> sample<span class=\"token punctuation\">[<\/span><span class=\"token string\">'image'<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">.<\/span>shape\n        keypoint_maps <span class=\"token operator\">=<\/span> np<span class=\"token punctuation\">.<\/span>zeros<span class=\"token punctuation\">(<\/span>shape<span class=\"token operator\">=<\/span><span class=\"token punctuation\">(<\/span>n_keypoints <span class=\"token operator\">+<\/span> <span class=\"token number\">1<\/span><span class=\"token punctuation\">,<\/span>\n                                        n_rows <span class=\"token operator\">\/\/<\/span> self<span class=\"token punctuation\">.<\/span>_stride<span class=\"token punctuation\">,<\/span> n_cols <span class=\"token operator\">\/\/<\/span> self<span class=\"token punctuation\">.<\/span>_stride<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">,<\/span> dtype<span class=\"token operator\">=<\/span>np<span class=\"token punctuation\">.<\/span>float32<span class=\"token punctuation\">)<\/span>  <span class=\"token comment\"># +1 for bg<\/span>\n\n        label <span class=\"token operator\">=<\/span> sample<span class=\"token punctuation\">[<\/span><span class=\"token string\">'label'<\/span><span class=\"token punctuation\">]<\/span>\n        <span class=\"token keyword\">for<\/span> keypoint_idx <span class=\"token keyword\">in<\/span> <span class=\"token builtin\">range<\/span><span class=\"token punctuation\">(<\/span>n_keypoints<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span>\n            keypoint <span class=\"token operator\">=<\/span> label<span class=\"token punctuation\">[<\/span><span class=\"token string\">'keypoints'<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">[<\/span>keypoint_idx<span class=\"token punctuation\">]<\/span>\n            <span class=\"token keyword\">if<\/span> keypoint<span class=\"token punctuation\">[<\/span><span class=\"token number\">2<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&lt;=<\/span> <span class=\"token number\">1<\/span><span class=\"token punctuation\">:<\/span>\n                self<span class=\"token punctuation\">.<\/span>_add_gaussian<span class=\"token punctuation\">(<\/span>keypoint_maps<span class=\"token punctuation\">[<\/span>keypoint_idx<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">,<\/span> keypoint<span class=\"token punctuation\">[<\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">,<\/span> keypoint<span class=\"token punctuation\">[<\/span><span class=\"token number\">1<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">,<\/span> self<span class=\"token punctuation\">.<\/span>_stride<span class=\"token punctuation\">,<\/span> self<span class=\"token punctuation\">.<\/span>_sigma<span class=\"token punctuation\">)<\/span>\n            <span class=\"token keyword\">for<\/span> another_annotation <span class=\"token keyword\">in<\/span> label<span class=\"token punctuation\">[<\/span><span class=\"token string\">'processed_other_annotations'<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">:<\/span>\n                keypoint <span class=\"token operator\">=<\/span> another_annotation<span class=\"token punctuation\">[<\/span><span class=\"token string\">'keypoints'<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">[<\/span>keypoint_idx<span class=\"token punctuation\">]<\/span>\n                <span class=\"token keyword\">if<\/span> keypoint<span class=\"token punctuation\">[<\/span><span class=\"token number\">2<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&lt;=<\/span> <span class=\"token number\">1<\/span><span class=\"token punctuation\">:<\/span>\n                    self<span class=\"token punctuation\">.<\/span>_add_gaussian<span class=\"token punctuation\">(<\/span>keypoint_maps<span class=\"token punctuation\">[<\/span>keypoint_idx<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">,<\/span> keypoint<span class=\"token punctuation\">[<\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">,<\/span> keypoint<span class=\"token punctuation\">[<\/span><span class=\"token number\">1<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">,<\/span> self<span class=\"token punctuation\">.<\/span>_stride<span class=\"token punctuation\">,<\/span> self<span class=\"token punctuation\">.<\/span>_sigma<span class=\"token punctuation\">)<\/span>\n        keypoint_maps<span class=\"token punctuation\">[<\/span><span class=\"token operator\">-<\/span><span class=\"token number\">1<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">=<\/span> <span class=\"token number\">1<\/span> <span class=\"token operator\">-<\/span> keypoint_maps<span class=\"token punctuation\">.<\/span><span class=\"token builtin\">max<\/span><span class=\"token punctuation\">(<\/span>axis<span class=\"token operator\">=<\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">)<\/span>\n        <span class=\"token keyword\">return<\/span> keypoint_maps\n\n    <span class=\"token keyword\">def<\/span> <span class=\"token function\">_add_gaussian<\/span><span class=\"token punctuation\">(<\/span>self<span class=\"token punctuation\">,<\/span> keypoint_map<span class=\"token punctuation\">,<\/span> x<span class=\"token punctuation\">,<\/span> y<span class=\"token punctuation\">,<\/span> stride<span class=\"token punctuation\">,<\/span> sigma<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span>\n        n_sigma <span class=\"token operator\">=<\/span> <span class=\"token number\">4<\/span>\n        tl <span class=\"token operator\">=<\/span> <span class=\"token punctuation\">[<\/span><span class=\"token builtin\">int<\/span><span class=\"token punctuation\">(<\/span>x <span class=\"token operator\">-<\/span> n_sigma <span class=\"token operator\">*<\/span> sigma<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token builtin\">int<\/span><span class=\"token punctuation\">(<\/span>y <span class=\"token operator\">-<\/span> n_sigma <span class=\"token operator\">*<\/span> sigma<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">]<\/span>\n        tl<span class=\"token punctuation\">[<\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">=<\/span> <span class=\"token builtin\">max<\/span><span class=\"token punctuation\">(<\/span>tl<span class=\"token punctuation\">[<\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">)<\/span>\n        tl<span class=\"token punctuation\">[<\/span><span class=\"token number\">1<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">=<\/span> <span class=\"token builtin\">max<\/span><span class=\"token punctuation\">(<\/span>tl<span class=\"token punctuation\">[<\/span><span class=\"token number\">1<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">)<\/span>\n\n        br <span class=\"token operator\">=<\/span> <span class=\"token punctuation\">[<\/span><span class=\"token builtin\">int<\/span><span class=\"token punctuation\">(<\/span>x <span class=\"token operator\">+<\/span> n_sigma <span class=\"token operator\">*<\/span> sigma<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token builtin\">int<\/span><span class=\"token punctuation\">(<\/span>y <span class=\"token operator\">+<\/span> n_sigma <span class=\"token operator\">*<\/span> sigma<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">]<\/span>\n        map_h<span class=\"token punctuation\">,<\/span> map_w <span class=\"token operator\">=<\/span> keypoint_map<span class=\"token punctuation\">.<\/span>shape\n        br<span class=\"token punctuation\">[<\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">=<\/span> <span class=\"token builtin\">min<\/span><span class=\"token punctuation\">(<\/span>br<span class=\"token punctuation\">[<\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">,<\/span> map_w <span class=\"token operator\">*<\/span> stride<span class=\"token punctuation\">)<\/span>\n        br<span class=\"token punctuation\">[<\/span><span class=\"token number\">1<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">=<\/span> <span class=\"token builtin\">min<\/span><span class=\"token punctuation\">(<\/span>br<span class=\"token punctuation\">[<\/span><span class=\"token number\">1<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">,<\/span> map_h <span class=\"token operator\">*<\/span> stride<span class=\"token punctuation\">)<\/span>\n\n        shift <span class=\"token operator\">=<\/span> stride <span class=\"token operator\">\/<\/span> <span class=\"token number\">2<\/span> <span class=\"token operator\">-<\/span> <span class=\"token number\">0.5<\/span>\n        <span class=\"token keyword\">for<\/span> map_y <span class=\"token keyword\">in<\/span> <span class=\"token builtin\">range<\/span><span class=\"token punctuation\">(<\/span>tl<span class=\"token punctuation\">[<\/span><span class=\"token number\">1<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">\/\/<\/span> stride<span class=\"token punctuation\">,<\/span> br<span class=\"token punctuation\">[<\/span><span class=\"token number\">1<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">\/\/<\/span> stride<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span>\n            <span class=\"token keyword\">for<\/span> map_x <span class=\"token keyword\">in<\/span> <span class=\"token builtin\">range<\/span><span class=\"token punctuation\">(<\/span>tl<span class=\"token punctuation\">[<\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">\/\/<\/span> stride<span class=\"token punctuation\">,<\/span> br<span class=\"token punctuation\">[<\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">\/\/<\/span> stride<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span>\n                d2 <span class=\"token operator\">=<\/span> <span class=\"token punctuation\">(<\/span>map_x <span class=\"token operator\">*<\/span> stride <span class=\"token operator\">+<\/span> shift <span class=\"token operator\">-<\/span> x<span class=\"token punctuation\">)<\/span> <span class=\"token operator\">*<\/span> <span class=\"token punctuation\">(<\/span>map_x <span class=\"token operator\">*<\/span> stride <span class=\"token operator\">+<\/span> shift <span class=\"token operator\">-<\/span> x<span class=\"token punctuation\">)<\/span> <span class=\"token operator\">+<\/span> \\\n                    <span class=\"token punctuation\">(<\/span>map_y <span class=\"token operator\">*<\/span> stride <span class=\"token operator\">+<\/span> shift <span class=\"token operator\">-<\/span> y<span class=\"token punctuation\">)<\/span> <span class=\"token operator\">*<\/span> <span class=\"token punctuation\">(<\/span>map_y <span class=\"token operator\">*<\/span> stride <span class=\"token operator\">+<\/span> shift <span class=\"token operator\">-<\/span> y<span class=\"token punctuation\">)<\/span>\n                exponent <span class=\"token operator\">=<\/span> d2 <span class=\"token operator\">\/<\/span> <span class=\"token number\">2<\/span> <span class=\"token operator\">\/<\/span> sigma <span class=\"token operator\">\/<\/span> sigma\n                <span class=\"token keyword\">if<\/span> exponent <span class=\"token operator\">&gt;<\/span> <span class=\"token number\">4.6052<\/span><span class=\"token punctuation\">:<\/span>  <span class=\"token comment\"># threshold, ln(100), ~0.01<\/span>\n                    <span class=\"token keyword\">continue<\/span>\n                keypoint_map<span class=\"token punctuation\">[<\/span>map_y<span class=\"token punctuation\">,<\/span> map_x<span class=\"token punctuation\">]<\/span> <span class=\"token operator\">+=<\/span> math<span class=\"token punctuation\">.<\/span>exp<span class=\"token punctuation\">(<\/span><span class=\"token operator\">-<\/span>exponent<span class=\"token punctuation\">)<\/span>\n                <span class=\"token keyword\">if<\/span> keypoint_map<span class=\"token punctuation\">[<\/span>map_y<span class=\"token punctuation\">,<\/span> map_x<span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&gt;<\/span> <span class=\"token number\">1<\/span><span class=\"token punctuation\">:<\/span>\n                    keypoint_map<span class=\"token punctuation\">[<\/span>map_y<span class=\"token punctuation\">,<\/span> map_x<span class=\"token punctuation\">]<\/span> <span class=\"token operator\">=<\/span> <span class=\"token number\">1<\/span>\n\n    <span class=\"token keyword\">def<\/span> <span class=\"token function\">_generate_paf_maps<\/span><span class=\"token punctuation\">(<\/span>self<span class=\"token punctuation\">,<\/span> sample<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span>\n        n_pafs <span class=\"token operator\">=<\/span> <span class=\"token builtin\">len<\/span><span class=\"token punctuation\">(<\/span>BODY_PARTS_KPT_IDS<span class=\"token punctuation\">)<\/span>\n        n_rows<span class=\"token punctuation\">,<\/span> n_cols<span class=\"token punctuation\">,<\/span> _ <span class=\"token operator\">=<\/span> sample<span class=\"token punctuation\">[<\/span><span class=\"token string\">'image'<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">.<\/span>shape\n        paf_maps <span class=\"token operator\">=<\/span> np<span class=\"token punctuation\">.<\/span>zeros<span class=\"token punctuation\">(<\/span>shape<span class=\"token operator\">=<\/span><span class=\"token punctuation\">(<\/span>n_pafs <span class=\"token operator\">*<\/span> <span class=\"token number\">2<\/span><span class=\"token punctuation\">,<\/span> n_rows <span class=\"token operator\">\/\/<\/span> self<span class=\"token punctuation\">.<\/span>_stride<span class=\"token punctuation\">,<\/span> n_cols <span class=\"token operator\">\/\/<\/span> self<span class=\"token punctuation\">.<\/span>_stride<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">,<\/span> dtype<span class=\"token operator\">=<\/span>np<span class=\"token punctuation\">.<\/span>float32<span class=\"token punctuation\">)<\/span>\n\n        label <span class=\"token operator\">=<\/span> sample<span class=\"token punctuation\">[<\/span><span class=\"token string\">'label'<\/span><span class=\"token punctuation\">]<\/span>\n        <span class=\"token keyword\">for<\/span> paf_idx <span class=\"token keyword\">in<\/span> <span class=\"token builtin\">range<\/span><span class=\"token punctuation\">(<\/span>n_pafs<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span>\n            keypoint_a <span class=\"token operator\">=<\/span> label<span class=\"token punctuation\">[<\/span><span class=\"token string\">'keypoints'<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">[<\/span>BODY_PARTS_KPT_IDS<span class=\"token punctuation\">[<\/span>paf_idx<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">[<\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">]<\/span>\n            keypoint_b <span class=\"token operator\">=<\/span> label<span class=\"token punctuation\">[<\/span><span class=\"token string\">'keypoints'<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">[<\/span>BODY_PARTS_KPT_IDS<span class=\"token punctuation\">[<\/span>paf_idx<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">[<\/span><span class=\"token number\">1<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">]<\/span>\n            <span class=\"token keyword\">if<\/span> keypoint_a<span class=\"token punctuation\">[<\/span><span class=\"token number\">2<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&lt;=<\/span> <span class=\"token number\">1<\/span> <span class=\"token keyword\">and<\/span> keypoint_b<span class=\"token punctuation\">[<\/span><span class=\"token number\">2<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&lt;=<\/span> <span class=\"token number\">1<\/span><span class=\"token punctuation\">:<\/span>\n                self<span class=\"token punctuation\">.<\/span>_set_paf<span class=\"token punctuation\">(<\/span>paf_maps<span class=\"token punctuation\">[<\/span>paf_idx <span class=\"token operator\">*<\/span> <span class=\"token number\">2<\/span><span class=\"token punctuation\">:<\/span>paf_idx <span class=\"token operator\">*<\/span> <span class=\"token number\">2<\/span> <span class=\"token operator\">+<\/span> <span class=\"token number\">2<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">,<\/span>\n                              keypoint_a<span class=\"token punctuation\">[<\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">,<\/span> keypoint_a<span class=\"token punctuation\">[<\/span><span class=\"token number\">1<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">,<\/span> keypoint_b<span class=\"token punctuation\">[<\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">,<\/span> keypoint_b<span class=\"token punctuation\">[<\/span><span class=\"token number\">1<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">,<\/span>\n                              self<span class=\"token punctuation\">.<\/span>_stride<span class=\"token punctuation\">,<\/span> self<span class=\"token punctuation\">.<\/span>_paf_thickness<span class=\"token punctuation\">)<\/span>\n            <span class=\"token keyword\">for<\/span> another_annotation <span class=\"token keyword\">in<\/span> label<span class=\"token punctuation\">[<\/span><span class=\"token string\">'processed_other_annotations'<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">:<\/span>\n                keypoint_a <span class=\"token operator\">=<\/span> another_annotation<span class=\"token punctuation\">[<\/span><span class=\"token string\">'keypoints'<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">[<\/span>BODY_PARTS_KPT_IDS<span class=\"token punctuation\">[<\/span>paf_idx<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">[<\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">]<\/span>\n                keypoint_b <span class=\"token operator\">=<\/span> another_annotation<span class=\"token punctuation\">[<\/span><span class=\"token string\">'keypoints'<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">[<\/span>BODY_PARTS_KPT_IDS<span class=\"token punctuation\">[<\/span>paf_idx<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">[<\/span><span class=\"token number\">1<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">]<\/span>\n                <span class=\"token keyword\">if<\/span> keypoint_a<span class=\"token punctuation\">[<\/span><span class=\"token number\">2<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&lt;=<\/span> <span class=\"token number\">1<\/span> <span class=\"token keyword\">and<\/span> keypoint_b<span class=\"token punctuation\">[<\/span><span class=\"token number\">2<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&lt;=<\/span> <span class=\"token number\">1<\/span><span class=\"token punctuation\">:<\/span>\n                    self<span class=\"token punctuation\">.<\/span>_set_paf<span class=\"token punctuation\">(<\/span>paf_maps<span class=\"token punctuation\">[<\/span>paf_idx <span class=\"token operator\">*<\/span> <span class=\"token number\">2<\/span><span class=\"token punctuation\">:<\/span>paf_idx <span class=\"token operator\">*<\/span> <span class=\"token number\">2<\/span> <span class=\"token operator\">+<\/span> <span class=\"token number\">2<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">,<\/span>\n                                  keypoint_a<span class=\"token punctuation\">[<\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">,<\/span> keypoint_a<span class=\"token punctuation\">[<\/span><span class=\"token number\">1<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">,<\/span> keypoint_b<span class=\"token punctuation\">[<\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">,<\/span> keypoint_b<span class=\"token punctuation\">[<\/span><span class=\"token number\">1<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">,<\/span>\n                                  self<span class=\"token punctuation\">.<\/span>_stride<span class=\"token punctuation\">,<\/span> self<span class=\"token punctuation\">.<\/span>_paf_thickness<span class=\"token punctuation\">)<\/span>\n        <span class=\"token keyword\">return<\/span> paf_maps\n\n    <span class=\"token keyword\">def<\/span> <span class=\"token function\">_set_paf<\/span><span class=\"token punctuation\">(<\/span>self<span class=\"token punctuation\">,<\/span> paf_map<span class=\"token punctuation\">,<\/span> x_a<span class=\"token punctuation\">,<\/span> y_a<span class=\"token punctuation\">,<\/span> x_b<span class=\"token punctuation\">,<\/span> y_b<span class=\"token punctuation\">,<\/span> stride<span class=\"token punctuation\">,<\/span> thickness<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span>\n        x_a <span class=\"token operator\">\/=<\/span> stride\n        y_a <span class=\"token operator\">\/=<\/span> stride\n        x_b <span class=\"token operator\">\/=<\/span> stride\n        y_b <span class=\"token operator\">\/=<\/span> stride\n        x_ba <span class=\"token operator\">=<\/span> x_b <span class=\"token operator\">-<\/span> x_a\n        y_ba <span class=\"token operator\">=<\/span> y_b <span class=\"token operator\">-<\/span> y_a\n        _<span class=\"token punctuation\">,<\/span> h_map<span class=\"token punctuation\">,<\/span> w_map <span class=\"token operator\">=<\/span> paf_map<span class=\"token punctuation\">.<\/span>shape\n        x_min <span class=\"token operator\">=<\/span> <span class=\"token builtin\">int<\/span><span class=\"token punctuation\">(<\/span><span class=\"token builtin\">max<\/span><span class=\"token punctuation\">(<\/span><span class=\"token builtin\">min<\/span><span class=\"token punctuation\">(<\/span>x_a<span class=\"token punctuation\">,<\/span> x_b<span class=\"token punctuation\">)<\/span> <span class=\"token operator\">-<\/span> thickness<span class=\"token punctuation\">,<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>\n        x_max <span class=\"token operator\">=<\/span> <span class=\"token builtin\">int<\/span><span class=\"token punctuation\">(<\/span><span class=\"token builtin\">min<\/span><span class=\"token punctuation\">(<\/span><span class=\"token builtin\">max<\/span><span class=\"token punctuation\">(<\/span>x_a<span class=\"token punctuation\">,<\/span> x_b<span class=\"token punctuation\">)<\/span> <span class=\"token operator\">+<\/span> thickness<span class=\"token punctuation\">,<\/span> w_map<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>\n        y_min <span class=\"token operator\">=<\/span> <span class=\"token builtin\">int<\/span><span class=\"token punctuation\">(<\/span><span class=\"token builtin\">max<\/span><span class=\"token punctuation\">(<\/span><span class=\"token builtin\">min<\/span><span class=\"token punctuation\">(<\/span>y_a<span class=\"token punctuation\">,<\/span> y_b<span class=\"token punctuation\">)<\/span> <span class=\"token operator\">-<\/span> thickness<span class=\"token punctuation\">,<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>\n        y_max <span class=\"token operator\">=<\/span> <span class=\"token builtin\">int<\/span><span class=\"token punctuation\">(<\/span><span class=\"token builtin\">min<\/span><span class=\"token punctuation\">(<\/span><span class=\"token builtin\">max<\/span><span class=\"token punctuation\">(<\/span>y_a<span class=\"token punctuation\">,<\/span> y_b<span class=\"token punctuation\">)<\/span> <span class=\"token operator\">+<\/span> thickness<span class=\"token punctuation\">,<\/span> h_map<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>\n        norm_ba <span class=\"token operator\">=<\/span> <span class=\"token punctuation\">(<\/span>x_ba <span class=\"token operator\">*<\/span> x_ba <span class=\"token operator\">+<\/span> y_ba <span class=\"token operator\">*<\/span> y_ba<span class=\"token punctuation\">)<\/span> <span class=\"token operator\">**<\/span> <span class=\"token number\">0.5<\/span>\n        <span class=\"token keyword\">if<\/span> norm_ba <span class=\"token operator\">&lt;<\/span> <span class=\"token number\">1e-7<\/span><span class=\"token punctuation\">:<\/span>  <span class=\"token comment\"># Same points, no paf<\/span>\n            <span class=\"token keyword\">return<\/span>\n        x_ba <span class=\"token operator\">\/=<\/span> norm_ba\n        y_ba <span class=\"token operator\">\/=<\/span> norm_ba\n\n        <span class=\"token keyword\">for<\/span> y <span class=\"token keyword\">in<\/span> <span class=\"token builtin\">range<\/span><span class=\"token punctuation\">(<\/span>y_min<span class=\"token punctuation\">,<\/span> y_max<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span>\n            <span class=\"token keyword\">for<\/span> x <span class=\"token keyword\">in<\/span> <span class=\"token builtin\">range<\/span><span class=\"token punctuation\">(<\/span>x_min<span class=\"token punctuation\">,<\/span> x_max<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span>\n                x_ca <span class=\"token operator\">=<\/span> x <span class=\"token operator\">-<\/span> x_a\n                y_ca <span class=\"token operator\">=<\/span> y <span class=\"token operator\">-<\/span> y_a\n                d <span class=\"token operator\">=<\/span> math<span class=\"token punctuation\">.<\/span>fabs<span class=\"token punctuation\">(<\/span>x_ca <span class=\"token operator\">*<\/span> y_ba <span class=\"token operator\">-<\/span> y_ca <span class=\"token operator\">*<\/span> x_ba<span class=\"token punctuation\">)<\/span>\n                <span class=\"token keyword\">if<\/span> d <span class=\"token operator\">&lt;=<\/span> thickness<span class=\"token punctuation\">:<\/span>\n                    paf_map<span class=\"token punctuation\">[<\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">,<\/span> y<span class=\"token punctuation\">,<\/span> x<span class=\"token punctuation\">]<\/span> <span class=\"token operator\">=<\/span> x_ba\n                    paf_map<span class=\"token punctuation\">[<\/span><span class=\"token number\">1<\/span><span class=\"token punctuation\">,<\/span> y<span class=\"token punctuation\">,<\/span> x<span class=\"token punctuation\">]<\/span> <span class=\"token operator\">=<\/span> y_ba\n\n\n<span class=\"token keyword\">class<\/span> <span class=\"token class-name\">CocoValDataset<\/span><span class=\"token punctuation\">(<\/span>Dataset<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span>\n    <span class=\"token keyword\">def<\/span> <span class=\"token function\">__init__<\/span><span class=\"token punctuation\">(<\/span>self<span class=\"token punctuation\">,<\/span> labels<span class=\"token punctuation\">,<\/span> images_folder<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span>\n        <span class=\"token builtin\">super<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">.<\/span>__init__<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span>\n        <span class=\"token keyword\">with<\/span> <span class=\"token builtin\">open<\/span><span class=\"token punctuation\">(<\/span>labels<span class=\"token punctuation\">,<\/span> <span class=\"token string\">'r'<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token keyword\">as<\/span> f<span class=\"token punctuation\">:<\/span>\n            self<span class=\"token punctuation\">.<\/span>_labels <span class=\"token operator\">=<\/span> json<span class=\"token punctuation\">.<\/span>load<span class=\"token punctuation\">(<\/span>f\n<\/code><\/pre>\n<p>\n   \u8be5\u7a0b\u5e8f\u6587\u4ef6\u662f\u4e00\u4e2a\u7528\u4e8e\u5904\u7406COCO\u6570\u636e\u96c6\u7684Python\u811a\u672c\u3002\u5b83\u5305\u542b\u4e86\u4e24\u4e2a\u7c7b\uff1aCocoTrainDataset\u548cCocoValDataset\u3002\n  <\/p>\n<p>\n   CocoTrainDataset\u7c7b\u662f\u4e00\u4e2a\u7ee7\u627f\u81eatorch.utils.data.Dataset\u7684\u5b50\u7c7b\uff0c\u7528\u4e8e\u8bad\u7ec3\u9636\u6bb5\u7684\u6570\u636e\u96c6\u3002\u5b83\u7684\u6784\u9020\u51fd\u6570\u63a5\u53d7\u6807\u7b7e\u6587\u4ef6\u8def\u5f84\u3001\u56fe\u50cf\u6587\u4ef6\u5939\u8def\u5f84\u3001\u6b65\u957f\u3001\u9ad8\u65af\u6838\u6807\u51c6\u5dee\u3001PAF\u539a\u5ea6\u548c\u53d8\u6362\u51fd\u6570\u4f5c\u4e3a\u53c2\u6570\u3002\u5728\u521d\u59cb\u5316\u8fc7\u7a0b\u4e2d\uff0c\u5b83\u4f1a\u8bfb\u53d6\u6807\u7b7e\u6587\u4ef6\uff0c\u5e76\u5c06\u5176\u5b58\u50a8\u5728self._labels\u4e2d\u3002\u5728__getitem__\u65b9\u6cd5\u4e2d\uff0c\u5b83\u4f1a\u6839\u636e\u7d22\u5f15\u83b7\u53d6\u5bf9\u5e94\u7684\u6807\u7b7e\u548c\u56fe\u50cf\uff0c\u5e76\u751f\u6210\u63a9\u7801\u3001\u5173\u952e\u70b9\u56fe\u548cPAF\u56fe\u3002\u6700\u540e\uff0c\u5b83\u4f1a\u5bf9\u56fe\u50cf\u8fdb\u884c\u5f52\u4e00\u5316\u5904\u7406\uff0c\u5e76\u8fd4\u56de\u4e00\u4e2a\u5305\u542b\u6807\u7b7e\u3001\u56fe\u50cf\u3001\u63a9\u7801\u3001\u5173\u952e\u70b9\u56fe\u548cPAF\u56fe\u7684\u5b57\u5178\u3002\n  <\/p>\n<p>\n   CocoValDataset\u7c7b\u4e5f\u662f\u4e00\u4e2a\u7ee7\u627f\u81eatorch.utils.data.Dataset\u7684\u5b50\u7c7b\uff0c\u7528\u4e8e\u9a8c\u8bc1\u9636\u6bb5\u7684\u6570\u636e\u96c6\u3002\u5b83\u7684\u6784\u9020\u51fd\u6570\u63a5\u53d7\u6807\u7b7e\u6587\u4ef6\u8def\u5f84\u548c\u56fe\u50cf\u6587\u4ef6\u5939\u8def\u5f84\u4f5c\u4e3a\u53c2\u6570\u3002\u5728\u521d\u59cb\u5316\u8fc7\u7a0b\u4e2d\uff0c\u5b83\u4f1a\u8bfb\u53d6\u6807\u7b7e\u6587\u4ef6\uff0c\u5e76\u5c06\u5176\u5b58\u50a8\u5728self._labels\u4e2d\u3002\u5728__getitem__\u65b9\u6cd5\u4e2d\uff0c\u5b83\u4f1a\u6839\u636e\u7d22\u5f15\u83b7\u53d6\u5bf9\u5e94\u7684\u56fe\u50cf\uff0c\u5e76\u8fd4\u56de\u4e00\u4e2a\u5305\u542b\u56fe\u50cf\u548c\u6587\u4ef6\u540d\u7684\u5b57\u5178\u3002\n  <\/p>\n<p>\n   \u8fd9\u4e2a\u7a0b\u5e8f\u6587\u4ef6\u8fd8\u5b9a\u4e49\u4e86\u4e00\u4e9b\u8f85\u52a9\u51fd\u6570\uff0c\u5982get_mask\u548c_add_gaussian\uff0c\u7528\u4e8e\u751f\u6210\u63a9\u7801\u548c\u9ad8\u65af\u56fe\u3002\u6b64\u5916\uff0c\u8fd8\u5b9a\u4e49\u4e86\u4e00\u4e2a\u5e38\u91cfBODY_PARTS_KPT_IDS\uff0c\u7528\u4e8e\u5b58\u50a8\u8eab\u4f53\u90e8\u4f4d\u7684\u5173\u952e\u70b9ID\u3002\n  <\/p>\n<p>\n   \u603b\u4e4b\uff0c\u8fd9\u4e2a\u7a0b\u5e8f\u6587\u4ef6\u662f\u4e00\u4e2a\u7528\u4e8e\u5904\u7406COCO\u6570\u636e\u96c6\u7684\u5de5\u5177\uff0c\u63d0\u4f9b\u4e86\u8bad\u7ec3\u548c\u9a8c\u8bc1\u9636\u6bb5\u7684\u6570\u636e\u96c6\u7c7b\uff0c\u5e76\u5305\u542b\u4e86\u4e00\u4e9b\u8f85\u52a9\u51fd\u6570\u3002\n  <\/p>\n<h5>\n   <a id=\"56_datasetstransformationspy_514\"><br \/>\n   <\/a><br \/>\n   5.6 datasets\\transformations.py<br \/>\n  <\/h5>\n<pre><code class=\"prism language-python\">\n\n<span class=\"token keyword\">class<\/span> <span class=\"token class-name\">ConvertKeypoints<\/span><span class=\"token punctuation\">:<\/span>\n    <span class=\"token keyword\">def<\/span> <span class=\"token function\">__call__<\/span><span class=\"token punctuation\">(<\/span>self<span class=\"token punctuation\">,<\/span> sample<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span>\n        label <span class=\"token operator\">=<\/span> sample<span class=\"token punctuation\">[<\/span><span class=\"token string\">'label'<\/span><span class=\"token punctuation\">]<\/span>\n        h<span class=\"token punctuation\">,<\/span> w<span class=\"token punctuation\">,<\/span> _ <span class=\"token operator\">=<\/span> sample<span class=\"token punctuation\">[<\/span><span class=\"token string\">'image'<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">.<\/span>shape\n        keypoints <span class=\"token operator\">=<\/span> label<span class=\"token punctuation\">[<\/span><span class=\"token string\">'keypoints'<\/span><span class=\"token punctuation\">]<\/span>\n        <span class=\"token keyword\">for<\/span> keypoint <span class=\"token keyword\">in<\/span> keypoints<span class=\"token punctuation\">:<\/span>  <span class=\"token comment\"># keypoint[2] == 0: occluded, == 1: visible, == 2: not in image<\/span>\n            <span class=\"token keyword\">if<\/span> keypoint<span class=\"token punctuation\">[<\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">==<\/span> keypoint<span class=\"token punctuation\">[<\/span><span class=\"token number\">1<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">==<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">:<\/span>\n                keypoint<span class=\"token punctuation\">[<\/span><span class=\"token number\">2<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">=<\/span> <span class=\"token number\">2<\/span>\n            <span class=\"token keyword\">if<\/span> <span class=\"token punctuation\">(<\/span>keypoint<span class=\"token punctuation\">[<\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&lt;<\/span> <span class=\"token number\">0<\/span>\n                    <span class=\"token keyword\">or<\/span> keypoint<span class=\"token punctuation\">[<\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&gt;=<\/span> w\n                    <span class=\"token keyword\">or<\/span> keypoint<span class=\"token punctuation\">[<\/span><span class=\"token number\">1<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&lt;<\/span> <span class=\"token number\">0<\/span>\n                    <span class=\"token keyword\">or<\/span> keypoint<span class=\"token punctuation\">[<\/span><span class=\"token number\">1<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&gt;=<\/span> h<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span>\n                keypoint<span class=\"token punctuation\">[<\/span><span class=\"token number\">2<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">=<\/span> <span class=\"token number\">2<\/span>\n        <span class=\"token keyword\">for<\/span> other_label <span class=\"token keyword\">in<\/span> label<span class=\"token punctuation\">[<\/span><span class=\"token string\">'processed_other_annotations'<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">:<\/span>\n            keypoints <span class=\"token operator\">=<\/span> other_label<span class=\"token punctuation\">[<\/span><span class=\"token string\">'keypoints'<\/span><span class=\"token punctuation\">]<\/span>\n            <span class=\"token keyword\">for<\/span> keypoint <span class=\"token keyword\">in<\/span> keypoints<span class=\"token punctuation\">:<\/span>\n                <span class=\"token keyword\">if<\/span> keypoint<span class=\"token punctuation\">[<\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">==<\/span> keypoint<span class=\"token punctuation\">[<\/span><span class=\"token number\">1<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">==<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">:<\/span>\n                    keypoint<span class=\"token punctuation\">[<\/span><span class=\"token number\">2<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">=<\/span> <span class=\"token number\">2<\/span>\n                <span class=\"token keyword\">if<\/span> <span class=\"token punctuation\">(<\/span>keypoint<span class=\"token punctuation\">[<\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&lt;<\/span> <span class=\"token number\">0<\/span>\n                        <span class=\"token keyword\">or<\/span> keypoint<span class=\"token punctuation\">[<\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&gt;=<\/span> w\n                        <span class=\"token keyword\">or<\/span> keypoint<span class=\"token punctuation\">[<\/span><span class=\"token number\">1<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&lt;<\/span> <span class=\"token number\">0<\/span>\n                        <span class=\"token keyword\">or<\/span> keypoint<span class=\"token punctuation\">[<\/span><span class=\"token number\">1<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&gt;=<\/span> h<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span>\n                    keypoint<span class=\"token punctuation\">[<\/span><span class=\"token number\">2<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">=<\/span> <span class=\"token number\">2<\/span>\n        label<span class=\"token punctuation\">[<\/span><span class=\"token string\">'keypoints'<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">=<\/span> self<span class=\"token punctuation\">.<\/span>_convert<span class=\"token punctuation\">(<\/span>label<span class=\"token punctuation\">[<\/span><span class=\"token string\">'keypoints'<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">,<\/span> w<span class=\"token punctuation\">,<\/span> h<span class=\"token punctuation\">)<\/span>\n\n        <span class=\"token keyword\">for<\/span> other_label <span class=\"token keyword\">in<\/span> label<span class=\"token punctuation\">[<\/span><span class=\"token string\">'processed_other_annotations'<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">:<\/span>\n            other_label<span class=\"token punctuation\">[<\/span><span class=\"token string\">'keypoints'<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">=<\/span> self<span class=\"token punctuation\">.<\/span>_convert<span class=\"token punctuation\">(<\/span>other_label<span class=\"token punctuation\">[<\/span><span class=\"token string\">'keypoints'<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">,<\/span> w<span class=\"token punctuation\">,<\/span> h<span class=\"token punctuation\">)<\/span>\n        <span class=\"token keyword\">return<\/span> sample\n\n    <span class=\"token keyword\">def<\/span> <span class=\"token function\">_convert<\/span><span class=\"token punctuation\">(<\/span>self<span class=\"token punctuation\">,<\/span> keypoints<span class=\"token punctuation\">,<\/span> w<span class=\"token punctuation\">,<\/span> h<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span>\n        <span class=\"token comment\"># Nose, Neck, R hand, L hand, R leg, L leg, Eyes, Ears<\/span>\n        reorder_map <span class=\"token operator\">=<\/span> <span class=\"token punctuation\">[<\/span><span class=\"token number\">1<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">7<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">9<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">11<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">6<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">8<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">10<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">13<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">15<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">17<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">12<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">14<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">16<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">3<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">2<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">5<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">4<\/span><span class=\"token punctuation\">]<\/span>\n        converted_keypoints <span class=\"token operator\">=<\/span> <span class=\"token builtin\">list<\/span><span class=\"token punctuation\">(<\/span>keypoints<span class=\"token punctuation\">[<\/span>i <span class=\"token operator\">-<\/span> <span class=\"token number\">1<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token keyword\">for<\/span> i <span class=\"token keyword\">in<\/span> reorder_map<span class=\"token punctuation\">)<\/span>\n        converted_keypoints<span class=\"token punctuation\">.<\/span>insert<span class=\"token punctuation\">(<\/span><span class=\"token number\">1<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">(<\/span>keypoints<span class=\"token punctuation\">[<\/span><span class=\"token number\">5<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">[<\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">+<\/span> keypoints<span class=\"token punctuation\">[<\/span><span class=\"token number\">6<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">[<\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">\/<\/span> <span class=\"token number\">2<\/span><span class=\"token punctuation\">,<\/span>\n                                       <span class=\"token punctuation\">(<\/span>keypoints<span class=\"token punctuation\">[<\/span><span class=\"token number\">5<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">[<\/span><span class=\"token number\">1<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">+<\/span> keypoints<span class=\"token punctuation\">[<\/span><span class=\"token number\">6<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">[<\/span><span class=\"token number\">1<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">\/<\/span> <span class=\"token number\">2<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">)<\/span>  <span class=\"token comment\"># Add neck as a mean of shoulders<\/span>\n        <span class=\"token keyword\">if<\/span> keypoints<span class=\"token punctuation\">[<\/span><span class=\"token number\">5<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">[<\/span><span class=\"token number\">2<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">==<\/span> <span class=\"token number\">2<\/span> <span class=\"token keyword\">or<\/span> keypoints<span class=\"token punctuation\">[<\/span><span class=\"token number\">6<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">[<\/span><span class=\"token number\">2<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">==<\/span> <span class=\"token number\">2<\/span><span class=\"token punctuation\">:<\/span>\n            converted_keypoints<span class=\"token punctuation\">[<\/span><span class=\"token number\">1<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">[<\/span><span class=\"token number\">2<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">=<\/span> <span class=\"token number\">2<\/span>\n        <span class=\"token keyword\">elif<\/span> keypoints<span class=\"token punctuation\">[<\/span><span class=\"token number\">5<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">[<\/span><span class=\"token number\">2<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">==<\/span> <span class=\"token number\">1<\/span> <span class=\"token keyword\">and<\/span> keypoints<span class=\"token punctuation\">[<\/span><span class=\"token number\">6<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">[<\/span><span class=\"token number\">2<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">==<\/span> <span class=\"token number\">1<\/span><span class=\"token punctuation\">:<\/span>\n            converted_keypoints<span class=\"token punctuation\">[<\/span><span class=\"token number\">1<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">[<\/span><span class=\"token number\">2<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">=<\/span> <span class=\"token number\">1<\/span>\n        <span class=\"token keyword\">if<\/span> <span class=\"token punctuation\">(<\/span>converted_keypoints<span class=\"token punctuation\">[<\/span><span class=\"token number\">1<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">[<\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&lt;<\/span> <span class=\"token number\">0<\/span>\n                <span class=\"token keyword\">or<\/span> converted_keypoints<span class=\"token punctuation\">[<\/span><span class=\"token number\">1<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">[<\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&gt;=<\/span> w\n                <span class=\"token keyword\">or<\/span> converted_keypoints<span class=\"token punctuation\">[<\/span><span class=\"token number\">1<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">[<\/span><span class=\"token number\">1<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&lt;<\/span> <span class=\"token number\">0<\/span>\n                <span class=\"token keyword\">or<\/span> converted_keypoints<span class=\"token punctuation\">[<\/span><span class=\"token number\">1<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">[<\/span><span class=\"token number\">1<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&gt;=<\/span> h<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span>\n            converted_keypoints<span class=\"token punctuation\">[<\/span><span class=\"token number\">1<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">[<\/span><span class=\"token number\">2<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">=<\/span> <span class=\"token number\">2<\/span>\n        <span class=\"token keyword\">return<\/span> converted_keypoints\n\n\n<span class=\"token keyword\">class<\/span> <span class=\"token class-name\">Scale<\/span><span class=\"token punctuation\">:<\/span>\n    <span class=\"token keyword\">def<\/span> <span class=\"token function\">__init__<\/span><span class=\"token punctuation\">(<\/span>self<span class=\"token punctuation\">,<\/span> prob<span class=\"token operator\">=<\/span><span class=\"token number\">1<\/span><span class=\"token punctuation\">,<\/span> min_scale<span class=\"token operator\">=<\/span><span class=\"token number\">0.5<\/span><span class=\"token punctuation\">,<\/span> max_scale<span class=\"token operator\">=<\/span><span class=\"token number\">1.1<\/span><span class=\"token punctuation\">,<\/span> target_dist<span class=\"token operator\">=<\/span><span class=\"token number\">0.6<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span>\n        self<span class=\"token punctuation\">.<\/span>_prob <span class=\"token operator\">=<\/span> prob\n        self<span class=\"token punctuation\">.<\/span>_min_scale <span class=\"token operator\">=<\/span> min_scale\n        self<span class=\"token punctuation\">.<\/span>_max_scale <span class=\"token operator\">=<\/span> max_scale\n        self<span class=\"token punctuation\">.<\/span>_target_dist <span class=\"token operator\">=<\/span> target_dist\n\n    <span class=\"token keyword\">def<\/span> <span class=\"token function\">__call__<\/span><span class=\"token punctuation\">(<\/span>self<span class=\"token punctuation\">,<\/span> sample<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span>\n        prob <span class=\"token operator\">=<\/span> random<span class=\"token punctuation\">.<\/span>random<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span>\n        scale_multiplier <span class=\"token operator\">=<\/span> <span class=\"token number\">1<\/span>\n        <span class=\"token keyword\">if<\/span> prob <span class=\"token operator\">&lt;=<\/span> self<span class=\"token punctuation\">.<\/span>_prob<span class=\"token punctuation\">:<\/span>\n            prob <span class=\"token operator\">=<\/span> random<span class=\"token punctuation\">.<\/span>random<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span>\n            scale_multiplier <span class=\"token operator\">=<\/span> <span class=\"token punctuation\">(<\/span>self<span class=\"token punctuation\">.<\/span>_max_scale <span class=\"token operator\">-<\/span> self<span class=\"token punctuation\">.<\/span>_min_scale<span class=\"token punctuation\">)<\/span> <span class=\"token operator\">*<\/span> prob <span class=\"token operator\">+<\/span> self<span class=\"token punctuation\">.<\/span>_min_scale\n        label <span class=\"token operator\">=<\/span> sample<span class=\"token punctuation\">[<\/span><span class=\"token string\">'label'<\/span><span class=\"token punctuation\">]<\/span>\n        scale_abs <span class=\"token operator\">=<\/span> self<span class=\"token punctuation\">.<\/span>_target_dist <span class=\"token operator\">\/<\/span> label<span class=\"token punctuation\">[<\/span><span class=\"token string\">'scale_provided'<\/span><span class=\"token punctuation\">]<\/span>\n        scale <span class=\"token operator\">=<\/span> scale_abs <span class=\"token operator\">*<\/span> scale_multiplier\n        sample<span class=\"token punctuation\">[<\/span><span class=\"token string\">'image'<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">=<\/span> cv2<span class=\"token punctuation\">.<\/span>resize<span class=\"token punctuation\">(<\/span>sample<span class=\"token punctuation\">[<\/span><span class=\"token string\">'image'<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">,<\/span> dsize<span class=\"token operator\">=<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">,<\/span> fx<span class=\"token operator\">=<\/span>scale<span class=\"token punctuation\">,<\/span> fy<span class=\"token operator\">=<\/span>scale<span class=\"token punctuation\">)<\/span>\n        label<span class=\"token punctuation\">[<\/span><span class=\"token string\">'img_height'<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">,<\/span> label<span class=\"token punctuation\">[<\/span><span class=\"token string\">'img_width'<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">,<\/span> _ <span class=\"token operator\">=<\/span> sample<span class=\"token punctuation\">[<\/span><span class=\"token string\">'image'<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">.<\/span>shape\n        sample<span class=\"token punctuation\">[<\/span><span class=\"token string\">'mask'<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">=<\/span> cv2<span class=\"token punctuation\">.<\/span>resize<span class=\"token punctuation\">(<\/span>sample<span class=\"token punctuation\">[<\/span><span class=\"token string\">'mask'<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">,<\/span> dsize<span class=\"token operator\">=<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">,<\/span> fx<span class=\"token operator\">=<\/span>scale<span class=\"token punctuation\">,<\/span> fy<span class=\"token operator\">=<\/span>scale<span class=\"token punctuation\">)<\/span>\n\n        label<span class=\"token punctuation\">[<\/span><span class=\"token string\">'objpos'<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">[<\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">*=<\/span> scale\n        label<span class=\"token punctuation\">[<\/span><span class=\"token string\">'objpos'<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">[<\/span><span class=\"token number\">1<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">*=<\/span> scale\n        <span class=\"token keyword\">for<\/span> keypoint <span class=\"token keyword\">in<\/span> sample<span class=\"token punctuation\">[<\/span><span class=\"token string\">'label'<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">[<\/span><span class=\"token string\">'keypoints'<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">:<\/span>\n            keypoint<span class=\"token punctuation\">[<\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">*=<\/span> scale\n            keypoint<span class=\"token punctuation\">[<\/span><span class=\"token number\">1<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">*=<\/span> scale\n        <span class=\"token keyword\">for<\/span> other_annotation <span class=\"token keyword\">in<\/span> sample<span class=\"token punctuation\">[<\/span><span class=\"token string\">'label'<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">[<\/span><span class=\"token string\">'processed_other_annotations'<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">:<\/span>\n            other_annotation<span class=\"token punctuation\">[<\/span><span class=\"token string\">'objpos'<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">[<\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">*=<\/span> scale\n            other_annotation<span class=\"token punctuation\">[<\/span><span class=\"token string\">'objpos'<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">[<\/span><span class=\"token number\">1<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">*=<\/span> scale\n            <span class=\"token keyword\">for<\/span> keypoint <span class=\"token keyword\">in<\/span> other_annotation<span class=\"token punctuation\">[<\/span><span class=\"token string\">'keypoints'<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">:<\/span>\n                keypoint<span class=\"token punctuation\">[<\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">*=<\/span> scale\n                keypoint<span class=\"token punctuation\">[<\/span><span class=\"token number\">1<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">*=<\/span> scale\n        <span class=\"token keyword\">return<\/span> sample\n\n\n<span class=\"token keyword\">class<\/span> <span class=\"token class-name\">Rotate<\/span><span class=\"token punctuation\">:<\/span>\n    <span class=\"token keyword\">def<\/span> <span class=\"token function\">__init__<\/span><span class=\"token punctuation\">(<\/span>self<span class=\"token punctuation\">,<\/span> pad<span class=\"token punctuation\">,<\/span> max_rotate_degree<span class=\"token operator\">=<\/span><span class=\"token number\">40<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span>\n        self<span class=\"token punctuation\">.<\/span>_pad <span class=\"token operator\">=<\/span> pad\n        self<span class=\"token punctuation\">.<\/span>_max_rotate_degree <span class=\"token operator\">=<\/span> max_rotate_degree\n\n    <span class=\"token keyword\">def<\/span> <span class=\"token function\">__call__<\/span><span class=\"token punctuation\">(<\/span>self<span class=\"token punctuation\">,<\/span> sample<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span>\n        prob <span class=\"token operator\">=<\/span> random<span class=\"token punctuation\">.<\/span>random<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span>\n        degree <span class=\"token operator\">=<\/span> <span class=\"token punctuation\">(<\/span>prob <span class=\"token operator\">-<\/span> <span class=\"token number\">0.5<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">*<\/span> <span class=\"token number\">2<\/span> <span class=\"token operator\">*<\/span> self<span class=\"token punctuation\">.<\/span>_max_rotate_degree\n        h<span class=\"token punctuation\">,<\/span> w<span class=\"token punctuation\">,<\/span> _ <span class=\"token operator\">=<\/span> sample<span class=\"token punctuation\">[<\/span><span class=\"token string\">'image'<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">.<\/span>shape\n        img_center <span class=\"token operator\">=<\/span> <span class=\"token punctuation\">(<\/span>w <span class=\"token operator\">\/<\/span> <span class=\"token number\">2<\/span><span class=\"token punctuation\">,<\/span> h <span class=\"token operator\">\/<\/span> <span class=\"token number\">2<\/span><span class=\"token punctuation\">)<\/span>\n        R <span class=\"token operator\">=<\/span> cv2<span class=\"token punctuation\">.<\/span>getRotationMatrix2D<span class=\"token punctuation\">(<\/span>img_center<span class=\"token punctuation\">,<\/span> degree<span class=\"token punctuation\">,<\/span> <span class=\"token number\">1<\/span><span class=\"token punctuation\">)<\/span>\n\n        abs_cos <span class=\"token operator\">=<\/span> <span class=\"token builtin\">abs<\/span><span class=\"token punctuation\">(<\/span>R<span class=\"token punctuation\">[<\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">)<\/span>\n        abs_sin <span class=\"token operator\">=<\/span> <span class=\"token builtin\">abs<\/span><span class=\"token punctuation\">(<\/span>R<span class=\"token punctuation\">[<\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">1<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">)<\/span>\n\n        bound_w <span class=\"token operator\">=<\/span> <span class=\"token builtin\">int<\/span><span class=\"token punctuation\">(<\/span>h <span class=\"token operator\">*<\/span> abs_sin <span class=\"token operator\">+<\/span> w <span class=\"token operator\">*<\/span> abs_cos<span class=\"token punctuation\">)<\/span>\n        bound_h <span class=\"token operator\">=<\/span> <span class=\"token builtin\">int<\/span><span class=\"token punctuation\">(<\/span>h <span class=\"token operator\">*<\/span> abs_cos <span class=\"token operator\">+<\/span> w <span class=\"token operator\">*<\/span> abs_sin<span class=\"token punctuation\">)<\/span>\n        dsize <span class=\"token operator\">=<\/span> <span class=\"token punctuation\">(<\/span>bound_w<span class=\"token punctuation\">,<\/span> bound_h<span class=\"token punctuation\">)<\/span>\n\n        R<span class=\"token punctuation\">[<\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">2<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">+=<\/span> dsize<span class=\"token punctuation\">[<\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">\/<\/span> <span class=\"token number\">2<\/span> <span class=\"token operator\">-<\/span> img_center<span class=\"token punctuation\">[<\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">]<\/span>\n        R<span class=\"token punctuation\">[<\/span><span class=\"token number\">1<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">2<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">+=<\/span> dsize<span class=\"token punctuation\">[<\/span><span class=\"token number\">1<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">\/<\/span> <span class=\"token number\">2<\/span> <span class=\"token operator\">-<\/span> img_center<span class=\"token punctuation\">[<\/span><span class=\"token number\">1<\/span><span class=\"token punctuation\">]<\/span>\n        <span class=\"token punctuation\">.<\/span><span class=\"token punctuation\">.<\/span><span class=\"token punctuation\">.<\/span><span class=\"token punctuation\">.<\/span><span class=\"token punctuation\">.<\/span><span class=\"token punctuation\">.<\/span>\n<\/code><\/pre>\n<p>\n   \u8be5\u7a0b\u5e8f\u6587\u4ef6\u662f\u4e00\u4e2a\u6570\u636e\u8f6c\u6362\u6a21\u5757\uff0c\u6587\u4ef6\u540d\u4e3adatasets\\transformations.py\u3002\u8be5\u6a21\u5757\u5305\u542b\u4e86\u4e00\u4e9b\u7528\u4e8e\u6570\u636e\u589e\u5f3a\u7684\u7c7b\uff0c\u7528\u4e8e\u5bf9\u8f93\u5165\u7684\u6837\u672c\u8fdb\u884c\u4e00\u7cfb\u5217\u7684\u8f6c\u6362\u64cd\u4f5c\u3002\n  <\/p>\n<p>\n   \u5176\u4e2d\u5305\u542b\u7684\u7c7b\u6709\uff1a\n  <\/p>\n<ol>\n<li>\n    ConvertKeypoints\uff1a\u7528\u4e8e\u5c06\u5173\u952e\u70b9\u7684\u5750\u6807\u8f6c\u6362\u4e3a\u6307\u5b9a\u987a\u5e8f\u7684\u5173\u952e\u70b9\u5750\u6807\u3002\n   <\/li>\n<li>\n    Scale\uff1a\u7528\u4e8e\u5bf9\u6837\u672c\u8fdb\u884c\u7f29\u653e\u64cd\u4f5c\u3002\n   <\/li>\n<li>\n    Rotate\uff1a\u7528\u4e8e\u5bf9\u6837\u672c\u8fdb\u884c\u65cb\u8f6c\u64cd\u4f5c\u3002\n   <\/li>\n<li>\n    CropPad\uff1a\u7528\u4e8e\u5bf9\u6837\u672c\u8fdb\u884c\u88c1\u526a\u548c\u586b\u5145\u64cd\u4f5c\u3002\n   <\/li>\n<li>\n    Flip\uff1a\u7528\u4e8e\u5bf9\u6837\u672c\u8fdb\u884c\u7ffb\u8f6c\u64cd\u4f5c\u3002\n   <\/li>\n<\/ol>\n<p>\n   \u6bcf\u4e2a\u7c7b\u90fd\u5b9e\u73b0\u4e86__call__\u65b9\u6cd5\uff0c\u8be5\u65b9\u6cd5\u63a5\u53d7\u4e00\u4e2a\u6837\u672c\u4f5c\u4e3a\u8f93\u5165\uff0c\u5e76\u5bf9\u6837\u672c\u8fdb\u884c\u76f8\u5e94\u7684\u8f6c\u6362\u64cd\u4f5c\uff0c\u7136\u540e\u8fd4\u56de\u8f6c\u6362\u540e\u7684\u6837\u672c\u3002\n  <\/p>\n<p>\n   \u8be5\u7a0b\u5e8f\u6587\u4ef6\u8fd8\u5305\u542b\u4e86\u4e00\u4e9b\u8f85\u52a9\u51fd\u6570\uff0c\u7528\u4e8e\u6267\u884c\u5177\u4f53\u7684\u8f6c\u6362\u64cd\u4f5c\u3002\u8fd9\u4e9b\u51fd\u6570\u5305\u62ec_convert\u3001_rotate\u548c_inside\u7b49\u3002\n  <\/p>\n<p>\n   \u603b\u7684\u6765\u8bf4\uff0c\u8be5\u7a0b\u5e8f\u6587\u4ef6\u5b9e\u73b0\u4e86\u4e00\u7cfb\u5217\u5e38\u7528\u7684\u6570\u636e\u589e\u5f3a\u64cd\u4f5c\uff0c\u53ef\u4ee5\u7528\u4e8e\u589e\u52a0\u8bad\u7ec3\u6570\u636e\u7684\u591a\u6837\u6027\u548c\u9c81\u68d2\u6027\u3002\n  <\/p>\n<h2>\n   <a id=\"6_638\"><br \/>\n   <\/a><br \/>\n   6.\u7cfb\u7edf\u6574\u4f53\u7ed3\u6784<br \/>\n  <\/h2>\n<p>\n   \u6574\u4f53\u529f\u80fd\u548c\u6784\u67b6\u6982\u8ff0\uff1a<br \/>\n   <br \/>\n   \u8be5\u9879\u76ee\u662f\u4e00\u4e2a\u57fa\u4e8e\u6539\u8fdbHigherHRNet\u7684\u4f53\u80b2\u8fd0\u52a8\u52a8\u4f5c\u89c4\u8303\u5ea6\u68c0\u6d4b\u7cfb\u7edf\u3002\u5b83\u5305\u542b\u4e86\u591a\u4e2a\u7a0b\u5e8f\u6587\u4ef6\u548c\u6a21\u5757\uff0c\u7528\u4e8e\u5b9e\u73b0\u59ff\u52bf\u4f30\u8ba1\u6a21\u578b\u7684\u8bad\u7ec3\u3001\u9a8c\u8bc1\u548c\u63a8\u65ad\u3002\u6574\u4f53\u6784\u67b6\u5305\u62ec\u6570\u636e\u96c6\u5904\u7406\u3001\u6a21\u578b\u5b9a\u4e49\u3001\u8bad\u7ec3\u548c\u63a8\u65ad\u7b49\u6a21\u5757\u3002\n  <\/p>\n<p>\n   \u4e0b\u8868\u6574\u7406\u4e86\u6bcf\u4e2a\u6587\u4ef6\u7684\u529f\u80fd\uff1a\n  <\/p>\n<table>\n<thead>\n<tr>\n<th>\n      \u6587\u4ef6\u8def\u5f84\n     <\/th>\n<th>\n      \u529f\u80fd\n     <\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>\n      FeatureAlign.py\n     <\/td>\n<td>\n      \u5b9a\u4e49\u7279\u5f81\u5bf9\u9f50\u6a21\u5757\uff0c\u7528\u4e8e\u5bf9\u7279\u5f81\u56fe\u8fdb\u884c\u4e0a\u91c7\u6837\u548c\u4f4d\u7f6e\u6821\u51c6\n     <\/td>\n<\/tr>\n<tr>\n<td>\n      location.py\n     <\/td>\n<td>\n      \u4f7f\u7528moviepy\u5e93\u5904\u7406\u89c6\u9891\u6587\u4ef6\uff0c\u5305\u62ec\u52a0\u8f7d\u3001\u52a0\u901f\u548c\u4fdd\u5b58\u89c6\u9891\n     <\/td>\n<\/tr>\n<tr>\n<td>\n      train.py\n     <\/td>\n<td>\n      \u8bad\u7ec3\u59ff\u52bf\u4f30\u8ba1\u6a21\u578b\u7684\u811a\u672c\uff0c\u5305\u62ec\u6570\u636e\u52a0\u8f7d\u3001\u6a21\u578b\u8bad\u7ec3\u548c\u4fdd\u5b58\u6a21\u578b\n     <\/td>\n<\/tr>\n<tr>\n<td>\n      ui.py\n     <\/td>\n<td>\n      \u4eba\u4f53\u59ff\u52bf\u4f30\u8ba1\u7684Python\u7a0b\u5e8f\uff0c\u4f7f\u7528OpenCV\u3001PyTorch\u7b49\u5e93\u5b9e\u73b0\u59ff\u52bf\u4f30\u8ba1\u529f\u80fd\n     <\/td>\n<\/tr>\n<tr>\n<td>\n      val.py\n     <\/td>\n<td>\n      \u8bc4\u4f30\u5173\u952e\u70b9\u68c0\u6d4b\u6a21\u578b\u6027\u80fd\u7684\u811a\u672c\uff0c\u5305\u62ec\u52a0\u8f7d\u6a21\u578b\u3001\u9884\u6d4b\u5173\u952e\u70b9\u548c\u8ba1\u7b97\u51c6\u786e\u7387\n     <\/td>\n<\/tr>\n<tr>\n<td>\n      datasets\\coco.py\n     <\/td>\n<td>\n      \u5904\u7406COCO\u6570\u636e\u96c6\u7684\u5de5\u5177\uff0c\u5305\u62ec\u8bad\u7ec3\u548c\u9a8c\u8bc1\u9636\u6bb5\u7684\u6570\u636e\u96c6\u7c7b\u548c\u8f85\u52a9\u51fd\u6570\n     <\/td>\n<\/tr>\n<tr>\n<td>\n      datasets\\transformations.py\n     <\/td>\n<td>\n      \u6570\u636e\u589e\u5f3a\u7684\u7c7b\u548c\u8f85\u52a9\u51fd\u6570\uff0c\u7528\u4e8e\u5bf9\u8f93\u5165\u6837\u672c\u8fdb\u884c\u8f6c\u6362\u64cd\u4f5c\n     <\/td>\n<\/tr>\n<tr>\n<td>\n      datasets_<br \/>\n      <em><br \/>\n       init<br \/>\n      <\/em><br \/>\n      _.py\n     <\/td>\n<td>\n      \u6570\u636e\u96c6\u6a21\u5757\u7684\u521d\u59cb\u5316\u6587\u4ef6\n     <\/td>\n<\/tr>\n<tr>\n<td>\n      lib\\config\\default.py\n     <\/td>\n<td>\n      \u9ed8\u8ba4\u914d\u7f6e\u6587\u4ef6\uff0c\u5b9a\u4e49\u4e86\u6a21\u578b\u548c\u8bad\u7ec3\u7684\u9ed8\u8ba4\u53c2\u6570\n     <\/td>\n<\/tr>\n<tr>\n<td>\n      lib\\config\\models.py\n     <\/td>\n<td>\n      \u6a21\u578b\u914d\u7f6e\u6587\u4ef6\uff0c\u5b9a\u4e49\u4e86\u4e0d\u540c\u6a21\u578b\u7684\u914d\u7f6e\u53c2\u6570\n     <\/td>\n<\/tr>\n<tr>\n<td>\n      lib\\config_<br \/>\n      <em><br \/>\n       init<br \/>\n      <\/em><br \/>\n      _.py\n     <\/td>\n<td>\n      \u914d\u7f6e\u6a21\u5757\u7684\u521d\u59cb\u5316\u6587\u4ef6\n     <\/td>\n<\/tr>\n<tr>\n<td>\n      lib\\core\\group.py\n     <\/td>\n<td>\n      \u5b9a\u4e49\u4e86\u5206\u7ec4\u64cd\u4f5c\u7684\u51fd\u6570\n     <\/td>\n<\/tr>\n<tr>\n<td>\n      lib\\core\\inference.py\n     <\/td>\n<td>\n      \u5b9a\u4e49\u4e86\u63a8\u65ad\u8fc7\u7a0b\u4e2d\u7684\u4e00\u4e9b\u51fd\u6570\u548c\u7c7b\n     <\/td>\n<\/tr>\n<tr>\n<td>\n      lib\\core\\loss.py\n     <\/td>\n<td>\n      \u5b9a\u4e49\u4e86\u635f\u5931\u51fd\u6570\u7684\u8ba1\u7b97\u65b9\u6cd5\n     <\/td>\n<\/tr>\n<tr>\n<td>\n      lib\\core\\trainer.py\n     <\/td>\n<td>\n      \u5b9a\u4e49\u4e86\u8bad\u7ec3\u5668\u7c7b\uff0c\u7528\u4e8e\u6a21\u578b\u7684\u8bad\u7ec3\u8fc7\u7a0b\n     <\/td>\n<\/tr>\n<tr>\n<td>\n      lib\\dataset\\build.py\n     <\/td>\n<td>\n      \u6570\u636e\u96c6\u6784\u5efa\u7684\u51fd\u6570\n     <\/td>\n<\/tr>\n<tr>\n<td>\n      lib\\dataset\\COCODataset.py\n     <\/td>\n<td>\n      COCO\u6570\u636e\u96c6\u7c7b\uff0c\u7528\u4e8e\u52a0\u8f7dCOCO\u6570\u636e\u96c6\n     <\/td>\n<\/tr>\n<tr>\n<td>\n      lib\\dataset\\COCOKeypoints.py\n     <\/td>\n<td>\n      COCO\u5173\u952e\u70b9\u6570\u636e\u96c6\u7c7b\uff0c\u7528\u4e8e\u52a0\u8f7dCOCO\u5173\u952e\u70b9\u6570\u636e\u96c6\n     <\/td>\n<\/tr>\n<tr>\n<td>\n      lib\\dataset\\CrowdPoseDataset.py\n     <\/td>\n<td>\n      CrowdPose\u6570\u636e\u96c6\u7c7b\uff0c\u7528\u4e8e\u52a0\u8f7dCrowdPose\u6570\u636e\u96c6\n     <\/td>\n<\/tr>\n<tr>\n<td>\n      lib\\dataset\\CrowdPoseKeypoints.py\n     <\/td>\n<td>\n      CrowdPose\u5173\u952e\u70b9\u6570\u636e\u96c6\u7c7b\uff0c\u7528\u4e8e\u52a0\u8f7dCrowdPose\u5173\u952e\u70b9\u6570\u636e\u96c6\n     <\/td>\n<\/tr>\n<tr>\n<td>\n      lib\\dataset_<br \/>\n      <em><br \/>\n       init<br \/>\n      <\/em><br \/>\n      _.py\n     <\/td>\n<td>\n      \u6570\u636e\u96c6\u6a21\u5757\u7684\u521d\u59cb\u5316\u6587\u4ef6\n     <\/td>\n<\/tr>\n<tr>\n<td>\n      lib\\dataset\\target_generators\\target_generators.py\n     <\/td>\n<td>\n      \u76ee\u6807\u751f\u6210\u5668\u7c7b\uff0c\u7528\u4e8e\u751f\u6210\u8bad\u7ec3\u76ee\u6807\n     <\/td>\n<\/tr>\n<tr>\n<td>\n      lib\\dataset\\target_generators_<br \/>\n      <em><br \/>\n       init<br \/>\n      <\/em><br \/>\n      _.py\n     <\/td>\n<td>\n      \u76ee\u6807\u751f\u6210\u5668\u6a21\u5757\u7684\u521d\u59cb\u5316\u6587\u4ef6\n     <\/td>\n<\/tr>\n<tr>\n<td>\n      lib\\dataset\\transforms\\build.py\n     <\/td>\n<td>\n      \u6570\u636e\u8f6c\u6362\u7684\u51fd\u6570\n     <\/td>\n<\/tr>\n<tr>\n<td>\n      lib\\dataset\\transforms\\transforms.py\n     <\/td>\n<td>\n      \u6570\u636e\u8f6c\u6362\u7c7b\uff0c\u7528\u4e8e\u5bf9\u8f93\u5165\u6837\u672c\u8fdb\u884c\u8f6c\u6362\u64cd\u4f5c\n     <\/td>\n<\/tr>\n<tr>\n<td>\n      lib\\dataset\\transforms_<br \/>\n      <em><br \/>\n       init<br \/>\n      <\/em><br \/>\n      _.py\n     <\/td>\n<td>\n      \u6570\u636e\u8f6c\u6362\u6a21\u5757\u7684\u521d\u59cb\u5316\u6587\u4ef6\n     <\/td>\n<\/tr>\n<tr>\n<td>\n      lib\\fp16_utils\\fp16util.py\n     <\/td>\n<td>\n      FP16\u76f8\u5173\u7684\u5de5\u5177\u51fd\u6570\n     <\/td>\n<\/tr>\n<tr>\n<td>\n      lib\\fp16_utils\\fp16_optimizer.py\n     <\/td>\n<td>\n      FP16\u4f18\u5316\u5668\u7c7b\n     <\/td>\n<\/tr>\n<tr>\n<td>\n      lib\\fp16_utils\\loss_scaler.py\n     <\/td>\n<td>\n      \u635f\u5931\u7f29\u653e\u5668\u7c7b\n     <\/td>\n<\/tr>\n<tr>\n<td>\n      lib\\fp16_utils_<br \/>\n      <em><br \/>\n       init<br \/>\n      <\/em><br \/>\n      _.py\n     <\/td>\n<td>\n      FP16\u5de5\u5177\u6a21\u5757\u7684\u521d\u59cb\u5316\u6587\u4ef6\n     <\/td>\n<\/tr>\n<tr>\n<td>\n      lib\\models\\pose_higher_hrnet.py\n     <\/td>\n<td>\n      \u57fa\u4e8e\u6539\u8fdbHigherHRNet\u7684\u59ff\u52bf\u4f30\u8ba1\u6a21\u578b\u5b9a\u4e49\n     <\/td>\n<\/tr>\n<tr>\n<td>\n      lib\\models_<br \/>\n      <em><br \/>\n       init<br \/>\n      <\/em><br \/>\n      _.py\n     <\/td>\n<td>\n      \u6a21\u578b\u6a21\u5757\u7684\u521d\u59cb\u5316\u6587\u4ef6\n     <\/td>\n<\/tr>\n<tr>\n<td>\n      lib\\utils\\transforms.py\n     <\/td>\n<td>\n      \u56fe\u50cf\u8f6c\u6362\u7684\u51fd\u6570\n     <\/td>\n<\/tr>\n<tr>\n<td>\n      lib\\utils\\utils.py\n     <\/td>\n<td>\n      \u901a\u7528\u7684\u5de5\u5177\u51fd\u6570\n     <\/td>\n<\/tr>\n<tr>\n<td>\n      lib\\utils\\vis.py\n     <\/td>\n<td>\n      \u53ef\u89c6\u5316\u5de5\u5177\u51fd\u6570\n     <\/td>\n<\/tr>\n<tr>\n<td>\n      lib\\utils\\zipreader.py\n     <\/td>\n<td>\n      ZIP\u6587\u4ef6\u8bfb\u53d6\u5de5\u5177\u7c7b\n     <\/td>\n<\/tr>\n<tr>\n<td>\n      models\\with_mobilenet.py\n     <\/td>\n<td>\n      \u4f7f\u7528MobileNet\u4f5c\u4e3a\u9aa8\u5e72\u7f51\u7edc\u7684\u6a21\u578b\u5b9a\u4e49\n     <\/td>\n<\/tr>\n<tr>\n<td>\n      models_<br \/>\n      <em><br \/>\n       init<br \/>\n      <\/em><br \/>\n      _.py\n     <\/td>\n<td>\n      \u6a21\u578b\u6a21\u5757\u7684\u521d\u59cb\u5316\u6587\u4ef6\n     <\/td>\n<\/tr>\n<tr>\n<td>\n      modules\\conv.py\n     <\/td>\n<td>\n      \u5377\u79ef\n     <\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h2>\n   <a id=\"7HigherHRNet_687\"><br \/>\n   <\/a><br \/>\n   7.HigherHRNet\u4eba\u4f53\u5173\u8282\u70b9\u68c0\u6d4b<br \/>\n  <\/h2>\n<h5>\n   <a id=\"HigherHRNet_689\"><br \/>\n   <\/a><br \/>\n   HigherHRNet\u7b80\u4ecb<br \/>\n  <\/h5>\n<p>\n   \u672c\u6587\u7684\u5b9e\u9645\u5e94\u7528\u60c5\u51b5\u9009 \u53d6 \u4e86 HigherHRNet \u6a21 \u578b \uff0cHigherHRNet \u6a21\u578b\u662f\u76ee\u524d\u5728\u591a\u4eba\u5173\u8282\u70b9\u8bc6\u522b\u4efb\u52a1 bottom-up \u4e2d\u6700\u5148\u8fdb\u7684\u7b97\u6cd5\uff0c\u6a21\u578b\u4e0d\u4ec5\u5728\u5173\u8282\u70b9\u5b9a\u4f4d\u4e0a\u66f4\u52a0\u51c6\u786e\uff0c\u8fd8\u80fd\u591f\u8bc6\u522b\u56fe\u7247\u4e2d\u4eba\u7269\u8f83\u5c0f\u7684\u5173\u8282\u70b9\u3002 \u7136\u800c\u8be5\u6a21\u578b\u5728\u5b9e\u9645\u5e94\u7528\u4e2d\u5b58\u5728\u6a21\u7cca\u56fe\u50cf\u65e0\u6cd5\u68c0\u6d4b\u5230\u5173\u8282\u70b9\u3001\u955c\u50cf\u56fe\u50cf\u7684\u5e72\u6270\u3001\u975e\u6b63\u5e38\u59ff\u52bf\u5173\u8282\u70b9\u68c0\u6d4b\u4e0d\u5168\u7b49\u95ee\u9898\uff0c\u672c\u6587\u5206\u522b\u8fdb\u884c\u4e86\u8d85\u5206\u8fa8\u7387\u91cd\u5efa[1-4]\u3001\u53cc\u9608\u503c\u3001\u4fee\u6539\u5173\u8282\u70b9\u4e4b\u95f4\u7684\u5f3a\u76f8\u5173\u7684\u65b9\u6cd5\u3002<br \/>\n   \n  <\/p>\n<h2>\n   <a id=\"8HigherHRNet_696\"><br \/>\n   <\/a><br \/>\n   8.\u6539\u8fdbHigherHRNet\u6a21\u5757<br \/>\n  <\/h2>\n<h5>\n   <a id=\"_697\"><br \/>\n   <\/a><br \/>\n   \u7279\u5f81\u4f4d\u7f6e\u504f\u79fb\u8bef\u5dee\u5efa\u6a21<br \/>\n  <\/h5>\n<p>\n   \u7279\u5f81\u4f4d\u7f6e\u504f\u79fb\u8bef\u5dee\u5efa\u6a21\u63d2\u503c\u4e0a\u91c7\u6837\u5b58\u5728\u89d2\u70b9\u5bf9\u9f50\u548c\u975e\u89d2\u70b9\u5bf9\u9f50\u4e24\u79cd\u65b9\u5f0f\uff0c\u662f\u5426\u4e24\u79cd\u65b9\u5f0f\u90fd\u5b58\u5728\u8bef\u5dee\u5462\uff1f\u8bba\u6587\u8ba8\u8bba\u4e86\u4e0d\u540c\u63d2\u503c\u65b9\u5f0f\u7684\u8bef\u5dee\n  <\/p>\n<h5>\n   <a id=\"_701\"><br \/>\n   <\/a><br \/>\n   \u65e0\u504f\u7279\u5f81\u4f4d\u7f6e\u5bf9\u9f50<br \/>\n  <\/h5>\n<p>\n   \u5f88\u7b80\u5355\uff0c\u53ea\u9700\u8981\u4ee4\u524d\u8ff0\u7684\u504f\u79fb\u8bef\u5dee\u89e3\u6790\u89e3\u4e3a0\uff0c\u5373\u53ef\u5f97\u5230\u65e0\u504f\u7279\u5f81\u4f4d\u7f6e\u5bf9\u9f50\u7684\u6761\u4ef6\u3002\u7b80\u5355\u6765\u8bf4\u5c31\u662f\u4ee4\u7f29\u653e\u524d\u540e\u5c3a\u5bf8\u4e0estride\uff0cpadding\u6ee1\u8db3\u4e00\u5b9a\u6761\u4ef6\u5373\u53ef\uff0c\u5373<br \/>\n   \u57fa\u4e8e\u89d2\u70b9\u5bf9\u9f50\u7684\u65e0\u504f\u7279\u5f81\u4f4d\u7f6e\u5bf9\u9f50\u6761\u4ef6\u3002W\u3001H\u4e3a\u539f\u56fe\u5c3a\u5bf8\uff0cw\u3001h\u4e3a\u5377\u79ef\u540e\u7279\u5f81\u56fe\u5c3a\u5bf8\uff0ck\u4e3a\u5377\u79ef\u6838\u5927\u5c0f\uff0cs\u4e3a\u6b65\u957f\u3001\u6700\u540e\u4e00\u4e2a\u662fpaading<br \/>\n   \u57fa\u4e8e\u975e\u89d2\u70b9\u5bf9\u9f50\u7684\u65e0\u504f\u7279\u5f81\u4f4d\u7f6e\u5bf9\u9f50\u6761\u4ef6\u540c\u6837\u4e3a\u4e86\u76f4\u89c2\u7684\u8868\u73b0\uff0c\u65e0\u504f\u7279\u5f81\u4f4d\u7f6e\u5bf9\u9f50\u65b9\u6cd5\u662f\u5982\u4f55work\u7684\uff0c\u4e5f\u5236\u4f5c\u4e86\u76f8\u5e94\u7684\u52a8\u56fe<br \/>\n   \u57fa\u4e8e\u89d2\u70b9\u5bf9\u9f50\u7684\u65e0\u504f\u7279\u5f81\u5bf9\u9f50\u65b9\u6cd5\n  <\/p>\n<h2>\n   <a id=\"9_705\"><br \/>\n   <\/a><br \/>\n   9.\u8bad\u7ec3\u7ed3\u679c\u5206\u6790<br \/>\n  <\/h2>\n<h5>\n   <a id=\"_707\"><br \/>\n   <\/a><br \/>\n   \u6a21\u578b\u6027\u80fd\u6bd4\u8f83<br \/>\n  <\/h5>\n<p>\n   \u9996\u5148\uff0c\u6211\u4eec\u53ef\u4ee5\u4ece\u8868\u683c\u4e2d\u770b\u51fa\uff0cHigherHRNet\u5728\u4e0d\u540c\u914d\u7f6e\u4e0b\u5bf9COCO\u6570\u636e\u96c6\u7684\u6d4b\u8bd5\u7ed3\u679c\u603b\u4f53\u4e0a\u662f\u4f18\u4e8e\u5176\u4ed6\u65b9\u6cd5\u7684\u3002\u5728COCO val2017\u548ctest-dev2017\u6570\u636e\u96c6\u4e0a\uff0cHigherHRNet\u7684AP\u503c\u666e\u904d\u9ad8\u4e8eOpenPose\u3001Hourglass\u3001PersonLab\u3001PifPaf\u548cBottom-up HRNet\u3002\u7279\u522b\u662f\u5728\u91c7\u7528HRNet-w48\u4f5c\u4e3a\u80cc\u666f\u7f51\u7edc\uff0c\u5e76\u4e14\u8f93\u5165\u5c3a\u5bf8\u4e3a640\u65f6\uff0cHigherHRNet\u7684\u6027\u80fd\u8fbe\u5230\u4e86\u9876\u5cf0\u3002\n  <\/p>\n<h5>\n   <a id=\"_710\"><br \/>\n   <\/a><br \/>\n   \u591a\u5c3a\u5ea6\u6d4b\u8bd5\u7684\u5f71\u54cd<br \/>\n  <\/h5>\n<p>\n   \u591a\u5c3a\u5ea6\u6d4b\u8bd5\u5bf9\u4e8e\u63d0\u5347\u6a21\u578b\u7684\u6027\u80fd\u5177\u6709\u663e\u8457\u6548\u679c\u3002\u901a\u8fc7\u6bd4\u8f83\u6bcf\u4e2a\u914d\u7f6e\u4e0b\u201cwith\u201d\u548c\u201cwithout multi-scale test\u201d\u7684\u7ed3\u679c\uff0c\u6211\u4eec\u53ef\u4ee5\u53d1\u73b0\uff0c\u4f7f\u7528\u591a\u5c3a\u5ea6\u6d4b\u8bd5\u540e\uff0c\u6240\u6709\u6027\u80fd\u6307\u6807\u90fd\u6709\u6240\u63d0\u5347\u3002\u8fd9\u8868\u660e\u591a\u5c3a\u5ea6\u6d4b\u8bd5\u80fd\u591f\u6709\u6548\u5730\u589e\u5f3a\u6a21\u578b\u7684\u6cdb\u5316\u80fd\u529b\uff0c\u63d0\u9ad8\u5bf9\u4e0d\u540c\u5c3a\u5ea6\u76ee\u6807\u7684\u68c0\u6d4b\u80fd\u529b\u3002\n  <\/p>\n<h5>\n   <a id=\"_713\"><br \/>\n   <\/a><br \/>\n   \u53c2\u6570\u6570\u91cf\u548c\u8ba1\u7b97\u590d\u6742\u5ea6\u5206\u6790<br \/>\n  <\/h5>\n<p>\n   HigherHRNet\u6a21\u578b\u7684\u53c2\u6570\u6570\u91cf\u4e0e\u8ba1\u7b97\u590d\u6742\u5ea6\uff08GFLOPs\uff09\u4e4b\u95f4\u5b58\u5728\u6743\u8861\u3002\u4f8b\u5982\uff0c\u5c3d\u7ba1HRNet-w48\u7248\u672c\u7684\u53c2\u6570\u6570\u91cf\uff0863.8M\uff09\u548c\u8ba1\u7b97\u590d\u6742\u5ea6\uff08154.3 GFLOPs\uff09\u8fdc\u9ad8\u4e8eHRNet-w32\u7248\u672c\uff0c\u4f46\u5b83\u63d0\u4f9b\u4e86\u66f4\u9ad8\u7684AP\u503c\u3002\u8fd9\u8868\u660e\u4e3a\u4e86\u83b7\u5f97\u66f4\u597d\u7684\u6027\u80fd\uff0c\u6a21\u578b\u590d\u6742\u5ea6\u7684\u63d0\u5347\u662f\u5fc5\u8981\u7684\u3002\n  <\/p>\n<h5>\n   <a id=\"_716\"><br \/>\n   <\/a><br \/>\n   \u8f93\u5165\u5c3a\u5bf8\u7684\u5f71\u54cd<br \/>\n  <\/h5>\n<p>\n   \u8f93\u5165\u5c3a\u5bf8\u5bf9\u6a21\u578b\u6027\u80fd\u540c\u6837\u6709\u663e\u8457\u5f71\u54cd\u3002\u4ece512\u5230640\u7684\u8f93\u5165\u5c3a\u5bf8\u53d8\u5316\uff0c\u6211\u4eec\u53ef\u4ee5\u89c2\u5bdf\u5230\u6027\u80fd\u7684\u666e\u904d\u63d0\u5347\u3002\u8fd9\u53ef\u80fd\u662f\u56e0\u4e3a\u66f4\u5927\u7684\u8f93\u5165\u5c3a\u5bf8\u80fd\u591f\u63d0\u4f9b\u66f4\u591a\u7684\u7ec6\u8282\uff0c\u6709\u52a9\u4e8e\u6a21\u578b\u66f4\u51c6\u786e\u5730\u5b9a\u4f4d\u5173\u952e\u70b9\u3002\n  <\/p>\n<h5>\n   <a id=\"_719\"><br \/>\n   <\/a><br \/>\n   \u4e0d\u540c\u6570\u636e\u96c6\u7684\u6027\u80fd\u5dee\u5f02<br \/>\n  <\/h5>\n<p>\n   \u5728\u4e0d\u540c\u7684\u6570\u636e\u96c6\u4e0a\uff0c\u6a21\u578b\u7684\u6027\u80fd\u6709\u6240\u4e0d\u540c\u3002\u4f8b\u5982\uff0c\u5728COCO test-dev2017\u6570\u636e\u96c6\u4e0a\u7684\u6027\u80fd\u666e\u904d\u9ad8\u4e8eCOCO val2017\u6570\u636e\u96c6\u3002\u8fd9\u53ef\u80fd\u4e0e\u6570\u636e\u96c6\u7684\u96be\u5ea6\u3001\u6570\u636e\u91cf\u6216\u6570\u636e\u7684\u591a\u6837\u6027\u6709\u5173\u3002\u540c\u65f6\uff0cHigherHRNet\u5728CrowdPose\u6d4b\u8bd5\u96c6\u4e0a\u7684AP\u503c\u8868\u73b0\u4e5f\u5f88\u597d\uff0c\u5c24\u5176\u662f\u5728\u52a0\u5f3a\u7248HigherHRNet+\u4e0a\uff0c\u5b83\u5728\u6240\u6709\u6027\u80fd\u6307\u6807\u4e0a\u90fd\u4f18\u4e8e\u5176\u4ed6\u65b9\u6cd5\u3002\n  <\/p>\n<h5>\n   <a id=\"_722\"><br \/>\n   <\/a><br \/>\n   \u6027\u80fd\u6307\u6807\u7684\u6df1\u5165\u5206\u6790<br \/>\n  <\/h5>\n<p>\n   AP\uff08\u5e73\u5747\u7cbe\u5ea6\uff09: HigherHRNet\u6a21\u578b\u5728AP\u8fd9\u4e00\u4e3b\u8981\u6307\u6807\u4e0a\u7684\u8868\u73b0\u975e\u5e38\u51fa\u8272\uff0c\u5c24\u5176\u662f\u5728\u591a\u5c3a\u5ea6\u6d4b\u8bd5\u60c5\u51b5\u4e0b\u3002\u8fd9\u8868\u660e\u8be5\u6a21\u578b\u5728\u4e0d\u540c\u9608\u503c\u4e0b\u7684\u5e73\u5747\u8868\u73b0\u662f\u5f3a\u7684\u3002<br \/>\n   <br \/>\n   AP .5 \u548c AP .75: \u8fd9\u4e24\u4e2a\u6307\u6807\u5206\u522b\u5bf9\u5e94\u4e8eIoU\u9608\u503c\u4e3a0.5\u548c0.75\u7684\u68c0\u6d4b\u7cbe\u5ea6\u3002HigherHRNet\u5728\u8fd9\u4e24\u4e2a\u6307\u6807\u4e0a\u7684\u8868\u73b0\u4e5f\u5f88\u597d\uff0c\u5c24\u5176\u662f\u5728AP .5\u4e0a\uff0c\u51e0\u4e4e\u6240\u6709\u914d\u7f6e\u90fd\u8d85\u8fc7\u4e8685%\uff0c\u8868\u660e\u5728\u8f83\u4f4e\u9608\u503c\u4e0b\u6a21\u578b\u7684\u68c0\u6d4b\u975e\u5e38\u51c6\u786e\u3002\n  <\/p>\n<h5>\n   <a id=\"_726\"><br \/>\n   <\/a><br \/>\n   \u8bad\u7ec3\u7ed3\u679c\u5bf9\u6bd4\u5206\u6790<br \/>\n  <\/h5>\n<h4>\n   <a id=\"Results_on_COCO_val2017_without_multiscale_test_727\"><br \/>\n   <\/a><br \/>\n   Results on COCO val2017 without multi-scale test<br \/>\n  <\/h4>\n<table>\n<thead>\n<tr>\n<th>\n      Method\n     <\/th>\n<th>\n      Backbone\n     <\/th>\n<th>\n      Input size\n     <\/th>\n<th>\n      #Params\n     <\/th>\n<th>\n      GFLOPs\n     <\/th>\n<th>\n      AP\n     <\/th>\n<th>\n      Ap .5\n     <\/th>\n<th>\n      AP .75\n     <\/th>\n<th>\n      AP (M)\n     <\/th>\n<th>\n      AP (L)\n     <\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>\n      HigherHRNet\n     <\/td>\n<td>\n      HRNet-w32\n     <\/td>\n<td>\n      512\n     <\/td>\n<td>\n      28.6M\n     <\/td>\n<td>\n      47.9\n     <\/td>\n<td>\n      67.1\n     <\/td>\n<td>\n      86.2\n     <\/td>\n<td>\n      73.0\n     <\/td>\n<td>\n      61.5\n     <\/td>\n<td>\n      76.1\n     <\/td>\n<\/tr>\n<tr>\n<td>\n      HigherHRNet\n     <\/td>\n<td>\n      HRNet-w32\n     <\/td>\n<td>\n      640\n     <\/td>\n<td>\n      28.6M\n     <\/td>\n<td>\n      74.8\n     <\/td>\n<td>\n      68.5\n     <\/td>\n<td>\n      87.1\n     <\/td>\n<td>\n      74.7\n     <\/td>\n<td>\n      64.3\n     <\/td>\n<td>\n      75.3\n     <\/td>\n<\/tr>\n<tr>\n<td>\n      HigherHRNet\n     <\/td>\n<td>\n      HRNet-w48\n     <\/td>\n<td>\n      640\n     <\/td>\n<td>\n      63.8M\n     <\/td>\n<td>\n      154.3\n     <\/td>\n<td>\n      69.9\n     <\/td>\n<td>\n      87.2\n     <\/td>\n<td>\n      76.1\n     <\/td>\n<td>\n      65.4\n     <\/td>\n<td>\n      76.4\n     <\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h4>\n   <a id=\"Results_on_COCO_val2017_with_multiscale_test_734\"><br \/>\n   <\/a><br \/>\n   Results on COCO val2017<br \/>\n   <em><br \/>\n    with<br \/>\n   <\/em><br \/>\n   multi-scale test<br \/>\n  <\/h4>\n<table>\n<thead>\n<tr>\n<th>\n      Method\n     <\/th>\n<th>\n      Backbone\n     <\/th>\n<th>\n      Input size\n     <\/th>\n<th>\n      #Params\n     <\/th>\n<th>\n      GFLOPs\n     <\/th>\n<th>\n      AP\n     <\/th>\n<th>\n      Ap .5\n     <\/th>\n<th>\n      AP .75\n     <\/th>\n<th>\n      AP (M)\n     <\/th>\n<th>\n      AP (L)\n     <\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>\n      HigherHRNet\n     <\/td>\n<td>\n      HRNet-w32\n     <\/td>\n<td>\n      512\n     <\/td>\n<td>\n      28.6M\n     <\/td>\n<td>\n      47.9\n     <\/td>\n<td>\n      69.9\n     <\/td>\n<td>\n      87.1\n     <\/td>\n<td>\n      76.0\n     <\/td>\n<td>\n      65.3\n     <\/td>\n<td>\n      77.0\n     <\/td>\n<\/tr>\n<tr>\n<td>\n      HigherHRNet\n     <\/td>\n<td>\n      HRNet-w32\n     <\/td>\n<td>\n      640\n     <\/td>\n<td>\n      28.6M\n     <\/td>\n<td>\n      74.8\n     <\/td>\n<td>\n      70.6\n     <\/td>\n<td>\n      88.1\n     <\/td>\n<td>\n      76.9\n     <\/td>\n<td>\n      66.6\n     <\/td>\n<td>\n      76.5\n     <\/td>\n<\/tr>\n<tr>\n<td>\n      HigherHRNet\n     <\/td>\n<td>\n      HRNet-w48\n     <\/td>\n<td>\n      640\n     <\/td>\n<td>\n      63.8M\n     <\/td>\n<td>\n      154.3\n     <\/td>\n<td>\n      72.1\n     <\/td>\n<td>\n      88.4\n     <\/td>\n<td>\n      78.2\n     <\/td>\n<td>\n      67.8\n     <\/td>\n<td>\n      78.3\n     <\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h4>\n   <a id=\"Results_on_COCO_testdev2017_without_multiscale_test_741\"><br \/>\n   <\/a><br \/>\n   Results on COCO test-dev2017 without multi-scale test<br \/>\n  <\/h4>\n<table>\n<thead>\n<tr>\n<th>\n      Method\n     <\/th>\n<th>\n      Backbone\n     <\/th>\n<th>\n      Input size\n     <\/th>\n<th>\n      #Params\n     <\/th>\n<th>\n      GFLOPs\n     <\/th>\n<th>\n      AP\n     <\/th>\n<th>\n      Ap .5\n     <\/th>\n<th>\n      AP .75\n     <\/th>\n<th>\n      AP (M)\n     <\/th>\n<th>\n      AP (L)\n     <\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>\n      OpenPose*\n     <\/td>\n<td>\n      &#8211;\n     <\/td>\n<td>\n      &#8211;\n     <\/td>\n<td>\n      &#8211;\n     <\/td>\n<td>\n      &#8211;\n     <\/td>\n<td>\n      61.8\n     <\/td>\n<td>\n      84.9\n     <\/td>\n<td>\n      67.5\n     <\/td>\n<td>\n      57.1\n     <\/td>\n<td>\n      68.2\n     <\/td>\n<\/tr>\n<tr>\n<td>\n      Hourglass\n     <\/td>\n<td>\n      Hourglass\n     <\/td>\n<td>\n      512\n     <\/td>\n<td>\n      277.8M\n     <\/td>\n<td>\n      206.9\n     <\/td>\n<td>\n      56.6\n     <\/td>\n<td>\n      81.8\n     <\/td>\n<td>\n      61.8\n     <\/td>\n<td>\n      49.8\n     <\/td>\n<td>\n      67.0\n     <\/td>\n<\/tr>\n<tr>\n<td>\n      PersonLab\n     <\/td>\n<td>\n      ResNet-152\n     <\/td>\n<td>\n      1401\n     <\/td>\n<td>\n      68.7M\n     <\/td>\n<td>\n      405.5\n     <\/td>\n<td>\n      66.5\n     <\/td>\n<td>\n      88.0\n     <\/td>\n<td>\n      72.6\n     <\/td>\n<td>\n      62.4\n     <\/td>\n<td>\n      72.3\n     <\/td>\n<\/tr>\n<tr>\n<td>\n      PifPaf\n     <\/td>\n<td>\n      &#8211;\n     <\/td>\n<td>\n      &#8211;\n     <\/td>\n<td>\n      &#8211;\n     <\/td>\n<td>\n      &#8211;\n     <\/td>\n<td>\n      66.7\n     <\/td>\n<td>\n      &#8211;\n     <\/td>\n<td>\n      &#8211;\n     <\/td>\n<td>\n      62.4\n     <\/td>\n<td>\n      72.9\n     <\/td>\n<\/tr>\n<tr>\n<td>\n      Bottom-up HRNet\n     <\/td>\n<td>\n      HRNet-w32\n     <\/td>\n<td>\n      512\n     <\/td>\n<td>\n      28.5M\n     <\/td>\n<td>\n      38.9\n     <\/td>\n<td>\n      64.1\n     <\/td>\n<td>\n      86.3\n     <\/td>\n<td>\n      70.4\n     <\/td>\n<td>\n      57.4\n     <\/td>\n<td>\n      73.9\n     <\/td>\n<\/tr>\n<tr>\n<td>\n      <strong><br \/>\n       HigherHRNet<br \/>\n      <\/strong>\n     <\/td>\n<td>\n      HRNet-w32\n     <\/td>\n<td>\n      512\n     <\/td>\n<td>\n      28.6M\n     <\/td>\n<td>\n      47.9\n     <\/td>\n<td>\n      66.4\n     <\/td>\n<td>\n      87.5\n     <\/td>\n<td>\n      72.8\n     <\/td>\n<td>\n      61.2\n     <\/td>\n<td>\n      74.2\n     <\/td>\n<\/tr>\n<tr>\n<td>\n      <strong><br \/>\n       HigherHRNet<br \/>\n      <\/strong>\n     <\/td>\n<td>\n      HRNet-w48\n     <\/td>\n<td>\n      640\n     <\/td>\n<td>\n      63.8M\n     <\/td>\n<td>\n      154.3\n     <\/td>\n<td>\n      <strong><br \/>\n       68.4<br \/>\n      <\/strong>\n     <\/td>\n<td>\n      <strong><br \/>\n       88.2<br \/>\n      <\/strong>\n     <\/td>\n<td>\n      <strong><br \/>\n       75.1<br \/>\n      <\/strong>\n     <\/td>\n<td>\n      <strong><br \/>\n       64.4<br \/>\n      <\/strong>\n     <\/td>\n<td>\n      <strong><br \/>\n       74.2<br \/>\n      <\/strong>\n     <\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h4>\n   <a id=\"Results_on_COCO_testdev2017_with_multiscale_test_752\"><br \/>\n   <\/a><br \/>\n   Results on COCO test-dev2017<br \/>\n   <em><br \/>\n    with<br \/>\n   <\/em><br \/>\n   multi-scale test<br \/>\n  <\/h4>\n<table>\n<thead>\n<tr>\n<th>\n      Method\n     <\/th>\n<th>\n      Backbone\n     <\/th>\n<th>\n      Input size\n     <\/th>\n<th>\n      #Params\n     <\/th>\n<th>\n      GFLOPs\n     <\/th>\n<th>\n      AP\n     <\/th>\n<th>\n      Ap .5\n     <\/th>\n<th>\n      AP .75\n     <\/th>\n<th>\n      AP (M)\n     <\/th>\n<th>\n      AP (L)\n     <\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>\n      Hourglass\n     <\/td>\n<td>\n      Hourglass\n     <\/td>\n<td>\n      512\n     <\/td>\n<td>\n      277.8M\n     <\/td>\n<td>\n      206.9\n     <\/td>\n<td>\n      63.0\n     <\/td>\n<td>\n      85.7\n     <\/td>\n<td>\n      68.9\n     <\/td>\n<td>\n      58.0\n     <\/td>\n<td>\n      70.4\n     <\/td>\n<\/tr>\n<tr>\n<td>\n      Hourglass*\n     <\/td>\n<td>\n      Hourglass\n     <\/td>\n<td>\n      512\n     <\/td>\n<td>\n      277.8M\n     <\/td>\n<td>\n      206.9\n     <\/td>\n<td>\n      65.5\n     <\/td>\n<td>\n      86.8\n     <\/td>\n<td>\n      72.3\n     <\/td>\n<td>\n      60.6\n     <\/td>\n<td>\n      72.6\n     <\/td>\n<\/tr>\n<tr>\n<td>\n      PersonLab\n     <\/td>\n<td>\n      ResNet-152\n     <\/td>\n<td>\n      1401\n     <\/td>\n<td>\n      68.7M\n     <\/td>\n<td>\n      405.5\n     <\/td>\n<td>\n      68.7\n     <\/td>\n<td>\n      89.0\n     <\/td>\n<td>\n      75.4\n     <\/td>\n<td>\n      64.1\n     <\/td>\n<td>\n      75.5\n     <\/td>\n<\/tr>\n<tr>\n<td>\n      <strong><br \/>\n       HigherHRNet<br \/>\n      <\/strong>\n     <\/td>\n<td>\n      HRNet-w48\n     <\/td>\n<td>\n      640\n     <\/td>\n<td>\n      63.8M\n     <\/td>\n<td>\n      154.3\n     <\/td>\n<td>\n      <strong><br \/>\n       70.5<br \/>\n      <\/strong>\n     <\/td>\n<td>\n      <strong><br \/>\n       89.3<br \/>\n      <\/strong>\n     <\/td>\n<td>\n      <strong><br \/>\n       77.2<br \/>\n      <\/strong>\n     <\/td>\n<td>\n      <strong><br \/>\n       66.6<br \/>\n      <\/strong>\n     <\/td>\n<td>\n      <strong><br \/>\n       75.8<br \/>\n      <\/strong>\n     <\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h4>\n   <a id=\"Results_on_CrowdPose_test_760\"><br \/>\n   <\/a><br \/>\n   Results on CrowdPose test<br \/>\n  <\/h4>\n<table>\n<thead>\n<tr>\n<th>\n      Method\n     <\/th>\n<th>\n      AP\n     <\/th>\n<th>\n      Ap .5\n     <\/th>\n<th>\n      AP .75\n     <\/th>\n<th>\n      AP (E)\n     <\/th>\n<th>\n      AP (M)\n     <\/th>\n<th>\n      AP (H)\n     <\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>\n      Mask-RCNN\n     <\/td>\n<td>\n      57.2\n     <\/td>\n<td>\n      83.5\n     <\/td>\n<td>\n      60.3\n     <\/td>\n<td>\n      69.4\n     <\/td>\n<td>\n      57.9\n     <\/td>\n<td>\n      45.8\n     <\/td>\n<\/tr>\n<tr>\n<td>\n      AlphaPose\n     <\/td>\n<td>\n      61.0\n     <\/td>\n<td>\n      81.3\n     <\/td>\n<td>\n      66.0\n     <\/td>\n<td>\n      71.2\n     <\/td>\n<td>\n      61.4\n     <\/td>\n<td>\n      51.1\n     <\/td>\n<\/tr>\n<tr>\n<td>\n      SPPE\n     <\/td>\n<td>\n      66.0.\n     <\/td>\n<td>\n      84.2\n     <\/td>\n<td>\n      71.5\n     <\/td>\n<td>\n      75.5\n     <\/td>\n<td>\n      66.3\n     <\/td>\n<td>\n      57.4\n     <\/td>\n<\/tr>\n<tr>\n<td>\n      OpenPose\n     <\/td>\n<td>\n      &#8211;\n     <\/td>\n<td>\n      &#8211;\n     <\/td>\n<td>\n      &#8211;\n     <\/td>\n<td>\n      62.7\n     <\/td>\n<td>\n      48.7\n     <\/td>\n<td>\n      32.3\n     <\/td>\n<\/tr>\n<tr>\n<td>\n      <strong><br \/>\n       HigherHRNet<br \/>\n      <\/strong>\n     <\/td>\n<td>\n      65.9\n     <\/td>\n<td>\n      86.4\n     <\/td>\n<td>\n      70.6\n     <\/td>\n<td>\n      73.3\n     <\/td>\n<td>\n      66.5\n     <\/td>\n<td>\n      57.9\n     <\/td>\n<\/tr>\n<tr>\n<td>\n      <strong><br \/>\n       HigherHRNet+<br \/>\n      <\/strong>\n     <\/td>\n<td>\n      <strong><br \/>\n       67.6<br \/>\n      <\/strong>\n     <\/td>\n<td>\n      <strong><br \/>\n       87.4<br \/>\n      <\/strong>\n     <\/td>\n<td>\n      <strong><br \/>\n       72.6<br \/>\n      <\/strong>\n     <\/td>\n<td>\n      <strong><br \/>\n       75.8<br \/>\n      <\/strong>\n     <\/td>\n<td>\n      <strong><br \/>\n       68.1<br \/>\n      <\/strong>\n     <\/td>\n<td>\n      <strong><br \/>\n       58.9<br \/>\n      <\/strong>\n     <\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<pre><code class=\"prism language-python\"><span class=\"token keyword\">import<\/span> seaborn <span class=\"token keyword\">as<\/span> sns\n\n<span class=\"token comment\"># Plotting the AP values for COCO val2017 without and with multi-scale test<\/span>\nplt<span class=\"token punctuation\">.<\/span>figure<span class=\"token punctuation\">(<\/span>figsize<span class=\"token operator\">=<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">14<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">7<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>\nplt<span class=\"token punctuation\">.<\/span>subplot<span class=\"token punctuation\">(<\/span><span class=\"token number\">1<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">2<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">1<\/span><span class=\"token punctuation\">)<\/span>\nsns<span class=\"token punctuation\">.<\/span>barplot<span class=\"token punctuation\">(<\/span>x<span class=\"token operator\">=<\/span><span class=\"token string\">'Backbone'<\/span><span class=\"token punctuation\">,<\/span> y<span class=\"token operator\">=<\/span><span class=\"token string\">'AP'<\/span><span class=\"token punctuation\">,<\/span> hue<span class=\"token operator\">=<\/span><span class=\"token string\">'Multi-scale'<\/span><span class=\"token punctuation\">,<\/span> data<span class=\"token operator\">=<\/span>data_val2017<span class=\"token punctuation\">)<\/span>\nplt<span class=\"token punctuation\">.<\/span>title<span class=\"token punctuation\">(<\/span><span class=\"token string\">'AP values on COCO val2017\\nwithout vs with multi-scale test'<\/span><span class=\"token punctuation\">)<\/span>\nplt<span class=\"token punctuation\">.<\/span>xlabel<span class=\"token punctuation\">(<\/span><span class=\"token string\">'Backbone'<\/span><span class=\"token punctuation\">)<\/span>\nplt<span class=\"token punctuation\">.<\/span>ylabel<span class=\"token punctuation\">(<\/span><span class=\"token string\">'AP'<\/span><span class=\"token punctuation\">)<\/span>\nplt<span class=\"token punctuation\">.<\/span>ylim<span class=\"token punctuation\">(<\/span><span class=\"token number\">65<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">73<\/span><span class=\"token punctuation\">)<\/span>\nplt<span class=\"token punctuation\">.<\/span>legend<span class=\"token punctuation\">(<\/span>title<span class=\"token operator\">=<\/span><span class=\"token string\">'Multi-scale'<\/span><span class=\"token punctuation\">)<\/span>\n\n<span class=\"token comment\"># Plotting the AP values for COCO test-dev2017 without and with multi-scale test<\/span>\nplt<span class=\"token punctuation\">.<\/span>subplot<span class=\"token punctuation\">(<\/span><span class=\"token number\">1<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">2<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">2<\/span><span class=\"token punctuation\">)<\/span>\nsns<span class=\"token punctuation\">.<\/span>barplot<span class=\"token punctuation\">(<\/span>x<span class=\"token operator\">=<\/span><span class=\"token string\">'Backbone'<\/span><span class=\"token punctuation\">,<\/span> y<span class=\"token operator\">=<\/span><span class=\"token string\">'AP'<\/span><span class=\"token punctuation\">,<\/span> hue<span class=\"token operator\">=<\/span><span class=\"token string\">'Multi-scale'<\/span><span class=\"token punctuation\">,<\/span> data<span class=\"token operator\">=<\/span>data_test_dev2017<span class=\"token punctuation\">)<\/span>\nplt<span class=\"token punctuation\">.<\/span>title<span class=\"token punctuation\">(<\/span><span class=\"token string\">'AP values on COCO test-dev2017\\nwithout vs with multi-scale test'<\/span><span class=\"token punctuation\">)<\/span>\nplt<span class=\"token punctuation\">.<\/span>xlabel<span class=\"token punctuation\">(<\/span><span class=\"token string\">'Backbone'<\/span><span class=\"token punctuation\">)<\/span>\nplt<span class=\"token punctuation\">.<\/span>ylabel<span class=\"token punctuation\">(<\/span><span class=\"token string\">'AP'<\/span><span class=\"token punctuation\">)<\/span>\nplt<span class=\"token punctuation\">.<\/span>ylim<span class=\"token punctuation\">(<\/span><span class=\"token number\">55<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">72<\/span><span class=\"token punctuation\">)<\/span>\nplt<span class=\"token punctuation\">.<\/span>legend<span class=\"token punctuation\">(<\/span>title<span class=\"token operator\">=<\/span><span class=\"token string\">'Multi-scale'<\/span><span class=\"token punctuation\">)<\/span>\n\nplt<span class=\"token punctuation\">.<\/span>tight_layout<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span>\nplt<span class=\"token punctuation\">.<\/span>show<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span>\n\n<span class=\"token comment\"># Plotting the AP values for CrowdPose test<\/span>\nplt<span class=\"token punctuation\">.<\/span>figure<span class=\"token punctuation\">(<\/span>figsize<span class=\"token operator\">=<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">10<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">5<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>\nsns<span class=\"token punctuation\">.<\/span>barplot<span class=\"token punctuation\">(<\/span>x<span class=\"token operator\">=<\/span><span class=\"token string\">'Method'<\/span><span class=\"token punctuation\">,<\/span> y<span class=\"token operator\">=<\/span><span class=\"token string\">'AP'<\/span><span class=\"token punctuation\">,<\/span> data<span class=\"token operator\">=<\/span>data_crowdpose<span class=\"token punctuation\">)<\/span>\nplt<span class=\"token punctuation\">.<\/span>title<span class=\"token punctuation\">(<\/span><span class=\"token string\">'AP values on CrowdPose test'<\/span><span class=\"token punctuation\">)<\/span>\nplt<span class=\"token punctuation\">.<\/span>xlabel<span class=\"token punctuation\">(<\/span><span class=\"token string\">'Method'<\/span><span class=\"token punctuation\">)<\/span>\nplt<span class=\"token punctuation\">.<\/span>ylabel<span class=\"token punctuation\">(<\/span><span class=\"token string\">'AP'<\/span><span class=\"token punctuation\">)<\/span>\nplt<span class=\"token punctuation\">.<\/span>ylim<span class=\"token punctuation\">(<\/span><span class=\"token number\">50<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">70<\/span><span class=\"token punctuation\">)<\/span>\nplt<span class=\"token punctuation\">.<\/span>show<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span>\n\n<\/code><\/pre>\n<\/p>\n<h5>\n   <a id=\"_COCO_val2017__806\"><br \/>\n   <\/a><br \/>\n   \u5206\u6790 COCO val2017 \u6570\u636e\u96c6<br \/>\n  <\/h5>\n<ol>\n<li>\n<p>\n     \u591a\u5c3a\u5ea6\u6d4b\u8bd5\u7684\u5f71\u54cd<br \/>\n     <br \/>\n     \u4ece COCO val2017 \u6570\u636e\u96c6\u7684\u56fe\u8868\u4e2d\u53ef\u4ee5\u770b\u51fa\uff0c\u5728\u6ca1\u6709\u591a\u5c3a\u5ea6\u6d4b\u8bd5\u7684\u60c5\u51b5\u4e0b\uff0c\u4f7f\u7528 HRNet-w48 \u80cc\u666f\u7f51\u7edc\u7684 HigherHRNet \u5728 AP \u503c\u4e0a\u9ad8\u4e8e\u4f7f\u7528 HRNet-w32 \u80cc\u666f\u7f51\u7edc\u7684\u7248\u672c\u3002\u5f53\u5e94\u7528\u591a\u5c3a\u5ea6\u6d4b\u8bd5\u65f6\uff0c\u6240\u6709\u6a21\u578b\u7684\u6027\u80fd\u90fd\u6709\u6240\u63d0\u5347\uff0c\u8fd9\u8868\u660e\u591a\u5c3a\u5ea6\u6d4b\u8bd5\u53ef\u4ee5\u6709\u6548\u5730\u589e\u5f3a\u6a21\u578b\u5bf9\u4e0d\u540c\u5c3a\u5ea6\u76ee\u6807\u7684\u68c0\u6d4b\u80fd\u529b\u3002\n    <\/p>\n<\/li>\n<li>\n<p>\n     \u80cc\u666f\u7f51\u7edc\u548c\u8f93\u5165\u5c3a\u5bf8\u7684\u5f71\u54cd<br \/>\n     <br \/>\n     \u5728\u76f8\u540c\u7684\u591a\u5c3a\u5ea6\u6d4b\u8bd5\u6761\u4ef6\u4e0b\uff0c\u80cc\u666f\u7f51\u7edc\u4ece HRNet-w32 \u5347\u7ea7\u5230 HRNet-w48\uff0c\u6a21\u578b\u7684 AP \u503c\u6709\u660e\u663e\u63d0\u5347\u3002\u540c\u65f6\uff0c\u5f53\u8f93\u5165\u5c3a\u5bf8\u4ece 512 \u589e\u52a0\u5230 640 \u65f6\uff0c\u6a21\u578b\u6027\u80fd\u4e5f\u6709\u6240\u63d0\u9ad8\uff0c\u8fd9\u8bf4\u660e\u66f4\u5927\u7684\u8f93\u5165\u5c3a\u5bf8\u53ef\u4ee5\u5e2e\u52a9\u6a21\u578b\u6355\u6349\u5230\u66f4\u591a\u7684\u7ec6\u8282\uff0c\u4ece\u800c\u63d0\u9ad8\u6027\u80fd\u3002\n    <\/p>\n<\/li>\n<\/ol>\n<pre><code class=\"prism language-python\"><span class=\"token comment\"># Remove rows with '-' in 'AP' column for CrowdPose data<\/span>\ndata_crowdpose_clean <span class=\"token operator\">=<\/span> data_crowdpose<span class=\"token punctuation\">[<\/span>data_crowdpose<span class=\"token punctuation\">[<\/span><span class=\"token string\">'AP'<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">!=<\/span> <span class=\"token string\">'-'<\/span><span class=\"token punctuation\">]<\/span>\n<span class=\"token comment\"># Convert the 'AP' column to numeric<\/span>\ndata_crowdpose_clean<span class=\"token punctuation\">[<\/span><span class=\"token string\">'AP'<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">=<\/span> pd<span class=\"token punctuation\">.<\/span>to_numeric<span class=\"token punctuation\">(<\/span>data_crowdpose_clean<span class=\"token punctuation\">[<\/span><span class=\"token string\">'AP'<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">)<\/span>\n\n<span class=\"token comment\"># Re-plotting the AP values for CrowdPose test<\/span>\nplt<span class=\"token punctuation\">.<\/span>figure<span class=\"token punctuation\">(<\/span>figsize<span class=\"token operator\">=<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">10<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">5<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>\nsns<span class=\"token punctuation\">.<\/span>barplot<span class=\"token punctuation\">(<\/span>x<span class=\"token operator\">=<\/span><span class=\"token string\">'Method'<\/span><span class=\"token punctuation\">,<\/span> y<span class=\"token operator\">=<\/span><span class=\"token string\">'AP'<\/span><span class=\"token punctuation\">,<\/span> data<span class=\"token operator\">=<\/span>data_crowdpose_clean<span class=\"token punctuation\">)<\/span>\nplt<span class=\"token punctuation\">.<\/span>title<span class=\"token punctuation\">(<\/span><span class=\"token string\">'AP values on CrowdPose test'<\/span><span class=\"token punctuation\">)<\/span>\nplt<span class=\"token punctuation\">.<\/span>xlabel<span class=\"token punctuation\">(<\/span><span class=\"token string\">'Method'<\/span><span class=\"token punctuation\">)<\/span>\nplt<span class=\"token punctuation\">.<\/span>ylabel<span class=\"token punctuation\">(<\/span><span class=\"token string\">'AP'<\/span><span class=\"token punctuation\">)<\/span>\nplt<span class=\"token punctuation\">.<\/span>ylim<span class=\"token punctuation\">(<\/span><span class=\"token number\">50<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">70<\/span><span class=\"token punctuation\">)<\/span>\nplt<span class=\"token punctuation\">.<\/span>show<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span>\n<\/code><\/pre>\n<\/p>\n<h5>\n   <a id=\"_COCO_testdev2017__829\"><br \/>\n   <\/a><br \/>\n   \u5206\u6790 COCO test-dev2017 \u6570\u636e\u96c6<br \/>\n  <\/h5>\n<ol>\n<li>\n<p>\n     HigherHRNet \u4e0e\u5176\u4ed6\u6a21\u578b\u7684\u5bf9\u6bd4<br \/>\n     <br \/>\n     \u5728 COCO test-dev2017 \u6570\u636e\u96c6\u4e0a\uff0c\u4e0d\u4f7f\u7528\u591a\u5c3a\u5ea6\u6d4b\u8bd5\u65f6\uff0cHigherHRNet \u6a21\u578b\u7684 AP \u503c\u9ad8\u4e8e OpenPose\u3001Hourglass\u3001PersonLab \u548c PifPaf\uff0c\u8fd9\u663e\u793a\u4e86 HigherHRNet \u5728\u5173\u952e\u70b9\u68c0\u6d4b\u65b9\u9762\u7684\u4f18\u8d8a\u6027\u3002\u5728\u8fdb\u884c\u4e86\u591a\u5c3a\u5ea6\u6d4b\u8bd5\u4e4b\u540e\uff0cHigherHRNet \u7684 AP \u503c\u8fdb\u4e00\u6b65\u63d0\u9ad8\uff0c\u5c24\u5176\u662f\u4f7f\u7528\u4e86 HRNet-w48 \u80cc\u666f\u7f51\u7edc\u7684\u7248\u672c\uff0c\u5176\u6027\u80fd\u9886\u5148\u4e8e\u6240\u6709\u5176\u4ed6\u5bf9\u6bd4\u6a21\u578b\u3002\n    <\/p>\n<\/li>\n<li>\n<p>\n     \u6a21\u578b\u7684\u53c2\u6570\u548c\u8ba1\u7b97\u590d\u6742\u5ea6<br \/>\n     <br \/>\n     \u5c3d\u7ba1 HigherHRNet \u5728\u53c2\u6570\u6570\u91cf\u548c\u8ba1\u7b97\u590d\u6742\u5ea6\u4e0a\u9ad8\u4e8e HRNet-w32 \u7248\u672c\uff0c\u4f46\u5176\u6027\u80fd\u63d0\u5347\u8868\u660e\u4e86\u66f4\u9ad8\u7684\u6a21\u578b\u590d\u6742\u5ea6\u53ef\u4ee5\u5e26\u6765\u66f4\u51c6\u786e\u7684\u5173\u952e\u70b9\u68c0\u6d4b\u7ed3\u679c\u3002\u8fd9\u5728\u8ba1\u7b97\u8d44\u6e90\u5145\u8db3\u7684\u60c5\u51b5\u4e0b\u662f\u53ef\u53d6\u7684\uff0c\u4f46\u4e5f\u9700\u8981\u8003\u8651\u5230\u8ba1\u7b97\u6210\u672c\u548c\u5b9e\u9645\u5e94\u7528\u573a\u666f\u3002\n    <\/p>\n<\/li>\n<\/ol>\n<h5>\n   <a id=\"_CrowdPose__836\"><br \/>\n   <\/a><br \/>\n   \u5206\u6790 CrowdPose \u6d4b\u8bd5\u96c6<br \/>\n  <\/h5>\n<ol>\n<li>\n    HigherHRNet \u5728\u590d\u6742\u573a\u666f\u7684\u8868\u73b0<br \/>\n    <br \/>\n    CrowdPose \u6d4b\u8bd5\u96c6\u662f\u4e00\u4e2a\u66f4\u5177\u6311\u6218\u6027\u7684\u6570\u636e\u96c6\uff0c\u56e0\u4e3a\u5b83\u5305\u542b\u4e86\u66f4\u591a\u7684\u906e\u6321\u548c\u7fa4\u4f53\u573a\u666f\u3002\u5728\u8fd9\u4e2a\u6570\u636e\u96c6\u4e0a\uff0cHigherHRNet \u548c HigherHRNet+ \u7684\u6027\u80fd\u4f9d\u7136\u4f18\u79c0\uff0c\u7279\u522b\u662f HigherHRNet+ \u5728\u6240\u6709\u65b9\u6cd5\u4e2d\u8fbe\u5230\u4e86\u6700\u9ad8\u7684 AP \u503c\uff0c\u8fd9\u8868\u660e\u4e86\u8be5\u6a21\u578b\u5728\u5904\u7406\u590d\u6742\u573a\u666f\u65f6\u7684\u5f3a\u5927\u80fd\u529b\u3002\n   <\/li>\n<\/ol>\n<h2>\n   <a id=\"10_840\"><br \/>\n   <\/a><br \/>\n   10.\u7cfb\u7edf\u6574\u5408<br \/>\n  <\/h2>\n<p>\n   \u4e0b\u56fe<br \/>\n   <a href=\"https:\/\/s.xiaocichang.com\/s\/544655\" rel=\"nofollow\"><br \/>\n    \u5b8c\u6574\u6e90\u7801\uff06\u6570\u636e\u96c6\uff06\u73af\u5883\u90e8\u7f72\u89c6\u9891\u6559\u7a0b\uff06\u81ea\u5b9a\u4e49UI\u754c\u9762<br \/>\n   <\/a>\n  <\/p>\n<\/p>\n<p>\n   \u53c2\u8003\u535a\u5ba2<br \/>\n   <a href=\"https:\/\/zhuanlan.zhihu.com\/p\/665272164\" rel=\"nofollow\"><br \/>\n    \u300a\u57fa\u4e8e\u6539\u8fdbHigherHRNet\u7684\u4f53\u80b2\u8fd0\u52a8\u52a8\u4f5c\u89c4\u8303\u5ea6\u68c0\u6d4b\u7cfb\u7edf\u300b<br \/>\n   <\/a>\n  <\/p>\n<h2>\n   <a id=\"11_848\"><br \/>\n   <\/a><br \/>\n   11.\u53c2\u8003\u6587\u732e<br \/>\n  <\/h2>\n<hr\/>\n<p>\n   [1]<br \/>\n   <a href=\"https:\/\/s.wanfangdata.com.cn\/paper?q=%E4%BD%9C%E8%80%85:%22%E9%87%91%E6%B5%B7%E6%B3%A2%22\" rel=\"nofollow\"><br \/>\n    \u91d1\u6d77\u6ce2<br \/>\n   <\/a><br \/>\n   ,<br \/>\n   <a href=\"https:\/\/s.wanfangdata.com.cn\/paper?q=%E4%BD%9C%E8%80%85:%22%E9%A9%AC%E6%B5%B7%E5%BC%BA%22\" rel=\"nofollow\"><br \/>\n    \u9a6c\u6d77\u5f3a<br \/>\n   <\/a><br \/>\n   .<br \/>\n   <a href=\"https:\/\/d.wanfangdata.com.cn\/periodical\/jsjyyyj202108019\" rel=\"nofollow\"><br \/>\n    \u76f8\u5e45\u7ec4\u5408\u7684\u51fd\u6570\u578b\u6570\u636e\u7279\u5f81\u63d0\u53d6\u65b9\u6cd5\u7814\u7a76<br \/>\n   <\/a><br \/>\n   [J].<br \/>\n   <a href=\"https:\/\/sns.wanfangdata.com.cn\/perio\/jsjyyyj\" rel=\"nofollow\"><br \/>\n    \u8ba1\u7b97\u673a\u5e94\u7528\u7814\u7a76<br \/>\n   <\/a><br \/>\n   .2021,(8).DOI:10.19734\/j.issn.1001-3695.2020.10.0363 .\n  <\/p>\n<p>\n   [2]<br \/>\n   <a href=\"https:\/\/s.wanfangdata.com.cn\/paper?q=%E4%BD%9C%E8%80%85:%22%E6%9D%8E%E5%AE%8F%E4%BC%9F%22\" rel=\"nofollow\"><br \/>\n    \u674e\u5b8f\u4f1f<br \/>\n   <\/a><br \/>\n   ,<br \/>\n   <a href=\"https:\/\/s.wanfangdata.com.cn\/paper?q=%E4%BD%9C%E8%80%85:%22%E7%A5%9D%E6%B5%B7%E6%B1%9F%22\" rel=\"nofollow\"><br \/>\n    \u795d\u6d77\u6c5f<br \/>\n   <\/a><br \/>\n   ,<br \/>\n   <a href=\"https:\/\/s.wanfangdata.com.cn\/paper?q=%E4%BD%9C%E8%80%85:%22%E5%86%AF%E5%BB%B6%E5%BC%BA%22\" rel=\"nofollow\"><br \/>\n    \u51af\u5ef6\u5f3a<br \/>\n   <\/a><br \/>\n   .<br \/>\n   <a href=\"https:\/\/d.wanfangdata.com.cn\/periodical\/sjhdzkx202004006\" rel=\"nofollow\"><br \/>\n    \u57fa\u4e8e\u53cc\u7ebf\u6027\u63d2\u503c\u7684\u8d85\u58f0\u6210\u50cf\u6d4b\u4e95\u6570\u636e\u91cd\u91c7\u6837\u5904\u7406\u65b9\u6cd5\u7814\u7a76<br \/>\n   <\/a><br \/>\n   [J].<br \/>\n   <a href=\"https:\/\/sns.wanfangdata.com.cn\/perio\/sjhdzkx\" rel=\"nofollow\"><br \/>\n    \u4e16\u754c\u6838\u5730\u8d28\u79d1\u5b66<br \/>\n   <\/a><br \/>\n   .2020,(4).DOI:10.3969\/j.issn.1672-0636.2020.04.006 .\n  <\/p>\n<p>\n   [3]<br \/>\n   <a href=\"https:\/\/s.wanfangdata.com.cn\/paper?q=%E4%BD%9C%E8%80%85:%22%E5%BC%A0%E6%B0%B8%E6%A2%85%22\" rel=\"nofollow\"><br \/>\n    \u5f20\u6c38\u6885<br \/>\n   <\/a><br \/>\n   ,<br \/>\n   <a href=\"https:\/\/s.wanfangdata.com.cn\/paper?q=%E4%BD%9C%E8%80%85:%22%E6%BB%91%E7%91%9E%E6%95%8F%22\" rel=\"nofollow\"><br \/>\n    \u6ed1\u745e\u654f<br \/>\n   <\/a><br \/>\n   ,<br \/>\n   <a href=\"https:\/\/s.wanfangdata.com.cn\/paper?q=%E4%BD%9C%E8%80%85:%22%E9%A9%AC%E5%81%A5%E5%96%86%22\" rel=\"nofollow\"><br \/>\n    \u9a6c\u5065\u5586<br \/>\n   <\/a><br \/>\n   ,\u7b49.<br \/>\n   <a href=\"https:\/\/d.wanfangdata.com.cn\/periodical\/jsjgcykx202009008\" rel=\"nofollow\"><br \/>\n    \u57fa\u4e8e\u6df1\u5ea6\u5b66\u4e60\u4e0e\u8d85\u5206\u8fa8\u7387\u91cd\u5efa\u7684\u9065\u611f\u9ad8\u65f6\u7a7a\u878d\u5408\u65b9\u6cd5<br \/>\n   <\/a><br \/>\n   [J].<br \/>\n   <a href=\"https:\/\/sns.wanfangdata.com.cn\/perio\/jsjgcykx\" rel=\"nofollow\"><br \/>\n    \u8ba1\u7b97\u673a\u5de5\u7a0b\u4e0e\u79d1\u5b66<br \/>\n   <\/a><br \/>\n   .2020,(9).DOI:10.3969\/j.issn.1007-130X.2020.09.008 .\n  <\/p>\n<p>\n   [4]<br \/>\n   <a href=\"https:\/\/s.wanfangdata.com.cn\/paper?q=%E4%BD%9C%E8%80%85:%22%E5%88%98%E5%B7%A7%E7%8E%B2%22\" rel=\"nofollow\"><br \/>\n    \u5218\u5de7\u73b2<br \/>\n   <\/a><br \/>\n   ,<br \/>\n   <a href=\"https:\/\/s.wanfangdata.com.cn\/paper?q=%E4%BD%9C%E8%80%85:%22%E6%9D%8E%E6%83%B3%22\" rel=\"nofollow\"><br \/>\n    \u674e\u60f3<br \/>\n   <\/a><br \/>\n   ,<br \/>\n   <a href=\"https:\/\/s.wanfangdata.com.cn\/paper?q=%E4%BD%9C%E8%80%85:%22%E6%98%8E%E6%97%AD%22\" rel=\"nofollow\"><br \/>\n    \u660e\u65ed<br \/>\n   <\/a><br \/>\n   .<br \/>\n   <a href=\"https:\/\/d.wanfangdata.com.cn\/periodical\/cddxxb201502013\" rel=\"nofollow\"><br \/>\n    \u57fa\u4e8e\u53cc\u7ebf\u6027\u63d2\u503c\u7684CLAHE\u7b97\u6cd5\u7814\u7a76\u4e0e\u5b9e\u73b0<br \/>\n   <\/a><br \/>\n   [J].<br \/>\n   <a href=\"https:\/\/sns.wanfangdata.com.cn\/perio\/cddxxb\" rel=\"nofollow\"><br \/>\n    \u6210\u90fd\u5927\u5b66\u5b66\u62a5\uff08\u81ea\u7136\u79d1\u5b66\u7248\uff09<br \/>\n   <\/a><br \/>\n   .2015,(2).DOI:10.3969\/j.issn.1004-5422.2015.02.013 .\n  <\/p>\n<p>\n   [5]<br \/>\n   <a href=\"https:\/\/s.wanfangdata.com.cn\/paper?q=%E4%BD%9C%E8%80%85:%22Chao%2C%20Dong%22\" rel=\"nofollow\"><br \/>\n    Chao, Dong<br \/>\n   <\/a><br \/>\n   ,<br \/>\n   <a href=\"https:\/\/s.wanfangdata.com.cn\/paper?q=%E4%BD%9C%E8%80%85:%22Chen%20Change%2C%20Loy%22\" rel=\"nofollow\"><br \/>\n    Chen Change, Loy<br \/>\n   <\/a><br \/>\n   ,<br \/>\n   <a href=\"https:\/\/s.wanfangdata.com.cn\/paper?q=%E4%BD%9C%E8%80%85:%22Kaiming%2C%20He%22\" rel=\"nofollow\"><br \/>\n    Kaiming, He<br \/>\n   <\/a><br \/>\n   ,\u7b49.Image Super-Resolution Using Deep Convolutional Networks.[J].<br \/>\n   <a href=\"https:\/\/sns.wanfangdata.com.cn\/perio\/EnJour00037678\" rel=\"nofollow\"><br \/>\n    IEEE Transactions on Pattern Analysis &amp; Machine Intelligence<br \/>\n   <\/a><br \/>\n   .2016.295-307.\n  <\/p>\n<\/p><\/div>\n<link href=\"https:\/\/csdnimg.cn\/release\/blogv2\/dist\/mdeditor\/css\/editerView\/markdown_views-a5d25dd831.css\" rel=\"stylesheet\"\/>\n <link href=\"https:\/\/csdnimg.cn\/release\/blogv2\/dist\/mdeditor\/css\/style-e504d6a974.css\" rel=\"stylesheet\"\/>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>1.\u7814\u7a76\u80cc\u666f\u4e0e\u610f\u4e49 \u9879\u76ee\u53c2\u8003 AAAI Association for the Advancement of  [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":215,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[29],"tags":[],"class_list":["post-1947","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-29"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v24.6 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>\u57fa\u4e8e\u6539\u8fdbHigherHRNet\u7684\u4f53\u80b2\u8fd0\u52a8\u52a8\u4f5c\u89c4\u8303\u5ea6\u68c0\u6d4b\u7cfb\u7edf - \u7269\u5ae9\u8f6f\u4ef6\u8d44\u8baf\u7f51<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.wunen.com\/index.php\/2025\/05\/08\/\u57fa\u4e8e\u6539\u8fdbhigherhrnet\u7684\u4f53\u80b2\u8fd0\u52a8\u52a8\u4f5c\u89c4\u8303\u5ea6\u68c0\u6d4b\u7cfb\u7edf\/\" \/>\n<meta property=\"og:locale\" content=\"zh_CN\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"\u57fa\u4e8e\u6539\u8fdbHigherHRNet\u7684\u4f53\u80b2\u8fd0\u52a8\u52a8\u4f5c\u89c4\u8303\u5ea6\u68c0\u6d4b\u7cfb\u7edf - \u7269\u5ae9\u8f6f\u4ef6\u8d44\u8baf\u7f51\" \/>\n<meta property=\"og:description\" content=\"1.\u7814\u7a76\u80cc\u666f\u4e0e\u610f\u4e49 \u9879\u76ee\u53c2\u8003 AAAI Association for the Advancement of [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.wunen.com\/index.php\/2025\/05\/08\/\u57fa\u4e8e\u6539\u8fdbhigherhrnet\u7684\u4f53\u80b2\u8fd0\u52a8\u52a8\u4f5c\u89c4\u8303\u5ea6\u68c0\u6d4b\u7cfb\u7edf\/\" \/>\n<meta property=\"og:site_name\" content=\"\u7269\u5ae9\u8f6f\u4ef6\u8d44\u8baf\u7f51\" \/>\n<meta property=\"article:published_time\" content=\"2025-05-07T16:00:08+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.wunen.com\/wp-content\/uploads\/2025\/03\/\u8d44\u8baf.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"260\" \/>\n\t<meta property=\"og:image:height\" content=\"180\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"admin@wunen\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u4f5c\u8005\" \/>\n\t<meta name=\"twitter:data1\" content=\"admin@wunen\" \/>\n\t<meta name=\"twitter:label2\" content=\"\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4\" \/>\n\t<meta name=\"twitter:data2\" content=\"16 \u5206\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.wunen.com\/index.php\/2025\/05\/08\/%e5%9f%ba%e4%ba%8e%e6%94%b9%e8%bf%9bhigherhrnet%e7%9a%84%e4%bd%93%e8%82%b2%e8%bf%90%e5%8a%a8%e5%8a%a8%e4%bd%9c%e8%a7%84%e8%8c%83%e5%ba%a6%e6%a3%80%e6%b5%8b%e7%b3%bb%e7%bb%9f\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.wunen.com\/index.php\/2025\/05\/08\/%e5%9f%ba%e4%ba%8e%e6%94%b9%e8%bf%9bhigherhrnet%e7%9a%84%e4%bd%93%e8%82%b2%e8%bf%90%e5%8a%a8%e5%8a%a8%e4%bd%9c%e8%a7%84%e8%8c%83%e5%ba%a6%e6%a3%80%e6%b5%8b%e7%b3%bb%e7%bb%9f\/\"},\"author\":{\"name\":\"admin@wunen\",\"@id\":\"http:\/\/www.wunen.com\/#\/schema\/person\/d5f7a6cf545656a9c90d507e64452db8\"},\"headline\":\"\u57fa\u4e8e\u6539\u8fdbHigherHRNet\u7684\u4f53\u80b2\u8fd0\u52a8\u52a8\u4f5c\u89c4\u8303\u5ea6\u68c0\u6d4b\u7cfb\u7edf\",\"datePublished\":\"2025-05-07T16:00:08+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.wunen.com\/index.php\/2025\/05\/08\/%e5%9f%ba%e4%ba%8e%e6%94%b9%e8%bf%9bhigherhrnet%e7%9a%84%e4%bd%93%e8%82%b2%e8%bf%90%e5%8a%a8%e5%8a%a8%e4%bd%9c%e8%a7%84%e8%8c%83%e5%ba%a6%e6%a3%80%e6%b5%8b%e7%b3%bb%e7%bb%9f\/\"},\"wordCount\":661,\"commentCount\":0,\"publisher\":{\"@id\":\"http:\/\/www.wunen.com\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.wunen.com\/index.php\/2025\/05\/08\/%e5%9f%ba%e4%ba%8e%e6%94%b9%e8%bf%9bhigherhrnet%e7%9a%84%e4%bd%93%e8%82%b2%e8%bf%90%e5%8a%a8%e5%8a%a8%e4%bd%9c%e8%a7%84%e8%8c%83%e5%ba%a6%e6%a3%80%e6%b5%8b%e7%b3%bb%e7%bb%9f\/#primaryimage\"},\"thumbnailUrl\":\"http:\/\/www.wunen.com\/wp-content\/uploads\/2025\/03\/\u8d44\u8baf.jpg\",\"articleSection\":[\"\u4f53\u80b2\u8fd0\u52a8\"],\"inLanguage\":\"zh-Hans\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.wunen.com\/index.php\/2025\/05\/08\/%e5%9f%ba%e4%ba%8e%e6%94%b9%e8%bf%9bhigherhrnet%e7%9a%84%e4%bd%93%e8%82%b2%e8%bf%90%e5%8a%a8%e5%8a%a8%e4%bd%9c%e8%a7%84%e8%8c%83%e5%ba%a6%e6%a3%80%e6%b5%8b%e7%b3%bb%e7%bb%9f\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.wunen.com\/index.php\/2025\/05\/08\/%e5%9f%ba%e4%ba%8e%e6%94%b9%e8%bf%9bhigherhrnet%e7%9a%84%e4%bd%93%e8%82%b2%e8%bf%90%e5%8a%a8%e5%8a%a8%e4%bd%9c%e8%a7%84%e8%8c%83%e5%ba%a6%e6%a3%80%e6%b5%8b%e7%b3%bb%e7%bb%9f\/\",\"url\":\"https:\/\/www.wunen.com\/index.php\/2025\/05\/08\/%e5%9f%ba%e4%ba%8e%e6%94%b9%e8%bf%9bhigherhrnet%e7%9a%84%e4%bd%93%e8%82%b2%e8%bf%90%e5%8a%a8%e5%8a%a8%e4%bd%9c%e8%a7%84%e8%8c%83%e5%ba%a6%e6%a3%80%e6%b5%8b%e7%b3%bb%e7%bb%9f\/\",\"name\":\"\u57fa\u4e8e\u6539\u8fdbHigherHRNet\u7684\u4f53\u80b2\u8fd0\u52a8\u52a8\u4f5c\u89c4\u8303\u5ea6\u68c0\u6d4b\u7cfb\u7edf - \u7269\u5ae9\u8f6f\u4ef6\u8d44\u8baf\u7f51\",\"isPartOf\":{\"@id\":\"http:\/\/www.wunen.com\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.wunen.com\/index.php\/2025\/05\/08\/%e5%9f%ba%e4%ba%8e%e6%94%b9%e8%bf%9bhigherhrnet%e7%9a%84%e4%bd%93%e8%82%b2%e8%bf%90%e5%8a%a8%e5%8a%a8%e4%bd%9c%e8%a7%84%e8%8c%83%e5%ba%a6%e6%a3%80%e6%b5%8b%e7%b3%bb%e7%bb%9f\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.wunen.com\/index.php\/2025\/05\/08\/%e5%9f%ba%e4%ba%8e%e6%94%b9%e8%bf%9bhigherhrnet%e7%9a%84%e4%bd%93%e8%82%b2%e8%bf%90%e5%8a%a8%e5%8a%a8%e4%bd%9c%e8%a7%84%e8%8c%83%e5%ba%a6%e6%a3%80%e6%b5%8b%e7%b3%bb%e7%bb%9f\/#primaryimage\"},\"thumbnailUrl\":\"http:\/\/www.wunen.com\/wp-content\/uploads\/2025\/03\/\u8d44\u8baf.jpg\",\"datePublished\":\"2025-05-07T16:00:08+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.wunen.com\/index.php\/2025\/05\/08\/%e5%9f%ba%e4%ba%8e%e6%94%b9%e8%bf%9bhigherhrnet%e7%9a%84%e4%bd%93%e8%82%b2%e8%bf%90%e5%8a%a8%e5%8a%a8%e4%bd%9c%e8%a7%84%e8%8c%83%e5%ba%a6%e6%a3%80%e6%b5%8b%e7%b3%bb%e7%bb%9f\/#breadcrumb\"},\"inLanguage\":\"zh-Hans\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.wunen.com\/index.php\/2025\/05\/08\/%e5%9f%ba%e4%ba%8e%e6%94%b9%e8%bf%9bhigherhrnet%e7%9a%84%e4%bd%93%e8%82%b2%e8%bf%90%e5%8a%a8%e5%8a%a8%e4%bd%9c%e8%a7%84%e8%8c%83%e5%ba%a6%e6%a3%80%e6%b5%8b%e7%b3%bb%e7%bb%9f\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-Hans\",\"@id\":\"https:\/\/www.wunen.com\/index.php\/2025\/05\/08\/%e5%9f%ba%e4%ba%8e%e6%94%b9%e8%bf%9bhigherhrnet%e7%9a%84%e4%bd%93%e8%82%b2%e8%bf%90%e5%8a%a8%e5%8a%a8%e4%bd%9c%e8%a7%84%e8%8c%83%e5%ba%a6%e6%a3%80%e6%b5%8b%e7%b3%bb%e7%bb%9f\/#primaryimage\",\"url\":\"http:\/\/www.wunen.com\/wp-content\/uploads\/2025\/03\/\u8d44\u8baf.jpg\",\"contentUrl\":\"http:\/\/www.wunen.com\/wp-content\/uploads\/2025\/03\/\u8d44\u8baf.jpg\",\"width\":260,\"height\":180},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.wunen.com\/index.php\/2025\/05\/08\/%e5%9f%ba%e4%ba%8e%e6%94%b9%e8%bf%9bhigherhrnet%e7%9a%84%e4%bd%93%e8%82%b2%e8%bf%90%e5%8a%a8%e5%8a%a8%e4%bd%9c%e8%a7%84%e8%8c%83%e5%ba%a6%e6%a3%80%e6%b5%8b%e7%b3%bb%e7%bb%9f\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\u9996\u9875\",\"item\":\"http:\/\/www.wunen.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"\u57fa\u4e8e\u6539\u8fdbHigherHRNet\u7684\u4f53\u80b2\u8fd0\u52a8\u52a8\u4f5c\u89c4\u8303\u5ea6\u68c0\u6d4b\u7cfb\u7edf\"}]},{\"@type\":\"WebSite\",\"@id\":\"http:\/\/www.wunen.com\/#website\",\"url\":\"http:\/\/www.wunen.com\/\",\"name\":\"\u7269\u5ae9\u8f6f\u4ef6\u8d44\u8baf\u7f51\",\"description\":\"\u8f6f\u4ef6\u8d44\u8baf\u6765\u7269\u5ae9\",\"publisher\":{\"@id\":\"http:\/\/www.wunen.com\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"http:\/\/www.wunen.com\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"zh-Hans\"},{\"@type\":\"Organization\",\"@id\":\"http:\/\/www.wunen.com\/#organization\",\"name\":\"\u7269\u5ae9\u8f6f\u4ef6\u8d44\u8baf\u7f51\",\"url\":\"http:\/\/www.wunen.com\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-Hans\",\"@id\":\"http:\/\/www.wunen.com\/#\/schema\/logo\/image\/\",\"url\":\"http:\/\/www.wunen.com\/wp-content\/uploads\/2025\/03\/cropped-\u7269\u5ae9-1.png\",\"contentUrl\":\"http:\/\/www.wunen.com\/wp-content\/uploads\/2025\/03\/cropped-\u7269\u5ae9-1.png\",\"width\":1024,\"height\":1024,\"caption\":\"\u7269\u5ae9\u8f6f\u4ef6\u8d44\u8baf\u7f51\"},\"image\":{\"@id\":\"http:\/\/www.wunen.com\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"http:\/\/www.wunen.com\/#\/schema\/person\/d5f7a6cf545656a9c90d507e64452db8\",\"name\":\"admin@wunen\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-Hans\",\"@id\":\"http:\/\/www.wunen.com\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/d90ec1e3faf77c4d4e66e40c29b85ff6401161e0502f401dae2f0e25b38ce25e?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/d90ec1e3faf77c4d4e66e40c29b85ff6401161e0502f401dae2f0e25b38ce25e?s=96&d=mm&r=g\",\"caption\":\"admin@wunen\"},\"sameAs\":[\"http:\/\/www.wunen.com\"],\"url\":\"http:\/\/www.wunen.com\/index.php\/author\/adminwunen\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"\u57fa\u4e8e\u6539\u8fdbHigherHRNet\u7684\u4f53\u80b2\u8fd0\u52a8\u52a8\u4f5c\u89c4\u8303\u5ea6\u68c0\u6d4b\u7cfb\u7edf - \u7269\u5ae9\u8f6f\u4ef6\u8d44\u8baf\u7f51","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.wunen.com\/index.php\/2025\/05\/08\/\u57fa\u4e8e\u6539\u8fdbhigherhrnet\u7684\u4f53\u80b2\u8fd0\u52a8\u52a8\u4f5c\u89c4\u8303\u5ea6\u68c0\u6d4b\u7cfb\u7edf\/","og_locale":"zh_CN","og_type":"article","og_title":"\u57fa\u4e8e\u6539\u8fdbHigherHRNet\u7684\u4f53\u80b2\u8fd0\u52a8\u52a8\u4f5c\u89c4\u8303\u5ea6\u68c0\u6d4b\u7cfb\u7edf - \u7269\u5ae9\u8f6f\u4ef6\u8d44\u8baf\u7f51","og_description":"1.\u7814\u7a76\u80cc\u666f\u4e0e\u610f\u4e49 \u9879\u76ee\u53c2\u8003 AAAI Association for the Advancement of [&hellip;]","og_url":"https:\/\/www.wunen.com\/index.php\/2025\/05\/08\/\u57fa\u4e8e\u6539\u8fdbhigherhrnet\u7684\u4f53\u80b2\u8fd0\u52a8\u52a8\u4f5c\u89c4\u8303\u5ea6\u68c0\u6d4b\u7cfb\u7edf\/","og_site_name":"\u7269\u5ae9\u8f6f\u4ef6\u8d44\u8baf\u7f51","article_published_time":"2025-05-07T16:00:08+00:00","og_image":[{"width":260,"height":180,"url":"https:\/\/www.wunen.com\/wp-content\/uploads\/2025\/03\/\u8d44\u8baf.jpg","type":"image\/jpeg"}],"author":"admin@wunen","twitter_card":"summary_large_image","twitter_misc":{"\u4f5c\u8005":"admin@wunen","\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4":"16 \u5206"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.wunen.com\/index.php\/2025\/05\/08\/%e5%9f%ba%e4%ba%8e%e6%94%b9%e8%bf%9bhigherhrnet%e7%9a%84%e4%bd%93%e8%82%b2%e8%bf%90%e5%8a%a8%e5%8a%a8%e4%bd%9c%e8%a7%84%e8%8c%83%e5%ba%a6%e6%a3%80%e6%b5%8b%e7%b3%bb%e7%bb%9f\/#article","isPartOf":{"@id":"https:\/\/www.wunen.com\/index.php\/2025\/05\/08\/%e5%9f%ba%e4%ba%8e%e6%94%b9%e8%bf%9bhigherhrnet%e7%9a%84%e4%bd%93%e8%82%b2%e8%bf%90%e5%8a%a8%e5%8a%a8%e4%bd%9c%e8%a7%84%e8%8c%83%e5%ba%a6%e6%a3%80%e6%b5%8b%e7%b3%bb%e7%bb%9f\/"},"author":{"name":"admin@wunen","@id":"http:\/\/www.wunen.com\/#\/schema\/person\/d5f7a6cf545656a9c90d507e64452db8"},"headline":"\u57fa\u4e8e\u6539\u8fdbHigherHRNet\u7684\u4f53\u80b2\u8fd0\u52a8\u52a8\u4f5c\u89c4\u8303\u5ea6\u68c0\u6d4b\u7cfb\u7edf","datePublished":"2025-05-07T16:00:08+00:00","mainEntityOfPage":{"@id":"https:\/\/www.wunen.com\/index.php\/2025\/05\/08\/%e5%9f%ba%e4%ba%8e%e6%94%b9%e8%bf%9bhigherhrnet%e7%9a%84%e4%bd%93%e8%82%b2%e8%bf%90%e5%8a%a8%e5%8a%a8%e4%bd%9c%e8%a7%84%e8%8c%83%e5%ba%a6%e6%a3%80%e6%b5%8b%e7%b3%bb%e7%bb%9f\/"},"wordCount":661,"commentCount":0,"publisher":{"@id":"http:\/\/www.wunen.com\/#organization"},"image":{"@id":"https:\/\/www.wunen.com\/index.php\/2025\/05\/08\/%e5%9f%ba%e4%ba%8e%e6%94%b9%e8%bf%9bhigherhrnet%e7%9a%84%e4%bd%93%e8%82%b2%e8%bf%90%e5%8a%a8%e5%8a%a8%e4%bd%9c%e8%a7%84%e8%8c%83%e5%ba%a6%e6%a3%80%e6%b5%8b%e7%b3%bb%e7%bb%9f\/#primaryimage"},"thumbnailUrl":"http:\/\/www.wunen.com\/wp-content\/uploads\/2025\/03\/\u8d44\u8baf.jpg","articleSection":["\u4f53\u80b2\u8fd0\u52a8"],"inLanguage":"zh-Hans","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.wunen.com\/index.php\/2025\/05\/08\/%e5%9f%ba%e4%ba%8e%e6%94%b9%e8%bf%9bhigherhrnet%e7%9a%84%e4%bd%93%e8%82%b2%e8%bf%90%e5%8a%a8%e5%8a%a8%e4%bd%9c%e8%a7%84%e8%8c%83%e5%ba%a6%e6%a3%80%e6%b5%8b%e7%b3%bb%e7%bb%9f\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.wunen.com\/index.php\/2025\/05\/08\/%e5%9f%ba%e4%ba%8e%e6%94%b9%e8%bf%9bhigherhrnet%e7%9a%84%e4%bd%93%e8%82%b2%e8%bf%90%e5%8a%a8%e5%8a%a8%e4%bd%9c%e8%a7%84%e8%8c%83%e5%ba%a6%e6%a3%80%e6%b5%8b%e7%b3%bb%e7%bb%9f\/","url":"https:\/\/www.wunen.com\/index.php\/2025\/05\/08\/%e5%9f%ba%e4%ba%8e%e6%94%b9%e8%bf%9bhigherhrnet%e7%9a%84%e4%bd%93%e8%82%b2%e8%bf%90%e5%8a%a8%e5%8a%a8%e4%bd%9c%e8%a7%84%e8%8c%83%e5%ba%a6%e6%a3%80%e6%b5%8b%e7%b3%bb%e7%bb%9f\/","name":"\u57fa\u4e8e\u6539\u8fdbHigherHRNet\u7684\u4f53\u80b2\u8fd0\u52a8\u52a8\u4f5c\u89c4\u8303\u5ea6\u68c0\u6d4b\u7cfb\u7edf - \u7269\u5ae9\u8f6f\u4ef6\u8d44\u8baf\u7f51","isPartOf":{"@id":"http:\/\/www.wunen.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.wunen.com\/index.php\/2025\/05\/08\/%e5%9f%ba%e4%ba%8e%e6%94%b9%e8%bf%9bhigherhrnet%e7%9a%84%e4%bd%93%e8%82%b2%e8%bf%90%e5%8a%a8%e5%8a%a8%e4%bd%9c%e8%a7%84%e8%8c%83%e5%ba%a6%e6%a3%80%e6%b5%8b%e7%b3%bb%e7%bb%9f\/#primaryimage"},"image":{"@id":"https:\/\/www.wunen.com\/index.php\/2025\/05\/08\/%e5%9f%ba%e4%ba%8e%e6%94%b9%e8%bf%9bhigherhrnet%e7%9a%84%e4%bd%93%e8%82%b2%e8%bf%90%e5%8a%a8%e5%8a%a8%e4%bd%9c%e8%a7%84%e8%8c%83%e5%ba%a6%e6%a3%80%e6%b5%8b%e7%b3%bb%e7%bb%9f\/#primaryimage"},"thumbnailUrl":"http:\/\/www.wunen.com\/wp-content\/uploads\/2025\/03\/\u8d44\u8baf.jpg","datePublished":"2025-05-07T16:00:08+00:00","breadcrumb":{"@id":"https:\/\/www.wunen.com\/index.php\/2025\/05\/08\/%e5%9f%ba%e4%ba%8e%e6%94%b9%e8%bf%9bhigherhrnet%e7%9a%84%e4%bd%93%e8%82%b2%e8%bf%90%e5%8a%a8%e5%8a%a8%e4%bd%9c%e8%a7%84%e8%8c%83%e5%ba%a6%e6%a3%80%e6%b5%8b%e7%b3%bb%e7%bb%9f\/#breadcrumb"},"inLanguage":"zh-Hans","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.wunen.com\/index.php\/2025\/05\/08\/%e5%9f%ba%e4%ba%8e%e6%94%b9%e8%bf%9bhigherhrnet%e7%9a%84%e4%bd%93%e8%82%b2%e8%bf%90%e5%8a%a8%e5%8a%a8%e4%bd%9c%e8%a7%84%e8%8c%83%e5%ba%a6%e6%a3%80%e6%b5%8b%e7%b3%bb%e7%bb%9f\/"]}]},{"@type":"ImageObject","inLanguage":"zh-Hans","@id":"https:\/\/www.wunen.com\/index.php\/2025\/05\/08\/%e5%9f%ba%e4%ba%8e%e6%94%b9%e8%bf%9bhigherhrnet%e7%9a%84%e4%bd%93%e8%82%b2%e8%bf%90%e5%8a%a8%e5%8a%a8%e4%bd%9c%e8%a7%84%e8%8c%83%e5%ba%a6%e6%a3%80%e6%b5%8b%e7%b3%bb%e7%bb%9f\/#primaryimage","url":"http:\/\/www.wunen.com\/wp-content\/uploads\/2025\/03\/\u8d44\u8baf.jpg","contentUrl":"http:\/\/www.wunen.com\/wp-content\/uploads\/2025\/03\/\u8d44\u8baf.jpg","width":260,"height":180},{"@type":"BreadcrumbList","@id":"https:\/\/www.wunen.com\/index.php\/2025\/05\/08\/%e5%9f%ba%e4%ba%8e%e6%94%b9%e8%bf%9bhigherhrnet%e7%9a%84%e4%bd%93%e8%82%b2%e8%bf%90%e5%8a%a8%e5%8a%a8%e4%bd%9c%e8%a7%84%e8%8c%83%e5%ba%a6%e6%a3%80%e6%b5%8b%e7%b3%bb%e7%bb%9f\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\u9996\u9875","item":"http:\/\/www.wunen.com\/"},{"@type":"ListItem","position":2,"name":"\u57fa\u4e8e\u6539\u8fdbHigherHRNet\u7684\u4f53\u80b2\u8fd0\u52a8\u52a8\u4f5c\u89c4\u8303\u5ea6\u68c0\u6d4b\u7cfb\u7edf"}]},{"@type":"WebSite","@id":"http:\/\/www.wunen.com\/#website","url":"http:\/\/www.wunen.com\/","name":"\u7269\u5ae9\u8f6f\u4ef6\u8d44\u8baf\u7f51","description":"\u8f6f\u4ef6\u8d44\u8baf\u6765\u7269\u5ae9","publisher":{"@id":"http:\/\/www.wunen.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"http:\/\/www.wunen.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"zh-Hans"},{"@type":"Organization","@id":"http:\/\/www.wunen.com\/#organization","name":"\u7269\u5ae9\u8f6f\u4ef6\u8d44\u8baf\u7f51","url":"http:\/\/www.wunen.com\/","logo":{"@type":"ImageObject","inLanguage":"zh-Hans","@id":"http:\/\/www.wunen.com\/#\/schema\/logo\/image\/","url":"http:\/\/www.wunen.com\/wp-content\/uploads\/2025\/03\/cropped-\u7269\u5ae9-1.png","contentUrl":"http:\/\/www.wunen.com\/wp-content\/uploads\/2025\/03\/cropped-\u7269\u5ae9-1.png","width":1024,"height":1024,"caption":"\u7269\u5ae9\u8f6f\u4ef6\u8d44\u8baf\u7f51"},"image":{"@id":"http:\/\/www.wunen.com\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"http:\/\/www.wunen.com\/#\/schema\/person\/d5f7a6cf545656a9c90d507e64452db8","name":"admin@wunen","image":{"@type":"ImageObject","inLanguage":"zh-Hans","@id":"http:\/\/www.wunen.com\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/d90ec1e3faf77c4d4e66e40c29b85ff6401161e0502f401dae2f0e25b38ce25e?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/d90ec1e3faf77c4d4e66e40c29b85ff6401161e0502f401dae2f0e25b38ce25e?s=96&d=mm&r=g","caption":"admin@wunen"},"sameAs":["http:\/\/www.wunen.com"],"url":"http:\/\/www.wunen.com\/index.php\/author\/adminwunen\/"}]}},"_links":{"self":[{"href":"http:\/\/www.wunen.com\/index.php\/wp-json\/wp\/v2\/posts\/1947","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/www.wunen.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.wunen.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.wunen.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.wunen.com\/index.php\/wp-json\/wp\/v2\/comments?post=1947"}],"version-history":[{"count":0,"href":"http:\/\/www.wunen.com\/index.php\/wp-json\/wp\/v2\/posts\/1947\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"http:\/\/www.wunen.com\/index.php\/wp-json\/wp\/v2\/media\/215"}],"wp:attachment":[{"href":"http:\/\/www.wunen.com\/index.php\/wp-json\/wp\/v2\/media?parent=1947"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.wunen.com\/index.php\/wp-json\/wp\/v2\/categories?post=1947"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.wunen.com\/index.php\/wp-json\/wp\/v2\/tags?post=1947"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}