{"id":121182,"date":"2026-11-02T06:10:12","date_gmt":"2026-11-01T22:10:12","guid":{"rendered":"https:\/\/www.wsisp.com\/helps\/121182.html"},"modified":"2026-11-02T06:10:12","modified_gmt":"2026-11-01T22:10:12","slug":"yolov12%e3%80%90%e7%ac%ac%e5%85%ad%e7%ab%a0%ef%bc%9a%e6%8e%a8%e7%90%86%e3%80%81%e9%aa%8c%e8%af%81%e4%b8%8e-benchmark%e7%af%87%c2%b7%e7%ac%ac15%e8%8a%82%e3%80%91yolov12-benchmark-%e6%8a%a5%e5%91%8a","status":"publish","type":"post","link":"https:\/\/www.wsisp.com\/helps\/121182.html","title":{"rendered":"YOLOv12\u3010\u7b2c\u516d\u7ae0\uff1a\u63a8\u7406\u3001\u9a8c\u8bc1\u4e0e Benchmark\u7bc7\u00b7\u7b2c15\u8282\u3011YOLOv12 Benchmark \u62a5\u544a\u6a21\u677f"},"content":{"rendered":"<p> <img decoding=\"async\" src=\"https:\/\/www.wsisp.com\/helps\/wp-content\/uploads\/2026\/11\/20261101221001-6ae7b8b9a8503.png\" \/> <\/p>\n<p>&#x1f3c6; \u672c\u6587\u6536\u5f55\u4e8e \u300aYOLOv12\u5b9e\u6218&#xff1a;\u4ece\u5165\u95e8\u5230\u6df1\u5ea6\u4f18\u5316\u300b \u4e13\u680f\u3002<\/p>\n<p>\u8be5\u4e13\u680f\u7cfb\u7edf\u590d\u73b0\u5e76\u6df1\u5ea6\u68b3\u7406\u5168\u7f51\u4e3b\u6d41 YOLOv12 \u6539\u8fdb\u65b9\u6cd5\u4e0e\u5de5\u7a0b\u5b9e\u6218\u6848\u4f8b&#xff0c;\u8986\u76d6\u5206\u7c7b\u3001\u76ee\u6807\u68c0\u6d4b\u3001\u5b9e\u4f8b\u5206\u5272\u3001\u591a\u76ee\u6807\u8ffd\u8e2a\u3001\u5173\u952e\u70b9\u68c0\u6d4b\u3001\u65cb\u8f6c\u76ee\u6807\u68c0\u6d4b\u7b49\u591a\u4e2a\u65b9\u5411&#xff0c;\u575a\u6301 \u6301\u7eed\u66f4\u65b0 &#043; \u6df1\u5ea6\u89e3\u6790 &#043; \u5de5\u7a0b\u9a8c\u8bc1\u3002<\/p>\n<p>\u4e13\u680f\u5c06\u56f4\u7ed5 YOLOv12 \u7684\u7f51\u7edc\u7ed3\u6784\u3001\u8bad\u7ec3\u7b56\u7565\u3001\u6807\u7b7e\u5206\u914d\u3001\u635f\u5931\u51fd\u6570\u3001\u6570\u636e\u589e\u5f3a\u3001\u6a21\u578b\u538b\u7f29\u3001\u63a8\u7406\u52a0\u901f\u4e0e\u90e8\u7f72\u843d\u5730\u7b49\u5185\u5bb9\u5c55\u5f00&#xff0c;\u91cd\u70b9\u5206\u6790 Area Attention&#xff08;\u533a\u57df\u6ce8\u610f\u529b\u673a\u5236&#xff09;\u3001R-ELAN&#xff08;\u6b8b\u5dee\u9ad8\u6548\u5c42\u805a\u5408\u7f51\u7edc&#xff09;\u3001Flash Attention \u96c6\u6210\u4e0e Attention-Centric \u67b6\u6784\u8bbe\u8ba1 \u7b49\u6838\u5fc3\u8bbe\u8ba1\u601d\u60f3&#xff0c;\u5e76\u7ed3\u5408\u5b9e\u9645\u9879\u76ee\u8bb2\u89e3\u5176\u6539\u8fdb\u65b9\u5f0f\u4e0e\u5e94\u7528\u4ef7\u503c\u3002<\/p>\n<p>\u90e8\u5206\u7ae0\u8282\u8fd8\u4f1a\u7ed3\u5408\u56fd\u5185\u5916\u524d\u6cbf\u8bba\u6587\u4e0e AIGC \u5927\u6a21\u578b\u6280\u672f&#xff0c;\u5bf9\u4e3b\u6d41\u6539\u8fdb\u65b9\u6848\u8fdb\u884c\u91cd\u6784\u4e0e\u518d\u8bbe\u8ba1&#xff0c;\u4f7f\u5185\u5bb9\u66f4\u52a0\u8d34\u8fd1\u771f\u5b9e\u4e1a\u52a1\u573a\u666f&#xff0c;\u9002\u5408\u5e0c\u671b\u6df1\u5165\u7814\u7a76 YOLOv12 \u6216\u5177\u6709\u5de5\u7a0b\u843d\u5730\u9700\u6c42\u7684\u5f00\u53d1\u8005\u5b66\u4e60\u4e0e\u53c2\u8003\u3002<\/p>\n<p>&#x1f3af;<font color=\"red\">\u9650\u65f6\u7279\u60e0&#xff1a;\u5f53\u524d\u6d3b\u52a8\u4e00\u6298\u79d2\u6740&#xff0c;\u4e00\u6b21\u8ba2\u9605&#xff0c;\u7ec8\u8eab\u6709\u6548&#xff0c;\u540e\u7eed\u6240\u6709\u66f4\u65b0\u7ae0\u8282\u5168\u90e8\u514d\u8d39\u89e3\u9501<\/font> &#x1f449; \u4f20\u9001\u95e8 &#x1f448;\ufe0f<\/p>\n<p>&#x1f389; \u672c\u4e13\u680f\u8fd8\u4e0d\u591f\u8fc7\u763e&#xff1f;\u522b\u6025&#xff0c;\u597d\u620f\u624d\u521a\u521a\u5f00\u59cb&#xff01;\u6211\u5df2\u7ecf\u4e3a\u4f60\u51c6\u5907\u4e86\u4e00\u6574\u5957 YOLO \u8fdb\u9636\u5b9e\u6218\u5927\u793c\u5305&#x1f381;&#xff1a;<\/p>\n<p>&#x1f449; \u300aYOLOv8\u5b9e\u6218\u300b &#x1f449; \u300aYOLOv9\u5b9e\u6218\u300b &#x1f449; \u300aYOLOv10\u5b9e\u6218\u300b &#x1f449; \u300aYOLOv11\u5b9e\u6218\u300b &#x1f449; \u300aYOLOv12\u5b9e\u6218\u300b &#x1f449; \u4ee5\u53ca\u6700\u65b0\u4e0a\u7ebf\u7684 \u300aYOLOv26\u5b9e\u6218\u300b<\/p>\n<p>\u60f3\u4e00\u6b21\u641e\u5b9a\u6240\u6709\u7248\u672c&#xff1f;\u76f4\u63a5\u51b2 \u300aYOLO\u5168\u6808\u5b9e\u6218\u5408\u96c6\u300b&#xff0c;\u4e00\u7ad9\u5f0f\u6db5\u76d6 YOLO \u5404\u7248\u672c\u5b9e\u6218\u6559\u5b66&#xff01;<\/p>\n<p>&#x1f680; \u60f3\u5b66\u54ea\u4e2a\u7248\u672c&#xff1f;\u76f4\u63a5\u627e bug \u83cc&#034;\u8bb8\u613f&#034;&#xff0c;\u5b89\u6392&#xff01;\u5fc5\u987b\u5b89\u6392&#xff01;&#x1f680;<\/p>\n<p>&#x1f3af; \u672c\u6587\u5b9a\u4f4d&#xff1a;\u8ba1\u7b97\u673a\u89c6\u89c9 \u00d7 YOLOv12 \u63a8\u7406\u3001\u9a8c\u8bc1\u4e0e Benchmark\u7bc7 &#x1f4c5; \u9884\u8ba1\u9605\u8bfb\u65f6\u95f4&#xff1a;\u7ea6 45&#xff5e;60 \u5206\u949f &#x1f3f7;\ufe0f \u96be\u5ea6\u7b49\u7ea7&#xff1a;\u2b50\u2b50\u2606\u2606\u2606&#xff08;\u57fa\u7840\u7ea7&#xff09; &#x1f527; \u6280\u672f\u6808&#xff1a;Python 3.9&#043; \u00b7 PyTorch 2.0&#043; \u00b7 YOLOv12 \u00b7 ByteTrack \u00b7 OpenCV \u00b7 NumPy<\/p>\n<p> <img decoding=\"async\" width=\"1000\" src=\"https:\/\/www.wsisp.com\/helps\/wp-content\/uploads\/2026\/11\/20261101221003-6ae7b8bbbc66f.png\" \/> <\/p>\n<h4>\u5168\u6587\u76ee\u5f55&#xff1a;<\/h4>\n<ul>\n<li>\n<ul>\n<li>\u4e0a\u671f\u56de\u987e<\/li>\n<li>\u672c\u8282\u4e3b\u9898&#xff1a;YOLOv12 Benchmark \u62a5\u544a\u6a21\u677f<\/li>\n<li>\n<ul>\n<li>\u4e00\u3001\u4e3a\u4ec0\u4e48\u9700\u8981\u4e00\u4efd\u6807\u51c6\u5316\u7684 Benchmark \u62a5\u544a&#xff1f;<\/li>\n<li>\u4e8c\u3001Benchmark \u62a5\u544a\u7684\u6574\u4f53\u7ed3\u6784\u8bbe\u8ba1<\/li>\n<li>\u4e09\u3001\u7b2c\u4e00\u677f\u5757&#xff1a;\u62a5\u544a\u5143\u4fe1\u606f<\/li>\n<li>\u56db\u3001\u7b2c\u4e8c\u677f\u5757&#xff1a;\u6d4b\u8bd5\u73af\u5883\u63cf\u8ff0<\/li>\n<li>\u4e94\u3001\u7b2c\u4e09\u677f\u5757&#xff1a;\u6570\u636e\u96c6\u8bf4\u660e<\/li>\n<li>\u516d\u3001\u7b2c\u56db\u677f\u5757&#xff1a;\u6d4b\u8bd5\u65b9\u6cd5\u4e0e\u53c2\u6570<\/li>\n<li>\u4e03\u3001\u7b2c\u4e94\u677f\u5757&#xff1a;\u7cbe\u5ea6\u8bc4\u4f30\u7ed3\u679c<\/li>\n<li>\u516b\u3001\u7b2c\u516d\u677f\u5757&#xff1a;\u63a8\u7406\u901f\u5ea6\u7ed3\u679c<\/li>\n<li>\u4e5d\u3001\u7b2c\u4e03\u677f\u5757&#xff1a;\u8d44\u6e90\u5360\u7528\u7ed3\u679c<\/li>\n<li>\u5341\u3001\u7b2c\u516b\u677f\u5757&#xff1a;\u7efc\u5408\u5bf9\u6bd4\u5206\u6790\u2014\u2014\u96f7\u8fbe\u56fe\u4e0e\u5e15\u7d2f\u6258\u5206\u6790<\/li>\n<li>\u5341\u4e00\u3001\u7b2c\u4e5d\u677f\u5757&#xff1a;\u7ed3\u8bba\u4e0e\u5efa\u8bae<\/li>\n<li>\u5341\u4e8c\u3001\u7b2c\u5341\u677f\u5757&#xff1a;\u5b8c\u6574\u81ea\u52a8\u5316 Benchmark \u6d41\u6c34\u7ebf<\/li>\n<li>\u5341\u4e09\u3001Benchmark \u914d\u7f6e\u6587\u4ef6\u6a21\u677f<\/li>\n<li>\u5341\u56db\u3001\u62a5\u544a\u8d28\u91cf\u68c0\u67e5\u6e05\u5355<\/li>\n<li>\u5341\u4e94\u3001\u62a5\u544a\u5206\u53d1\u4e0e\u7248\u672c\u7ba1\u7406<\/li>\n<li>\u5341\u516d\u3001\u5e38\u89c1\u95ee\u9898\u4e0e\u8e29\u5751\u8bb0\u5f55<\/li>\n<\/ul>\n<\/li>\n<li>\u4e0b\u671f\u9884\u544a<\/li>\n<li>&#x1f4cc; \u9644\u5f55<\/li>\n<li>&#x1f9e7;&#x1f9e7; \u6587\u672b\u798f\u5229&#xff0c;\u7b49\u4f60\u6765\u62ff&#xff01;&#x1f9e7;&#x1f9e7;<\/li>\n<li>&#x1f468;\u200d&#x1f4bb; About Me \u00b7 \u5173\u4e8e\u4f5c\u8005<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<h3>\u4e0a\u671f\u56de\u987e<\/h3>\n<p>\u5728\u4e0a\u671f\u300aYOLOv12\u3010\u7b2c\u516d\u7ae0&#xff1a;\u63a8\u7406\u3001\u9a8c\u8bc1\u4e0e Benchmark\u7bc7\u00b7\u7b2c14\u8282\u3011\u6a21\u578b\u9009\u578b\u62a5\u544a\u2014\u2014\u7cbe\u5ea6\u3001\u901f\u5ea6\u3001\u53c2\u6570\u91cf\u3001FLOPs \u7efc\u5408\u8bc4\u4f30\u300b\u5185\u5bb9\u4e2d&#xff0c;\u6211\u4eec\u6df1\u5165\u63a2\u8ba8\u4e86\u5982\u4f55\u7cfb\u7edf\u6027\u5730\u5b8c\u6210\u4e00\u4efd\u6a21\u578b\u9009\u578b\u62a5\u544a\u3002\u8fd9\u4e0d\u662f\u4e00\u4ef6\u7b80\u5355\u7684\u4e8b\u2014\u2014\u5de5\u7a0b\u5e08\u4eec\u5e38\u5e38\u9677\u5165&#034;\u53ea\u770b mAP&#034;\u7684\u8bef\u533a&#xff0c;\u628a\u7cbe\u5ea6\u5f53\u4f5c\u552f\u4e00\u5224\u65ad\u6807\u51c6&#xff0c;\u7ed3\u679c\u9009\u51fa\u6765\u7684\u6a21\u578b\u5728\u5b9e\u9645\u90e8\u7f72\u65f6\u8981\u4e48\u8dd1\u4e0d\u52a8&#xff0c;\u8981\u4e48\u5ef6\u8fdf\u9ad8\u5f97\u8ba9\u4ea7\u54c1\u65b9\u96be\u4ee5\u63a5\u53d7\u3002<\/p>\n<p>\u4e0a\u671f\u7684\u6838\u5fc3\u601d\u8def\u662f\u5efa\u7acb\u4e00\u5957\u591a\u7ef4\u5ea6\u8bc4\u4f30\u4f53\u7cfb&#xff1a;<\/p>\n<ul>\n<li>\u7cbe\u5ea6\u7ef4\u5ea6&#xff1a;mAP&#064;0.5 \u4e0e mAP&#064;0.5:0.95 \u7684\u7efc\u5408\u6743\u8861&#xff0c;\u9488\u5bf9\u4e0d\u540c\u4e1a\u52a1\u573a\u666f&#xff08;\u5b89\u9632\u3001\u533b\u7597\u3001\u5de5\u4e1a\u8d28\u68c0&#xff09;\u7ed9\u51fa\u4e0d\u540c\u7684\u7cbe\u5ea6\u9608\u503c\u5e95\u7ebf<\/li>\n<li>\u901f\u5ea6\u7ef4\u5ea6&#xff1a;\u533a\u5206\u4e86\u5ef6\u8fdf&#xff08;Latency&#xff09;\u3001\u541e\u5410\u91cf&#xff08;Throughput&#xff09;\u3001FPS \u4e09\u4e2a\u6982\u5ff5&#xff0c;\u5f3a\u8c03\u5fc5\u987b\u5728\u76ee\u6807\u786c\u4ef6\u4e0a\u5b9e\u6d4b&#xff0c;\u4e0d\u80fd\u53ea\u770b\u8bba\u6587\u6570\u636e<\/li>\n<li>\u53c2\u6570\u91cf\u7ef4\u5ea6&#xff1a;\u53c2\u6570\u91cf&#xff08;Params&#xff09;\u53cd\u6620\u6a21\u578b\u5b58\u50a8\u5360\u7528&#xff0c;\u4f46\u4e0d\u7b49\u4e8e\u63a8\u7406\u901f\u5ea6&#xff0c;\u8981\u7ed3\u5408 FLOPs \u7efc\u5408\u5224\u65ad<\/li>\n<li>FLOPs \u7ef4\u5ea6&#xff1a;\u6d6e\u70b9\u8fd0\u7b97\u91cf\u4ee3\u8868\u8ba1\u7b97\u590d\u6742\u5ea6&#xff0c;FLOPs \u4f4e\u4e0d\u4ee3\u8868\u901f\u5ea6\u5feb&#xff0c;\u8fd8\u53d7\u5185\u5b58\u8bbf\u95ee\u6a21\u5f0f\u3001\u7b97\u5b50\u5e76\u884c\u5ea6\u7b49\u5f71\u54cd<\/li>\n<\/ul>\n<p>\u6211\u4eec\u8fd8\u7ed9\u51fa\u4e86\u4e00\u4e2a\u9009\u578b\u51b3\u7b56\u77e9\u9635&#xff0c;\u5e2e\u52a9\u8bfb\u8005\u6839\u636e\u90e8\u7f72\u573a\u666f&#xff08;\u8fb9\u7f18\u7aef\/\u4e91\u7aef&#xff09;\u3001\u7cbe\u5ea6\u8981\u6c42&#xff08;\u9ad8\/\u4e2d\/\u4f4e&#xff09;\u3001\u5b9e\u65f6\u6027\u8981\u6c42\u5feb\u901f\u7f29\u5c0f\u5019\u9009\u6a21\u578b\u8303\u56f4\u3002\u6700\u7ec8\u5f62\u6210\u4e86\u4ece&#034;\u9700\u6c42\u5206\u6790 \u2192 \u5019\u9009\u7b5b\u9009 \u2192 \u5b9e\u6d4b\u5bf9\u6bd4 \u2192 \u9009\u578b\u51b3\u7b56&#034;\u7684\u5b8c\u6574\u95ed\u73af\u3002<\/p>\n<p>\u90a3\u4e48&#xff0c;\u9009\u578b\u4e4b\u540e\u5462&#xff1f;\u6211\u4eec\u9700\u8981\u4e00\u4efd\u6b63\u5f0f\u7684 Benchmark \u62a5\u544a\u6765\u6c89\u6dc0\u6d4b\u8bd5\u7ed3\u679c\u3001\u652f\u6491\u51b3\u7b56\u3001\u65b9\u4fbf\u56e2\u961f\u534f\u4f5c\u4e0e\u540e\u7eed\u56de\u6eaf\u3002\u8fd9\u5c31\u662f\u672c\u8282\u8981\u89e3\u51b3\u7684\u95ee\u9898\u3002<\/p>\n<h3>\u672c\u8282\u4e3b\u9898&#xff1a;YOLOv12 Benchmark \u62a5\u544a\u6a21\u677f<\/h3>\n<h4>\u4e00\u3001\u4e3a\u4ec0\u4e48\u9700\u8981\u4e00\u4efd\u6807\u51c6\u5316\u7684 Benchmark \u62a5\u544a&#xff1f;<\/h4>\n<p>\u8bf4\u5b9e\u8bdd&#xff0c;\u6211\u89c1\u8fc7\u592a\u591a\u56e2\u961f\u7684 Benchmark \u201c\u62a5\u544a\u201d\u2014\u2014\u4e00\u4e2a Excel \u8868\u683c&#xff0c;\u51e0\u5217\u6570\u5b57&#xff0c;\u6ca1\u6709\u6d4b\u8bd5\u73af\u5883\u63cf\u8ff0&#xff0c;\u6ca1\u6709\u6570\u636e\u96c6\u8bf4\u660e&#xff0c;\u6ca1\u6709\u6d4b\u8bd5\u4ee3\u7801&#xff0c;\u751a\u81f3\u8fde\u6d4b\u8bd5\u65f6\u95f4\u90fd\u6ca1\u6709\u8bb0\u5f55\u3002\u534a\u5e74\u540e\u518d\u770b&#xff0c;\u6839\u672c\u4e0d\u77e5\u9053\u8fd9\u4e2a\u6570\u5b57\u662f\u600e\u4e48\u6765\u7684&#xff0c;\u5728\u4ec0\u4e48\u6761\u4ef6\u4e0b\u6d4b\u7684&#xff0c;\u6362\u4e86\u5757\u663e\u5361\u8fd8\u80fd\u590d\u73b0\u5417&#xff1f;<\/p>\n<p>\u8fd9\u79cd&#034;\u62a5\u544a&#034;\u7684\u6700\u5927\u95ee\u9898\u5728\u4e8e\u4e0d\u53ef\u590d\u73b0\u3001\u4e0d\u53ef\u8ffd\u6eaf\u3001\u4e0d\u53ef\u4f20\u9012\u3002\u4f60\u81ea\u5df1\u770b\u5f97\u61c2&#xff0c;\u522b\u4eba\u770b\u4e0d\u61c2&#xff1b;\u4f60\u73b0\u5728\u770b\u5f97\u61c2&#xff0c;\u4e09\u4e2a\u6708\u540e\u4f60\u81ea\u5df1\u4e5f\u770b\u4e0d\u61c2\u4e86\u3002<\/p>\n<p>\u4e00\u4efd\u597d\u7684 Benchmark \u62a5\u544a&#xff0c;\u5e94\u8be5\u50cf\u4e00\u4efd\u5b9e\u9a8c\u5ba4\u8bb0\u5f55&#xff0c;\u5177\u5907\u4ee5\u4e0b\u7279\u6027&#xff1a;<\/p>\n<p>\u53ef\u590d\u73b0\u6027&#xff1a;\u4efb\u4f55\u4eba\u62ff\u5230\u8fd9\u4efd\u62a5\u544a&#xff0c;\u6309\u7167\u5176\u4e2d\u7684\u73af\u5883\u914d\u7f6e\u548c\u6d4b\u8bd5\u811a\u672c&#xff0c;\u5e94\u8be5\u80fd\u5f97\u5230\u76f8\u8fd1\u7684\u7ed3\u679c&#xff08;\u5141\u8bb8\u5408\u7406\u7684\u786c\u4ef6\u5dee\u5f02\u8303\u56f4&#xff09;\u3002<\/p>\n<p>\u5b8c\u6574\u6027&#xff1a;\u4e0d\u4ec5\u8bb0\u5f55\u7ed3\u679c&#xff0c;\u8fd8\u8bb0\u5f55\u8fc7\u7a0b\u2014\u2014\u7528\u4e86\u4ec0\u4e48\u6570\u636e\u96c6\u3001\u4ec0\u4e48\u9884\u5904\u7406\u3001\u4ec0\u4e48\u540e\u5904\u7406\u53c2\u6570\u3001\u4ec0\u4e48\u63a8\u7406\u6846\u67b6\u3001\u4ec0\u4e48\u786c\u4ef6\u914d\u7f6e\u3002<\/p>\n<p>\u53ef\u6bd4\u8f83\u6027&#xff1a;\u7edf\u4e00\u7684\u683c\u5f0f\u548c\u6307\u6807\u5b9a\u4e49&#xff0c;\u4f7f\u5f97\u4e0d\u540c\u6a21\u578b\u3001\u4e0d\u540c\u7248\u672c\u4e4b\u95f4\u7684\u5bf9\u6bd4\u6709\u610f\u4e49\u3002<\/p>\n<p>\u53ef\u4f20\u9012\u6027&#xff1a;\u62a5\u544a\u672c\u8eab\u5c31\u662f\u6c9f\u901a\u5de5\u5177&#xff0c;\u7814\u53d1\u4eba\u5458\u3001\u4ea7\u54c1\u7ecf\u7406\u3001\u8fd0\u7ef4\u5de5\u7a0b\u5e08\u5404\u53d6\u6240\u9700&#xff0c;\u4e0d\u9700\u8981\u518d\u5f00\u4f1a\u89e3\u91ca\u3002<\/p>\n<p>YOLOv12 \u7684 Benchmark \u62a5\u544a\u5c24\u5176\u91cd\u8981&#xff0c;\u539f\u56e0\u5728\u4e8e YOLOv12n\/s\/m\/l\/x \u4e94\u4e2a\u89c4\u683c\u6a2a\u8de8\u4e86\u4ece\u8fb9\u7f18\u7aef\u5230\u4e91\u7aef\u7684\u5b8c\u6574\u90e8\u7f72\u573a\u666f&#xff0c;\u4e0d\u540c\u89c4\u683c\u5728\u4e0d\u540c\u786c\u4ef6\u3001\u4e0d\u540c\u7cbe\u5ea6&#xff08;FP32\/FP16\/INT8&#xff09;\u4e0b\u7684\u8868\u73b0\u5dee\u5f02\u663e\u8457\u3002\u6ca1\u6709\u4e00\u4efd\u7cfb\u7edf\u5316\u7684\u62a5\u544a&#xff0c;\u4f60\u5f88\u96be\u5411\u4e0a\u7ea7\u6216\u5ba2\u6237\u6e05\u6670\u8bf4\u660e\u4e3a\u4ec0\u4e48\u9009\u62e9\u67d0\u4e2a\u89c4\u683c\u3001\u67d0\u79cd\u90e8\u7f72\u65b9\u5f0f\u3002<\/p>\n<h4>\u4e8c\u3001Benchmark \u62a5\u544a\u7684\u6574\u4f53\u7ed3\u6784\u8bbe\u8ba1<\/h4>\n<p>\u4e00\u4efd\u5b8c\u6574\u7684 YOLOv12 Benchmark \u62a5\u544a\u5305\u542b\u4ee5\u4e0b\u51e0\u4e2a\u6838\u5fc3\u677f\u5757&#xff1a;<\/p>\n<p>\u76f8\u5173\u793a\u610f\u56fe\u7ed8\u5236\u5982\u4e0b&#xff0c;\u4ec5\u4f9b\u53c2\u8003&#xff1a;<\/p>\n<p> <img decoding=\"async\" src=\"https:\/\/www.wsisp.com\/helps\/wp-content\/uploads\/2026\/11\/20261101221005-6ae7b8bd1234f.png\" \/> <\/p>\n<p>\u8fd9\u4e2a\u7ed3\u6784\u4e0d\u662f\u968f\u610f\u8bbe\u8ba1\u7684&#xff0c;\u6bcf\u4e2a\u677f\u5757\u90fd\u6709\u5176\u5b58\u5728\u7684\u7406\u7531\u3002\u4e0b\u9762\u6211\u4eec\u9010\u4e00\u8be6\u7ec6\u5c55\u5f00\u3002<\/p>\n<h4>\u4e09\u3001\u7b2c\u4e00\u677f\u5757&#xff1a;\u62a5\u544a\u5143\u4fe1\u606f<\/h4>\n<p>\u5143\u4fe1\u606f\u770b\u4f3c\u7b80\u5355&#xff0c;\u5374\u662f\u62a5\u544a&#034;\u53ef\u8ffd\u6eaf\u6027&#034;\u7684\u6839\u57fa\u3002\u5f88\u591a\u4eba\u5199\u62a5\u544a\u65f6\u76f4\u63a5\u7701\u7565\u8fd9\u90e8\u5206&#xff0c;\u7ed3\u679c\u534a\u5e74\u540e\u7ffb\u51fa\u6765\u5b8c\u5168\u4e0d\u77e5\u9053\u80cc\u666f\u3002<\/p>\n<p>\u5143\u4fe1\u606f\u81f3\u5c11\u5e94\u5305\u542b&#xff1a;<\/p>\n<table>\n<tr>\u5b57\u6bb5\u8bf4\u660e\u793a\u4f8b<\/tr>\n<tbody>\n<tr>\n<td>\u62a5\u544a\u6807\u9898<\/td>\n<td>\u7b80\u6d01\u63cf\u8ff0\u6d4b\u8bd5\u76ee\u7684<\/td>\n<td>YOLOv12 \u5168\u89c4\u683cCOCO\u6027\u80fdBenchmark\u62a5\u544a<\/td>\n<\/tr>\n<tr>\n<td>\u62a5\u544a\u7248\u672c<\/td>\n<td>\u62a5\u544a\u81ea\u8eab\u7684\u7248\u672c\u53f7<\/td>\n<td>v1.2<\/td>\n<\/tr>\n<tr>\n<td>\u521b\u5efa\u65e5\u671f<\/td>\n<td>\u6d4b\u8bd5\u5b8c\u6210\u65e5\u671f<\/td>\n<td>2025-03-15<\/td>\n<\/tr>\n<tr>\n<td>\u6700\u540e\u66f4\u65b0<\/td>\n<td>\u6700\u8fd1\u4e00\u6b21\u4fee\u8ba2\u65e5\u671f<\/td>\n<td>2025-03-20<\/td>\n<\/tr>\n<tr>\n<td>\u4f5c\u8005<\/td>\n<td>\u8d1f\u8d23\u4eba<\/td>\n<td>\u5f20\u4e09&#xff08;CV\u7b97\u6cd5\u7ec4&#xff09;<\/td>\n<\/tr>\n<tr>\n<td>\u6d4b\u8bd5\u76ee\u7684<\/td>\n<td>\u4e3a\u4ec0\u4e48\u505a\u8fd9\u4e2aBenchmark<\/td>\n<td>\u4e3a\u8fb9\u7f18\u7aef\u90e8\u7f72\u9009\u578b\u63d0\u4f9b\u6570\u636e\u652f\u6491<\/td>\n<\/tr>\n<tr>\n<td>YOLO\u7248\u672c<\/td>\n<td>\u7cbe\u786e\u5230commit hash<\/td>\n<td>ultralytics&#061;&#061;8.3.x, commit abc123<\/td>\n<\/tr>\n<tr>\n<td>\u5173\u8054\u4efb\u52a1<\/td>\n<td>\u9879\u76ee\/\u4efb\u52a1\u7f16\u53f7<\/td>\n<td>PROJ-2025-007<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>\u4e3a\u4ec0\u4e48\u8981\u8bb0\u5f55 commit hash&#xff1f;<\/p>\n<p>\u8fd9\u662f\u5f88\u591a\u5de5\u7a0b\u5e08\u5ffd\u7565\u7684\u7ec6\u8282\u3002ultralytics \u5e93\u66f4\u65b0\u9891\u7e41&#xff0c;\u5373\u4f7f\u662f\u76f8\u540c\u7684\u7248\u672c\u53f7&#xff0c;\u4e0d\u540c\u65f6\u95f4\u5b89\u88c5\u7684\u5305\u53ef\u80fd\u5305\u542b bug fix \u6216\u6027\u80fd\u4f18\u5316&#xff0c;\u5bfc\u81f4\u6d4b\u8bd5\u7ed3\u679c\u51fa\u73b0\u5dee\u5f02\u3002\u8bb0\u5f55\u7cbe\u786e\u7684 commit hash&#xff0c;\u624d\u80fd\u771f\u6b63\u4fdd\u8bc1\u7ed3\u679c\u53ef\u590d\u73b0\u3002<\/p>\n<p><span class=\"token comment\"># \u83b7\u53d6\u5f53\u524d ultralytics \u7248\u672c\u4fe1\u606f<\/span><br \/>\n<span class=\"token keyword\">import<\/span> ultralytics<br \/>\n<span class=\"token keyword\">import<\/span> subprocess<br \/>\n<span class=\"token keyword\">import<\/span> sys<\/p>\n<p><span class=\"token keyword\">def<\/span> <span class=\"token function\">get_env_info<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n    <span class=\"token triple-quoted-string string\">&#034;&#034;&#034;<br \/>\n    \u6536\u96c6\u5f53\u524d\u6d4b\u8bd5\u73af\u5883\u7684\u8be6\u7ec6\u7248\u672c\u4fe1\u606f<br \/>\n    \u8fd9\u4e9b\u4fe1\u606f\u5e94\u8be5\u5199\u5165\u62a5\u544a\u5143\u4fe1\u606f\u677f\u5757<br \/>\n    &#034;&#034;&#034;<\/span><br \/>\n    info <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n        <span class=\"token string\">&#034;ultralytics_version&#034;<\/span><span class=\"token punctuation\">:<\/span> ultralytics<span class=\"token punctuation\">.<\/span>__version__<span class=\"token punctuation\">,<\/span><br \/>\n        <span class=\"token string\">&#034;python_version&#034;<\/span><span class=\"token punctuation\">:<\/span> sys<span class=\"token punctuation\">.<\/span>version<span class=\"token punctuation\">,<\/span><br \/>\n    <span class=\"token punctuation\">}<\/span><\/p>\n<p>    <span class=\"token comment\"># \u5c1d\u8bd5\u83b7\u53d6 git commit hash&#xff08;\u5982\u679c\u662f\u4ece\u6e90\u7801\u5b89\u88c5\u7684&#xff09;<\/span><br \/>\n    <span class=\"token keyword\">try<\/span><span class=\"token punctuation\">:<\/span><br \/>\n        commit <span class=\"token operator\">&#061;<\/span> subprocess<span class=\"token punctuation\">.<\/span>check_output<span class=\"token punctuation\">(<\/span><br \/>\n            <span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;git&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;rev-parse&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;HEAD&#034;<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">,<\/span><br \/>\n            cwd<span class=\"token operator\">&#061;<\/span>ultralytics<span class=\"token punctuation\">.<\/span>__file__<span class=\"token punctuation\">.<\/span>replace<span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;__init__.py&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;&#034;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">,<\/span><br \/>\n            stderr<span class=\"token operator\">&#061;<\/span>subprocess<span class=\"token punctuation\">.<\/span>DEVNULL<br \/>\n        <span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">.<\/span>decode<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">.<\/span>strip<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><br \/>\n        info<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;git_commit&#034;<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&#061;<\/span> commit<br \/>\n    <span class=\"token keyword\">except<\/span> Exception<span class=\"token punctuation\">:<\/span><br \/>\n        info<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;git_commit&#034;<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&#061;<\/span> <span class=\"token string\">&#034;N\/A (pip install)&#034;<\/span><\/p>\n<p>    <span class=\"token comment\"># PyTorch \u7248\u672c<\/span><br \/>\n    <span class=\"token keyword\">try<\/span><span class=\"token punctuation\">:<\/span><br \/>\n        <span class=\"token keyword\">import<\/span> torch<br \/>\n        info<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;torch_version&#034;<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&#061;<\/span> torch<span class=\"token punctuation\">.<\/span>__version__<br \/>\n        info<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;cuda_version&#034;<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&#061;<\/span> torch<span class=\"token punctuation\">.<\/span>version<span class=\"token punctuation\">.<\/span>cuda<br \/>\n        info<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;cudnn_version&#034;<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&#061;<\/span> <span class=\"token builtin\">str<\/span><span class=\"token punctuation\">(<\/span>torch<span class=\"token punctuation\">.<\/span>backends<span class=\"token punctuation\">.<\/span>cudnn<span class=\"token punctuation\">.<\/span>version<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><br \/>\n    <span class=\"token keyword\">except<\/span> ImportError<span class=\"token punctuation\">:<\/span><br \/>\n        info<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;torch_version&#034;<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&#061;<\/span> <span class=\"token string\">&#034;N\/A&#034;<\/span><\/p>\n<p>    <span class=\"token keyword\">return<\/span> info<\/p>\n<p>env_info <span class=\"token operator\">&#061;<\/span> get_env_info<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><br \/>\n<span class=\"token keyword\">for<\/span> k<span class=\"token punctuation\">,<\/span> v <span class=\"token keyword\">in<\/span> env_info<span class=\"token punctuation\">.<\/span>items<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n    <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string-interpolation\"><span class=\"token string\">f&#034;<\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>k<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">: <\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>v<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">&#034;<\/span><\/span><span class=\"token punctuation\">)<\/span><\/p>\n<h4>\u56db\u3001\u7b2c\u4e8c\u677f\u5757&#xff1a;\u6d4b\u8bd5\u73af\u5883\u63cf\u8ff0<\/h4>\n<p>\u6d4b\u8bd5\u73af\u5883\u662f Benchmark \u7684&#034;\u7269\u7406\u5750\u6807\u7cfb&#034;\u3002\u79bb\u5f00\u4e86\u73af\u5883\u63cf\u8ff0&#xff0c;\u6240\u6709\u6570\u5b57\u90fd\u662f\u65e0\u610f\u4e49\u7684\u3002\u540c\u4e00\u4e2a\u6a21\u578b\u5728 A100 \u548c RTX 3060 \u4e0a\u7684\u901f\u5ea6\u53ef\u80fd\u76f8\u5dee 10 \u500d&#xff0c;\u5728 TensorRT FP16 \u548c PyTorch FP32 \u4e0b\u7684\u901f\u5ea6\u53ef\u80fd\u76f8\u5dee 5 \u500d\u3002<\/p>\n<p>\u6d4b\u8bd5\u73af\u5883\u63cf\u8ff0\u9700\u8981\u8986\u76d6\u4ee5\u4e0b\u5c42\u6b21&#xff1a;<\/p>\n<p>\u786c\u4ef6\u5c42&#xff1a;<\/p>\n<ul>\n<li>GPU \u578b\u53f7\u3001\u663e\u5b58\u5927\u5c0f\u3001\u8ba1\u7b97\u80fd\u529b&#xff08;Compute Capability&#xff09;<\/li>\n<li>CPU \u578b\u53f7\u3001\u6838\u5fc3\u6570\u3001\u4e3b\u9891<\/li>\n<li>\u5185\u5b58\u5927\u5c0f<\/li>\n<li>\u5b58\u50a8\u7c7b\u578b&#xff08;NVMe SSD \/ HDD&#xff09;\u2014\u2014\u5f71\u54cd\u6570\u636e\u52a0\u8f7d\u901f\u5ea6<\/li>\n<\/ul>\n<p>\u7cfb\u7edf\u5c42&#xff1a;<\/p>\n<ul>\n<li>\u64cd\u4f5c\u7cfb\u7edf\u53ca\u7248\u672c<\/li>\n<li>NVIDIA \u9a71\u52a8\u7248\u672c<\/li>\n<li>CUDA \u7248\u672c<\/li>\n<li>cuDNN \u7248\u672c<\/li>\n<\/ul>\n<p>\u8f6f\u4ef6\u5c42&#xff1a;<\/p>\n<ul>\n<li>Python \u7248\u672c<\/li>\n<li>PyTorch \u7248\u672c<\/li>\n<li>ultralytics \u7248\u672c<\/li>\n<li>TensorRT \u7248\u672c&#xff08;\u5982\u4f7f\u7528&#xff09;<\/li>\n<li>ONNX Runtime \u7248\u672c&#xff08;\u5982\u4f7f\u7528&#xff09;<\/li>\n<li>OpenCV \u7248\u672c<\/li>\n<\/ul>\n<p><span class=\"token keyword\">import<\/span> platform<br \/>\n<span class=\"token keyword\">import<\/span> subprocess<br \/>\n<span class=\"token keyword\">import<\/span> json<br \/>\n<span class=\"token keyword\">from<\/span> datetime <span class=\"token keyword\">import<\/span> datetime<\/p>\n<p><span class=\"token keyword\">def<\/span> <span class=\"token function\">collect_hardware_info<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n    <span class=\"token triple-quoted-string string\">&#034;&#034;&#034;<br \/>\n    \u81ea\u52a8\u6536\u96c6\u786c\u4ef6\u548c\u8f6f\u4ef6\u73af\u5883\u4fe1\u606f&#xff0c;\u751f\u6210\u62a5\u544a\u73af\u5883\u63cf\u8ff0\u677f\u5757<br \/>\n    &#034;&#034;&#034;<\/span><br \/>\n    env <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">{<\/span><span class=\"token punctuation\">}<\/span><\/p>\n<p>    <span class=\"token comment\"># &#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061; \u7cfb\u7edf\u4fe1\u606f &#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;<\/span><br \/>\n    env<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;os&#034;<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&#061;<\/span> platform<span class=\"token punctuation\">.<\/span>platform<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><br \/>\n    env<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;python&#034;<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&#061;<\/span> platform<span class=\"token punctuation\">.<\/span>python_version<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><br \/>\n    env<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;timestamp&#034;<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&#061;<\/span> datetime<span class=\"token punctuation\">.<\/span>now<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">.<\/span>strftime<span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;%Y-%m-%d %H:%M:%S&#034;<\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p>    <span class=\"token comment\"># &#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061; GPU \u4fe1\u606f &#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;<\/span><br \/>\n    <span class=\"token keyword\">try<\/span><span class=\"token punctuation\">:<\/span><br \/>\n        <span class=\"token keyword\">import<\/span> torch<br \/>\n        <span class=\"token keyword\">if<\/span> torch<span class=\"token punctuation\">.<\/span>cuda<span class=\"token punctuation\">.<\/span>is_available<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n            gpu_props <span class=\"token operator\">&#061;<\/span> torch<span class=\"token punctuation\">.<\/span>cuda<span class=\"token punctuation\">.<\/span>get_device_properties<span class=\"token punctuation\">(<\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">)<\/span><br \/>\n            env<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;gpu&#034;<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n                <span class=\"token string\">&#034;name&#034;<\/span><span class=\"token punctuation\">:<\/span> gpu_props<span class=\"token punctuation\">.<\/span>name<span class=\"token punctuation\">,<\/span><br \/>\n                <span class=\"token string\">&#034;total_memory_gb&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token builtin\">round<\/span><span class=\"token punctuation\">(<\/span>gpu_props<span class=\"token punctuation\">.<\/span>total_memory <span class=\"token operator\">\/<\/span> <span class=\"token number\">1024<\/span><span class=\"token operator\">**<\/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 punctuation\">,<\/span><br \/>\n                <span class=\"token string\">&#034;compute_capability&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string-interpolation\"><span class=\"token string\">f&#034;<\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>gpu_props<span class=\"token punctuation\">.<\/span>major<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">.<\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>gpu_props<span class=\"token punctuation\">.<\/span>minor<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">&#034;<\/span><\/span><span class=\"token punctuation\">,<\/span><br \/>\n                <span class=\"token string\">&#034;multi_processor_count&#034;<\/span><span class=\"token punctuation\">:<\/span> gpu_props<span class=\"token punctuation\">.<\/span>multi_processor_count<span class=\"token punctuation\">,<\/span><br \/>\n            <span class=\"token punctuation\">}<\/span><br \/>\n            env<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;cuda_version&#034;<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&#061;<\/span> torch<span class=\"token punctuation\">.<\/span>version<span class=\"token punctuation\">.<\/span>cuda<br \/>\n            env<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;cudnn_version&#034;<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&#061;<\/span> torch<span class=\"token punctuation\">.<\/span>backends<span class=\"token punctuation\">.<\/span>cudnn<span class=\"token punctuation\">.<\/span>version<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><br \/>\n        <span class=\"token keyword\">else<\/span><span class=\"token punctuation\">:<\/span><br \/>\n            env<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;gpu&#034;<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&#061;<\/span> <span class=\"token string\">&#034;CUDA not available&#034;<\/span><br \/>\n    <span class=\"token keyword\">except<\/span> ImportError<span class=\"token punctuation\">:<\/span><br \/>\n        env<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;gpu&#034;<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&#061;<\/span> <span class=\"token string\">&#034;PyTorch not installed&#034;<\/span><\/p>\n<p>    <span class=\"token comment\"># &#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061; nvidia-smi \u4fe1\u606f &#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;<\/span><br \/>\n    <span class=\"token keyword\">try<\/span><span class=\"token punctuation\">:<\/span><br \/>\n        smi_output <span class=\"token operator\">&#061;<\/span> subprocess<span class=\"token punctuation\">.<\/span>check_output<span class=\"token punctuation\">(<\/span><br \/>\n            <span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;nvidia-smi&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;&#8211;query-gpu&#061;name,driver_version,memory.total,compute_cap&#034;<\/span><span class=\"token punctuation\">,<\/span><br \/>\n             <span class=\"token string\">&#034;&#8211;format&#061;csv,noheader,nounits&#034;<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">,<\/span><br \/>\n            stderr<span class=\"token operator\">&#061;<\/span>subprocess<span class=\"token punctuation\">.<\/span>DEVNULL<br \/>\n        <span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">.<\/span>decode<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">.<\/span>strip<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><br \/>\n        env<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;nvidia_smi&#034;<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&#061;<\/span> smi_output<br \/>\n    <span class=\"token keyword\">except<\/span> Exception<span class=\"token punctuation\">:<\/span><br \/>\n        env<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;nvidia_smi&#034;<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&#061;<\/span> <span class=\"token string\">&#034;nvidia-smi not available&#034;<\/span><\/p>\n<p>    <span class=\"token comment\"># &#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061; CPU \u4fe1\u606f &#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;<\/span><br \/>\n    <span class=\"token keyword\">try<\/span><span class=\"token punctuation\">:<\/span><br \/>\n        <span class=\"token keyword\">import<\/span> psutil<br \/>\n        env<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;cpu&#034;<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n            <span class=\"token string\">&#034;physical_cores&#034;<\/span><span class=\"token punctuation\">:<\/span> psutil<span class=\"token punctuation\">.<\/span>cpu_count<span class=\"token punctuation\">(<\/span>logical<span class=\"token operator\">&#061;<\/span><span class=\"token boolean\">False<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">,<\/span><br \/>\n            <span class=\"token string\">&#034;logical_cores&#034;<\/span><span class=\"token punctuation\">:<\/span> psutil<span class=\"token punctuation\">.<\/span>cpu_count<span class=\"token punctuation\">(<\/span>logical<span class=\"token operator\">&#061;<\/span><span class=\"token boolean\">True<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">,<\/span><br \/>\n            <span class=\"token string\">&#034;max_freq_mhz&#034;<\/span><span class=\"token punctuation\">:<\/span> psutil<span class=\"token punctuation\">.<\/span>cpu_freq<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">.<\/span><span class=\"token builtin\">max<\/span> <span class=\"token keyword\">if<\/span> psutil<span class=\"token punctuation\">.<\/span>cpu_freq<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token keyword\">else<\/span> <span class=\"token string\">&#034;N\/A&#034;<\/span><span class=\"token punctuation\">,<\/span><br \/>\n            <span class=\"token string\">&#034;total_ram_gb&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token builtin\">round<\/span><span class=\"token punctuation\">(<\/span>psutil<span class=\"token punctuation\">.<\/span>virtual_memory<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">.<\/span>total <span class=\"token operator\">\/<\/span> <span class=\"token number\">1024<\/span><span class=\"token operator\">**<\/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 punctuation\">,<\/span><br \/>\n        <span class=\"token punctuation\">}<\/span><br \/>\n    <span class=\"token keyword\">except<\/span> ImportError<span class=\"token punctuation\">:<\/span><br \/>\n        env<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;cpu&#034;<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&#061;<\/span> <span class=\"token string\">&#034;psutil not installed, run: pip install psutil&#034;<\/span><\/p>\n<p>    <span class=\"token comment\"># &#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061; \u5173\u952e\u5e93\u7248\u672c &#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;<\/span><br \/>\n    packages <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;ultralytics&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;torch&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;torchvision&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;onnxruntime&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;tensorrt&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;opencv-python&#034;<\/span><span class=\"token punctuation\">]<\/span><br \/>\n    env<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;packages&#034;<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">{<\/span><span class=\"token punctuation\">}<\/span><br \/>\n    <span class=\"token keyword\">for<\/span> pkg <span class=\"token keyword\">in<\/span> packages<span class=\"token punctuation\">:<\/span><br \/>\n        <span class=\"token keyword\">try<\/span><span class=\"token punctuation\">:<\/span><br \/>\n            <span class=\"token keyword\">import<\/span> importlib<span class=\"token punctuation\">.<\/span>metadata<br \/>\n            version <span class=\"token operator\">&#061;<\/span> importlib<span class=\"token punctuation\">.<\/span>metadata<span class=\"token punctuation\">.<\/span>version<span class=\"token punctuation\">(<\/span>pkg<span class=\"token punctuation\">)<\/span><br \/>\n            env<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;packages&#034;<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">[<\/span>pkg<span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&#061;<\/span> version<br \/>\n        <span class=\"token keyword\">except<\/span> importlib<span class=\"token punctuation\">.<\/span>metadata<span class=\"token punctuation\">.<\/span>PackageNotFoundError<span class=\"token punctuation\">:<\/span><br \/>\n            env<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;packages&#034;<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">[<\/span>pkg<span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&#061;<\/span> <span class=\"token string\">&#034;not installed&#034;<\/span><\/p>\n<p>    <span class=\"token keyword\">return<\/span> env<\/p>\n<p><span class=\"token comment\"># \u6536\u96c6\u5e76\u6253\u5370\u73af\u5883\u4fe1\u606f<\/span><br \/>\nhw_info <span class=\"token operator\">&#061;<\/span> collect_hardware_info<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>json<span class=\"token punctuation\">.<\/span>dumps<span class=\"token punctuation\">(<\/span>hw_info<span class=\"token punctuation\">,<\/span> indent<span class=\"token operator\">&#061;<\/span><span class=\"token number\">2<\/span><span class=\"token punctuation\">,<\/span> ensure_ascii<span class=\"token operator\">&#061;<\/span><span class=\"token boolean\">False<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p><span class=\"token comment\"># \u540c\u65f6\u4fdd\u5b58\u4e3a JSON \u6587\u4ef6&#xff0c;\u9644\u5165\u62a5\u544a\u9644\u5f55<\/span><br \/>\n<span class=\"token keyword\">with<\/span> <span class=\"token builtin\">open<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;benchmark_env.json&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;w&#034;<\/span><span class=\"token punctuation\">,<\/span> encoding<span class=\"token operator\">&#061;<\/span><span class=\"token string\">&#034;utf-8&#034;<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token keyword\">as<\/span> f<span class=\"token punctuation\">:<\/span><br \/>\n    json<span class=\"token punctuation\">.<\/span>dump<span class=\"token punctuation\">(<\/span>hw_info<span class=\"token punctuation\">,<\/span> f<span class=\"token punctuation\">,<\/span> indent<span class=\"token operator\">&#061;<\/span><span class=\"token number\">2<\/span><span class=\"token punctuation\">,<\/span> ensure_ascii<span class=\"token operator\">&#061;<\/span><span class=\"token boolean\">False<\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p><span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;\\\\n\u73af\u5883\u4fe1\u606f\u5df2\u4fdd\u5b58\u81f3 benchmark_env.json&#034;<\/span><span class=\"token punctuation\">)<\/span><\/p>\n<h4>\u4e94\u3001\u7b2c\u4e09\u677f\u5757&#xff1a;\u6570\u636e\u96c6\u8bf4\u660e<\/h4>\n<p>\u6570\u636e\u96c6\u662f\u7cbe\u5ea6\u8bc4\u4f30\u7684\u57fa\u7840&#xff0c;\u4e5f\u662f\u6700\u5bb9\u6613\u88ab\u5ffd\u7565\u7ec6\u8282\u7684\u5730\u65b9\u3002\u6709\u4e9b\u56e2\u961f\u7684 Benchmark \u53ea\u5199&#034;\u4f7f\u7528 COCO val \u6570\u636e\u96c6&#034;&#xff0c;\u5374\u6ca1\u6709\u8bf4\u660e\u662f val2017 \u8fd8\u662f val2014&#xff0c;\u7528\u7684\u662f\u54ea\u4e2a\u5b50\u96c6&#xff0c;\u9884\u5904\u7406\u662f\u5426\u4e0e\u5b98\u65b9\u4e00\u81f4\u3002<\/p>\n<p>\u6807\u51c6\u6d4b\u8bd5\u6570\u636e\u96c6\u7684\u6838\u5fc3\u8981\u7d20&#xff1a;<\/p>\n<p>\u6570\u636e\u96c6\u57fa\u672c\u4fe1\u606f&#xff1a;<\/p>\n<ul>\n<li>\u540d\u79f0\u4e0e\u7248\u672c&#xff08;\u5982 COCO val2017&#xff09;<\/li>\n<li>\u56fe\u50cf\u6570\u91cf<\/li>\n<li>\u7c7b\u522b\u6570\u91cf\u4e0e\u7c7b\u522b\u5217\u8868<\/li>\n<li>\u6807\u6ce8\u683c\u5f0f<\/li>\n<\/ul>\n<p>\u6d4b\u8bd5\u5b50\u96c6\u8bf4\u660e&#xff1a;<\/p>\n<ul>\n<li>\u662f\u5426\u4f7f\u7528\u5168\u91cf val \u96c6&#xff08;5000 \u5f20\u56fe&#xff09;&#xff0c;\u8fd8\u662f\u91c7\u6837\u5b50\u96c6&#xff1f;<\/li>\n<li>\u5982\u679c\u662f\u81ea\u5b9a\u4e49\u6570\u636e\u96c6&#xff0c;\u9700\u8bf4\u660e\u91c7\u96c6\u573a\u666f\u3001\u6807\u6ce8\u5de5\u5177\u3001\u6807\u6ce8\u8005\u4fe1\u606f<\/li>\n<\/ul>\n<p>\u9884\u5904\u7406\u8bf4\u660e&#xff1a;<\/p>\n<ul>\n<li>\u8f93\u5165\u5c3a\u5bf8&#xff08;\u5982 640\u00d7640&#xff09;<\/li>\n<li>\u662f\u5426\u4f7f\u7528 letterbox padding&#xff08;YOLOv12 \u9ed8\u8ba4\u4f7f\u7528&#xff09;<\/li>\n<li>\u5f52\u4e00\u5316\u65b9\u5f0f&#xff08;YOLOv12 \u6807\u51c6\u662f\u9664\u4ee5 255&#xff0c;\u4e0d\u989d\u5916\u505a mean\/std \u5f52\u4e00\u5316&#xff09;<\/li>\n<li>\u6570\u636e\u52a0\u8f7d\u7684 batch size<\/li>\n<\/ul>\n<p>\u8fd9\u4e9b\u7ec6\u8282\u770b\u8d77\u6765\u5fae\u4e0d\u8db3\u9053&#xff0c;\u4f46\u5982\u679c\u4e0d\u8bb0\u5f55&#xff0c;\u590d\u73b0\u65f6\u4e00\u4e2a\u53c2\u6570\u4e0d\u5bf9&#xff0c;\u7cbe\u5ea6\u53ef\u80fd\u5c31\u4f1a\u51fa\u73b0 0.5~1 \u4e2a\u767e\u5206\u70b9\u7684\u504f\u5dee&#xff0c;\u8db3\u4ee5\u8ba9\u5bf9\u6bd4\u7ed3\u8bba\u5931\u6548\u3002<\/p>\n<p><span class=\"token keyword\">import<\/span> os<br \/>\n<span class=\"token keyword\">import<\/span> json<br \/>\n<span class=\"token keyword\">from<\/span> pathlib <span class=\"token keyword\">import<\/span> Path<\/p>\n<p><span class=\"token keyword\">def<\/span> <span class=\"token function\">describe_dataset<\/span><span class=\"token punctuation\">(<\/span>data_yaml_path<span class=\"token punctuation\">:<\/span> <span class=\"token builtin\">str<\/span><span class=\"token punctuation\">,<\/span> split<span class=\"token punctuation\">:<\/span> <span class=\"token builtin\">str<\/span> <span class=\"token operator\">&#061;<\/span> <span class=\"token string\">&#034;val&#034;<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">&#8211;<\/span><span class=\"token operator\">&gt;<\/span> <span class=\"token builtin\">dict<\/span><span class=\"token punctuation\">:<\/span><br \/>\n    <span class=\"token triple-quoted-string string\">&#034;&#034;&#034;<br \/>\n    \u4ece YOLO \u683c\u5f0f\u7684 data.yaml \u4e2d\u63d0\u53d6\u6570\u636e\u96c6\u63cf\u8ff0\u4fe1\u606f<br \/>\n    \u7528\u4e8e\u586b\u5199\u62a5\u544a\u7684\u6570\u636e\u96c6\u8bf4\u660e\u677f\u5757<\/p>\n<p>    Args:<br \/>\n        data_yaml_path: data.yaml \u6587\u4ef6\u8def\u5f84<br \/>\n        split: \u4f7f\u7528\u7684\u6570\u636e\u96c6\u5212\u5206&#xff0c;\u9ed8\u8ba4\u4e3a &#039;val&#039;<\/p>\n<p>    Returns:<br \/>\n        \u6570\u636e\u96c6\u63cf\u8ff0\u5b57\u5178<br \/>\n    &#034;&#034;&#034;<\/span><br \/>\n    <span class=\"token keyword\">import<\/span> yaml<\/p>\n<p>    <span class=\"token keyword\">with<\/span> <span class=\"token builtin\">open<\/span><span class=\"token punctuation\">(<\/span>data_yaml_path<span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;r&#034;<\/span><span class=\"token punctuation\">,<\/span> encoding<span class=\"token operator\">&#061;<\/span><span class=\"token string\">&#034;utf-8&#034;<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token keyword\">as<\/span> f<span class=\"token punctuation\">:<\/span><br \/>\n        data_cfg <span class=\"token operator\">&#061;<\/span> yaml<span class=\"token punctuation\">.<\/span>safe_load<span class=\"token punctuation\">(<\/span>f<span class=\"token punctuation\">)<\/span><\/p>\n<p>    dataset_info <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n        <span class=\"token string\">&#034;yaml_path&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token builtin\">str<\/span><span class=\"token punctuation\">(<\/span>data_yaml_path<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">,<\/span><br \/>\n        <span class=\"token string\">&#034;num_classes&#034;<\/span><span class=\"token punctuation\">:<\/span> data_cfg<span class=\"token punctuation\">.<\/span>get<span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;nc&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;unknown&#034;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">,<\/span><br \/>\n        <span class=\"token string\">&#034;class_names&#034;<\/span><span class=\"token punctuation\">:<\/span> data_cfg<span class=\"token punctuation\">.<\/span>get<span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;names&#034;<\/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><br \/>\n        <span class=\"token string\">&#034;split_used&#034;<\/span><span class=\"token punctuation\">:<\/span> split<span class=\"token punctuation\">,<\/span><br \/>\n    <span class=\"token punctuation\">}<\/span><\/p>\n<p>    <span class=\"token comment\"># \u7edf\u8ba1\u56fe\u50cf\u6570\u91cf<\/span><br \/>\n    val_path <span class=\"token operator\">&#061;<\/span> data_cfg<span class=\"token punctuation\">.<\/span>get<span class=\"token punctuation\">(<\/span>split<span class=\"token punctuation\">,<\/span> <span class=\"token boolean\">None<\/span><span class=\"token punctuation\">)<\/span><br \/>\n    <span class=\"token keyword\">if<\/span> val_path<span class=\"token punctuation\">:<\/span><br \/>\n        val_img_dir <span class=\"token operator\">&#061;<\/span> Path<span class=\"token punctuation\">(<\/span>data_yaml_path<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">.<\/span>parent <span class=\"token operator\">\/<\/span> val_path<br \/>\n        <span class=\"token keyword\">if<\/span> val_img_dir<span class=\"token punctuation\">.<\/span>exists<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n            img_exts <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">{<\/span><span class=\"token string\">&#034;.jpg&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;.jpeg&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;.png&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;.bmp&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;.tiff&#034;<\/span><span class=\"token punctuation\">}<\/span><br \/>\n            img_files <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">[<\/span><br \/>\n                f <span class=\"token keyword\">for<\/span> f <span class=\"token keyword\">in<\/span> val_img_dir<span class=\"token punctuation\">.<\/span>rglob<span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;*&#034;<\/span><span class=\"token punctuation\">)<\/span><br \/>\n                <span class=\"token keyword\">if<\/span> f<span class=\"token punctuation\">.<\/span>suffix<span class=\"token punctuation\">.<\/span>lower<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token keyword\">in<\/span> img_exts<br \/>\n            <span class=\"token punctuation\">]<\/span><br \/>\n            dataset_info<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;num_images&#034;<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&#061;<\/span> <span class=\"token builtin\">len<\/span><span class=\"token punctuation\">(<\/span>img_files<span class=\"token punctuation\">)<\/span><br \/>\n            dataset_info<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;image_dir&#034;<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&#061;<\/span> <span class=\"token builtin\">str<\/span><span class=\"token punctuation\">(<\/span>val_img_dir<span class=\"token punctuation\">)<\/span><br \/>\n        <span class=\"token keyword\">else<\/span><span class=\"token punctuation\">:<\/span><br \/>\n            dataset_info<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;num_images&#034;<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&#061;<\/span> <span class=\"token string\">&#034;directory not found&#034;<\/span><\/p>\n<p>    <span class=\"token comment\"># \u6253\u5370\u683c\u5f0f\u5316\u4fe1\u606f<\/span><br \/>\n    <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;&#061;&#034;<\/span> <span class=\"token operator\">*<\/span> <span class=\"token number\">50<\/span><span class=\"token punctuation\">)<\/span><br \/>\n    <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;\u6570\u636e\u96c6\u63cf\u8ff0&#034;<\/span><span class=\"token punctuation\">)<\/span><br \/>\n    <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;&#061;&#034;<\/span> <span class=\"token operator\">*<\/span> <span class=\"token number\">50<\/span><span class=\"token punctuation\">)<\/span><br \/>\n    <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string-interpolation\"><span class=\"token string\">f&#034;\u7c7b\u522b\u6570\u91cf: <\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>dataset_info<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#039;num_classes&#039;<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">&#034;<\/span><\/span><span class=\"token punctuation\">)<\/span><br \/>\n    <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string-interpolation\"><span class=\"token string\">f&#034;\u7c7b\u522b\u5217\u8868: <\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span><span class=\"token string\">&#039;, &#039;<\/span><span class=\"token punctuation\">.<\/span>join<span class=\"token punctuation\">(<\/span>dataset_info<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#039;class_names&#039;<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">[<\/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><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span><span class=\"token string\">&#039;&#8230;&#039;<\/span> <span class=\"token keyword\">if<\/span> <span class=\"token builtin\">len<\/span><span class=\"token punctuation\">(<\/span>dataset_info<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#039;class_names&#039;<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">&gt;<\/span> <span class=\"token number\">10<\/span> <span class=\"token keyword\">else<\/span> <span class=\"token string\">&#039;&#039;<\/span><span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">&#034;<\/span><\/span><span class=\"token punctuation\">)<\/span><br \/>\n    <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string-interpolation\"><span class=\"token string\">f&#034;\u6d4b\u8bd5\u5212\u5206: <\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>split<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">&#034;<\/span><\/span><span class=\"token punctuation\">)<\/span><br \/>\n    <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string-interpolation\"><span class=\"token string\">f&#034;\u56fe\u50cf\u6570\u91cf: <\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>dataset_info<span class=\"token punctuation\">.<\/span>get<span class=\"token punctuation\">(<\/span><span class=\"token string\">&#039;num_images&#039;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#039;N\/A&#039;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">&#034;<\/span><\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p>    <span class=\"token keyword\">return<\/span> dataset_info<\/p>\n<p><span class=\"token keyword\">def<\/span> <span class=\"token function\">get_yolo_preprocessing_config<\/span><span class=\"token punctuation\">(<\/span>imgsz<span class=\"token punctuation\">:<\/span> <span class=\"token builtin\">int<\/span> <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">640<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">&#8211;<\/span><span class=\"token operator\">&gt;<\/span> <span class=\"token builtin\">dict<\/span><span class=\"token punctuation\">:<\/span><br \/>\n    <span class=\"token triple-quoted-string string\">&#034;&#034;&#034;<br \/>\n    \u8bb0\u5f55 YOLOv12 \u6807\u51c6\u9884\u5904\u7406\u914d\u7f6e<br \/>\n    \u8fd9\u4e9b\u53c2\u6570\u5fc5\u987b\u5199\u5165\u62a5\u544a&#xff0c;\u5f71\u54cd\u7cbe\u5ea6\u7ed3\u679c<br \/>\n    &#034;&#034;&#034;<\/span><br \/>\n    preprocess_config <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n        <span class=\"token string\">&#034;input_size&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string-interpolation\"><span class=\"token string\">f&#034;<\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>imgsz<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">x<\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>imgsz<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">&#034;<\/span><\/span><span class=\"token punctuation\">,<\/span><br \/>\n        <span class=\"token string\">&#034;resize_method&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">&#034;letterbox (\u4fdd\u6301\u957f\u5bbd\u6bd4&#xff0c;\u586b\u5145\u7070\u8272\u8fb9\u6846&#xff0c;\u503c\u4e3a114)&#034;<\/span><span class=\"token punctuation\">,<\/span><br \/>\n        <span class=\"token string\">&#034;normalization&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">&#034;pixel_value \/ 255.0&#034;<\/span><span class=\"token punctuation\">,<\/span><br \/>\n        <span class=\"token string\">&#034;mean_std&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">&#034;\u4e0d\u4f7f\u7528\u989d\u5916\u7684 mean\/std \u5f52\u4e00\u5316&#xff08;\u4e0e ImageNet \u9884\u5904\u7406\u4e0d\u540c&#xff09;&#034;<\/span><span class=\"token punctuation\">,<\/span><br \/>\n        <span class=\"token string\">&#034;color_channel&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">&#034;BGR-&gt;RGB&#xff08;OpenCV \u8bfb\u53d6\u540e\u8f6c\u6362&#xff09;&#034;<\/span><span class=\"token punctuation\">,<\/span><br \/>\n        <span class=\"token string\">&#034;data_type&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">&#034;float32&#xff08;\u63a8\u7406\u65f6&#xff09;\u6216 float16&#xff08;TensorRT FP16 \u65f6&#xff09;&#034;<\/span><span class=\"token punctuation\">,<\/span><br \/>\n    <span class=\"token punctuation\">}<\/span><\/p>\n<p>    <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;\\\\n\u9884\u5904\u7406\u914d\u7f6e:&#034;<\/span><span class=\"token punctuation\">)<\/span><br \/>\n    <span class=\"token keyword\">for<\/span> k<span class=\"token punctuation\">,<\/span> v <span class=\"token keyword\">in<\/span> preprocess_config<span class=\"token punctuation\">.<\/span>items<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n        <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string-interpolation\"><span class=\"token string\">f&#034;  <\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>k<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">: <\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>v<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">&#034;<\/span><\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p>    <span class=\"token keyword\">return<\/span> preprocess_config<\/p>\n<h4>\u516d\u3001\u7b2c\u56db\u677f\u5757&#xff1a;\u6d4b\u8bd5\u65b9\u6cd5\u4e0e\u53c2\u6570<\/h4>\n<p>\u8fd9\u662f\u6574\u4e2a\u62a5\u544a\u4e2d\u6280\u672f\u542b\u91cf\u6700\u9ad8\u3001\u4e5f\u6700\u5bb9\u6613\u51fa\u9519\u7684\u90e8\u5206\u3002\u6d4b\u8bd5\u65b9\u6cd5\u4e0d\u4e25\u8c28&#xff0c;\u6570\u5b57\u5c31\u6ca1\u6709\u610f\u4e49\u3002<\/p>\n<p>\u7cbe\u5ea6\u6d4b\u8bd5\u7684\u6807\u51c6\u65b9\u6cd5&#xff1a;<\/p>\n<p>\u7cbe\u5ea6\u8bc4\u4f30\u5e94\u76f4\u63a5\u4f7f\u7528 ultralytics \u7684 val \u6a21\u5f0f&#xff0c;\u4e0d\u8981\u81ea\u5df1\u624b\u5199\u8bc4\u4f30\u903b\u8f91\u3002\u539f\u56e0\u5f88\u7b80\u5355\u2014\u2014YOLOv12 \u7684 mAP \u8ba1\u7b97\u9075\u5faa COCO \u5b98\u65b9\u6807\u51c6&#xff0c;\u5305\u542b\u7279\u5b9a\u7684\u9762\u79ef\u8fc7\u6ee4&#xff08;small\/medium\/large&#xff09;\u3001IoU \u9608\u503c\u8303\u56f4&#xff08;0.5:0.05:0.95&#xff09;\u7b49\u7ec6\u8282&#xff0c;\u624b\u5199\u6781\u5bb9\u6613\u5f15\u5165\u8bef\u5dee\u3002<\/p>\n<p>\u901f\u5ea6\u6d4b\u8bd5\u7684\u6807\u51c6\u65b9\u6cd5&#xff1a;<\/p>\n<p>\u901f\u5ea6\u6d4b\u8bd5\u6709\u4e00\u5957\u7ea6\u5b9a\u4fd7\u6210\u7684\u89c4\u8303&#xff0c;\u8fdd\u53cd\u8fd9\u4e9b\u89c4\u8303\u4f1a\u5bfc\u81f4\u6570\u636e\u4e25\u91cd\u5931\u771f&#xff1a;<\/p>\n<li>\u9884\u70ed&#xff08;Warmup&#xff09;&#xff1a;\u5fc5\u987b\u8fdb\u884c\u9884\u70ed\u63a8\u7406&#xff0c;\u901a\u5e38 3~10 \u6b21\u3002GPU \u7684\u7b2c\u4e00\u6b21\u63a8\u7406\u5f80\u5f80\u6d89\u53ca CUDA kernel \u7684 JIT \u7f16\u8bd1&#xff0c;\u5ef6\u8fdf\u8fdc\u9ad8\u4e8e\u7a33\u6001\u3002<\/li>\n<li>\u91cd\u590d\u6b21\u6570&#xff1a;\u81f3\u5c11\u91cd\u590d 100 \u6b21&#xff0c;\u53d6\u5747\u503c\u548c\u6807\u51c6\u5dee\u3002\u4ec5\u6d4b\u4e00\u6b21\u7684\u7ed3\u679c\u6ca1\u6709\u7edf\u8ba1\u610f\u4e49\u3002<\/li>\n<li>\u540c\u6b65&#xff1a;\u5728 GPU \u4e0a\u6d4b\u65f6\u95f4&#xff0c;\u5fc5\u987b\u5728\u8ba1\u65f6\u70b9\u524d\u540e\u52a0 torch.cuda.synchronize()&#xff0c;\u5426\u5219\u6d4b\u7684\u662f\u5f02\u6b65\u63d0\u4ea4\u65f6\u95f4&#xff0c;\u4e0d\u662f\u5b9e\u9645\u6267\u884c\u65f6\u95f4\u3002<\/li>\n<li>\u9694\u79bb\u73af\u5883&#xff1a;\u6d4b\u8bd5\u65f6\u5173\u95ed\u5176\u4ed6 GPU \u4efb\u52a1&#xff0c;\u907f\u514d\u4e89\u62a2\u8d44\u6e90\u5bfc\u81f4\u6ce2\u52a8\u3002<\/li>\n<li>\u7edf\u4e00 batch size&#xff1a;\u901f\u5ea6\u548c batch size \u5f3a\u76f8\u5173&#xff0c;\u5fc5\u987b\u660e\u786e\u8bf4\u660e\u3002<\/li>\n<p>\u76f8\u5173\u793a\u610f\u56fe\u7ed8\u5236\u5982\u4e0b&#xff0c;\u4ec5\u4f9b\u53c2\u8003&#xff1a;<\/p>\n<p> <img decoding=\"async\" src=\"https:\/\/www.wsisp.com\/helps\/wp-content\/uploads\/2026\/11\/20261101221006-6ae7b8be5e910.png\" \/> <\/p>\n<p><span class=\"token keyword\">import<\/span> time<br \/>\n<span class=\"token keyword\">import<\/span> numpy <span class=\"token keyword\">as<\/span> np<br \/>\n<span class=\"token keyword\">import<\/span> torch<br \/>\n<span class=\"token keyword\">from<\/span> ultralytics <span class=\"token keyword\">import<\/span> YOLO<br \/>\n<span class=\"token keyword\">from<\/span> contextlib <span class=\"token keyword\">import<\/span> contextmanager<\/p>\n<p><span class=\"token decorator annotation punctuation\">&#064;contextmanager<\/span><br \/>\n<span class=\"token keyword\">def<\/span> <span class=\"token function\">timer<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n    <span class=\"token triple-quoted-string string\">&#034;&#034;&#034;\u7b80\u5355\u7684\u8ba1\u65f6\u4e0a\u4e0b\u6587\u7ba1\u7406\u5668&#034;&#034;&#034;<\/span><br \/>\n    start <span class=\"token operator\">&#061;<\/span> time<span class=\"token punctuation\">.<\/span>perf_counter<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><br \/>\n    <span class=\"token keyword\">yield<\/span><br \/>\n    end <span class=\"token operator\">&#061;<\/span> time<span class=\"token punctuation\">.<\/span>perf_counter<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><br \/>\n    <span class=\"token keyword\">return<\/span> end <span class=\"token operator\">&#8211;<\/span> start<\/p>\n<p><span class=\"token keyword\">class<\/span> <span class=\"token class-name\">BenchmarkRunner<\/span><span class=\"token punctuation\">:<\/span><br \/>\n    <span class=\"token triple-quoted-string string\">&#034;&#034;&#034;<br \/>\n    YOLOv12 \u6807\u51c6\u5316 Benchmark \u6d4b\u8bd5\u5668<br \/>\n    \u5c01\u88c5\u4e86\u7cbe\u5ea6\u8bc4\u4f30\u548c\u901f\u5ea6\u8bc4\u4f30\u7684\u5b8c\u6574\u6d41\u7a0b<br \/>\n    \u7b26\u5408 YOLOv12 \u5b98\u65b9\u6d4b\u8bd5\u89c4\u8303<br \/>\n    &#034;&#034;&#034;<\/span><\/p>\n<p>    <span class=\"token keyword\">def<\/span> <span class=\"token function\">__init__<\/span><span class=\"token punctuation\">(<\/span>self<span class=\"token punctuation\">,<\/span> model_path<span class=\"token punctuation\">:<\/span> <span class=\"token builtin\">str<\/span><span class=\"token punctuation\">,<\/span> device<span class=\"token punctuation\">:<\/span> <span class=\"token builtin\">str<\/span> <span class=\"token operator\">&#061;<\/span> <span class=\"token string\">&#034;cuda:0&#034;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n        <span class=\"token triple-quoted-string string\">&#034;&#034;&#034;<br \/>\n        Args:<br \/>\n            model_path: \u6a21\u578b\u6743\u91cd\u8def\u5f84&#xff08;.pt \u6216 .engine \u7b49&#xff09;<br \/>\n            device: \u63a8\u7406\u8bbe\u5907<br \/>\n        &#034;&#034;&#034;<\/span><br \/>\n        self<span class=\"token punctuation\">.<\/span>model_path <span class=\"token operator\">&#061;<\/span> model_path<br \/>\n        self<span class=\"token punctuation\">.<\/span>device <span class=\"token operator\">&#061;<\/span> device<br \/>\n        self<span class=\"token punctuation\">.<\/span>model <span class=\"token operator\">&#061;<\/span> YOLO<span class=\"token punctuation\">(<\/span>model_path<span class=\"token punctuation\">)<\/span><br \/>\n        <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string-interpolation\"><span class=\"token string\">f&#034;[BenchmarkRunner] \u6a21\u578b\u52a0\u8f7d\u5b8c\u6210: <\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>model_path<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">&#034;<\/span><\/span><span class=\"token punctuation\">)<\/span><br \/>\n        <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string-interpolation\"><span class=\"token string\">f&#034;[BenchmarkRunner] \u63a8\u7406\u8bbe\u5907: <\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>device<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">&#034;<\/span><\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p>    <span class=\"token keyword\">def<\/span> <span class=\"token function\">run_accuracy_benchmark<\/span><span class=\"token punctuation\">(<\/span><br \/>\n        self<span class=\"token punctuation\">,<\/span><br \/>\n        data<span class=\"token punctuation\">:<\/span> <span class=\"token builtin\">str<\/span><span class=\"token punctuation\">,<\/span><br \/>\n        imgsz<span class=\"token punctuation\">:<\/span> <span class=\"token builtin\">int<\/span> <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">640<\/span><span class=\"token punctuation\">,<\/span><br \/>\n        batch<span class=\"token punctuation\">:<\/span> <span class=\"token builtin\">int<\/span> <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">16<\/span><span class=\"token punctuation\">,<\/span><br \/>\n        conf<span class=\"token punctuation\">:<\/span> <span class=\"token builtin\">float<\/span> <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">0.001<\/span><span class=\"token punctuation\">,<\/span><br \/>\n        iou<span class=\"token punctuation\">:<\/span> <span class=\"token builtin\">float<\/span> <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">0.7<\/span><span class=\"token punctuation\">,<\/span><br \/>\n        split<span class=\"token punctuation\">:<\/span> <span class=\"token builtin\">str<\/span> <span class=\"token operator\">&#061;<\/span> <span class=\"token string\">&#034;val&#034;<\/span><span class=\"token punctuation\">,<\/span><br \/>\n        save_json<span class=\"token punctuation\">:<\/span> <span class=\"token builtin\">bool<\/span> <span class=\"token operator\">&#061;<\/span> <span class=\"token boolean\">True<\/span><span class=\"token punctuation\">,<\/span><br \/>\n    <span class=\"token punctuation\">)<\/span> <span class=\"token operator\">&#8211;<\/span><span class=\"token operator\">&gt;<\/span> <span class=\"token builtin\">dict<\/span><span class=\"token punctuation\">:<\/span><br \/>\n        <span class=\"token triple-quoted-string string\">&#034;&#034;&#034;<br \/>\n        \u8fd0\u884c\u7cbe\u5ea6 Benchmark<\/p>\n<p>        \u6838\u5fc3\u53c2\u6570\u8bf4\u660e&#xff1a;<br \/>\n        &#8211; conf&#061;0.001: \u9a8c\u8bc1\u65f6\u4f7f\u7528\u6781\u4f4e\u7f6e\u4fe1\u5ea6\u9608\u503c&#xff0c;\u786e\u4fdd\u4e0d\u56e0\u9608\u503c\u8fc7\u9ad8\u6f0f\u6389\u68c0\u6d4b\u6846&#xff0c;<br \/>\n                      \u6700\u7ec8 mAP \u7531 PR \u66f2\u7ebf\u79ef\u5206\u5f97\u51fa&#xff0c;\u4e0d\u53d7\u6b64\u53c2\u6570\u5f71\u54cd<br \/>\n        &#8211; iou&#061;0.7: NMS \u7684 IoU \u9608\u503c&#xff0c;\u5f71\u54cd\u91cd\u53e0\u6846\u7684\u53bb\u9664\u7b56\u7565<br \/>\n        &#8211; split&#061;&#034;val&#034;: \u4f7f\u7528\u9a8c\u8bc1\u96c6&#xff0c;\u4e0d\u8981\u7528\u8bad\u7ec3\u96c6\u8bc4\u4f30&#xff0c;\u8fd9\u662f\u57fa\u672c\u539f\u5219<\/p>\n<p>        Returns:<br \/>\n            \u5305\u542b mAP50\u3001mAP50-95\u3001Precision\u3001Recall \u7b49\u6307\u6807\u7684\u5b57\u5178<br \/>\n        &#034;&#034;&#034;<\/span><br \/>\n        <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string-interpolation\"><span class=\"token string\">f&#034;\\\\n<\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span><span class=\"token string\">&#039;&#061;&#039;<\/span><span class=\"token operator\">*<\/span><span class=\"token number\">60<\/span><span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">&#034;<\/span><\/span><span class=\"token punctuation\">)<\/span><br \/>\n        <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string-interpolation\"><span class=\"token string\">f&#034;\u5f00\u59cb\u7cbe\u5ea6\u8bc4\u4f30: <\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>self<span class=\"token punctuation\">.<\/span>model_path<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">&#034;<\/span><\/span><span class=\"token punctuation\">)<\/span><br \/>\n        <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string-interpolation\"><span class=\"token string\">f&#034;\u6570\u636e\u96c6: <\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>data<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">, \u8f93\u5165\u5c3a\u5bf8: <\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>imgsz<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">, Batch: <\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>batch<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">&#034;<\/span><\/span><span class=\"token punctuation\">)<\/span><br \/>\n        <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string-interpolation\"><span class=\"token string\">f&#034;<\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span><span class=\"token string\">&#039;&#061;&#039;<\/span><span class=\"token operator\">*<\/span><span class=\"token number\">60<\/span><span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">&#034;<\/span><\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p>        results <span class=\"token operator\">&#061;<\/span> self<span class=\"token punctuation\">.<\/span>model<span class=\"token punctuation\">.<\/span>val<span class=\"token punctuation\">(<\/span><br \/>\n            data<span class=\"token operator\">&#061;<\/span>data<span class=\"token punctuation\">,<\/span><br \/>\n            imgsz<span class=\"token operator\">&#061;<\/span>imgsz<span class=\"token punctuation\">,<\/span><br \/>\n            batch<span class=\"token operator\">&#061;<\/span>batch<span class=\"token punctuation\">,<\/span><br \/>\n            conf<span class=\"token operator\">&#061;<\/span>conf<span class=\"token punctuation\">,<\/span><br \/>\n            iou<span class=\"token operator\">&#061;<\/span>iou<span class=\"token punctuation\">,<\/span><br \/>\n            device<span class=\"token operator\">&#061;<\/span>self<span class=\"token punctuation\">.<\/span>device<span class=\"token punctuation\">,<\/span><br \/>\n            split<span class=\"token operator\">&#061;<\/span>split<span class=\"token punctuation\">,<\/span><br \/>\n            save_json<span class=\"token operator\">&#061;<\/span>save_json<span class=\"token punctuation\">,<\/span>  <span class=\"token comment\"># \u4fdd\u5b58 COCO \u683c\u5f0f\u7684\u9884\u6d4b\u7ed3\u679c<\/span><br \/>\n            plots<span class=\"token operator\">&#061;<\/span><span class=\"token boolean\">True<\/span><span class=\"token punctuation\">,<\/span>            <span class=\"token comment\"># \u751f\u6210\u53ef\u89c6\u5316\u56fe\u8868<\/span><br \/>\n            verbose<span class=\"token operator\">&#061;<\/span><span class=\"token boolean\">True<\/span><span class=\"token punctuation\">,<\/span><br \/>\n        <span class=\"token punctuation\">)<\/span><\/p>\n<p>        <span class=\"token comment\"># \u63d0\u53d6\u6838\u5fc3\u6307\u6807<\/span><br \/>\n        accuracy_metrics <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n            <span class=\"token string\">&#034;mAP50&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token builtin\">float<\/span><span class=\"token punctuation\">(<\/span>results<span class=\"token punctuation\">.<\/span>box<span class=\"token punctuation\">.<\/span>map50<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">,<\/span>           <span class=\"token comment\"># mAP&#064;0.5<\/span><br \/>\n            <span class=\"token string\">&#034;mAP50_95&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token builtin\">float<\/span><span class=\"token punctuation\">(<\/span>results<span class=\"token punctuation\">.<\/span>box<span class=\"token punctuation\">.<\/span><span class=\"token builtin\">map<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">,<\/span>          <span class=\"token comment\"># mAP&#064;0.5:0.95<\/span><br \/>\n            <span class=\"token string\">&#034;Precision&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token builtin\">float<\/span><span class=\"token punctuation\">(<\/span>results<span class=\"token punctuation\">.<\/span>box<span class=\"token punctuation\">.<\/span>mp<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">,<\/span>           <span class=\"token comment\"># \u5e73\u5747\u7cbe\u786e\u7387<\/span><br \/>\n            <span class=\"token string\">&#034;Recall&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token builtin\">float<\/span><span class=\"token punctuation\">(<\/span>results<span class=\"token punctuation\">.<\/span>box<span class=\"token punctuation\">.<\/span>mr<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">,<\/span>              <span class=\"token comment\"># \u5e73\u5747\u53ec\u56de\u7387<\/span><br \/>\n            <span class=\"token string\">&#034;F1&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token number\">2<\/span> <span class=\"token operator\">*<\/span> <span class=\"token builtin\">float<\/span><span class=\"token punctuation\">(<\/span>results<span class=\"token punctuation\">.<\/span>box<span class=\"token punctuation\">.<\/span>mp<span class=\"token punctuation\">)<\/span> <span class=\"token operator\">*<\/span> <span class=\"token builtin\">float<\/span><span class=\"token punctuation\">(<\/span>results<span class=\"token punctuation\">.<\/span>box<span class=\"token punctuation\">.<\/span>mr<span class=\"token punctuation\">)<\/span> <span class=\"token operator\">\/<\/span><br \/>\n                  <span class=\"token punctuation\">(<\/span><span class=\"token builtin\">float<\/span><span class=\"token punctuation\">(<\/span>results<span class=\"token punctuation\">.<\/span>box<span class=\"token punctuation\">.<\/span>mp<span class=\"token punctuation\">)<\/span> <span class=\"token operator\">&#043;<\/span> <span class=\"token builtin\">float<\/span><span class=\"token punctuation\">(<\/span>results<span class=\"token punctuation\">.<\/span>box<span class=\"token punctuation\">.<\/span>mr<span class=\"token punctuation\">)<\/span> <span class=\"token operator\">&#043;<\/span> <span class=\"token number\">1e-9<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">,<\/span>  <span class=\"token comment\"># F1 \u5206\u6570<\/span><br \/>\n        <span class=\"token punctuation\">}<\/span><\/p>\n<p>        <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string-interpolation\"><span class=\"token string\">f&#034;\\\\n\u7cbe\u5ea6\u8bc4\u4f30\u7ed3\u679c:&#034;<\/span><\/span><span class=\"token punctuation\">)<\/span><br \/>\n        <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string-interpolation\"><span class=\"token string\">f&#034;  mAP&#064;0.5:      <\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>accuracy_metrics<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#039;mAP50&#039;<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">:<\/span><span class=\"token format-spec\">.4f<\/span><span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">&#034;<\/span><\/span><span class=\"token punctuation\">)<\/span><br \/>\n        <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string-interpolation\"><span class=\"token string\">f&#034;  mAP&#064;0.5:0.95: <\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>accuracy_metrics<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#039;mAP50_95&#039;<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">:<\/span><span class=\"token format-spec\">.4f<\/span><span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">&#034;<\/span><\/span><span class=\"token punctuation\">)<\/span><br \/>\n        <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string-interpolation\"><span class=\"token string\">f&#034;  Precision:    <\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>accuracy_metrics<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#039;Precision&#039;<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">:<\/span><span class=\"token format-spec\">.4f<\/span><span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">&#034;<\/span><\/span><span class=\"token punctuation\">)<\/span><br \/>\n        <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string-interpolation\"><span class=\"token string\">f&#034;  Recall:       <\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>accuracy_metrics<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#039;Recall&#039;<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">:<\/span><span class=\"token format-spec\">.4f<\/span><span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">&#034;<\/span><\/span><span class=\"token punctuation\">)<\/span><br \/>\n        <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string-interpolation\"><span class=\"token string\">f&#034;  F1:           <\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>accuracy_metrics<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#039;F1&#039;<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">:<\/span><span class=\"token format-spec\">.4f<\/span><span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">&#034;<\/span><\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p>        <span class=\"token keyword\">return<\/span> accuracy_metrics<\/p>\n<p>    <span class=\"token keyword\">def<\/span> <span class=\"token function\">run_speed_benchmark<\/span><span class=\"token punctuation\">(<\/span><br \/>\n        self<span class=\"token punctuation\">,<\/span><br \/>\n        imgsz<span class=\"token punctuation\">:<\/span> <span class=\"token builtin\">int<\/span> <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">640<\/span><span class=\"token punctuation\">,<\/span><br \/>\n        batch<span class=\"token punctuation\">:<\/span> <span class=\"token builtin\">int<\/span> <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">1<\/span><span class=\"token punctuation\">,<\/span><br \/>\n        n_warmup<span class=\"token punctuation\">:<\/span> <span class=\"token builtin\">int<\/span> <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">10<\/span><span class=\"token punctuation\">,<\/span><br \/>\n        n_repeat<span class=\"token punctuation\">:<\/span> <span class=\"token builtin\">int<\/span> <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">200<\/span><span class=\"token punctuation\">,<\/span><br \/>\n        half<span class=\"token punctuation\">:<\/span> <span class=\"token builtin\">bool<\/span> <span class=\"token operator\">&#061;<\/span> <span class=\"token boolean\">False<\/span><span class=\"token punctuation\">,<\/span><br \/>\n    <span class=\"token punctuation\">)<\/span> <span class=\"token operator\">&#8211;<\/span><span class=\"token operator\">&gt;<\/span> <span class=\"token builtin\">dict<\/span><span class=\"token punctuation\">:<\/span><br \/>\n        <span class=\"token triple-quoted-string string\">&#034;&#034;&#034;<br \/>\n        \u8fd0\u884c\u901f\u5ea6 Benchmark&#xff08;\u7b26\u5408\u5de5\u4e1a\u754c\u6807\u51c6\u6d4b\u8bd5\u89c4\u8303&#xff09;<\/p>\n<p>        \u5173\u952e\u8bbe\u8ba1\u51b3\u7b56&#xff1a;<br \/>\n        1. n_warmup&#061;10: \u9884\u70ed10\u6b21&#xff0c;\u6d88\u9664 CUDA JIT \u7f16\u8bd1\u5e26\u6765\u7684\u9996\u6b21\u5ef6\u8fdf<br \/>\n        2. n_repeat&#061;200: \u91cd\u590d200\u6b21&#xff0c;\u4fdd\u8bc1\u7edf\u8ba1\u7a33\u5b9a\u6027<br \/>\n        3. torch.cuda.synchronize(): \u786e\u4fdd GPU \u64cd\u4f5c\u771f\u6b63\u5b8c\u6210\u540e\u518d\u8ba1\u65f6<br \/>\n        4. \u4f7f\u7528\u5408\u6210\u6570\u636e&#xff08;\u968f\u673a\u5f20\u91cf&#xff09;&#xff0c;\u6392\u9664\u6570\u636eIO\u7684\u5e72\u6270&#xff0c;\u4e13\u6ce8\u6d4b\u63a8\u7406\u5ef6\u8fdf<\/p>\n<p>        Args:<br \/>\n            imgsz: \u8f93\u5165\u56fe\u50cf\u5c3a\u5bf8<br \/>\n            batch: \u6279\u5927\u5c0f&#xff08;\u5355\u56fe\u63a8\u7406\u65f6\u4e3a1&#xff09;<br \/>\n            n_warmup: \u9884\u70ed\u6b21\u6570<br \/>\n            n_repeat: \u6b63\u5f0f\u6d4b\u8bd5\u6b21\u6570<br \/>\n            half: \u662f\u5426\u4f7f\u7528 FP16&#xff08;\u9700\u8981 GPU \u652f\u6301&#xff09;<\/p>\n<p>        Returns:<br \/>\n            \u5305\u542b\u5ef6\u8fdf\u5747\u503c\u3001\u6807\u51c6\u5dee\u3001FPS \u7b49\u7684\u901f\u5ea6\u6307\u6807\u5b57\u5178<br \/>\n        &#034;&#034;&#034;<\/span><br \/>\n        <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string-interpolation\"><span class=\"token string\">f&#034;\\\\n<\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span><span class=\"token string\">&#039;&#061;&#039;<\/span><span class=\"token operator\">*<\/span><span class=\"token number\">60<\/span><span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">&#034;<\/span><\/span><span class=\"token punctuation\">)<\/span><br \/>\n        <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string-interpolation\"><span class=\"token string\">f&#034;\u5f00\u59cb\u901f\u5ea6\u6d4b\u8bd5: batch&#061;<\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>batch<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">, imgsz&#061;<\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>imgsz<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">, half&#061;<\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>half<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">&#034;<\/span><\/span><span class=\"token punctuation\">)<\/span><br \/>\n        <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string-interpolation\"><span class=\"token string\">f&#034;\u9884\u70ed\u6b21\u6570: <\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>n_warmup<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">, \u6d4b\u8bd5\u6b21\u6570: <\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>n_repeat<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">&#034;<\/span><\/span><span class=\"token punctuation\">)<\/span><br \/>\n        <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string-interpolation\"><span class=\"token string\">f&#034;<\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span><span class=\"token string\">&#039;&#061;&#039;<\/span><span class=\"token operator\">*<\/span><span class=\"token number\">60<\/span><span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">&#034;<\/span><\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p>        <span class=\"token comment\"># \u6784\u9020\u5408\u6210\u8f93\u5165\u6570\u636e&#xff08;\u907f\u514d\u78c1\u76d8 IO \u5e72\u6270&#xff09;<\/span><br \/>\n        dtype <span class=\"token operator\">&#061;<\/span> torch<span class=\"token punctuation\">.<\/span>float16 <span class=\"token keyword\">if<\/span> half <span class=\"token keyword\">else<\/span> torch<span class=\"token punctuation\">.<\/span>float32<br \/>\n        dummy_input <span class=\"token operator\">&#061;<\/span> torch<span class=\"token punctuation\">.<\/span>randn<span class=\"token punctuation\">(<\/span>batch<span class=\"token punctuation\">,<\/span> <span class=\"token number\">3<\/span><span class=\"token punctuation\">,<\/span> imgsz<span class=\"token punctuation\">,<\/span> imgsz<span class=\"token punctuation\">,<\/span> dtype<span class=\"token operator\">&#061;<\/span>dtype<span class=\"token punctuation\">)<\/span><\/p>\n<p>        <span class=\"token keyword\">if<\/span> <span class=\"token string\">&#034;cuda&#034;<\/span> <span class=\"token keyword\">in<\/span> self<span class=\"token punctuation\">.<\/span>device<span class=\"token punctuation\">:<\/span><br \/>\n            dummy_input <span class=\"token operator\">&#061;<\/span> dummy_input<span class=\"token punctuation\">.<\/span>to<span class=\"token punctuation\">(<\/span>self<span class=\"token punctuation\">.<\/span>device<span class=\"token punctuation\">)<\/span><br \/>\n            <span class=\"token comment\"># \u5982\u679c\u6a21\u578b\u4f7f\u7528 FP16&#xff0c;\u9700\u8981\u5148\u8f6c\u6362\u6a21\u578b<\/span><br \/>\n            <span class=\"token keyword\">if<\/span> half<span class=\"token punctuation\">:<\/span><br \/>\n                self<span class=\"token punctuation\">.<\/span>model<span class=\"token punctuation\">.<\/span>model<span class=\"token punctuation\">.<\/span>half<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p>        <span class=\"token comment\"># &#061;&#061;&#061;&#061;&#061; \u9884\u70ed\u9636\u6bb5 &#061;&#061;&#061;&#061;&#061;<\/span><br \/>\n        <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string-interpolation\"><span class=\"token string\">f&#034;\u9884\u70ed\u4e2d&#xff08;<\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>n_warmup<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\"> \u6b21&#xff09;&#8230;&#034;<\/span><\/span><span class=\"token punctuation\">)<\/span><br \/>\n        <span class=\"token keyword\">with<\/span> torch<span class=\"token punctuation\">.<\/span>no_grad<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n            <span class=\"token keyword\">for<\/span> _ <span class=\"token keyword\">in<\/span> <span class=\"token builtin\">range<\/span><span class=\"token punctuation\">(<\/span>n_warmup<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n                _ <span class=\"token operator\">&#061;<\/span> self<span class=\"token punctuation\">.<\/span>model<span class=\"token punctuation\">.<\/span>model<span class=\"token punctuation\">(<\/span>dummy_input<span class=\"token punctuation\">)<\/span><br \/>\n                <span class=\"token keyword\">if<\/span> <span class=\"token string\">&#034;cuda&#034;<\/span> <span class=\"token keyword\">in<\/span> self<span class=\"token punctuation\">.<\/span>device<span class=\"token punctuation\">:<\/span><br \/>\n                    torch<span class=\"token punctuation\">.<\/span>cuda<span class=\"token punctuation\">.<\/span>synchronize<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p>        <span class=\"token comment\"># &#061;&#061;&#061;&#061;&#061; \u6b63\u5f0f\u6d4b\u8bd5\u9636\u6bb5 &#061;&#061;&#061;&#061;&#061;<\/span><br \/>\n        latencies_ms <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">]<\/span><br \/>\n        <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string-interpolation\"><span class=\"token string\">f&#034;\u6b63\u5f0f\u6d4b\u8bd5\u4e2d&#xff08;<\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>n_repeat<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\"> \u6b21&#xff09;&#8230;&#034;<\/span><\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p>        <span class=\"token keyword\">with<\/span> torch<span class=\"token punctuation\">.<\/span>no_grad<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n            <span class=\"token keyword\">for<\/span> i <span class=\"token keyword\">in<\/span> <span class=\"token builtin\">range<\/span><span class=\"token punctuation\">(<\/span>n_repeat<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n                <span class=\"token keyword\">if<\/span> <span class=\"token string\">&#034;cuda&#034;<\/span> <span class=\"token keyword\">in<\/span> self<span class=\"token punctuation\">.<\/span>device<span class=\"token punctuation\">:<\/span><br \/>\n                    torch<span class=\"token punctuation\">.<\/span>cuda<span class=\"token punctuation\">.<\/span>synchronize<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span>  <span class=\"token comment\"># \u786e\u4fdd\u4e4b\u524d\u7684 GPU \u64cd\u4f5c\u5b8c\u6210<\/span><\/p>\n<p>                t_start <span class=\"token operator\">&#061;<\/span> time<span class=\"token punctuation\">.<\/span>perf_counter<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><br \/>\n                _ <span class=\"token operator\">&#061;<\/span> self<span class=\"token punctuation\">.<\/span>model<span class=\"token punctuation\">.<\/span>model<span class=\"token punctuation\">(<\/span>dummy_input<span class=\"token punctuation\">)<\/span><\/p>\n<p>                <span class=\"token keyword\">if<\/span> <span class=\"token string\">&#034;cuda&#034;<\/span> <span class=\"token keyword\">in<\/span> self<span class=\"token punctuation\">.<\/span>device<span class=\"token punctuation\">:<\/span><br \/>\n                    torch<span class=\"token punctuation\">.<\/span>cuda<span class=\"token punctuation\">.<\/span>synchronize<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span>  <span class=\"token comment\"># \u7b49\u5f85\u5f53\u524d\u63a8\u7406\u5b8c\u6210<\/span><\/p>\n<p>                t_end <span class=\"token operator\">&#061;<\/span> time<span class=\"token punctuation\">.<\/span>perf_counter<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><br \/>\n                latencies_ms<span class=\"token punctuation\">.<\/span>append<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">(<\/span>t_end <span class=\"token operator\">&#8211;<\/span> t_start<span class=\"token punctuation\">)<\/span> <span class=\"token operator\">*<\/span> <span class=\"token number\">1000<\/span><span class=\"token punctuation\">)<\/span>  <span class=\"token comment\"># \u8f6c\u6362\u4e3a\u6beb\u79d2<\/span><\/p>\n<p>        latencies <span class=\"token operator\">&#061;<\/span> np<span class=\"token punctuation\">.<\/span>array<span class=\"token punctuation\">(<\/span>latencies_ms<span class=\"token punctuation\">)<\/span><\/p>\n<p>        <span class=\"token comment\"># &#061;&#061;&#061;&#061;&#061; \u7edf\u8ba1\u5206\u6790 &#061;&#061;&#061;&#061;&#061;<\/span><br \/>\n        speed_metrics <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n            <span class=\"token string\">&#034;batch_size&#034;<\/span><span class=\"token punctuation\">:<\/span> batch<span class=\"token punctuation\">,<\/span><br \/>\n            <span class=\"token string\">&#034;imgsz&#034;<\/span><span class=\"token punctuation\">:<\/span> imgsz<span class=\"token punctuation\">,<\/span><br \/>\n            <span class=\"token string\">&#034;precision&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">&#034;FP16&#034;<\/span> <span class=\"token keyword\">if<\/span> half <span class=\"token keyword\">else<\/span> <span class=\"token string\">&#034;FP32&#034;<\/span><span class=\"token punctuation\">,<\/span><br \/>\n            <span class=\"token string\">&#034;latency_mean_ms&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token builtin\">float<\/span><span class=\"token punctuation\">(<\/span>np<span class=\"token punctuation\">.<\/span>mean<span class=\"token punctuation\">(<\/span>latencies<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">,<\/span><br \/>\n            <span class=\"token string\">&#034;latency_std_ms&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token builtin\">float<\/span><span class=\"token punctuation\">(<\/span>np<span class=\"token punctuation\">.<\/span>std<span class=\"token punctuation\">(<\/span>latencies<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">,<\/span><br \/>\n            <span class=\"token string\">&#034;latency_min_ms&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token builtin\">float<\/span><span class=\"token punctuation\">(<\/span>np<span class=\"token punctuation\">.<\/span><span class=\"token builtin\">min<\/span><span class=\"token punctuation\">(<\/span>latencies<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">,<\/span><br \/>\n            <span class=\"token string\">&#034;latency_max_ms&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token builtin\">float<\/span><span class=\"token punctuation\">(<\/span>np<span class=\"token punctuation\">.<\/span><span class=\"token builtin\">max<\/span><span class=\"token punctuation\">(<\/span>latencies<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">,<\/span><br \/>\n            <span class=\"token string\">&#034;latency_p50_ms&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token builtin\">float<\/span><span class=\"token punctuation\">(<\/span>np<span class=\"token punctuation\">.<\/span>percentile<span class=\"token punctuation\">(<\/span>latencies<span class=\"token punctuation\">,<\/span> <span class=\"token number\">50<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">,<\/span><br \/>\n            <span class=\"token string\">&#034;latency_p95_ms&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token builtin\">float<\/span><span class=\"token punctuation\">(<\/span>np<span class=\"token punctuation\">.<\/span>percentile<span class=\"token punctuation\">(<\/span>latencies<span class=\"token punctuation\">,<\/span> <span class=\"token number\">95<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">,<\/span>  <span class=\"token comment\"># 95th \u767e\u5206\u4f4d&#xff0c;\u53cd\u6620\u6296\u52a8<\/span><br \/>\n            <span class=\"token string\">&#034;latency_p99_ms&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token builtin\">float<\/span><span class=\"token punctuation\">(<\/span>np<span class=\"token punctuation\">.<\/span>percentile<span class=\"token punctuation\">(<\/span>latencies<span class=\"token punctuation\">,<\/span> <span class=\"token number\">99<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">,<\/span>  <span class=\"token comment\"># 99th \u767e\u5206\u4f4d&#xff0c;\u53cd\u6620\u5c3e\u5ef6\u8fdf<\/span><br \/>\n            <span class=\"token string\">&#034;fps&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token builtin\">float<\/span><span class=\"token punctuation\">(<\/span>batch <span class=\"token operator\">*<\/span> <span class=\"token number\">1000<\/span> <span class=\"token operator\">\/<\/span> np<span class=\"token punctuation\">.<\/span>mean<span class=\"token punctuation\">(<\/span>latencies<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">,<\/span>          <span class=\"token comment\"># \u541e\u5410\u91cf<\/span><br \/>\n        <span class=\"token punctuation\">}<\/span><\/p>\n<p>        <span class=\"token comment\"># &#061;&#061;&#061;&#061;&#061; \u663e\u5b58\u5360\u7528 &#061;&#061;&#061;&#061;&#061;<\/span><br \/>\n        <span class=\"token keyword\">if<\/span> <span class=\"token string\">&#034;cuda&#034;<\/span> <span class=\"token keyword\">in<\/span> self<span class=\"token punctuation\">.<\/span>device<span class=\"token punctuation\">:<\/span><br \/>\n            speed_metrics<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;gpu_memory_allocated_mb&#034;<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&#061;<\/span> <span class=\"token builtin\">round<\/span><span class=\"token punctuation\">(<\/span><br \/>\n                torch<span class=\"token punctuation\">.<\/span>cuda<span class=\"token punctuation\">.<\/span>memory_allocated<span class=\"token punctuation\">(<\/span>self<span class=\"token punctuation\">.<\/span>device<span class=\"token punctuation\">)<\/span> <span class=\"token operator\">\/<\/span> <span class=\"token number\">1024<\/span><span class=\"token operator\">**<\/span><span class=\"token number\">2<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">2<\/span><br \/>\n            <span class=\"token punctuation\">)<\/span><br \/>\n            speed_metrics<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;gpu_memory_reserved_mb&#034;<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&#061;<\/span> <span class=\"token builtin\">round<\/span><span class=\"token punctuation\">(<\/span><br \/>\n                torch<span class=\"token punctuation\">.<\/span>cuda<span class=\"token punctuation\">.<\/span>memory_reserved<span class=\"token punctuation\">(<\/span>self<span class=\"token punctuation\">.<\/span>device<span class=\"token punctuation\">)<\/span> <span class=\"token operator\">\/<\/span> <span class=\"token number\">1024<\/span><span class=\"token operator\">**<\/span><span class=\"token number\">2<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">2<\/span><br \/>\n            <span class=\"token punctuation\">)<\/span><\/p>\n<p>        <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string-interpolation\"><span class=\"token string\">f&#034;\\\\n\u901f\u5ea6\u6d4b\u8bd5\u7ed3\u679c:&#034;<\/span><\/span><span class=\"token punctuation\">)<\/span><br \/>\n        <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string-interpolation\"><span class=\"token string\">f&#034;  \u5ef6\u8fdf\u5747\u503c:  <\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>speed_metrics<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#039;latency_mean_ms&#039;<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">:<\/span><span class=\"token format-spec\">.2f<\/span><span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\"> ms&#034;<\/span><\/span><span class=\"token punctuation\">)<\/span><br \/>\n        <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string-interpolation\"><span class=\"token string\">f&#034;  \u5ef6\u8fdf\u6807\u51c6\u5dee: <\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>speed_metrics<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#039;latency_std_ms&#039;<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">:<\/span><span class=\"token format-spec\">.2f<\/span><span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\"> ms&#034;<\/span><\/span><span class=\"token punctuation\">)<\/span><br \/>\n        <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string-interpolation\"><span class=\"token string\">f&#034;  P50 \u5ef6\u8fdf:  <\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>speed_metrics<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#039;latency_p50_ms&#039;<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">:<\/span><span class=\"token format-spec\">.2f<\/span><span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\"> ms&#034;<\/span><\/span><span class=\"token punctuation\">)<\/span><br \/>\n        <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string-interpolation\"><span class=\"token string\">f&#034;  P95 \u5ef6\u8fdf:  <\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>speed_metrics<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#039;latency_p95_ms&#039;<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">:<\/span><span class=\"token format-spec\">.2f<\/span><span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\"> ms&#034;<\/span><\/span><span class=\"token punctuation\">)<\/span><br \/>\n        <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string-interpolation\"><span class=\"token string\">f&#034;  P99 \u5ef6\u8fdf:  <\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>speed_metrics<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#039;latency_p99_ms&#039;<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">:<\/span><span class=\"token format-spec\">.2f<\/span><span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\"> ms&#034;<\/span><\/span><span class=\"token punctuation\">)<\/span><br \/>\n        <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string-interpolation\"><span class=\"token string\">f&#034;  FPS:       <\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>speed_metrics<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#039;fps&#039;<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">:<\/span><span class=\"token format-spec\">.1f<\/span><span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">&#034;<\/span><\/span><span class=\"token punctuation\">)<\/span><br \/>\n        <span class=\"token keyword\">if<\/span> <span class=\"token string\">&#034;gpu_memory_allocated_mb&#034;<\/span> <span class=\"token keyword\">in<\/span> speed_metrics<span class=\"token punctuation\">:<\/span><br \/>\n            <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string-interpolation\"><span class=\"token string\">f&#034;  \u663e\u5b58\u5360\u7528:  <\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>speed_metrics<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#039;gpu_memory_allocated_mb&#039;<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">:<\/span><span class=\"token format-spec\">.1f<\/span><span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\"> MB&#034;<\/span><\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p>        <span class=\"token keyword\">return<\/span> speed_metrics<\/p>\n<p>\u4e3a\u4ec0\u4e48\u8981\u8bb0\u5f55 P95 \u548c P99 \u5ef6\u8fdf&#xff0c;\u800c\u4e0d\u53ea\u662f\u5747\u503c&#xff1f;<\/p>\n<p>\u8fd9\u4e2a\u95ee\u9898\u503c\u5f97\u6df1\u5165\u89e3\u91ca\u3002\u5728\u5b9e\u9645\u90e8\u7f72\u4e2d&#xff0c;\u7279\u522b\u662f\u89c6\u9891\u6d41\u5b9e\u65f6\u68c0\u6d4b\u573a\u666f&#xff0c;\u5076\u53d1\u7684\u9ad8\u5ef6\u8fdf\u5e27&#xff08;\u4fd7\u79f0&#034;\u5361\u987f\u5e27&#034;&#xff09;\u4f1a\u4e25\u91cd\u5f71\u54cd\u7528\u6237\u4f53\u9a8c\u3002\u5747\u503c 15ms \u7684\u6a21\u578b&#xff0c;\u5982\u679c P99 \u5ef6\u8fdf\u662f 50ms&#xff0c;\u610f\u5473\u7740\u6bcf100\u5e27\u91cc\u67091\u5e27\u8981\u7b49 50ms&#xff0c;\u6298\u5408\u5230 30fps \u7684\u89c6\u9891\u6d41\u4e0a&#xff0c;\u5dee\u4e0d\u591a\u6bcf3\u79d2\u5c31\u6709\u4e00\u6b21\u660e\u663e\u5361\u987f\u3002\u800c\u53e6\u4e00\u4e2a\u5747\u503c\u540c\u6837\u662f 15ms \u4f46 P99 \u662f 18ms \u7684\u6a21\u578b&#xff0c;\u5219\u51e0\u4e4e\u4e0d\u4f1a\u51fa\u73b0\u611f\u77e5\u5230\u7684\u5361\u987f\u3002\u8fd9\u4e24\u4e2a\u6a21\u578b\u4ece\u5747\u503c\u6765\u770b\u6beb\u65e0\u5dee\u522b&#xff0c;\u4f46\u7528\u6237\u4f53\u9a8c\u5929\u5dee\u5730\u522b\u3002<\/p>\n<h4>\u4e03\u3001\u7b2c\u4e94\u677f\u5757&#xff1a;\u7cbe\u5ea6\u8bc4\u4f30\u7ed3\u679c<\/h4>\n<p>\u7cbe\u5ea6\u7ed3\u679c\u662f Benchmark \u62a5\u544a\u6700\u6838\u5fc3\u7684\u90e8\u5206\u4e4b\u4e00\u3002\u8fd9\u91cc\u6211\u4eec\u8bbe\u8ba1\u4e86\u4e00\u5957\u5b8c\u6574\u7684\u7cbe\u5ea6\u7ed3\u679c\u8bb0\u5f55\u6a21\u677f&#xff1a;<\/p>\n<p><span class=\"token keyword\">import<\/span> pandas <span class=\"token keyword\">as<\/span> pd<br \/>\n<span class=\"token keyword\">import<\/span> matplotlib<span class=\"token punctuation\">.<\/span>pyplot <span class=\"token keyword\">as<\/span> plt<br \/>\n<span class=\"token keyword\">import<\/span> matplotlib<br \/>\n<span class=\"token keyword\">import<\/span> numpy <span class=\"token keyword\">as<\/span> np<br \/>\n<span class=\"token keyword\">from<\/span> pathlib <span class=\"token keyword\">import<\/span> Path<\/p>\n<p><span class=\"token comment\"># \u8bbe\u7f6e\u5b57\u4f53&#xff08;\u62a5\u544a\u56fe\u8868\u4f7f\u7528\u82f1\u6587&#xff0c;\u907f\u514d\u4e2d\u6587\u5b57\u4f53\u95ee\u9898&#xff09;<\/span><br \/>\nmatplotlib<span class=\"token punctuation\">.<\/span>rcParams<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#039;font.family&#039;<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&#061;<\/span> <span class=\"token string\">&#039;DejaVu Sans&#039;<\/span><br \/>\nmatplotlib<span class=\"token punctuation\">.<\/span>rcParams<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#039;axes.unicode_minus&#039;<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&#061;<\/span> <span class=\"token boolean\">False<\/span><\/p>\n<p><span class=\"token keyword\">def<\/span> <span class=\"token function\">create_accuracy_report_table<\/span><span class=\"token punctuation\">(<\/span>results_dict<span class=\"token punctuation\">:<\/span> <span class=\"token builtin\">dict<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">&#8211;<\/span><span class=\"token operator\">&gt;<\/span> pd<span class=\"token punctuation\">.<\/span>DataFrame<span class=\"token punctuation\">:<\/span><br \/>\n    <span class=\"token triple-quoted-string string\">&#034;&#034;&#034;<br \/>\n    \u521b\u5efa\u7cbe\u5ea6\u62a5\u544a\u6c47\u603b\u8868<\/p>\n<p>    results_dict \u683c\u5f0f\u793a\u4f8b&#xff1a;<br \/>\n    {<br \/>\n        &#034;YOLOv12n&#034;: {&#034;mAP50&#034;: 0.478, &#034;mAP50_95&#034;: 0.293, &#034;Precision&#034;: 0.621, &#034;Recall&#034;: 0.512, &#034;Params_M&#034;: 2.6},<br \/>\n        &#034;YOLOv12s&#034;: {&#034;mAP50&#034;: 0.583, &#034;mAP50_95&#034;: 0.386, &#034;Precision&#034;: 0.688, &#034;Recall&#034;: 0.591, &#034;Params_M&#034;: 9.3},<br \/>\n        &#8230;<br \/>\n    }<br \/>\n    &#034;&#034;&#034;<\/span><\/p>\n<p>    <span class=\"token comment\"># \u6784\u9020 DataFrame<\/span><br \/>\n    df <span class=\"token operator\">&#061;<\/span> pd<span class=\"token punctuation\">.<\/span>DataFrame<span class=\"token punctuation\">(<\/span>results_dict<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">.<\/span>T<br \/>\n    df<span class=\"token punctuation\">.<\/span>index<span class=\"token punctuation\">.<\/span>name <span class=\"token operator\">&#061;<\/span> <span class=\"token string\">&#034;Model&#034;<\/span><\/p>\n<p>    <span class=\"token comment\"># \u683c\u5f0f\u5316\u6570\u503c\u5217<\/span><br \/>\n    percentage_cols <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;mAP50&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;mAP50_95&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;Precision&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;Recall&#034;<\/span><span class=\"token punctuation\">]<\/span><br \/>\n    <span class=\"token keyword\">for<\/span> col <span class=\"token keyword\">in<\/span> percentage_cols<span class=\"token punctuation\">:<\/span><br \/>\n        <span class=\"token keyword\">if<\/span> col <span class=\"token keyword\">in<\/span> df<span class=\"token punctuation\">.<\/span>columns<span class=\"token punctuation\">:<\/span><br \/>\n            df<span class=\"token punctuation\">[<\/span>col<span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&#061;<\/span> df<span class=\"token punctuation\">[<\/span>col<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">.<\/span><span class=\"token builtin\">apply<\/span><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">lambda<\/span> x<span class=\"token punctuation\">:<\/span> <span class=\"token string-interpolation\"><span class=\"token string\">f&#034;<\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>x<span class=\"token punctuation\">:<\/span><span class=\"token format-spec\">.4f<\/span><span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">&#034;<\/span><\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p>    <span class=\"token comment\"># \u6dfb\u52a0 F1 \u5217<\/span><br \/>\n    <span class=\"token keyword\">if<\/span> <span class=\"token string\">&#034;Precision&#034;<\/span> <span class=\"token keyword\">in<\/span> results_dict<span class=\"token punctuation\">[<\/span><span class=\"token builtin\">list<\/span><span class=\"token punctuation\">(<\/span>results_dict<span class=\"token punctuation\">.<\/span>keys<span class=\"token punctuation\">(<\/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 punctuation\">]<\/span><span class=\"token punctuation\">:<\/span><br \/>\n        df<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;F1&#034;<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">[<\/span><br \/>\n            <span class=\"token string-interpolation\"><span class=\"token string\">f&#034;<\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span><span class=\"token number\">2<\/span> <span class=\"token operator\">*<\/span> <span class=\"token builtin\">float<\/span><span class=\"token punctuation\">(<\/span>row<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#039;Precision&#039;<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">*<\/span> <span class=\"token builtin\">float<\/span><span class=\"token punctuation\">(<\/span>row<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#039;Recall&#039;<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">\/<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token builtin\">float<\/span><span class=\"token punctuation\">(<\/span>row<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#039;Precision&#039;<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">&#043;<\/span> <span class=\"token builtin\">float<\/span><span class=\"token punctuation\">(<\/span>row<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#039;Recall&#039;<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">&#043;<\/span> <span class=\"token number\">1e-9<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><span class=\"token format-spec\">.4f<\/span><span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">&#034;<\/span><\/span><br \/>\n            <span class=\"token keyword\">for<\/span> _<span class=\"token punctuation\">,<\/span> row <span class=\"token keyword\">in<\/span> df<span class=\"token punctuation\">.<\/span>iterrows<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><br \/>\n        <span class=\"token punctuation\">]<\/span><\/p>\n<p>    <span class=\"token keyword\">return<\/span> df<\/p>\n<p><span class=\"token keyword\">def<\/span> <span class=\"token function\">plot_accuracy_comparison<\/span><span class=\"token punctuation\">(<\/span>results_dict<span class=\"token punctuation\">:<\/span> <span class=\"token builtin\">dict<\/span><span class=\"token punctuation\">,<\/span> save_path<span class=\"token punctuation\">:<\/span> <span class=\"token builtin\">str<\/span> <span class=\"token operator\">&#061;<\/span> <span class=\"token string\">&#034;accuracy_comparison.png&#034;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n    <span class=\"token triple-quoted-string string\">&#034;&#034;&#034;<br \/>\n    \u7ed8\u5236\u7cbe\u5ea6\u5bf9\u6bd4\u96f7\u8fbe\u56fe\u548c\u67f1\u72b6\u56fe<br \/>\n    \u56fe\u8868\u5143\u7d20\u4f7f\u7528\u82f1\u6587&#xff08;\u89c4\u8303\u505a\u6cd5&#xff09;<br \/>\n    &#034;&#034;&#034;<\/span><br \/>\n    models <span class=\"token operator\">&#061;<\/span> <span class=\"token builtin\">list<\/span><span class=\"token punctuation\">(<\/span>results_dict<span class=\"token punctuation\">.<\/span>keys<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p>    <span class=\"token comment\"># &#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061; \u56fe1&#xff1a;mAP \u5bf9\u6bd4\u67f1\u72b6\u56fe &#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;<\/span><br \/>\n    fig<span class=\"token punctuation\">,<\/span> axes <span class=\"token operator\">&#061;<\/span> plt<span class=\"token punctuation\">.<\/span>subplots<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> figsize<span class=\"token operator\">&#061;<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">14<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">6<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><br \/>\n    fig<span class=\"token punctuation\">.<\/span>suptitle<span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;YOLOv12 Accuracy Benchmark &#8211; COCO val2017&#034;<\/span><span class=\"token punctuation\">,<\/span> fontsize<span class=\"token operator\">&#061;<\/span><span class=\"token number\">14<\/span><span class=\"token punctuation\">,<\/span> fontweight<span class=\"token operator\">&#061;<\/span><span class=\"token string\">&#039;bold&#039;<\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p>    <span class=\"token comment\"># mAP&#064;0.5 \u5bf9\u6bd4<\/span><br \/>\n    map50_values <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">[<\/span>results_dict<span class=\"token punctuation\">[<\/span>m<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;mAP50&#034;<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token keyword\">for<\/span> m <span class=\"token keyword\">in<\/span> models<span class=\"token punctuation\">]<\/span><br \/>\n    map50_95_values <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">[<\/span>results_dict<span class=\"token punctuation\">[<\/span>m<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;mAP50_95&#034;<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token keyword\">for<\/span> m <span class=\"token keyword\">in<\/span> models<span class=\"token punctuation\">]<\/span><\/p>\n<p>    x <span class=\"token operator\">&#061;<\/span> np<span class=\"token punctuation\">.<\/span>arange<span class=\"token punctuation\">(<\/span><span class=\"token builtin\">len<\/span><span class=\"token punctuation\">(<\/span>models<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><br \/>\n    width <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">0.35<\/span><\/p>\n<p>    bars1 <span class=\"token operator\">&#061;<\/span> axes<span class=\"token punctuation\">[<\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">.<\/span>bar<span class=\"token punctuation\">(<\/span>x <span class=\"token operator\">&#8211;<\/span> width<span class=\"token operator\">\/<\/span><span class=\"token number\">2<\/span><span class=\"token punctuation\">,<\/span> map50_values<span class=\"token punctuation\">,<\/span> width<span class=\"token punctuation\">,<\/span> label<span class=\"token operator\">&#061;<\/span><span class=\"token string\">&#039;mAP&#064;0.5&#039;<\/span><span class=\"token punctuation\">,<\/span> color<span class=\"token operator\">&#061;<\/span><span class=\"token string\">&#039;#2196F3&#039;<\/span><span class=\"token punctuation\">,<\/span> alpha<span class=\"token operator\">&#061;<\/span><span class=\"token number\">0.8<\/span><span class=\"token punctuation\">)<\/span><br \/>\n    bars2 <span class=\"token operator\">&#061;<\/span> axes<span class=\"token punctuation\">[<\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">.<\/span>bar<span class=\"token punctuation\">(<\/span>x <span class=\"token operator\">&#043;<\/span> width<span class=\"token operator\">\/<\/span><span class=\"token number\">2<\/span><span class=\"token punctuation\">,<\/span> map50_95_values<span class=\"token punctuation\">,<\/span> width<span class=\"token punctuation\">,<\/span> label<span class=\"token operator\">&#061;<\/span><span class=\"token string\">&#039;mAP&#064;0.5:0.95&#039;<\/span><span class=\"token punctuation\">,<\/span> color<span class=\"token operator\">&#061;<\/span><span class=\"token string\">&#039;#FF5722&#039;<\/span><span class=\"token punctuation\">,<\/span> alpha<span class=\"token operator\">&#061;<\/span><span class=\"token number\">0.8<\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p>    axes<span class=\"token punctuation\">[<\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">.<\/span>set_xlabel<span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;Model&#034;<\/span><span class=\"token punctuation\">)<\/span><br \/>\n    axes<span class=\"token punctuation\">[<\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">.<\/span>set_ylabel<span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;mAP&#034;<\/span><span class=\"token punctuation\">)<\/span><br \/>\n    axes<span class=\"token punctuation\">[<\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">.<\/span>set_title<span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;mAP Comparison&#034;<\/span><span class=\"token punctuation\">)<\/span><br \/>\n    axes<span class=\"token punctuation\">[<\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">.<\/span>set_xticks<span class=\"token punctuation\">(<\/span>x<span class=\"token punctuation\">)<\/span><br \/>\n    axes<span class=\"token punctuation\">[<\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">.<\/span>set_xticklabels<span class=\"token punctuation\">(<\/span>models<span class=\"token punctuation\">,<\/span> rotation<span class=\"token operator\">&#061;<\/span><span class=\"token number\">15<\/span><span class=\"token punctuation\">)<\/span><br \/>\n    axes<span class=\"token punctuation\">[<\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">.<\/span>legend<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><br \/>\n    axes<span class=\"token punctuation\">[<\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">.<\/span>grid<span class=\"token punctuation\">(<\/span>axis<span class=\"token operator\">&#061;<\/span><span class=\"token string\">&#039;y&#039;<\/span><span class=\"token punctuation\">,<\/span> alpha<span class=\"token operator\">&#061;<\/span><span class=\"token number\">0.3<\/span><span class=\"token punctuation\">)<\/span><br \/>\n    axes<span class=\"token punctuation\">[<\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">.<\/span>set_ylim<span class=\"token punctuation\">(<\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">1.0<\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p>    <span class=\"token comment\"># \u5728\u67f1\u5b50\u4e0a\u663e\u793a\u6570\u503c<\/span><br \/>\n    <span class=\"token keyword\">for<\/span> bar <span class=\"token keyword\">in<\/span> bars1<span class=\"token punctuation\">:<\/span><br \/>\n        height <span class=\"token operator\">&#061;<\/span> bar<span class=\"token punctuation\">.<\/span>get_height<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><br \/>\n        axes<span class=\"token punctuation\">[<\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">.<\/span>annotate<span class=\"token punctuation\">(<\/span><span class=\"token string-interpolation\"><span class=\"token string\">f&#039;<\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>height<span class=\"token punctuation\">:<\/span><span class=\"token format-spec\">.3f<\/span><span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">&#039;<\/span><\/span><span class=\"token punctuation\">,<\/span> xy<span class=\"token operator\">&#061;<\/span><span class=\"token punctuation\">(<\/span>bar<span class=\"token punctuation\">.<\/span>get_x<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">&#043;<\/span> bar<span class=\"token punctuation\">.<\/span>get_width<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> height<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">,<\/span><br \/>\n                        xytext<span class=\"token operator\">&#061;<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">3<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">,<\/span> textcoords<span class=\"token operator\">&#061;<\/span><span class=\"token string\">&#034;offset points&#034;<\/span><span class=\"token punctuation\">,<\/span> ha<span class=\"token operator\">&#061;<\/span><span class=\"token string\">&#039;center&#039;<\/span><span class=\"token punctuation\">,<\/span> va<span class=\"token operator\">&#061;<\/span><span class=\"token string\">&#039;bottom&#039;<\/span><span class=\"token punctuation\">,<\/span> fontsize<span class=\"token operator\">&#061;<\/span><span class=\"token number\">8<\/span><span class=\"token punctuation\">)<\/span><br \/>\n    <span class=\"token keyword\">for<\/span> bar <span class=\"token keyword\">in<\/span> bars2<span class=\"token punctuation\">:<\/span><br \/>\n        height <span class=\"token operator\">&#061;<\/span> bar<span class=\"token punctuation\">.<\/span>get_height<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><br \/>\n        axes<span class=\"token punctuation\">[<\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">.<\/span>annotate<span class=\"token punctuation\">(<\/span><span class=\"token string-interpolation\"><span class=\"token string\">f&#039;<\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>height<span class=\"token punctuation\">:<\/span><span class=\"token format-spec\">.3f<\/span><span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">&#039;<\/span><\/span><span class=\"token punctuation\">,<\/span> xy<span class=\"token operator\">&#061;<\/span><span class=\"token punctuation\">(<\/span>bar<span class=\"token punctuation\">.<\/span>get_x<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">&#043;<\/span> bar<span class=\"token punctuation\">.<\/span>get_width<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> height<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">,<\/span><br \/>\n                        xytext<span class=\"token operator\">&#061;<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">3<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">,<\/span> textcoords<span class=\"token operator\">&#061;<\/span><span class=\"token string\">&#034;offset points&#034;<\/span><span class=\"token punctuation\">,<\/span> ha<span class=\"token operator\">&#061;<\/span><span class=\"token string\">&#039;center&#039;<\/span><span class=\"token punctuation\">,<\/span> va<span class=\"token operator\">&#061;<\/span><span class=\"token string\">&#039;bottom&#039;<\/span><span class=\"token punctuation\">,<\/span> fontsize<span class=\"token operator\">&#061;<\/span><span class=\"token number\">8<\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p>    <span class=\"token comment\"># &#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061; \u56fe2&#xff1a;P\/R\/F1 \u5bf9\u6bd4 &#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;<\/span><br \/>\n    precision_values <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">[<\/span>results_dict<span class=\"token punctuation\">[<\/span>m<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;Precision&#034;<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token keyword\">for<\/span> m <span class=\"token keyword\">in<\/span> models<span class=\"token punctuation\">]<\/span><br \/>\n    recall_values <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">[<\/span>results_dict<span class=\"token punctuation\">[<\/span>m<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;Recall&#034;<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token keyword\">for<\/span> m <span class=\"token keyword\">in<\/span> models<span class=\"token punctuation\">]<\/span><br \/>\n    f1_values <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">[<\/span><br \/>\n        <span class=\"token number\">2<\/span> <span class=\"token operator\">*<\/span> results_dict<span class=\"token punctuation\">[<\/span>m<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;Precision&#034;<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">*<\/span> results_dict<span class=\"token punctuation\">[<\/span>m<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;Recall&#034;<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">\/<\/span><br \/>\n        <span class=\"token punctuation\">(<\/span>results_dict<span class=\"token punctuation\">[<\/span>m<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;Precision&#034;<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&#043;<\/span> results_dict<span class=\"token punctuation\">[<\/span>m<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;Recall&#034;<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&#043;<\/span> <span class=\"token number\">1e-9<\/span><span class=\"token punctuation\">)<\/span><br \/>\n        <span class=\"token keyword\">for<\/span> m <span class=\"token keyword\">in<\/span> models<br \/>\n    <span class=\"token punctuation\">]<\/span><\/p>\n<p>    x2 <span class=\"token operator\">&#061;<\/span> np<span class=\"token punctuation\">.<\/span>arange<span class=\"token punctuation\">(<\/span><span class=\"token builtin\">len<\/span><span class=\"token punctuation\">(<\/span>models<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><br \/>\n    width2 <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">0.25<\/span><\/p>\n<p>    axes<span class=\"token punctuation\">[<\/span><span class=\"token number\">1<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">.<\/span>bar<span class=\"token punctuation\">(<\/span>x2 <span class=\"token operator\">&#8211;<\/span> width2<span class=\"token punctuation\">,<\/span> precision_values<span class=\"token punctuation\">,<\/span> width2<span class=\"token punctuation\">,<\/span> label<span class=\"token operator\">&#061;<\/span><span class=\"token string\">&#039;Precision&#039;<\/span><span class=\"token punctuation\">,<\/span> color<span class=\"token operator\">&#061;<\/span><span class=\"token string\">&#039;#4CAF50&#039;<\/span><span class=\"token punctuation\">,<\/span> alpha<span class=\"token operator\">&#061;<\/span><span class=\"token number\">0.8<\/span><span class=\"token punctuation\">)<\/span><br \/>\n    axes<span class=\"token punctuation\">[<\/span><span class=\"token number\">1<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">.<\/span>bar<span class=\"token punctuation\">(<\/span>x2<span class=\"token punctuation\">,<\/span> recall_values<span class=\"token punctuation\">,<\/span> width2<span class=\"token punctuation\">,<\/span> label<span class=\"token operator\">&#061;<\/span><span class=\"token string\">&#039;Recall&#039;<\/span><span class=\"token punctuation\">,<\/span> color<span class=\"token operator\">&#061;<\/span><span class=\"token string\">&#039;#FF9800&#039;<\/span><span class=\"token punctuation\">,<\/span> alpha<span class=\"token operator\">&#061;<\/span><span class=\"token number\">0.8<\/span><span class=\"token punctuation\">)<\/span><br \/>\n    axes<span class=\"token punctuation\">[<\/span><span class=\"token number\">1<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">.<\/span>bar<span class=\"token punctuation\">(<\/span>x2 <span class=\"token operator\">&#043;<\/span> width2<span class=\"token punctuation\">,<\/span> f1_values<span class=\"token punctuation\">,<\/span> width2<span class=\"token punctuation\">,<\/span> label<span class=\"token operator\">&#061;<\/span><span class=\"token string\">&#039;F1&#039;<\/span><span class=\"token punctuation\">,<\/span> color<span class=\"token operator\">&#061;<\/span><span class=\"token string\">&#039;#9C27B0&#039;<\/span><span class=\"token punctuation\">,<\/span> alpha<span class=\"token operator\">&#061;<\/span><span class=\"token number\">0.8<\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p>    axes<span class=\"token punctuation\">[<\/span><span class=\"token number\">1<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">.<\/span>set_xlabel<span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;Model&#034;<\/span><span class=\"token punctuation\">)<\/span><br \/>\n    axes<span class=\"token punctuation\">[<\/span><span class=\"token number\">1<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">.<\/span>set_ylabel<span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;Score&#034;<\/span><span class=\"token punctuation\">)<\/span><br \/>\n    axes<span class=\"token punctuation\">[<\/span><span class=\"token number\">1<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">.<\/span>set_title<span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;Precision \/ Recall \/ F1 Comparison&#034;<\/span><span class=\"token punctuation\">)<\/span><br \/>\n    axes<span class=\"token punctuation\">[<\/span><span class=\"token number\">1<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">.<\/span>set_xticks<span class=\"token punctuation\">(<\/span>x2<span class=\"token punctuation\">)<\/span><br \/>\n    axes<span class=\"token punctuation\">[<\/span><span class=\"token number\">1<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">.<\/span>set_xticklabels<span class=\"token punctuation\">(<\/span>models<span class=\"token punctuation\">,<\/span> rotation<span class=\"token operator\">&#061;<\/span><span class=\"token number\">15<\/span><span class=\"token punctuation\">)<\/span><br \/>\n    axes<span class=\"token punctuation\">[<\/span><span class=\"token number\">1<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">.<\/span>legend<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><br \/>\n    axes<span class=\"token punctuation\">[<\/span><span class=\"token number\">1<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">.<\/span>grid<span class=\"token punctuation\">(<\/span>axis<span class=\"token operator\">&#061;<\/span><span class=\"token string\">&#039;y&#039;<\/span><span class=\"token punctuation\">,<\/span> alpha<span class=\"token operator\">&#061;<\/span><span class=\"token number\">0.3<\/span><span class=\"token punctuation\">)<\/span><br \/>\n    axes<span class=\"token punctuation\">[<\/span><span class=\"token number\">1<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">.<\/span>set_ylim<span class=\"token punctuation\">(<\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">1.0<\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p>    plt<span class=\"token punctuation\">.<\/span>tight_layout<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><br \/>\n    plt<span class=\"token punctuation\">.<\/span>savefig<span class=\"token punctuation\">(<\/span>save_path<span class=\"token punctuation\">,<\/span> dpi<span class=\"token operator\">&#061;<\/span><span class=\"token number\">150<\/span><span class=\"token punctuation\">,<\/span> bbox_inches<span class=\"token operator\">&#061;<\/span><span class=\"token string\">&#039;tight&#039;<\/span><span class=\"token punctuation\">)<\/span><br \/>\n    <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string-interpolation\"><span class=\"token string\">f&#034;\u7cbe\u5ea6\u5bf9\u6bd4\u56fe\u5df2\u4fdd\u5b58: <\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>save_path<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">&#034;<\/span><\/span><span class=\"token punctuation\">)<\/span><br \/>\n    plt<span class=\"token punctuation\">.<\/span>show<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p>    <span class=\"token keyword\">return<\/span> fig<\/p>\n<p><span class=\"token comment\"># &#061;&#061;&#061;&#061;&#061; \u793a\u4f8b\u6570\u636e&#xff08;\u57fa\u4e8e YOLOv12 \u5b98\u65b9 COCO val2017 \u7ed3\u679c&#xff09;&#061;&#061;&#061;&#061;&#061;<\/span><br \/>\n<span class=\"token comment\"># \u6ce8\u610f&#xff1a;\u4ee5\u4e0b\u6570\u636e\u6765\u81ea ultralytics \u5b98\u65b9\u6587\u6863&#xff0c;\u5b9e\u9645\u6d4b\u8bd5\u7ed3\u679c\u4ee5\u4f60\u7684\u73af\u5883\u4e3a\u51c6<\/span><br \/>\nexample_accuracy_results <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n    <span class=\"token string\">&#034;YOLOv12n&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token punctuation\">{<\/span><span class=\"token string\">&#034;mAP50&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token number\">0.475<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;mAP50_95&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token number\">0.404<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;Precision&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token number\">0.632<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;Recall&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token number\">0.505<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;Params_M&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token number\">2.6<\/span><span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span><br \/>\n    <span class=\"token string\">&#034;YOLOv12s&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token punctuation\">{<\/span><span class=\"token string\">&#034;mAP50&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token number\">0.538<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;mAP50_95&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token number\">0.481<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;Precision&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token number\">0.688<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;Recall&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token number\">0.574<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;Params_M&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token number\">9.3<\/span><span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span><br \/>\n    <span class=\"token string\">&#034;YOLOv12m&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token punctuation\">{<\/span><span class=\"token string\">&#034;mAP50&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token number\">0.579<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;mAP50_95&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token number\">0.503<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;Precision&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token number\">0.718<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;Recall&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token number\">0.600<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;Params_M&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token number\">20.2<\/span><span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span><br \/>\n    <span class=\"token string\">&#034;YOLOv12l&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token punctuation\">{<\/span><span class=\"token string\">&#034;mAP50&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token number\">0.595<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;mAP50_95&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token number\">0.516<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;Precision&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token number\">0.738<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;Recall&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token number\">0.616<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;Params_M&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token number\">26.4<\/span><span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span><br \/>\n    <span class=\"token string\">&#034;YOLOv12x&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token punctuation\">{<\/span><span class=\"token string\">&#034;mAP50&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token number\">0.610<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;mAP50_95&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token number\">0.529<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;Precision&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token number\">0.755<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;Recall&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token number\">0.630<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;Params_M&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token number\">59.1<\/span><span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span><br \/>\n<span class=\"token punctuation\">}<\/span><\/p>\n<p><span class=\"token comment\"># \u751f\u6210\u6c47\u603b\u8868<\/span><br \/>\nacc_table <span class=\"token operator\">&#061;<\/span> create_accuracy_report_table<span class=\"token punctuation\">(<\/span>example_accuracy_results<span class=\"token punctuation\">)<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;\u7cbe\u5ea6\u8bc4\u4f30\u6c47\u603b\u8868:&#034;<\/span><span class=\"token punctuation\">)<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>acc_table<span class=\"token punctuation\">.<\/span>to_string<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p><span class=\"token comment\"># \u751f\u6210\u5bf9\u6bd4\u56fe<\/span><br \/>\nplot_accuracy_comparison<span class=\"token punctuation\">(<\/span>example_accuracy_results<span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;yolov12_accuracy_comparison.png&#034;<\/span><span class=\"token punctuation\">)<\/span><\/p>\n<h4>\u516b\u3001\u7b2c\u516d\u677f\u5757&#xff1a;\u63a8\u7406\u901f\u5ea6\u7ed3\u679c<\/h4>\n<p>\u901f\u5ea6\u7ed3\u679c\u540c\u6837\u9700\u8981\u7ed3\u6784\u5316\u8bb0\u5f55\u3002\u8fd9\u91cc\u6709\u51e0\u4e2a\u5bb9\u6613\u88ab\u5ffd\u7565\u7684\u7ec6\u8282&#xff1a;<\/p>\n<p>\u540e\u5904\u7406\u65f6\u95f4\u7684\u5f52\u5c5e\u95ee\u9898&#xff1a;ultralytics \u7684 predict \u6a21\u5f0f\u4f1a\u5728\u7ed3\u679c\u91cc\u5206\u522b\u62a5\u544a\u9884\u5904\u7406\u3001\u63a8\u7406\u3001\u540e\u5904\u7406\u4e09\u6bb5\u65f6\u95f4\u3002Benchmark \u62a5\u544a\u4e2d\u9700\u8981\u660e\u786e\u8bf4\u660e\u7edf\u8ba1\u7684\u662f\u54ea\u4e00\u6bb5&#xff0c;\u8fd8\u662f\u4e09\u6bb5\u4e4b\u548c&#xff08;\u7aef\u5230\u7aef\u5ef6\u8fdf&#xff09;\u3002\u5bf9\u4e8e\u5b9e\u9645\u90e8\u7f72&#xff0c;\u6211\u4eec\u901a\u5e38\u5173\u5fc3\u7aef\u5230\u7aef\u5ef6\u8fdf\u3002<\/p>\n<p>batch size \u7684\u9009\u62e9&#xff1a;\u5b9e\u65f6\u89c6\u9891\u68c0\u6d4b\u901a\u5e38\u4f7f\u7528 batch&#061;1&#xff0c;\u79bb\u7ebf\u6279\u5904\u7406\u901a\u5e38\u6d4b batch&#061;8 \u6216 batch&#061;32\u3002\u4e24\u4e2a\u573a\u666f\u4e0b\u7684\u6700\u4f18\u6a21\u578b\u53ef\u80fd\u4e0d\u540c&#xff0c;\u4e0d\u80fd\u6df7\u7528\u3002<\/p>\n<p>\u4e0d\u540c\u5bfc\u51fa\u683c\u5f0f\u7684\u901f\u5ea6\u5dee\u5f02&#xff1a;PyTorch (.pt) \u2192 ONNX \u2192 TensorRT \u7684\u901f\u5ea6\u63d0\u5347\u662f\u9636\u68af\u5f0f\u7684&#xff0c;\u62a5\u544a\u4e2d\u5e94\u5206\u522b\u5217\u51fa\u3002<\/p>\n<p><span class=\"token keyword\">import<\/span> pandas <span class=\"token keyword\">as<\/span> pd<br \/>\n<span class=\"token keyword\">import<\/span> matplotlib<span class=\"token punctuation\">.<\/span>pyplot <span class=\"token keyword\">as<\/span> plt<br \/>\n<span class=\"token keyword\">import<\/span> numpy <span class=\"token keyword\">as<\/span> np<\/p>\n<p><span class=\"token keyword\">def<\/span> <span class=\"token function\">create_speed_report_table<\/span><span class=\"token punctuation\">(<\/span>speed_results<span class=\"token punctuation\">:<\/span> <span class=\"token builtin\">dict<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">&#8211;<\/span><span class=\"token operator\">&gt;<\/span> pd<span class=\"token punctuation\">.<\/span>DataFrame<span class=\"token punctuation\">:<\/span><br \/>\n    <span class=\"token triple-quoted-string string\">&#034;&#034;&#034;<br \/>\n    \u521b\u5efa\u901f\u5ea6\u6d4b\u8bd5\u6c47\u603b\u8868<\/p>\n<p>    speed_results \u683c\u5f0f&#xff1a;<br \/>\n    {<br \/>\n        &#034;YOLOv12n-PyTorch&#034;: {&#034;latency_ms&#034;: 5.2, &#034;fps&#034;: 192, &#034;gpu_mem_mb&#034;: 312, &#034;format&#034;: &#034;PyTorch&#034;},<br \/>\n        &#034;YOLOv12n-TRT-FP16&#034;: {&#034;latency_ms&#034;: 1.8, &#034;fps&#034;: 555, &#034;gpu_mem_mb&#034;: 218, &#034;format&#034;: &#034;TensorRT FP16&#034;},<br \/>\n        &#8230;<br \/>\n    }<br \/>\n    &#034;&#034;&#034;<\/span><br \/>\n    records <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">]<\/span><br \/>\n    <span class=\"token keyword\">for<\/span> name<span class=\"token punctuation\">,<\/span> metrics <span class=\"token keyword\">in<\/span> speed_results<span class=\"token punctuation\">.<\/span>items<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n        record <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">{<\/span><span class=\"token string\">&#034;Model&#043;Format&#034;<\/span><span class=\"token punctuation\">:<\/span> name<span class=\"token punctuation\">}<\/span><br \/>\n        record<span class=\"token punctuation\">.<\/span>update<span class=\"token punctuation\">(<\/span>metrics<span class=\"token punctuation\">)<\/span><br \/>\n        records<span class=\"token punctuation\">.<\/span>append<span class=\"token punctuation\">(<\/span>record<span class=\"token punctuation\">)<\/span><\/p>\n<p>    df <span class=\"token operator\">&#061;<\/span> pd<span class=\"token punctuation\">.<\/span>DataFrame<span class=\"token punctuation\">(<\/span>records<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">.<\/span>set_index<span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;Model&#043;Format&#034;<\/span><span class=\"token punctuation\">)<\/span><br \/>\n    <span class=\"token keyword\">return<\/span> df<\/p>\n<p><span class=\"token keyword\">def<\/span> <span class=\"token function\">plot_speed_comparison<\/span><span class=\"token punctuation\">(<\/span>speed_results<span class=\"token punctuation\">:<\/span> <span class=\"token builtin\">dict<\/span><span class=\"token punctuation\">,<\/span> save_path<span class=\"token punctuation\">:<\/span> <span class=\"token builtin\">str<\/span> <span class=\"token operator\">&#061;<\/span> <span class=\"token string\">&#034;speed_comparison.png&#034;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n    <span class=\"token triple-quoted-string string\">&#034;&#034;&#034;<br \/>\n    \u7ed8\u5236\u901f\u5ea6\u5bf9\u6bd4\u56fe&#xff1a;\u5ef6\u8fdf\u5bf9\u6bd4 &#043; FPS \u5bf9\u6bd4<br \/>\n    &#034;&#034;&#034;<\/span><br \/>\n    names <span class=\"token operator\">&#061;<\/span> <span class=\"token builtin\">list<\/span><span class=\"token punctuation\">(<\/span>speed_results<span class=\"token punctuation\">.<\/span>keys<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><br \/>\n    latencies <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">[<\/span>speed_results<span class=\"token punctuation\">[<\/span>n<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;latency_ms&#034;<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token keyword\">for<\/span> n <span class=\"token keyword\">in<\/span> names<span class=\"token punctuation\">]<\/span><br \/>\n    fps_values <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">[<\/span>speed_results<span class=\"token punctuation\">[<\/span>n<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;fps&#034;<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token keyword\">for<\/span> n <span class=\"token keyword\">in<\/span> names<span class=\"token punctuation\">]<\/span><\/p>\n<p>    fig<span class=\"token punctuation\">,<\/span> axes <span class=\"token operator\">&#061;<\/span> plt<span class=\"token punctuation\">.<\/span>subplots<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> figsize<span class=\"token operator\">&#061;<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">16<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">6<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><br \/>\n    fig<span class=\"token punctuation\">.<\/span>suptitle<span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;YOLOv12 Inference Speed Benchmark (A100, batch&#061;1, imgsz&#061;640)&#034;<\/span><span class=\"token punctuation\">,<\/span><br \/>\n                 fontsize<span class=\"token operator\">&#061;<\/span><span class=\"token number\">12<\/span><span class=\"token punctuation\">,<\/span> fontweight<span class=\"token operator\">&#061;<\/span><span class=\"token string\">&#039;bold&#039;<\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p>    <span class=\"token comment\"># \u989c\u8272\u6620\u5c04&#xff1a;\u6309\u683c\u5f0f\u533a\u5206<\/span><br \/>\n    colors <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">]<\/span><br \/>\n    <span class=\"token keyword\">for<\/span> name <span class=\"token keyword\">in<\/span> names<span class=\"token punctuation\">:<\/span><br \/>\n        <span class=\"token keyword\">if<\/span> <span class=\"token string\">&#034;TRT&#034;<\/span> <span class=\"token keyword\">in<\/span> name <span class=\"token keyword\">or<\/span> <span class=\"token string\">&#034;TensorRT&#034;<\/span> <span class=\"token keyword\">in<\/span> name<span class=\"token punctuation\">:<\/span><br \/>\n            colors<span class=\"token punctuation\">.<\/span>append<span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;#FF5722&#034;<\/span><span class=\"token punctuation\">)<\/span><br \/>\n        <span class=\"token keyword\">elif<\/span> <span class=\"token string\">&#034;ONNX&#034;<\/span> <span class=\"token keyword\">in<\/span> name<span class=\"token punctuation\">:<\/span><br \/>\n            colors<span class=\"token punctuation\">.<\/span>append<span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;#2196F3&#034;<\/span><span class=\"token punctuation\">)<\/span><br \/>\n        <span class=\"token keyword\">else<\/span><span class=\"token punctuation\">:<\/span><br \/>\n            colors<span class=\"token punctuation\">.<\/span>append<span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;#4CAF50&#034;<\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p>    <span class=\"token comment\"># &#061;&#061;&#061;&#061;&#061; \u5ef6\u8fdf\u67f1\u72b6\u56fe&#xff08;\u8d8a\u4f4e\u8d8a\u597d&#xff09;&#061;&#061;&#061;&#061;&#061;<\/span><br \/>\n    bars <span class=\"token operator\">&#061;<\/span> axes<span class=\"token punctuation\">[<\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">.<\/span>bar<span class=\"token punctuation\">(<\/span><span class=\"token builtin\">range<\/span><span class=\"token punctuation\">(<\/span><span class=\"token builtin\">len<\/span><span class=\"token punctuation\">(<\/span>names<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">,<\/span> latencies<span class=\"token punctuation\">,<\/span> color<span class=\"token operator\">&#061;<\/span>colors<span class=\"token punctuation\">,<\/span> alpha<span class=\"token operator\">&#061;<\/span><span class=\"token number\">0.85<\/span><span class=\"token punctuation\">,<\/span> edgecolor<span class=\"token operator\">&#061;<\/span><span class=\"token string\">&#039;white&#039;<\/span><span class=\"token punctuation\">)<\/span><br \/>\n    axes<span class=\"token punctuation\">[<\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">.<\/span>set_title<span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;Inference Latency (ms) \u2014 Lower is Better&#034;<\/span><span class=\"token punctuation\">)<\/span><br \/>\n    axes<span class=\"token punctuation\">[<\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">.<\/span>set_ylabel<span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;Latency (ms)&#034;<\/span><span class=\"token punctuation\">)<\/span><br \/>\n    axes<span class=\"token punctuation\">[<\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">.<\/span>set_xticks<span class=\"token punctuation\">(<\/span><span class=\"token builtin\">range<\/span><span class=\"token punctuation\">(<\/span><span class=\"token builtin\">len<\/span><span class=\"token punctuation\">(<\/span>names<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><br \/>\n    axes<span class=\"token punctuation\">[<\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">.<\/span>set_xticklabels<span class=\"token punctuation\">(<\/span>names<span class=\"token punctuation\">,<\/span> rotation<span class=\"token operator\">&#061;<\/span><span class=\"token number\">45<\/span><span class=\"token punctuation\">,<\/span> ha<span class=\"token operator\">&#061;<\/span><span class=\"token string\">&#039;right&#039;<\/span><span class=\"token punctuation\">,<\/span> fontsize<span class=\"token operator\">&#061;<\/span><span class=\"token number\">8<\/span><span class=\"token punctuation\">)<\/span><br \/>\n    axes<span class=\"token punctuation\">[<\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">.<\/span>grid<span class=\"token punctuation\">(<\/span>axis<span class=\"token operator\">&#061;<\/span><span class=\"token string\">&#039;y&#039;<\/span><span class=\"token punctuation\">,<\/span> alpha<span class=\"token operator\">&#061;<\/span><span class=\"token number\">0.3<\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p>    <span class=\"token keyword\">for<\/span> bar<span class=\"token punctuation\">,<\/span> val <span class=\"token keyword\">in<\/span> <span class=\"token builtin\">zip<\/span><span class=\"token punctuation\">(<\/span>bars<span class=\"token punctuation\">,<\/span> latencies<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n        axes<span class=\"token punctuation\">[<\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">.<\/span>text<span class=\"token punctuation\">(<\/span>bar<span class=\"token punctuation\">.<\/span>get_x<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">&#043;<\/span> bar<span class=\"token punctuation\">.<\/span>get_width<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> bar<span class=\"token punctuation\">.<\/span>get_height<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">&#043;<\/span> <span class=\"token number\">0.1<\/span><span class=\"token punctuation\">,<\/span><br \/>\n                    <span class=\"token string-interpolation\"><span class=\"token string\">f&#039;<\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>val<span class=\"token punctuation\">:<\/span><span class=\"token format-spec\">.1f<\/span><span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">&#039;<\/span><\/span><span class=\"token punctuation\">,<\/span> ha<span class=\"token operator\">&#061;<\/span><span class=\"token string\">&#039;center&#039;<\/span><span class=\"token punctuation\">,<\/span> va<span class=\"token operator\">&#061;<\/span><span class=\"token string\">&#039;bottom&#039;<\/span><span class=\"token punctuation\">,<\/span> fontsize<span class=\"token operator\">&#061;<\/span><span class=\"token number\">8<\/span><span class=\"token punctuation\">,<\/span> fontweight<span class=\"token operator\">&#061;<\/span><span class=\"token string\">&#039;bold&#039;<\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p>    <span class=\"token comment\"># &#061;&#061;&#061;&#061;&#061; FPS \u67f1\u72b6\u56fe&#xff08;\u8d8a\u9ad8\u8d8a\u597d&#xff09;&#061;&#061;&#061;&#061;&#061;<\/span><br \/>\n    bars2 <span class=\"token operator\">&#061;<\/span> axes<span class=\"token punctuation\">[<\/span><span class=\"token number\">1<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">.<\/span>bar<span class=\"token punctuation\">(<\/span><span class=\"token builtin\">range<\/span><span class=\"token punctuation\">(<\/span><span class=\"token builtin\">len<\/span><span class=\"token punctuation\">(<\/span>names<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">,<\/span> fps_values<span class=\"token punctuation\">,<\/span> color<span class=\"token operator\">&#061;<\/span>colors<span class=\"token punctuation\">,<\/span> alpha<span class=\"token operator\">&#061;<\/span><span class=\"token number\">0.85<\/span><span class=\"token punctuation\">,<\/span> edgecolor<span class=\"token operator\">&#061;<\/span><span class=\"token string\">&#039;white&#039;<\/span><span class=\"token punctuation\">)<\/span><br \/>\n    axes<span class=\"token punctuation\">[<\/span><span class=\"token number\">1<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">.<\/span>set_title<span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;Throughput (FPS) \u2014 Higher is Better&#034;<\/span><span class=\"token punctuation\">)<\/span><br \/>\n    axes<span class=\"token punctuation\">[<\/span><span class=\"token number\">1<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">.<\/span>set_ylabel<span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;FPS (frames per second)&#034;<\/span><span class=\"token punctuation\">)<\/span><br \/>\n    axes<span class=\"token punctuation\">[<\/span><span class=\"token number\">1<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">.<\/span>set_xticks<span class=\"token punctuation\">(<\/span><span class=\"token builtin\">range<\/span><span class=\"token punctuation\">(<\/span><span class=\"token builtin\">len<\/span><span class=\"token punctuation\">(<\/span>names<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><br \/>\n    axes<span class=\"token punctuation\">[<\/span><span class=\"token number\">1<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">.<\/span>set_xticklabels<span class=\"token punctuation\">(<\/span>names<span class=\"token punctuation\">,<\/span> rotation<span class=\"token operator\">&#061;<\/span><span class=\"token number\">45<\/span><span class=\"token punctuation\">,<\/span> ha<span class=\"token operator\">&#061;<\/span><span class=\"token string\">&#039;right&#039;<\/span><span class=\"token punctuation\">,<\/span> fontsize<span class=\"token operator\">&#061;<\/span><span class=\"token number\">8<\/span><span class=\"token punctuation\">)<\/span><br \/>\n    axes<span class=\"token punctuation\">[<\/span><span class=\"token number\">1<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">.<\/span>grid<span class=\"token punctuation\">(<\/span>axis<span class=\"token operator\">&#061;<\/span><span class=\"token string\">&#039;y&#039;<\/span><span class=\"token punctuation\">,<\/span> alpha<span class=\"token operator\">&#061;<\/span><span class=\"token number\">0.3<\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p>    <span class=\"token keyword\">for<\/span> bar<span class=\"token punctuation\">,<\/span> val <span class=\"token keyword\">in<\/span> <span class=\"token builtin\">zip<\/span><span class=\"token punctuation\">(<\/span>bars2<span class=\"token punctuation\">,<\/span> fps_values<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n        axes<span class=\"token punctuation\">[<\/span><span class=\"token number\">1<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">.<\/span>text<span class=\"token punctuation\">(<\/span>bar<span class=\"token punctuation\">.<\/span>get_x<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">&#043;<\/span> bar<span class=\"token punctuation\">.<\/span>get_width<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> bar<span class=\"token punctuation\">.<\/span>get_height<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">&#043;<\/span> <span class=\"token number\">5<\/span><span class=\"token punctuation\">,<\/span><br \/>\n                    <span class=\"token string-interpolation\"><span class=\"token string\">f&#039;<\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>val<span class=\"token punctuation\">:<\/span><span class=\"token format-spec\">.0f<\/span><span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">&#039;<\/span><\/span><span class=\"token punctuation\">,<\/span> ha<span class=\"token operator\">&#061;<\/span><span class=\"token string\">&#039;center&#039;<\/span><span class=\"token punctuation\">,<\/span> va<span class=\"token operator\">&#061;<\/span><span class=\"token string\">&#039;bottom&#039;<\/span><span class=\"token punctuation\">,<\/span> fontsize<span class=\"token operator\">&#061;<\/span><span class=\"token number\">8<\/span><span class=\"token punctuation\">,<\/span> fontweight<span class=\"token operator\">&#061;<\/span><span class=\"token string\">&#039;bold&#039;<\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p>    <span class=\"token comment\"># \u6dfb\u52a0\u56fe\u4f8b<\/span><br \/>\n    <span class=\"token keyword\">from<\/span> matplotlib<span class=\"token punctuation\">.<\/span>patches <span class=\"token keyword\">import<\/span> Patch<br \/>\n    legend_elements <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">[<\/span><br \/>\n        Patch<span class=\"token punctuation\">(<\/span>facecolor<span class=\"token operator\">&#061;<\/span><span class=\"token string\">&#039;#4CAF50&#039;<\/span><span class=\"token punctuation\">,<\/span> label<span class=\"token operator\">&#061;<\/span><span class=\"token string\">&#039;PyTorch (.pt)&#039;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">,<\/span><br \/>\n        Patch<span class=\"token punctuation\">(<\/span>facecolor<span class=\"token operator\">&#061;<\/span><span class=\"token string\">&#039;#2196F3&#039;<\/span><span class=\"token punctuation\">,<\/span> label<span class=\"token operator\">&#061;<\/span><span class=\"token string\">&#039;ONNX Runtime&#039;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">,<\/span><br \/>\n        Patch<span class=\"token punctuation\">(<\/span>facecolor<span class=\"token operator\">&#061;<\/span><span class=\"token string\">&#039;#FF5722&#039;<\/span><span class=\"token punctuation\">,<\/span> label<span class=\"token operator\">&#061;<\/span><span class=\"token string\">&#039;TensorRT&#039;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">,<\/span><br \/>\n    <span class=\"token punctuation\">]<\/span><br \/>\n    axes<span class=\"token punctuation\">[<\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">.<\/span>legend<span class=\"token punctuation\">(<\/span>handles<span class=\"token operator\">&#061;<\/span>legend_elements<span class=\"token punctuation\">,<\/span> loc<span class=\"token operator\">&#061;<\/span><span class=\"token string\">&#039;upper right&#039;<\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p>    plt<span class=\"token punctuation\">.<\/span>tight_layout<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><br \/>\n    plt<span class=\"token punctuation\">.<\/span>savefig<span class=\"token punctuation\">(<\/span>save_path<span class=\"token punctuation\">,<\/span> dpi<span class=\"token operator\">&#061;<\/span><span class=\"token number\">150<\/span><span class=\"token punctuation\">,<\/span> bbox_inches<span class=\"token operator\">&#061;<\/span><span class=\"token string\">&#039;tight&#039;<\/span><span class=\"token punctuation\">)<\/span><br \/>\n    <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string-interpolation\"><span class=\"token string\">f&#034;\u901f\u5ea6\u5bf9\u6bd4\u56fe\u5df2\u4fdd\u5b58: <\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>save_path<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">&#034;<\/span><\/span><span class=\"token punctuation\">)<\/span><br \/>\n    plt<span class=\"token punctuation\">.<\/span>show<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p><span class=\"token comment\"># &#061;&#061;&#061;&#061;&#061; \u793a\u4f8b\u901f\u5ea6\u6570\u636e &#061;&#061;&#061;&#061;&#061;<\/span><br \/>\n<span class=\"token comment\"># \u5b9e\u9645\u6570\u636e\u9700\u5728\u76ee\u6807\u786c\u4ef6\u4e0a\u6d4b\u8bd5&#xff0c;\u6b64\u5904\u4e3a\u683c\u5f0f\u793a\u4f8b<\/span><br \/>\nexample_speed_results <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n    <span class=\"token string\">&#034;YOLOv12n-PyTorch&#034;<\/span><span class=\"token punctuation\">:<\/span>    <span class=\"token punctuation\">{<\/span><span class=\"token string\">&#034;latency_ms&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token number\">5.2<\/span><span class=\"token punctuation\">,<\/span>  <span class=\"token string\">&#034;fps&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token number\">192<\/span><span class=\"token punctuation\">,<\/span>  <span class=\"token string\">&#034;gpu_mem_mb&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token number\">312<\/span><span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span><br \/>\n    <span class=\"token string\">&#034;YOLOv12n-ONNX&#034;<\/span><span class=\"token punctuation\">:<\/span>       <span class=\"token punctuation\">{<\/span><span class=\"token string\">&#034;latency_ms&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token number\">4.1<\/span><span class=\"token punctuation\">,<\/span>  <span class=\"token string\">&#034;fps&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token number\">244<\/span><span class=\"token punctuation\">,<\/span>  <span class=\"token string\">&#034;gpu_mem_mb&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token number\">285<\/span><span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span><br \/>\n    <span class=\"token string\">&#034;YOLOv12n-TRT-FP16&#034;<\/span><span class=\"token punctuation\">:<\/span>   <span class=\"token punctuation\">{<\/span><span class=\"token string\">&#034;latency_ms&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token number\">1.8<\/span><span class=\"token punctuation\">,<\/span>  <span class=\"token string\">&#034;fps&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token number\">555<\/span><span class=\"token punctuation\">,<\/span>  <span class=\"token string\">&#034;gpu_mem_mb&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token number\">218<\/span><span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span><br \/>\n    <span class=\"token string\">&#034;YOLOv12s-PyTorch&#034;<\/span><span class=\"token punctuation\">:<\/span>    <span class=\"token punctuation\">{<\/span><span class=\"token string\">&#034;latency_ms&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token number\">8.6<\/span><span class=\"token punctuation\">,<\/span>  <span class=\"token string\">&#034;fps&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token number\">116<\/span><span class=\"token punctuation\">,<\/span>  <span class=\"token string\">&#034;gpu_mem_mb&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token number\">520<\/span><span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span><br \/>\n    <span class=\"token string\">&#034;YOLOv12s-ONNX&#034;<\/span><span class=\"token punctuation\">:<\/span>       <span class=\"token punctuation\">{<\/span><span class=\"token string\">&#034;latency_ms&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token number\">7.2<\/span><span class=\"token punctuation\">,<\/span>  <span class=\"token string\">&#034;fps&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token number\">139<\/span><span class=\"token punctuation\">,<\/span>  <span class=\"token string\">&#034;gpu_mem_mb&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token number\">498<\/span><span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span><br \/>\n    <span class=\"token string\">&#034;YOLOv12s-TRT-FP16&#034;<\/span><span class=\"token punctuation\">:<\/span>   <span class=\"token punctuation\">{<\/span><span class=\"token string\">&#034;latency_ms&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token number\">3.1<\/span><span class=\"token punctuation\">,<\/span>  <span class=\"token string\">&#034;fps&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token number\">323<\/span><span class=\"token punctuation\">,<\/span>  <span class=\"token string\">&#034;gpu_mem_mb&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token number\">412<\/span><span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span><br \/>\n    <span class=\"token string\">&#034;YOLOv12m-PyTorch&#034;<\/span><span class=\"token punctuation\">:<\/span>    <span class=\"token punctuation\">{<\/span><span class=\"token string\">&#034;latency_ms&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token number\">14.2<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;fps&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token number\">70<\/span><span class=\"token punctuation\">,<\/span>   <span class=\"token string\">&#034;gpu_mem_mb&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token number\">892<\/span><span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span><br \/>\n    <span class=\"token string\">&#034;YOLOv12m-TRT-FP16&#034;<\/span><span class=\"token punctuation\">:<\/span>   <span class=\"token punctuation\">{<\/span><span class=\"token string\">&#034;latency_ms&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token number\">5.8<\/span><span class=\"token punctuation\">,<\/span>  <span class=\"token string\">&#034;fps&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token number\">172<\/span><span class=\"token punctuation\">,<\/span>  <span class=\"token string\">&#034;gpu_mem_mb&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token number\">680<\/span><span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span><br \/>\n    <span class=\"token string\">&#034;YOLOv12l-PyTorch&#034;<\/span><span class=\"token punctuation\">:<\/span>    <span class=\"token punctuation\">{<\/span><span class=\"token string\">&#034;latency_ms&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token number\">19.8<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;fps&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token number\">50<\/span><span class=\"token punctuation\">,<\/span>   <span class=\"token string\">&#034;gpu_mem_mb&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token number\">1124<\/span><span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span><br \/>\n    <span class=\"token string\">&#034;YOLOv12l-TRT-FP16&#034;<\/span><span class=\"token punctuation\">:<\/span>   <span class=\"token punctuation\">{<\/span><span class=\"token string\">&#034;latency_ms&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token number\">8.2<\/span><span class=\"token punctuation\">,<\/span>  <span class=\"token string\">&#034;fps&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token number\">122<\/span><span class=\"token punctuation\">,<\/span>  <span class=\"token string\">&#034;gpu_mem_mb&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token number\">856<\/span><span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span><br \/>\n    <span class=\"token string\">&#034;YOLOv12x-PyTorch&#034;<\/span><span class=\"token punctuation\">:<\/span>    <span class=\"token punctuation\">{<\/span><span class=\"token string\">&#034;latency_ms&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token number\">35.4<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;fps&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token number\">28<\/span><span class=\"token punctuation\">,<\/span>   <span class=\"token string\">&#034;gpu_mem_mb&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token number\">2048<\/span><span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span><br \/>\n    <span class=\"token string\">&#034;YOLOv12x-TRT-FP16&#034;<\/span><span class=\"token punctuation\">:<\/span>   <span class=\"token punctuation\">{<\/span><span class=\"token string\">&#034;latency_ms&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token number\">14.5<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;fps&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token number\">69<\/span><span class=\"token punctuation\">,<\/span>   <span class=\"token string\">&#034;gpu_mem_mb&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token number\">1580<\/span><span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span><br \/>\n<span class=\"token punctuation\">}<\/span><\/p>\n<p>speed_table <span class=\"token operator\">&#061;<\/span> create_speed_report_table<span class=\"token punctuation\">(<\/span>example_speed_results<span class=\"token punctuation\">)<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;\\\\n\u901f\u5ea6\u6d4b\u8bd5\u6c47\u603b\u8868:&#034;<\/span><span class=\"token punctuation\">)<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>speed_table<span class=\"token punctuation\">.<\/span>to_string<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><br \/>\nplot_speed_comparison<span class=\"token punctuation\">(<\/span>example_speed_results<span class=\"token punctuation\">)<\/span><\/p>\n<h4>\u4e5d\u3001\u7b2c\u4e03\u677f\u5757&#xff1a;\u8d44\u6e90\u5360\u7528\u7ed3\u679c<\/h4>\n<p>\u8d44\u6e90\u5360\u7528\u662f\u5de5\u7a0b\u90e8\u7f72\u7684&#034;\u786c\u7ea6\u675f&#034;\u2014\u2014\u4f60\u53ef\u4ee5\u63a5\u53d7\u7cbe\u5ea6\u4f4e\u4e00\u70b9&#xff0c;\u53ef\u4ee5\u63a5\u53d7\u901f\u5ea6\u6162\u4e00\u70b9&#xff0c;\u4f46\u5982\u679c\u6a21\u578b\u8dd1\u4e0d\u8fdb\u663e\u5b58&#xff0c;\u4e00\u5207\u90fd\u662f\u767d\u642d\u3002<\/p>\n<p>\u8d44\u6e90\u5360\u7528\u9700\u8981\u8bb0\u5f55\u7684\u7ef4\u5ea6&#xff1a;<\/p>\n<p>\u6a21\u578b\u6587\u4ef6\u5927\u5c0f&#xff1a;\u5f71\u54cd\u6a21\u578b\u4f20\u8f93\u3001\u5b58\u50a8\u548c\u52a0\u8f7d\u65f6\u95f4\u3002\u8fb9\u7f18\u7aef\u8bbe\u5907\u53ef\u80fd\u53ea\u6709\u51e0 GB \u7684\u5b58\u50a8\u7a7a\u95f4\u3002<\/p>\n<p>\u63a8\u7406\u65f6\u663e\u5b58\u5cf0\u503c&#xff1a;\u8fd9\u662f\u80fd\u5426\u5728\u76ee\u6807 GPU \u4e0a\u8fd0\u884c\u7684\u786c\u95e8\u69db\u3002\u9700\u8981\u6d4b\u8bd5\u4e0d\u540c batch size \u4e0b\u7684\u663e\u5b58\u5cf0\u503c&#xff0c;\u56e0\u4e3a\u663e\u5b58\u662f\u968f batch \u7ebf\u6027\u589e\u957f\u7684&#xff08;\u901a\u5e38&#xff09;\u3002<\/p>\n<p>CPU \u5185\u5b58\u5360\u7528&#xff1a;\u5373\u4f7f\u4f7f\u7528 GPU \u63a8\u7406&#xff0c;CPU \u5185\u5b58\u4e5f\u4f1a\u5360\u7528&#xff08;\u6a21\u578b\u6743\u91cd\u4f1a\u5728 CPU \u5185\u5b58\u4e2d\u4fdd\u7559\u4e00\u4efd&#xff09;\u3002<\/p>\n<p>\u53c2\u6570\u91cf\u4e0e FLOPs&#xff1a;\u7406\u8bba\u590d\u6742\u5ea6\u6307\u6807&#xff0c;\u7528\u4e8e\u8de8\u786c\u4ef6\u5bf9\u6bd4\u3002<\/p>\n<p><span class=\"token keyword\">import<\/span> os<br \/>\n<span class=\"token keyword\">import<\/span> torch<br \/>\n<span class=\"token keyword\">import<\/span> numpy <span class=\"token keyword\">as<\/span> np<br \/>\n<span class=\"token keyword\">from<\/span> pathlib <span class=\"token keyword\">import<\/span> Path<br \/>\n<span class=\"token keyword\">from<\/span> ultralytics <span class=\"token keyword\">import<\/span> YOLO<\/p>\n<p><span class=\"token keyword\">def<\/span> <span class=\"token function\">measure_model_resources<\/span><span class=\"token punctuation\">(<\/span>model_path<span class=\"token punctuation\">:<\/span> <span class=\"token builtin\">str<\/span><span class=\"token punctuation\">,<\/span> imgsz<span class=\"token punctuation\">:<\/span> <span class=\"token builtin\">int<\/span> <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">640<\/span><span class=\"token punctuation\">,<\/span> device<span class=\"token punctuation\">:<\/span> <span class=\"token builtin\">str<\/span> <span class=\"token operator\">&#061;<\/span> <span class=\"token string\">&#034;cuda:0&#034;<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">&#8211;<\/span><span class=\"token operator\">&gt;<\/span> <span class=\"token builtin\">dict<\/span><span class=\"token punctuation\">:<\/span><br \/>\n    <span class=\"token triple-quoted-string string\">&#034;&#034;&#034;<br \/>\n    \u5168\u9762\u6d4b\u91cf\u6a21\u578b\u8d44\u6e90\u5360\u7528<\/p>\n<p>    \u6d4b\u91cf\u7ef4\u5ea6&#xff1a;<br \/>\n    1. \u6a21\u578b\u6587\u4ef6\u5927\u5c0f&#xff08;\u78c1\u76d8&#xff09;<br \/>\n    2. \u53c2\u6570\u91cf<br \/>\n    3. \u63a8\u7406\u65f6 GPU \u663e\u5b58\u5cf0\u503c&#xff08;\u4e0d\u540c batch&#xff09;<br \/>\n    4. FLOPs&#xff08;\u901a\u8fc7 thop \u5e93\u8ba1\u7b97&#xff09;<\/p>\n<p>    Args:<br \/>\n        model_path: \u6a21\u578b\u8def\u5f84<br \/>\n        imgsz: \u8f93\u5165\u5c3a\u5bf8<br \/>\n        device: \u76ee\u6807\u8bbe\u5907<br \/>\n    &#034;&#034;&#034;<\/span><br \/>\n    resources <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">{<\/span><span class=\"token punctuation\">}<\/span><\/p>\n<p>    <span class=\"token comment\"># &#061;&#061;&#061;&#061;&#061; 1. \u6587\u4ef6\u5927\u5c0f &#061;&#061;&#061;&#061;&#061;<\/span><br \/>\n    file_size_bytes <span class=\"token operator\">&#061;<\/span> os<span class=\"token punctuation\">.<\/span>path<span class=\"token punctuation\">.<\/span>getsize<span class=\"token punctuation\">(<\/span>model_path<span class=\"token punctuation\">)<\/span><br \/>\n    resources<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;model_file_size_mb&#034;<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&#061;<\/span> <span class=\"token builtin\">round<\/span><span class=\"token punctuation\">(<\/span>file_size_bytes <span class=\"token operator\">\/<\/span> <span class=\"token number\">1024<\/span><span class=\"token operator\">**<\/span><span class=\"token number\">2<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">2<\/span><span class=\"token punctuation\">)<\/span><br \/>\n    <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string-interpolation\"><span class=\"token string\">f&#034;\u6a21\u578b\u6587\u4ef6\u5927\u5c0f: <\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>resources<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#039;model_file_size_mb&#039;<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\"> MB&#034;<\/span><\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p>    <span class=\"token comment\"># &#061;&#061;&#061;&#061;&#061; 2. \u52a0\u8f7d\u6a21\u578b &#061;&#061;&#061;&#061;&#061;<\/span><br \/>\n    model <span class=\"token operator\">&#061;<\/span> YOLO<span class=\"token punctuation\">(<\/span>model_path<span class=\"token punctuation\">)<\/span><br \/>\n    pytorch_model <span class=\"token operator\">&#061;<\/span> model<span class=\"token punctuation\">.<\/span>model<\/p>\n<p>    <span class=\"token comment\"># &#061;&#061;&#061;&#061;&#061; 3. \u53c2\u6570\u91cf\u7edf\u8ba1 &#061;&#061;&#061;&#061;&#061;<\/span><br \/>\n    total_params <span class=\"token operator\">&#061;<\/span> <span class=\"token builtin\">sum<\/span><span class=\"token punctuation\">(<\/span>p<span class=\"token punctuation\">.<\/span>numel<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token keyword\">for<\/span> p <span class=\"token keyword\">in<\/span> pytorch_model<span class=\"token punctuation\">.<\/span>parameters<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><br \/>\n    trainable_params <span class=\"token operator\">&#061;<\/span> <span class=\"token builtin\">sum<\/span><span class=\"token punctuation\">(<\/span>p<span class=\"token punctuation\">.<\/span>numel<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token keyword\">for<\/span> p <span class=\"token keyword\">in<\/span> pytorch_model<span class=\"token punctuation\">.<\/span>parameters<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token keyword\">if<\/span> p<span class=\"token punctuation\">.<\/span>requires_grad<span class=\"token punctuation\">)<\/span><br \/>\n    resources<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;total_params_M&#034;<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&#061;<\/span> <span class=\"token builtin\">round<\/span><span class=\"token punctuation\">(<\/span>total_params <span class=\"token operator\">\/<\/span> <span class=\"token number\">1e6<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">2<\/span><span class=\"token punctuation\">)<\/span><br \/>\n    resources<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;trainable_params_M&#034;<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&#061;<\/span> <span class=\"token builtin\">round<\/span><span class=\"token punctuation\">(<\/span>trainable_params <span class=\"token operator\">\/<\/span> <span class=\"token number\">1e6<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">2<\/span><span class=\"token punctuation\">)<\/span><br \/>\n    <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string-interpolation\"><span class=\"token string\">f&#034;\u603b\u53c2\u6570\u91cf: <\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>resources<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#039;total_params_M&#039;<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\"> M&#034;<\/span><\/span><span class=\"token punctuation\">)<\/span><br \/>\n    <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string-interpolation\"><span class=\"token string\">f&#034;\u53ef\u8bad\u7ec3\u53c2\u6570\u91cf: <\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>resources<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#039;trainable_params_M&#039;<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\"> M&#034;<\/span><\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p>    <span class=\"token comment\"># &#061;&#061;&#061;&#061;&#061; 4. FLOPs \u8ba1\u7b97 &#061;&#061;&#061;&#061;&#061;<\/span><br \/>\n    <span class=\"token keyword\">try<\/span><span class=\"token punctuation\">:<\/span><br \/>\n        <span class=\"token keyword\">from<\/span> thop <span class=\"token keyword\">import<\/span> profile<span class=\"token punctuation\">,<\/span> clever_format<br \/>\n        dummy_input <span class=\"token operator\">&#061;<\/span> torch<span class=\"token punctuation\">.<\/span>zeros<span class=\"token punctuation\">(<\/span><span class=\"token number\">1<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">3<\/span><span class=\"token punctuation\">,<\/span> imgsz<span class=\"token punctuation\">,<\/span> imgsz<span class=\"token punctuation\">)<\/span><br \/>\n        macs<span class=\"token punctuation\">,<\/span> params <span class=\"token operator\">&#061;<\/span> profile<span class=\"token punctuation\">(<\/span>pytorch_model<span class=\"token punctuation\">.<\/span>cpu<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">,<\/span> inputs<span class=\"token operator\">&#061;<\/span><span class=\"token punctuation\">(<\/span>dummy_input<span class=\"token punctuation\">,<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">,<\/span> verbose<span class=\"token operator\">&#061;<\/span><span class=\"token boolean\">False<\/span><span class=\"token punctuation\">)<\/span><br \/>\n        flops <span class=\"token operator\">&#061;<\/span> macs <span class=\"token operator\">*<\/span> <span class=\"token number\">2<\/span>  <span class=\"token comment\"># MACs * 2 &#061; FLOPs&#xff08;\u4e58\u52a0\u5404\u7b97\u4e00\u6b21&#xff09;<\/span><br \/>\n        resources<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;GFLOPs&#034;<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&#061;<\/span> <span class=\"token builtin\">round<\/span><span class=\"token punctuation\">(<\/span>flops <span class=\"token operator\">\/<\/span> <span class=\"token number\">1e9<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">2<\/span><span class=\"token punctuation\">)<\/span><br \/>\n        <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string-interpolation\"><span class=\"token string\">f&#034;GFLOPs: <\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>resources<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#039;GFLOPs&#039;<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">&#034;<\/span><\/span><span class=\"token punctuation\">)<\/span><br \/>\n    <span class=\"token keyword\">except<\/span> ImportError<span class=\"token punctuation\">:<\/span><br \/>\n        resources<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;GFLOPs&#034;<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&#061;<\/span> <span class=\"token string\">&#034;\u9700\u5b89\u88c5 thop: pip install thop&#034;<\/span><br \/>\n    <span class=\"token keyword\">except<\/span> Exception <span class=\"token keyword\">as<\/span> e<span class=\"token punctuation\">:<\/span><br \/>\n        resources<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;GFLOPs&#034;<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&#061;<\/span> <span class=\"token string-interpolation\"><span class=\"token string\">f&#034;\u8ba1\u7b97\u5931\u8d25: <\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span><span class=\"token builtin\">str<\/span><span class=\"token punctuation\">(<\/span>e<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">&#034;<\/span><\/span><\/p>\n<p>    <span class=\"token comment\"># &#061;&#061;&#061;&#061;&#061; 5. \u663e\u5b58\u5cf0\u503c&#xff08;\u4e0d\u540c batch&#xff09;&#061;&#061;&#061;&#061;&#061;<\/span><br \/>\n    <span class=\"token keyword\">if<\/span> torch<span class=\"token punctuation\">.<\/span>cuda<span class=\"token punctuation\">.<\/span>is_available<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token keyword\">and<\/span> <span class=\"token string\">&#034;cuda&#034;<\/span> <span class=\"token keyword\">in<\/span> device<span class=\"token punctuation\">:<\/span><br \/>\n        pytorch_model <span class=\"token operator\">&#061;<\/span> pytorch_model<span class=\"token punctuation\">.<\/span>to<span class=\"token punctuation\">(<\/span>device<span class=\"token punctuation\">)<\/span><br \/>\n        pytorch_model<span class=\"token punctuation\">.<\/span><span class=\"token builtin\">eval<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><br \/>\n        resources<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;gpu_memory_by_batch&#034;<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">{<\/span><span class=\"token punctuation\">}<\/span><\/p>\n<p>        <span class=\"token keyword\">for<\/span> batch <span class=\"token keyword\">in<\/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 number\">4<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">8<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">16<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">32<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">:<\/span><br \/>\n            <span class=\"token keyword\">try<\/span><span class=\"token punctuation\">:<\/span><br \/>\n                torch<span class=\"token punctuation\">.<\/span>cuda<span class=\"token punctuation\">.<\/span>reset_peak_memory_stats<span class=\"token punctuation\">(<\/span>device<span class=\"token punctuation\">)<\/span>  <span class=\"token comment\"># \u91cd\u7f6e\u5cf0\u503c\u8bb0\u5f55<\/span><br \/>\n                torch<span class=\"token punctuation\">.<\/span>cuda<span class=\"token punctuation\">.<\/span>empty_cache<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p>                dummy <span class=\"token operator\">&#061;<\/span> torch<span class=\"token punctuation\">.<\/span>zeros<span class=\"token punctuation\">(<\/span>batch<span class=\"token punctuation\">,<\/span> <span class=\"token number\">3<\/span><span class=\"token punctuation\">,<\/span> imgsz<span class=\"token punctuation\">,<\/span> imgsz<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">.<\/span>to<span class=\"token punctuation\">(<\/span>device<span class=\"token punctuation\">)<\/span><br \/>\n                <span class=\"token keyword\">with<\/span> torch<span class=\"token punctuation\">.<\/span>no_grad<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n                    _ <span class=\"token operator\">&#061;<\/span> pytorch_model<span class=\"token punctuation\">(<\/span>dummy<span class=\"token punctuation\">)<\/span><br \/>\n                    torch<span class=\"token punctuation\">.<\/span>cuda<span class=\"token punctuation\">.<\/span>synchronize<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p>                peak_mem_mb <span class=\"token operator\">&#061;<\/span> torch<span class=\"token punctuation\">.<\/span>cuda<span class=\"token punctuation\">.<\/span>max_memory_allocated<span class=\"token punctuation\">(<\/span>device<span class=\"token punctuation\">)<\/span> <span class=\"token operator\">\/<\/span> <span class=\"token number\">1024<\/span><span class=\"token operator\">**<\/span><span class=\"token number\">2<\/span><br \/>\n                resources<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;gpu_memory_by_batch&#034;<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">[<\/span><span class=\"token string-interpolation\"><span class=\"token string\">f&#034;batch_<\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>batch<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">&#034;<\/span><\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&#061;<\/span> <span class=\"token builtin\">round<\/span><span class=\"token punctuation\">(<\/span>peak_mem_mb<span class=\"token punctuation\">,<\/span> <span class=\"token number\">1<\/span><span class=\"token punctuation\">)<\/span><br \/>\n                <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string-interpolation\"><span class=\"token string\">f&#034;  GPU \u663e\u5b58\u5cf0\u503c (batch&#061;<\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>batch<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">): <\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>peak_mem_mb<span class=\"token punctuation\">:<\/span><span class=\"token format-spec\">.1f<\/span><span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\"> MB&#034;<\/span><\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p>            <span class=\"token keyword\">except<\/span> torch<span class=\"token punctuation\">.<\/span>cuda<span class=\"token punctuation\">.<\/span>OutOfMemoryError<span class=\"token punctuation\">:<\/span><br \/>\n                resources<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;gpu_memory_by_batch&#034;<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">[<\/span><span class=\"token string-interpolation\"><span class=\"token string\">f&#034;batch_<\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>batch<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">&#034;<\/span><\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&#061;<\/span> <span class=\"token string\">&#034;OOM&#034;<\/span><br \/>\n                <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string-interpolation\"><span class=\"token string\">f&#034;  GPU \u663e\u5b58\u5cf0\u503c (batch&#061;<\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>batch<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">): OOM&#034;<\/span><\/span><span class=\"token punctuation\">)<\/span><br \/>\n                torch<span class=\"token punctuation\">.<\/span>cuda<span class=\"token punctuation\">.<\/span>empty_cache<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><br \/>\n                <span class=\"token keyword\">break<\/span><\/p>\n<p>    <span class=\"token keyword\">return<\/span> resources<\/p>\n<p><span class=\"token keyword\">def<\/span> <span class=\"token function\">plot_resource_overview<\/span><span class=\"token punctuation\">(<\/span>resource_data<span class=\"token punctuation\">:<\/span> <span class=\"token builtin\">dict<\/span><span class=\"token punctuation\">,<\/span> save_path<span class=\"token punctuation\">:<\/span> <span class=\"token builtin\">str<\/span> <span class=\"token operator\">&#061;<\/span> <span class=\"token string\">&#034;resource_overview.png&#034;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n    <span class=\"token triple-quoted-string string\">&#034;&#034;&#034;<br \/>\n    \u7ed8\u5236\u5404\u6a21\u578b\u89c4\u683c\u7684\u8d44\u6e90\u5360\u7528\u6982\u89c8\u56fe<\/p>\n<p>    resource_data \u683c\u5f0f&#xff1a;<br \/>\n    {<br \/>\n        &#034;YOLOv12n&#034;: {&#034;Params_M&#034;: 2.6, &#034;GFLOPs&#034;: 6.5, &#034;Size_MB&#034;: 5.4, &#034;VRAM_MB&#034;: 312},<br \/>\n        &#8230;<br \/>\n    }<br \/>\n    &#034;&#034;&#034;<\/span><br \/>\n    models <span class=\"token operator\">&#061;<\/span> <span class=\"token builtin\">list<\/span><span class=\"token punctuation\">(<\/span>resource_data<span class=\"token punctuation\">.<\/span>keys<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><br \/>\n    params <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">[<\/span>resource_data<span class=\"token punctuation\">[<\/span>m<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;Params_M&#034;<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token keyword\">for<\/span> m <span class=\"token keyword\">in<\/span> models<span class=\"token punctuation\">]<\/span><br \/>\n    gflops <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">[<\/span>resource_data<span class=\"token punctuation\">[<\/span>m<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;GFLOPs&#034;<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token keyword\">for<\/span> m <span class=\"token keyword\">in<\/span> models<span class=\"token punctuation\">]<\/span><br \/>\n    sizes <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">[<\/span>resource_data<span class=\"token punctuation\">[<\/span>m<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;Size_MB&#034;<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token keyword\">for<\/span> m <span class=\"token keyword\">in<\/span> models<span class=\"token punctuation\">]<\/span><br \/>\n    vram <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">[<\/span>resource_data<span class=\"token punctuation\">[<\/span>m<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;VRAM_MB&#034;<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token keyword\">for<\/span> m <span class=\"token keyword\">in<\/span> models<span class=\"token punctuation\">]<\/span><\/p>\n<p>    fig<span class=\"token punctuation\">,<\/span> axes <span class=\"token operator\">&#061;<\/span> plt<span class=\"token punctuation\">.<\/span>subplots<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> figsize<span class=\"token operator\">&#061;<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">14<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">10<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><br \/>\n    fig<span class=\"token punctuation\">.<\/span>suptitle<span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;YOLOv12 Resource Usage Overview&#034;<\/span><span class=\"token punctuation\">,<\/span> fontsize<span class=\"token operator\">&#061;<\/span><span class=\"token number\">14<\/span><span class=\"token punctuation\">,<\/span> fontweight<span class=\"token operator\">&#061;<\/span><span class=\"token string\">&#039;bold&#039;<\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p>    colors <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">[<\/span><span class=\"token string\">&#039;#1E88E5&#039;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#039;#43A047&#039;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#039;#FB8C00&#039;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#039;#E53935&#039;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#039;#8E24AA&#039;<\/span><span class=\"token punctuation\">]<\/span><\/p>\n<p>    <span class=\"token comment\"># \u53c2\u6570\u91cf<\/span><br \/>\n    axes<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>bar<span class=\"token punctuation\">(<\/span>models<span class=\"token punctuation\">,<\/span> params<span class=\"token punctuation\">,<\/span> color<span class=\"token operator\">&#061;<\/span>colors<span class=\"token punctuation\">,<\/span> alpha<span class=\"token operator\">&#061;<\/span><span class=\"token number\">0.85<\/span><span class=\"token punctuation\">)<\/span><br \/>\n    axes<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>set_title<span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;Parameters (M)&#034;<\/span><span class=\"token punctuation\">)<\/span><br \/>\n    axes<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>set_ylabel<span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;Params (M)&#034;<\/span><span class=\"token punctuation\">)<\/span><br \/>\n    axes<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>grid<span class=\"token punctuation\">(<\/span>axis<span class=\"token operator\">&#061;<\/span><span class=\"token string\">&#039;y&#039;<\/span><span class=\"token punctuation\">,<\/span> alpha<span class=\"token operator\">&#061;<\/span><span class=\"token number\">0.3<\/span><span class=\"token punctuation\">)<\/span><br \/>\n    <span class=\"token keyword\">for<\/span> i<span class=\"token punctuation\">,<\/span> v <span class=\"token keyword\">in<\/span> <span class=\"token builtin\">enumerate<\/span><span class=\"token punctuation\">(<\/span>params<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n        axes<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>text<span class=\"token punctuation\">(<\/span>i<span class=\"token punctuation\">,<\/span> v <span class=\"token operator\">&#043;<\/span> <span class=\"token number\">0.2<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string-interpolation\"><span class=\"token string\">f&#039;<\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>v<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">M&#039;<\/span><\/span><span class=\"token punctuation\">,<\/span> ha<span class=\"token operator\">&#061;<\/span><span class=\"token string\">&#039;center&#039;<\/span><span class=\"token punctuation\">,<\/span> fontsize<span class=\"token operator\">&#061;<\/span><span class=\"token number\">9<\/span><span class=\"token punctuation\">,<\/span> fontweight<span class=\"token operator\">&#061;<\/span><span class=\"token string\">&#039;bold&#039;<\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p>    <span class=\"token comment\"># FLOPs<\/span><br \/>\n    axes<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>bar<span class=\"token punctuation\">(<\/span>models<span class=\"token punctuation\">,<\/span> gflops<span class=\"token punctuation\">,<\/span> color<span class=\"token operator\">&#061;<\/span>colors<span class=\"token punctuation\">,<\/span> alpha<span class=\"token operator\">&#061;<\/span><span class=\"token number\">0.85<\/span><span class=\"token punctuation\">)<\/span><br \/>\n    axes<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>set_title<span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;GFLOPs&#034;<\/span><span class=\"token punctuation\">)<\/span><br \/>\n    axes<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>set_ylabel<span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;GFLOPs&#034;<\/span><span class=\"token punctuation\">)<\/span><br \/>\n    axes<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>grid<span class=\"token punctuation\">(<\/span>axis<span class=\"token operator\">&#061;<\/span><span class=\"token string\">&#039;y&#039;<\/span><span class=\"token punctuation\">,<\/span> alpha<span class=\"token operator\">&#061;<\/span><span class=\"token number\">0.3<\/span><span class=\"token punctuation\">)<\/span><br \/>\n    <span class=\"token keyword\">for<\/span> i<span class=\"token punctuation\">,<\/span> v <span class=\"token keyword\">in<\/span> <span class=\"token builtin\">enumerate<\/span><span class=\"token punctuation\">(<\/span>gflops<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n        axes<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>text<span class=\"token punctuation\">(<\/span>i<span class=\"token punctuation\">,<\/span> v <span class=\"token operator\">&#043;<\/span> <span class=\"token number\">0.5<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string-interpolation\"><span class=\"token string\">f&#039;<\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>v<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">G&#039;<\/span><\/span><span class=\"token punctuation\">,<\/span> ha<span class=\"token operator\">&#061;<\/span><span class=\"token string\">&#039;center&#039;<\/span><span class=\"token punctuation\">,<\/span> fontsize<span class=\"token operator\">&#061;<\/span><span class=\"token number\">9<\/span><span class=\"token punctuation\">,<\/span> fontweight<span class=\"token operator\">&#061;<\/span><span class=\"token string\">&#039;bold&#039;<\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p>    <span class=\"token comment\"># \u6a21\u578b\u6587\u4ef6\u5927\u5c0f<\/span><br \/>\n    axes<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>bar<span class=\"token punctuation\">(<\/span>models<span class=\"token punctuation\">,<\/span> sizes<span class=\"token punctuation\">,<\/span> color<span class=\"token operator\">&#061;<\/span>colors<span class=\"token punctuation\">,<\/span> alpha<span class=\"token operator\">&#061;<\/span><span class=\"token number\">0.85<\/span><span class=\"token punctuation\">)<\/span><br \/>\n    axes<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>set_title<span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;Model File Size (MB)&#034;<\/span><span class=\"token punctuation\">)<\/span><br \/>\n    axes<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>set_ylabel<span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;Size (MB)&#034;<\/span><span class=\"token punctuation\">)<\/span><br \/>\n    axes<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>grid<span class=\"token punctuation\">(<\/span>axis<span class=\"token operator\">&#061;<\/span><span class=\"token string\">&#039;y&#039;<\/span><span class=\"token punctuation\">,<\/span> alpha<span class=\"token operator\">&#061;<\/span><span class=\"token number\">0.3<\/span><span class=\"token punctuation\">)<\/span><br \/>\n    <span class=\"token keyword\">for<\/span> i<span class=\"token punctuation\">,<\/span> v <span class=\"token keyword\">in<\/span> <span class=\"token builtin\">enumerate<\/span><span class=\"token punctuation\">(<\/span>sizes<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n        axes<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>text<span class=\"token punctuation\">(<\/span>i<span class=\"token punctuation\">,<\/span> v <span class=\"token operator\">&#043;<\/span> <span class=\"token number\">0.3<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string-interpolation\"><span class=\"token string\">f&#039;<\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>v<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">MB&#039;<\/span><\/span><span class=\"token punctuation\">,<\/span> ha<span class=\"token operator\">&#061;<\/span><span class=\"token string\">&#039;center&#039;<\/span><span class=\"token punctuation\">,<\/span> fontsize<span class=\"token operator\">&#061;<\/span><span class=\"token number\">9<\/span><span class=\"token punctuation\">,<\/span> fontweight<span class=\"token operator\">&#061;<\/span><span class=\"token string\">&#039;bold&#039;<\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p>    <span class=\"token comment\"># \u663e\u5b58\u5360\u7528<\/span><br \/>\n    axes<span class=\"token punctuation\">[<\/span><span class=\"token number\">1<\/span><span class=\"token punctuation\">,<\/span><span class=\"token number\">1<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">.<\/span>bar<span class=\"token punctuation\">(<\/span>models<span class=\"token punctuation\">,<\/span> vram<span class=\"token punctuation\">,<\/span> color<span class=\"token operator\">&#061;<\/span>colors<span class=\"token punctuation\">,<\/span> alpha<span class=\"token operator\">&#061;<\/span><span class=\"token number\">0.85<\/span><span class=\"token punctuation\">)<\/span><br \/>\n    axes<span class=\"token punctuation\">[<\/span><span class=\"token number\">1<\/span><span class=\"token punctuation\">,<\/span><span class=\"token number\">1<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">.<\/span>set_title<span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;GPU Memory (MB, batch&#061;1)&#034;<\/span><span class=\"token punctuation\">)<\/span><br \/>\n    axes<span class=\"token punctuation\">[<\/span><span class=\"token number\">1<\/span><span class=\"token punctuation\">,<\/span><span class=\"token number\">1<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">.<\/span>set_ylabel<span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;VRAM (MB)&#034;<\/span><span class=\"token punctuation\">)<\/span><br \/>\n    axes<span class=\"token punctuation\">[<\/span><span class=\"token number\">1<\/span><span class=\"token punctuation\">,<\/span><span class=\"token number\">1<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">.<\/span>grid<span class=\"token punctuation\">(<\/span>axis<span class=\"token operator\">&#061;<\/span><span class=\"token string\">&#039;y&#039;<\/span><span class=\"token punctuation\">,<\/span> alpha<span class=\"token operator\">&#061;<\/span><span class=\"token number\">0.3<\/span><span class=\"token punctuation\">)<\/span><br \/>\n    <span class=\"token keyword\">for<\/span> i<span class=\"token punctuation\">,<\/span> v <span class=\"token keyword\">in<\/span> <span class=\"token builtin\">enumerate<\/span><span class=\"token punctuation\">(<\/span>vram<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n        axes<span class=\"token punctuation\">[<\/span><span class=\"token number\">1<\/span><span class=\"token punctuation\">,<\/span><span class=\"token number\">1<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">.<\/span>text<span class=\"token punctuation\">(<\/span>i<span class=\"token punctuation\">,<\/span> v <span class=\"token operator\">&#043;<\/span> <span class=\"token number\">10<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string-interpolation\"><span class=\"token string\">f&#039;<\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>v<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">MB&#039;<\/span><\/span><span class=\"token punctuation\">,<\/span> ha<span class=\"token operator\">&#061;<\/span><span class=\"token string\">&#039;center&#039;<\/span><span class=\"token punctuation\">,<\/span> fontsize<span class=\"token operator\">&#061;<\/span><span class=\"token number\">9<\/span><span class=\"token punctuation\">,<\/span> fontweight<span class=\"token operator\">&#061;<\/span><span class=\"token string\">&#039;bold&#039;<\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p>    plt<span class=\"token punctuation\">.<\/span>tight_layout<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><br \/>\n    plt<span class=\"token punctuation\">.<\/span>savefig<span class=\"token punctuation\">(<\/span>save_path<span class=\"token punctuation\">,<\/span> dpi<span class=\"token operator\">&#061;<\/span><span class=\"token number\">150<\/span><span class=\"token punctuation\">,<\/span> bbox_inches<span class=\"token operator\">&#061;<\/span><span class=\"token string\">&#039;tight&#039;<\/span><span class=\"token punctuation\">)<\/span><br \/>\n    <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string-interpolation\"><span class=\"token string\">f&#034;\u8d44\u6e90\u6982\u89c8\u56fe\u5df2\u4fdd\u5b58: <\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>save_path<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">&#034;<\/span><\/span><span class=\"token punctuation\">)<\/span><br \/>\n    plt<span class=\"token punctuation\">.<\/span>show<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p><span class=\"token comment\"># \u793a\u4f8b\u8d44\u6e90\u6570\u636e<\/span><br \/>\nexample_resource_data <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n    <span class=\"token string\">&#034;YOLOv12n&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token punctuation\">{<\/span><span class=\"token string\">&#034;Params_M&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token number\">2.6<\/span><span class=\"token punctuation\">,<\/span>  <span class=\"token string\">&#034;GFLOPs&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token number\">6.5<\/span><span class=\"token punctuation\">,<\/span>   <span class=\"token string\">&#034;Size_MB&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token number\">5.4<\/span><span class=\"token punctuation\">,<\/span>   <span class=\"token string\">&#034;VRAM_MB&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token number\">312<\/span><span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span><br \/>\n    <span class=\"token string\">&#034;YOLOv12s&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token punctuation\">{<\/span><span class=\"token string\">&#034;Params_M&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token number\">9.3<\/span><span class=\"token punctuation\">,<\/span>  <span class=\"token string\">&#034;GFLOPs&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token number\">21.5<\/span><span class=\"token punctuation\">,<\/span>  <span class=\"token string\">&#034;Size_MB&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token number\">18.9<\/span><span class=\"token punctuation\">,<\/span>  <span class=\"token string\">&#034;VRAM_MB&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token number\">520<\/span><span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span><br \/>\n    <span class=\"token string\">&#034;YOLOv12m&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token punctuation\">{<\/span><span class=\"token string\">&#034;Params_M&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token number\">20.2<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;GFLOPs&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token number\">67.5<\/span><span class=\"token punctuation\">,<\/span>  <span class=\"token string\">&#034;Size_MB&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token number\">40.9<\/span><span class=\"token punctuation\">,<\/span>  <span class=\"token string\">&#034;VRAM_MB&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token number\">892<\/span><span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span><br \/>\n    <span class=\"token string\">&#034;YOLOv12l&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token punctuation\">{<\/span><span class=\"token string\">&#034;Params_M&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token number\">26.4<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;GFLOPs&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token number\">88.9<\/span><span class=\"token punctuation\">,<\/span>  <span class=\"token string\">&#034;Size_MB&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token number\">53.5<\/span><span class=\"token punctuation\">,<\/span>  <span class=\"token string\">&#034;VRAM_MB&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token number\">1124<\/span><span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span><br \/>\n    <span class=\"token string\">&#034;YOLOv12x&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token punctuation\">{<\/span><span class=\"token string\">&#034;Params_M&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token number\">59.1<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;GFLOPs&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token number\">199.0<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;Size_MB&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token number\">119.8<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;VRAM_MB&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token number\">2048<\/span><span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span><br \/>\n<span class=\"token punctuation\">}<\/span><\/p>\n<p>plot_resource_overview<span class=\"token punctuation\">(<\/span>example_resource_data<span class=\"token punctuation\">)<\/span><\/p>\n<h4>\u5341\u3001\u7b2c\u516b\u677f\u5757&#xff1a;\u7efc\u5408\u5bf9\u6bd4\u5206\u6790\u2014\u2014\u96f7\u8fbe\u56fe\u4e0e\u5e15\u7d2f\u6258\u5206\u6790<\/h4>\n<p>\u6709\u4e86\u7cbe\u5ea6\u6570\u636e\u3001\u901f\u5ea6\u6570\u636e\u3001\u8d44\u6e90\u6570\u636e&#xff0c;\u4e0b\u4e00\u6b65\u662f\u8fdb\u884c\u7efc\u5408\u5bf9\u6bd4\u5206\u6790\u3002\u8fd9\u662f\u62a5\u544a\u4e2d\u6700\u8003\u9a8c\u5206\u6790\u80fd\u529b\u7684\u90e8\u5206&#xff0c;\u4e5f\u662f\u5e2e\u52a9\u51b3\u7b56\u8005\u5feb\u901f\u6293\u4f4f\u91cd\u70b9\u7684\u5173\u952e\u3002<\/p>\n<p>\u96f7\u8fbe\u56fe\u662f\u591a\u7ef4\u5ea6\u5bf9\u6bd4\u7684\u7ecf\u5178\u5de5\u5177&#xff0c;\u4f46\u6709\u4e00\u4e2a\u5bb9\u6613\u8e29\u7684\u5751&#xff1a;\u4e0d\u540c\u7ef4\u5ea6\u7684\u91cf\u7eb2\u4e0d\u540c&#xff08;mAP \u662f 0~1&#xff0c;FPS \u662f\u51e0\u5230\u51e0\u767e&#xff09;&#xff0c;\u9700\u8981\u5f52\u4e00\u5316\u5904\u7406\u540e\u624d\u80fd\u653e\u5728\u540c\u4e00\u4e2a\u96f7\u8fbe\u56fe\u4e0a\u3002<\/p>\n<p>**\u5e15\u7d2f\u6258\u524d\u6cbf&#xff08;Pareto Frontier&#xff09;**\u5206\u6790\u5219\u66f4\u6709\u5de5\u7a0b\u610f\u4e49\u2014\u2014\u5b83\u80fd\u5e2e\u4f60\u627e\u5230&#034;\u5728\u7ed9\u5b9a\u901f\u5ea6\u7ea6\u675f\u4e0b\u7cbe\u5ea6\u6700\u9ad8\u7684\u6a21\u578b&#034;\u6216&#034;\u5728\u7ed9\u5b9a\u7cbe\u5ea6\u7ea6\u675f\u4e0b\u901f\u5ea6\u6700\u5feb\u7684\u6a21\u578b&#034;\u3002<\/p>\n<p><span class=\"token keyword\">import<\/span> numpy <span class=\"token keyword\">as<\/span> np<br \/>\n<span class=\"token keyword\">import<\/span> matplotlib<span class=\"token punctuation\">.<\/span>pyplot <span class=\"token keyword\">as<\/span> plt<br \/>\n<span class=\"token keyword\">from<\/span> matplotlib<span class=\"token punctuation\">.<\/span>patches <span class=\"token keyword\">import<\/span> FancyArrowPatch<\/p>\n<p><span class=\"token keyword\">def<\/span> <span class=\"token function\">plot_radar_chart<\/span><span class=\"token punctuation\">(<\/span>models_data<span class=\"token punctuation\">:<\/span> <span class=\"token builtin\">dict<\/span><span class=\"token punctuation\">,<\/span> save_path<span class=\"token punctuation\">:<\/span> <span class=\"token builtin\">str<\/span> <span class=\"token operator\">&#061;<\/span> <span class=\"token string\">&#034;radar_chart.png&#034;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n    <span class=\"token triple-quoted-string string\">&#034;&#034;&#034;<br \/>\n    \u7ed8\u5236\u591a\u7ef4\u5ea6\u5bf9\u6bd4\u96f7\u8fbe\u56fe<br \/>\n    \u6ce8\u610f&#xff1a;\u6240\u6709\u7ef4\u5ea6\u9700\u8981\u5f52\u4e00\u5316\u5230 [0, 1]&#xff0c;\u8d8a\u5927\u8d8a\u597d<\/p>\n<p>    \u5bf9\u4e8e&#034;\u8d8a\u5c0f\u8d8a\u597d&#034;\u7684\u6307\u6807&#xff08;\u5982\u5ef6\u8fdf\u3001\u53c2\u6570\u91cf&#xff09;&#xff0c;\u9700\u8981\u53d6\u5012\u6570\u6216\u53cd\u5411\u5f52\u4e00\u5316<br \/>\n    &#034;&#034;&#034;<\/span><br \/>\n    <span class=\"token comment\"># \u5b9a\u4e49\u8bc4\u4f30\u7ef4\u5ea6&#xff08;\u5168\u90e8\u8f6c\u4e3a&#034;\u8d8a\u5927\u8d8a\u597d&#034;&#xff09;<\/span><br \/>\n    dimensions <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">[<\/span><span class=\"token string\">&#039;mAP&#064;0.5:0.95&#039;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#039;Speed\\\\n(1\/Latency)&#039;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#039;Param\\\\nEfficiency&#039;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#039;Memory\\\\nEfficiency&#039;<\/span><span class=\"token punctuation\">]<\/span><\/p>\n<p>    <span class=\"token comment\"># \u539f\u59cb\u6570\u636e<\/span><br \/>\n    raw_data <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n        <span class=\"token string\">&#034;YOLOv12n&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n            <span class=\"token string\">&#034;mAP50_95&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token number\">0.404<\/span><span class=\"token punctuation\">,<\/span><br \/>\n            <span class=\"token string\">&#034;latency_ms&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token number\">5.2<\/span><span class=\"token punctuation\">,<\/span>   <span class=\"token comment\"># \u8d8a\u5c0f\u8d8a\u597d<\/span><br \/>\n            <span class=\"token string\">&#034;params_M&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token number\">2.6<\/span><span class=\"token punctuation\">,<\/span>     <span class=\"token comment\"># \u8d8a\u5c0f\u8d8a\u597d<\/span><br \/>\n            <span class=\"token string\">&#034;vram_mb&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token number\">312<\/span><span class=\"token punctuation\">,<\/span>      <span class=\"token comment\"># \u8d8a\u5c0f\u8d8a\u597d<\/span><br \/>\n        <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span><br \/>\n        <span class=\"token string\">&#034;YOLOv12s&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token punctuation\">{<\/span><span class=\"token string\">&#034;mAP50_95&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token number\">0.481<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;latency_ms&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token number\">8.6<\/span><span class=\"token punctuation\">,<\/span>  <span class=\"token string\">&#034;params_M&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token number\">9.3<\/span><span class=\"token punctuation\">,<\/span>  <span class=\"token string\">&#034;vram_mb&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token number\">520<\/span><span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span><br \/>\n        <span class=\"token string\">&#034;YOLOv12m&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token punctuation\">{<\/span><span class=\"token string\">&#034;mAP50_95&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token number\">0.503<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;latency_ms&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token number\">14.2<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;params_M&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token number\">20.2<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;vram_mb&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token number\">892<\/span><span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span><br \/>\n        <span class=\"token string\">&#034;YOLOv12l&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token punctuation\">{<\/span><span class=\"token string\">&#034;mAP50_95&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token number\">0.516<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;latency_ms&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token number\">19.8<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;params_M&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token number\">26.4<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;vram_mb&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token number\">1124<\/span><span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span><br \/>\n        <span class=\"token string\">&#034;YOLOv12x&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token punctuation\">{<\/span><span class=\"token string\">&#034;mAP50_95&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token number\">0.529<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;latency_ms&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token number\">35.4<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;params_M&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token number\">59.1<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;vram_mb&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token number\">2048<\/span><span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span><br \/>\n    <span class=\"token punctuation\">}<\/span><\/p>\n<p>    models <span class=\"token operator\">&#061;<\/span> <span class=\"token builtin\">list<\/span><span class=\"token punctuation\">(<\/span>raw_data<span class=\"token punctuation\">.<\/span>keys<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p>    <span class=\"token comment\"># \u5f52\u4e00\u5316\u51fd\u6570<\/span><br \/>\n    <span class=\"token keyword\">def<\/span> <span class=\"token function\">normalize_higher_better<\/span><span class=\"token punctuation\">(<\/span>values<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n        <span class=\"token triple-quoted-string string\">&#034;&#034;&#034;\u8d8a\u5927\u8d8a\u597d&#xff0c;\u5f52\u4e00\u5316\u5230 [0,1]&#034;&#034;&#034;<\/span><br \/>\n        mn<span class=\"token punctuation\">,<\/span> mx <span class=\"token operator\">&#061;<\/span> <span class=\"token builtin\">min<\/span><span class=\"token punctuation\">(<\/span>values<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token builtin\">max<\/span><span class=\"token punctuation\">(<\/span>values<span class=\"token punctuation\">)<\/span><br \/>\n        <span class=\"token keyword\">return<\/span> <span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">(<\/span>v <span class=\"token operator\">&#8211;<\/span> mn<span class=\"token punctuation\">)<\/span> <span class=\"token operator\">\/<\/span> <span class=\"token punctuation\">(<\/span>mx <span class=\"token operator\">&#8211;<\/span> mn <span class=\"token operator\">&#043;<\/span> <span class=\"token number\">1e-9<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token keyword\">for<\/span> v <span class=\"token keyword\">in<\/span> values<span class=\"token punctuation\">]<\/span><\/p>\n<p>    <span class=\"token keyword\">def<\/span> <span class=\"token function\">normalize_lower_better<\/span><span class=\"token punctuation\">(<\/span>values<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n        <span class=\"token triple-quoted-string string\">&#034;&#034;&#034;\u8d8a\u5c0f\u8d8a\u597d&#xff0c;\u8f6c\u6362\u540e\u5f52\u4e00\u5316\u5230 [0,1]&#034;&#034;&#034;<\/span><br \/>\n        mn<span class=\"token punctuation\">,<\/span> mx <span class=\"token operator\">&#061;<\/span> <span class=\"token builtin\">min<\/span><span class=\"token punctuation\">(<\/span>values<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token builtin\">max<\/span><span class=\"token punctuation\">(<\/span>values<span class=\"token punctuation\">)<\/span><br \/>\n        <span class=\"token keyword\">return<\/span> <span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">(<\/span>mx <span class=\"token operator\">&#8211;<\/span> v<span class=\"token punctuation\">)<\/span> <span class=\"token operator\">\/<\/span> <span class=\"token punctuation\">(<\/span>mx <span class=\"token operator\">&#8211;<\/span> mn <span class=\"token operator\">&#043;<\/span> <span class=\"token number\">1e-9<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token keyword\">for<\/span> v <span class=\"token keyword\">in<\/span> values<span class=\"token punctuation\">]<\/span><\/p>\n<p>    <span class=\"token comment\"># \u63d0\u53d6\u5404\u7ef4\u5ea6\u6570\u636e<\/span><br \/>\n    map_vals    <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">[<\/span>raw_data<span class=\"token punctuation\">[<\/span>m<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;mAP50_95&#034;<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token keyword\">for<\/span> m <span class=\"token keyword\">in<\/span> models<span class=\"token punctuation\">]<\/span><br \/>\n    speed_vals  <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">[<\/span>raw_data<span class=\"token punctuation\">[<\/span>m<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;latency_ms&#034;<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token keyword\">for<\/span> m <span class=\"token keyword\">in<\/span> models<span class=\"token punctuation\">]<\/span>   <span class=\"token comment\"># \u8d8a\u5c0f\u8d8a\u597d<\/span><br \/>\n    param_vals  <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">[<\/span>raw_data<span class=\"token punctuation\">[<\/span>m<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;params_M&#034;<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token keyword\">for<\/span> m <span class=\"token keyword\">in<\/span> models<span class=\"token punctuation\">]<\/span>      <span class=\"token comment\"># \u8d8a\u5c0f\u8d8a\u597d<\/span><br \/>\n    vram_vals   <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">[<\/span>raw_data<span class=\"token punctuation\">[<\/span>m<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;vram_mb&#034;<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token keyword\">for<\/span> m <span class=\"token keyword\">in<\/span> models<span class=\"token punctuation\">]<\/span>       <span class=\"token comment\"># \u8d8a\u5c0f\u8d8a\u597d<\/span><\/p>\n<p>    <span class=\"token comment\"># \u5f52\u4e00\u5316<\/span><br \/>\n    norm_map   <span class=\"token operator\">&#061;<\/span> normalize_higher_better<span class=\"token punctuation\">(<\/span>map_vals<span class=\"token punctuation\">)<\/span><br \/>\n    norm_speed <span class=\"token operator\">&#061;<\/span> normalize_lower_better<span class=\"token punctuation\">(<\/span>speed_vals<span class=\"token punctuation\">)<\/span><br \/>\n    norm_param <span class=\"token operator\">&#061;<\/span> normalize_lower_better<span class=\"token punctuation\">(<\/span>param_vals<span class=\"token punctuation\">)<\/span><br \/>\n    norm_vram  <span class=\"token operator\">&#061;<\/span> normalize_lower_better<span class=\"token punctuation\">(<\/span>vram_vals<span class=\"token punctuation\">)<\/span><\/p>\n<p>    <span class=\"token comment\"># \u6784\u5efa\u96f7\u8fbe\u56fe\u6570\u636e<\/span><br \/>\n    N <span class=\"token operator\">&#061;<\/span> <span class=\"token builtin\">len<\/span><span class=\"token punctuation\">(<\/span>dimensions<span class=\"token punctuation\">)<\/span><br \/>\n    angles <span class=\"token operator\">&#061;<\/span> np<span class=\"token punctuation\">.<\/span>linspace<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 operator\">*<\/span> np<span class=\"token punctuation\">.<\/span>pi<span class=\"token punctuation\">,<\/span> N<span class=\"token punctuation\">,<\/span> endpoint<span class=\"token operator\">&#061;<\/span><span class=\"token boolean\">False<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">.<\/span>tolist<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><br \/>\n    angles <span class=\"token operator\">&#043;&#061;<\/span> angles<span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">:<\/span><span class=\"token number\">1<\/span><span class=\"token punctuation\">]<\/span>  <span class=\"token comment\"># \u95ed\u5408<\/span><\/p>\n<p>    fig<span class=\"token punctuation\">,<\/span> ax <span class=\"token operator\">&#061;<\/span> plt<span class=\"token punctuation\">.<\/span>subplots<span class=\"token punctuation\">(<\/span>figsize<span class=\"token operator\">&#061;<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">9<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">9<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">,<\/span> subplot_kw<span class=\"token operator\">&#061;<\/span><span class=\"token builtin\">dict<\/span><span class=\"token punctuation\">(<\/span>polar<span class=\"token operator\">&#061;<\/span><span class=\"token boolean\">True<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p>    colors_radar <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">[<\/span><span class=\"token string\">&#039;#1E88E5&#039;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#039;#43A047&#039;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#039;#FB8C00&#039;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#039;#E53935&#039;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#039;#8E24AA&#039;<\/span><span class=\"token punctuation\">]<\/span><\/p>\n<p>    <span class=\"token keyword\">for<\/span> idx<span class=\"token punctuation\">,<\/span> model <span class=\"token keyword\">in<\/span> <span class=\"token builtin\">enumerate<\/span><span class=\"token punctuation\">(<\/span>models<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n        values <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">[<\/span>norm_map<span class=\"token punctuation\">[<\/span>idx<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">,<\/span> norm_speed<span class=\"token punctuation\">[<\/span>idx<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">,<\/span> norm_param<span class=\"token punctuation\">[<\/span>idx<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">,<\/span> norm_vram<span class=\"token punctuation\">[<\/span>idx<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">]<\/span><br \/>\n        values <span class=\"token operator\">&#043;&#061;<\/span> values<span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">:<\/span><span class=\"token number\">1<\/span><span class=\"token punctuation\">]<\/span>  <span class=\"token comment\"># \u95ed\u5408<\/span><\/p>\n<p>        ax<span class=\"token punctuation\">.<\/span>plot<span class=\"token punctuation\">(<\/span>angles<span class=\"token punctuation\">,<\/span> values<span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#039;o-&#039;<\/span><span class=\"token punctuation\">,<\/span> linewidth<span class=\"token operator\">&#061;<\/span><span class=\"token number\">2<\/span><span class=\"token punctuation\">,<\/span> color<span class=\"token operator\">&#061;<\/span>colors_radar<span class=\"token punctuation\">[<\/span>idx<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">,<\/span><br \/>\n                label<span class=\"token operator\">&#061;<\/span>model<span class=\"token punctuation\">,<\/span> markersize<span class=\"token operator\">&#061;<\/span><span class=\"token number\">6<\/span><span class=\"token punctuation\">)<\/span><br \/>\n        ax<span class=\"token punctuation\">.<\/span>fill<span class=\"token punctuation\">(<\/span>angles<span class=\"token punctuation\">,<\/span> values<span class=\"token punctuation\">,<\/span> alpha<span class=\"token operator\">&#061;<\/span><span class=\"token number\">0.1<\/span><span class=\"token punctuation\">,<\/span> color<span class=\"token operator\">&#061;<\/span>colors_radar<span class=\"token punctuation\">[<\/span>idx<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p>    ax<span class=\"token punctuation\">.<\/span>set_xticks<span class=\"token punctuation\">(<\/span>angles<span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">:<\/span><span class=\"token operator\">&#8211;<\/span><span class=\"token number\">1<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">)<\/span><br \/>\n    ax<span class=\"token punctuation\">.<\/span>set_xticklabels<span class=\"token punctuation\">(<\/span>dimensions<span class=\"token punctuation\">,<\/span> size<span class=\"token operator\">&#061;<\/span><span class=\"token number\">11<\/span><span class=\"token punctuation\">)<\/span><br \/>\n    ax<span class=\"token punctuation\">.<\/span>set_ylim<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><br \/>\n    ax<span class=\"token punctuation\">.<\/span>set_yticks<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">[<\/span><span class=\"token number\">0.25<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">0.5<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">0.75<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">1.0<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">)<\/span><br \/>\n    ax<span class=\"token punctuation\">.<\/span>set_yticklabels<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">[<\/span><span class=\"token string\">&#039;0.25&#039;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#039;0.50&#039;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#039;0.75&#039;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#039;1.00&#039;<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">,<\/span> size<span class=\"token operator\">&#061;<\/span><span class=\"token number\">8<\/span><span class=\"token punctuation\">)<\/span><br \/>\n    ax<span class=\"token punctuation\">.<\/span>grid<span class=\"token punctuation\">(<\/span><span class=\"token boolean\">True<\/span><span class=\"token punctuation\">,<\/span> alpha<span class=\"token operator\">&#061;<\/span><span class=\"token number\">0.3<\/span><span class=\"token punctuation\">)<\/span><br \/>\n    ax<span class=\"token punctuation\">.<\/span>set_title<span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;YOLOv12 Multi-dimensional Comparison\\\\n(All axes: higher &#061; better, normalized)&#034;<\/span><span class=\"token punctuation\">,<\/span><br \/>\n                 size<span class=\"token operator\">&#061;<\/span><span class=\"token number\">13<\/span><span class=\"token punctuation\">,<\/span> fontweight<span class=\"token operator\">&#061;<\/span><span class=\"token string\">&#039;bold&#039;<\/span><span class=\"token punctuation\">,<\/span> pad<span class=\"token operator\">&#061;<\/span><span class=\"token number\">20<\/span><span class=\"token punctuation\">)<\/span><br \/>\n    ax<span class=\"token punctuation\">.<\/span>legend<span class=\"token punctuation\">(<\/span>loc<span class=\"token operator\">&#061;<\/span><span class=\"token string\">&#039;upper right&#039;<\/span><span class=\"token punctuation\">,<\/span> bbox_to_anchor<span class=\"token operator\">&#061;<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">1.35<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">1.1<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">,<\/span> fontsize<span class=\"token operator\">&#061;<\/span><span class=\"token number\">10<\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p>    plt<span class=\"token punctuation\">.<\/span>tight_layout<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><br \/>\n    plt<span class=\"token punctuation\">.<\/span>savefig<span class=\"token punctuation\">(<\/span>save_path<span class=\"token punctuation\">,<\/span> dpi<span class=\"token operator\">&#061;<\/span><span class=\"token number\">150<\/span><span class=\"token punctuation\">,<\/span> bbox_inches<span class=\"token operator\">&#061;<\/span><span class=\"token string\">&#039;tight&#039;<\/span><span class=\"token punctuation\">)<\/span><br \/>\n    <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string-interpolation\"><span class=\"token string\">f&#034;\u96f7\u8fbe\u56fe\u5df2\u4fdd\u5b58: <\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>save_path<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">&#034;<\/span><\/span><span class=\"token punctuation\">)<\/span><br \/>\n    plt<span class=\"token punctuation\">.<\/span>show<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p><span class=\"token keyword\">def<\/span> <span class=\"token function\">plot_pareto_frontier<\/span><span class=\"token punctuation\">(<\/span><br \/>\n    accuracy_data<span class=\"token punctuation\">:<\/span> <span class=\"token builtin\">dict<\/span><span class=\"token punctuation\">,<\/span><br \/>\n    speed_data<span class=\"token punctuation\">:<\/span> <span class=\"token builtin\">dict<\/span><span class=\"token punctuation\">,<\/span><br \/>\n    save_path<span class=\"token punctuation\">:<\/span> <span class=\"token builtin\">str<\/span> <span class=\"token operator\">&#061;<\/span> <span class=\"token string\">&#034;pareto_frontier.png&#034;<\/span><br \/>\n<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n    <span class=\"token triple-quoted-string string\">&#034;&#034;&#034;<br \/>\n    \u7ed8\u5236\u7cbe\u5ea6-\u901f\u5ea6\u5e15\u7d2f\u6258\u524d\u6cbf\u56fe<br \/>\n    \u5e15\u7d2f\u6258\u524d\u6cbf&#xff1a;\u5728\u901f\u5ea6&#xff08;FPS&#xff09;\u76f8\u540c\u65f6&#xff0c;\u7cbe\u5ea6\u6700\u9ad8\u7684\u70b9\u7684\u96c6\u5408<\/p>\n<p>    \u8fd9\u662f\u5de5\u7a0b\u51b3\u7b56\u4e2d\u6700\u76f4\u89c2\u7684\u5bf9\u6bd4\u65b9\u5f0f&#xff1a;<br \/>\n    \u5e15\u7d2f\u6258\u524d\u6cbf\u4e0a\u7684\u70b9\u8868\u793a&#034;\u65e0\u6cd5\u5728\u4e0d\u727a\u7272\u67d0\u4e00\u7ef4\u5ea6\u7684\u60c5\u51b5\u4e0b\u6539\u5584\u53e6\u4e00\u7ef4\u5ea6&#034;<br \/>\n    &#034;&#034;&#034;<\/span><br \/>\n    models <span class=\"token operator\">&#061;<\/span> <span class=\"token builtin\">list<\/span><span class=\"token punctuation\">(<\/span>accuracy_data<span class=\"token punctuation\">.<\/span>keys<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><br \/>\n    map_values <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">[<\/span>accuracy_data<span class=\"token punctuation\">[<\/span>m<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;mAP50_95&#034;<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token keyword\">for<\/span> m <span class=\"token keyword\">in<\/span> models<span class=\"token punctuation\">]<\/span><br \/>\n    fps_values <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">[<\/span>speed_data<span class=\"token punctuation\">.<\/span>get<span class=\"token punctuation\">(<\/span>m<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>get<span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;fps&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token keyword\">for<\/span> m <span class=\"token keyword\">in<\/span> models<span class=\"token punctuation\">]<\/span><\/p>\n<p>    <span class=\"token comment\"># \u8ba1\u7b97\u5e15\u7d2f\u6258\u524d\u6cbf<\/span><br \/>\n    <span class=\"token keyword\">def<\/span> <span class=\"token function\">is_pareto_optimal<\/span><span class=\"token punctuation\">(<\/span>costs<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n        <span class=\"token triple-quoted-string string\">&#034;&#034;&#034;<br \/>\n        \u627e\u51fa\u5e15\u7d2f\u6258\u6700\u4f18\u70b9<br \/>\n        costs: (n_points, n_objectives) \u6570\u7ec4&#xff0c;\u5047\u8bbe\u8d8a\u5927\u8d8a\u597d<br \/>\n        \u8fd4\u56de\u5e03\u5c14\u6570\u7ec4&#xff0c;True \u8868\u793a\u8be5\u70b9\u5728\u5e15\u7d2f\u6258\u524d\u6cbf\u4e0a<br \/>\n        &#034;&#034;&#034;<\/span><br \/>\n        is_efficient <span class=\"token operator\">&#061;<\/span> np<span class=\"token punctuation\">.<\/span>ones<span class=\"token punctuation\">(<\/span><span class=\"token builtin\">len<\/span><span class=\"token punctuation\">(<\/span>costs<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">,<\/span> dtype<span class=\"token operator\">&#061;<\/span><span class=\"token builtin\">bool<\/span><span class=\"token punctuation\">)<\/span><br \/>\n        <span class=\"token keyword\">for<\/span> i<span class=\"token punctuation\">,<\/span> c <span class=\"token keyword\">in<\/span> <span class=\"token builtin\">enumerate<\/span><span class=\"token punctuation\">(<\/span>costs<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n            <span class=\"token keyword\">if<\/span> is_efficient<span class=\"token punctuation\">[<\/span>i<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">:<\/span><br \/>\n                <span class=\"token comment\"># \u5982\u679c\u6709\u5176\u4ed6\u70b9\u5728\u6240\u6709\u7ef4\u5ea6\u4e0a\u90fd\u4e0d\u5dee\u4e8e\u5f53\u524d\u70b9\u4e14\u81f3\u5c11\u4e00\u4e2a\u7ef4\u5ea6\u66f4\u597d&#xff0c;\u5219\u5f53\u524d\u70b9\u4e0d\u662f\u5e15\u7d2f\u6258\u6700\u4f18<\/span><br \/>\n                is_efficient<span class=\"token punctuation\">[<\/span>is_efficient<span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&#061;<\/span> np<span class=\"token punctuation\">.<\/span><span class=\"token builtin\">any<\/span><span class=\"token punctuation\">(<\/span><br \/>\n                    costs<span class=\"token punctuation\">[<\/span>is_efficient<span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&gt;<\/span> c<span class=\"token punctuation\">,<\/span> axis<span class=\"token operator\">&#061;<\/span><span class=\"token number\">1<\/span><br \/>\n                <span class=\"token punctuation\">)<\/span><br \/>\n                is_efficient<span class=\"token punctuation\">[<\/span>i<span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&#061;<\/span> <span class=\"token boolean\">True<\/span><br \/>\n        <span class=\"token keyword\">return<\/span> is_efficient<\/p>\n<p>    costs_array <span class=\"token operator\">&#061;<\/span> np<span class=\"token punctuation\">.<\/span>array<span class=\"token punctuation\">(<\/span><span class=\"token builtin\">list<\/span><span class=\"token punctuation\">(<\/span><span class=\"token builtin\">zip<\/span><span class=\"token punctuation\">(<\/span>fps_values<span class=\"token punctuation\">,<\/span> map_values<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><br \/>\n    pareto_mask <span class=\"token operator\">&#061;<\/span> is_pareto_optimal<span class=\"token punctuation\">(<\/span>costs_array<span class=\"token punctuation\">)<\/span><\/p>\n<p>    fig<span class=\"token punctuation\">,<\/span> ax <span class=\"token operator\">&#061;<\/span> plt<span class=\"token punctuation\">.<\/span>subplots<span class=\"token punctuation\">(<\/span>figsize<span class=\"token operator\">&#061;<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">12<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">8<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p>    colors_scatter <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">[<\/span><span class=\"token string\">&#039;#1E88E5&#039;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#039;#43A047&#039;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#039;#FB8C00&#039;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#039;#E53935&#039;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#039;#8E24AA&#039;<\/span><span class=\"token punctuation\">]<\/span><\/p>\n<p>    <span class=\"token keyword\">for<\/span> i<span class=\"token punctuation\">,<\/span> model <span class=\"token keyword\">in<\/span> <span class=\"token builtin\">enumerate<\/span><span class=\"token punctuation\">(<\/span>models<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n        marker <span class=\"token operator\">&#061;<\/span> <span class=\"token string\">&#039;*&#039;<\/span> <span class=\"token keyword\">if<\/span> pareto_mask<span class=\"token punctuation\">[<\/span>i<span class=\"token punctuation\">]<\/span> <span class=\"token keyword\">else<\/span> <span class=\"token string\">&#039;o&#039;<\/span><br \/>\n        size <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">300<\/span> <span class=\"token keyword\">if<\/span> pareto_mask<span class=\"token punctuation\">[<\/span>i<span class=\"token punctuation\">]<\/span> <span class=\"token keyword\">else<\/span> <span class=\"token number\">120<\/span><br \/>\n        ax<span class=\"token punctuation\">.<\/span>scatter<span class=\"token punctuation\">(<\/span>fps_values<span class=\"token punctuation\">[<\/span>i<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">,<\/span> map_values<span class=\"token punctuation\">[<\/span>i<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">,<\/span><br \/>\n                  c<span class=\"token operator\">&#061;<\/span>colors_scatter<span class=\"token punctuation\">[<\/span>i<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">,<\/span> s<span class=\"token operator\">&#061;<\/span>size<span class=\"token punctuation\">,<\/span> marker<span class=\"token operator\">&#061;<\/span>marker<span class=\"token punctuation\">,<\/span><br \/>\n                  label<span class=\"token operator\">&#061;<\/span>model<span class=\"token punctuation\">,<\/span> zorder<span class=\"token operator\">&#061;<\/span><span class=\"token number\">5<\/span><span class=\"token punctuation\">,<\/span> edgecolors<span class=\"token operator\">&#061;<\/span><span class=\"token string\">&#039;black&#039;<\/span><span class=\"token punctuation\">,<\/span> linewidth<span class=\"token operator\">&#061;<\/span><span class=\"token number\">1.5<\/span><span class=\"token punctuation\">)<\/span><br \/>\n        ax<span class=\"token punctuation\">.<\/span>annotate<span class=\"token punctuation\">(<\/span>model<span class=\"token punctuation\">,<\/span> <span class=\"token punctuation\">(<\/span>fps_values<span class=\"token punctuation\">[<\/span>i<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">,<\/span> map_values<span class=\"token punctuation\">[<\/span>i<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">,<\/span><br \/>\n                   textcoords<span class=\"token operator\">&#061;<\/span><span class=\"token string\">&#034;offset points&#034;<\/span><span class=\"token punctuation\">,<\/span> xytext<span class=\"token operator\">&#061;<\/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><br \/>\n                   fontsize<span class=\"token operator\">&#061;<\/span><span class=\"token number\">9<\/span><span class=\"token punctuation\">,<\/span> fontweight<span class=\"token operator\">&#061;<\/span><span class=\"token string\">&#039;bold&#039;<\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p>    <span class=\"token comment\"># \u7ed8\u5236\u5e15\u7d2f\u6258\u524d\u6cbf\u8fde\u7ebf<\/span><br \/>\n    pareto_points <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">(<\/span>fps_values<span class=\"token punctuation\">[<\/span>i<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">,<\/span> map_values<span class=\"token punctuation\">[<\/span>i<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token keyword\">for<\/span> i <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>models<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token keyword\">if<\/span> pareto_mask<span class=\"token punctuation\">[<\/span>i<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">]<\/span><br \/>\n    pareto_points<span class=\"token punctuation\">.<\/span>sort<span class=\"token punctuation\">(<\/span>key<span class=\"token operator\">&#061;<\/span><span class=\"token keyword\">lambda<\/span> x<span class=\"token punctuation\">:<\/span> x<span class=\"token punctuation\">[<\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">)<\/span><br \/>\n    <span class=\"token keyword\">if<\/span> <span class=\"token builtin\">len<\/span><span class=\"token punctuation\">(<\/span>pareto_points<span class=\"token punctuation\">)<\/span> <span class=\"token operator\">&gt;<\/span> <span class=\"token number\">1<\/span><span class=\"token punctuation\">:<\/span><br \/>\n        px<span class=\"token punctuation\">,<\/span> py <span class=\"token operator\">&#061;<\/span> <span class=\"token builtin\">zip<\/span><span class=\"token punctuation\">(<\/span><span class=\"token operator\">*<\/span>pareto_points<span class=\"token punctuation\">)<\/span><br \/>\n        ax<span class=\"token punctuation\">.<\/span>plot<span class=\"token punctuation\">(<\/span>px<span class=\"token punctuation\">,<\/span> py<span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#039;k&#8211;&#039;<\/span><span class=\"token punctuation\">,<\/span> alpha<span class=\"token operator\">&#061;<\/span><span class=\"token number\">0.4<\/span><span class=\"token punctuation\">,<\/span> linewidth<span class=\"token operator\">&#061;<\/span><span class=\"token number\">1.5<\/span><span class=\"token punctuation\">,<\/span> label<span class=\"token operator\">&#061;<\/span><span class=\"token string\">&#039;Pareto Frontier&#039;<\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p>    ax<span class=\"token punctuation\">.<\/span>set_xlabel<span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;Inference Speed (FPS) \u2014 Higher is Better&#034;<\/span><span class=\"token punctuation\">,<\/span> fontsize<span class=\"token operator\">&#061;<\/span><span class=\"token number\">12<\/span><span class=\"token punctuation\">)<\/span><br \/>\n    ax<span class=\"token punctuation\">.<\/span>set_ylabel<span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;mAP&#064;0.5:0.95 \u2014 Higher is Better&#034;<\/span><span class=\"token punctuation\">,<\/span> fontsize<span class=\"token operator\">&#061;<\/span><span class=\"token number\">12<\/span><span class=\"token punctuation\">)<\/span><br \/>\n    ax<span class=\"token punctuation\">.<\/span>set_title<span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;YOLOv12 Accuracy-Speed Pareto Frontier\\\\n(\u2605 &#061; Pareto Optimal, batch&#061;1, A100 GPU)&#034;<\/span><span class=\"token punctuation\">,<\/span><br \/>\n                fontsize<span class=\"token operator\">&#061;<\/span><span class=\"token number\">13<\/span><span class=\"token punctuation\">,<\/span> fontweight<span class=\"token operator\">&#061;<\/span><span class=\"token string\">&#039;bold&#039;<\/span><span class=\"token punctuation\">)<\/span><br \/>\n    ax<span class=\"token punctuation\">.<\/span>legend<span class=\"token punctuation\">(<\/span>fontsize<span class=\"token operator\">&#061;<\/span><span class=\"token number\">10<\/span><span class=\"token punctuation\">)<\/span><br \/>\n    ax<span class=\"token punctuation\">.<\/span>grid<span class=\"token punctuation\">(<\/span><span class=\"token boolean\">True<\/span><span class=\"token punctuation\">,<\/span> alpha<span class=\"token operator\">&#061;<\/span><span class=\"token number\">0.3<\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p>    <span class=\"token comment\"># \u6dfb\u52a0\u8c61\u9650\u6ce8\u91ca<\/span><br \/>\n    ax<span class=\"token punctuation\">.<\/span>annotate<span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;Best Balance Zone&#034;<\/span><span class=\"token punctuation\">,<\/span> xy<span class=\"token operator\">&#061;<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">0.65<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">0.92<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">,<\/span> xycoords<span class=\"token operator\">&#061;<\/span><span class=\"token string\">&#039;axes fraction&#039;<\/span><span class=\"token punctuation\">,<\/span><br \/>\n                fontsize<span class=\"token operator\">&#061;<\/span><span class=\"token number\">10<\/span><span class=\"token punctuation\">,<\/span> color<span class=\"token operator\">&#061;<\/span><span class=\"token string\">&#039;gray&#039;<\/span><span class=\"token punctuation\">,<\/span> style<span class=\"token operator\">&#061;<\/span><span class=\"token string\">&#039;italic&#039;<\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p>    plt<span class=\"token punctuation\">.<\/span>tight_layout<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><br \/>\n    plt<span class=\"token punctuation\">.<\/span>savefig<span class=\"token punctuation\">(<\/span>save_path<span class=\"token punctuation\">,<\/span> dpi<span class=\"token operator\">&#061;<\/span><span class=\"token number\">150<\/span><span class=\"token punctuation\">,<\/span> bbox_inches<span class=\"token operator\">&#061;<\/span><span class=\"token string\">&#039;tight&#039;<\/span><span class=\"token punctuation\">)<\/span><br \/>\n    <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string-interpolation\"><span class=\"token string\">f&#034;\u5e15\u7d2f\u6258\u524d\u6cbf\u56fe\u5df2\u4fdd\u5b58: <\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>save_path<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">&#034;<\/span><\/span><span class=\"token punctuation\">)<\/span><br \/>\n    plt<span class=\"token punctuation\">.<\/span>show<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p><span class=\"token comment\"># \u8fd0\u884c\u793a\u4f8b<\/span><br \/>\nplot_radar_chart<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">{<\/span><span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span>  <span class=\"token comment\"># \u51fd\u6570\u5185\u5df2\u5305\u542b\u793a\u4f8b\u6570\u636e<\/span><\/p>\n<p>example_map_data <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n    <span class=\"token string\">&#034;YOLOv12n&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token punctuation\">{<\/span><span class=\"token string\">&#034;mAP50_95&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token number\">0.404<\/span><span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span><br \/>\n    <span class=\"token string\">&#034;YOLOv12s&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token punctuation\">{<\/span><span class=\"token string\">&#034;mAP50_95&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token number\">0.481<\/span><span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span><br \/>\n    <span class=\"token string\">&#034;YOLOv12m&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token punctuation\">{<\/span><span class=\"token string\">&#034;mAP50_95&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token number\">0.503<\/span><span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span><br \/>\n    <span class=\"token string\">&#034;YOLOv12l&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token punctuation\">{<\/span><span class=\"token string\">&#034;mAP50_95&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token number\">0.516<\/span><span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span><br \/>\n    <span class=\"token string\">&#034;YOLOv12x&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token punctuation\">{<\/span><span class=\"token string\">&#034;mAP50_95&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token number\">0.529<\/span><span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span><br \/>\n<span class=\"token punctuation\">}<\/span><\/p>\n<p>example_fps_data <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n    <span class=\"token string\">&#034;YOLOv12n&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token punctuation\">{<\/span><span class=\"token string\">&#034;fps&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token number\">192<\/span><span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span><br \/>\n    <span class=\"token string\">&#034;YOLOv12s&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token punctuation\">{<\/span><span class=\"token string\">&#034;fps&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token number\">116<\/span><span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span><br \/>\n    <span class=\"token string\">&#034;YOLOv12m&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token punctuation\">{<\/span><span class=\"token string\">&#034;fps&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token number\">70<\/span><span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span><br \/>\n    <span class=\"token string\">&#034;YOLOv12l&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token punctuation\">{<\/span><span class=\"token string\">&#034;fps&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token number\">50<\/span><span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span><br \/>\n    <span class=\"token string\">&#034;YOLOv12x&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token punctuation\">{<\/span><span class=\"token string\">&#034;fps&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token number\">28<\/span><span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span><br \/>\n<span class=\"token punctuation\">}<\/span><\/p>\n<p>plot_pareto_frontier<span class=\"token punctuation\">(<\/span>example_map_data<span class=\"token punctuation\">,<\/span> example_fps_data<span class=\"token punctuation\">)<\/span><\/p>\n<h4>\u5341\u4e00\u3001\u7b2c\u4e5d\u677f\u5757&#xff1a;\u7ed3\u8bba\u4e0e\u5efa\u8bae<\/h4>\n<p>\u7ed3\u8bba\u4e0e\u5efa\u8bae\u662f\u6574\u4e2a\u62a5\u544a\u7684&#034;\u843d\u5730&#034;\u90e8\u5206\u3002\u5b83\u7684\u53d7\u4f17\u5f80\u5f80\u4e0d\u662f\u5199\u62a5\u544a\u7684\u5de5\u7a0b\u5e08\u81ea\u5df1&#xff0c;\u800c\u662f\u9700\u8981\u505a\u51b3\u7b56\u7684\u6280\u672f\u8d1f\u8d23\u4eba\u3001\u4ea7\u54c1\u7ecf\u7406&#xff0c;\u751a\u81f3\u5ba2\u6237\u3002<\/p>\n<p>\u597d\u7684\u7ed3\u8bba\u6709\u51e0\u4e2a\u7279\u70b9&#xff1a;<\/p>\n<p>\u5177\u4f53&#xff1a;\u4e0d\u662f&#034;YOLOv12n \u901f\u5ea6\u5f88\u5feb&#034;&#xff0c;\u800c\u662f&#034;YOLOv12n \u5728 A100 TensorRT FP16 \u4e0b\u7684\u5355\u5e27\u63a8\u7406\u5ef6\u8fdf\u4e3a 1.8ms&#xff0c;\u53ef\u652f\u6301 555fps \u7684\u5b9e\u65f6\u541e\u5410\u91cf&#xff0c;\u6ee1\u8db3\u9ad8\u6e05\u6444\u50cf\u5934 30fps \u5b9e\u65f6\u68c0\u6d4b\u9700\u6c42\u5e76\u6709\u5145\u8db3\u4f59\u91cf\u3002&#034;<\/p>\n<p>\u6709\u6761\u4ef6&#xff1a;\u7ed3\u8bba\u6c38\u8fdc\u662f&#034;\u5728 X \u6761\u4ef6\u4e0b&#xff0c;Y \u662f\u6700\u4f18\u9009\u62e9&#034;&#xff0c;\u800c\u4e0d\u662f\u65e0\u6761\u4ef6\u7684&#034;Y \u6700\u597d&#034;\u3002<\/p>\n<p>\u53ef\u64cd\u4f5c&#xff1a;\u7ed9\u51fa\u4e0b\u4e00\u6b65\u884c\u52a8\u5efa\u8bae&#xff0c;\u6bd4\u5982&#034;\u5efa\u8bae\u5728 RTX 3080 \u4e0a\u8fdb\u884c INT8 \u91cf\u5316\u6d4b\u8bd5\u4ee5\u8fdb\u4e00\u6b65\u9a8c\u8bc1\u8fb9\u7f18\u7aef\u53ef\u884c\u6027&#034;\u3002<\/p>\n<p>\u6709\u98ce\u9669\u63d0\u793a&#xff1a;\u6ca1\u6709\u5b8c\u7f8e\u7684\u6a21\u578b&#xff0c;\u8981\u8bda\u5b9e\u5730\u6307\u51fa\u5c40\u9650\u6027&#xff0c;\u6bd4\u5982&#034;YOLOv12n \u5728\u5c0f\u76ee\u6807&#xff08;\u9762\u79ef &lt; 32\u00d732 \u50cf\u7d20&#xff09;\u4e0a\u7684\u68c0\u6d4b\u7387\u8f83\u4f4e&#xff0c;\u5982\u679c\u573a\u666f\u4e2d\u5c0f\u76ee\u6807\u5360\u6bd4\u9ad8&#xff0c;\u5efa\u8bae\u63d0\u9ad8\u8f93\u5165\u5206\u8fa8\u7387\u6216\u8003\u8651 YOLOv12s\u3002&#034;<\/p>\n<p><span class=\"token keyword\">def<\/span> <span class=\"token function\">generate_conclusion_template<\/span><span class=\"token punctuation\">(<\/span><br \/>\n    scenario<span class=\"token punctuation\">:<\/span> <span class=\"token builtin\">str<\/span><span class=\"token punctuation\">,<\/span><br \/>\n    recommended_model<span class=\"token punctuation\">:<\/span> <span class=\"token builtin\">str<\/span><span class=\"token punctuation\">,<\/span><br \/>\n    recommended_format<span class=\"token punctuation\">:<\/span> <span class=\"token builtin\">str<\/span><span class=\"token punctuation\">,<\/span><br \/>\n    key_metrics<span class=\"token punctuation\">:<\/span> <span class=\"token builtin\">dict<\/span><span class=\"token punctuation\">,<\/span><br \/>\n    limitations<span class=\"token punctuation\">:<\/span> <span class=\"token builtin\">list<\/span><span class=\"token punctuation\">,<\/span><br \/>\n    next_steps<span class=\"token punctuation\">:<\/span> <span class=\"token builtin\">list<\/span><span class=\"token punctuation\">,<\/span><br \/>\n<span class=\"token punctuation\">)<\/span> <span class=\"token operator\">&#8211;<\/span><span class=\"token operator\">&gt;<\/span> <span class=\"token builtin\">str<\/span><span class=\"token punctuation\">:<\/span><br \/>\n    <span class=\"token triple-quoted-string string\">&#034;&#034;&#034;<br \/>\n    \u751f\u6210\u7ed3\u8bba\u4e0e\u5efa\u8bae\u6a21\u677f\u6587\u672c<br \/>\n    \u8fd9\u662f\u62a5\u544a\u4e2d\u6700\u91cd\u8981\u7684&#034;\u4eba\u8bdd&#034;\u90e8\u5206&#xff0c;\u5e2e\u52a9\u51b3\u7b56\u8005\u5feb\u901f\u6293\u4f4f\u8981\u70b9<\/p>\n<p>    Args:<br \/>\n        scenario: \u5e94\u7528\u573a\u666f\u63cf\u8ff0<br \/>\n        recommended_model: \u63a8\u8350\u7684\u6a21\u578b\u89c4\u683c<br \/>\n        recommended_format: \u63a8\u8350\u7684\u90e8\u7f72\u683c\u5f0f<br \/>\n        key_metrics: \u5173\u952e\u6307\u6807\u5b57\u5178<br \/>\n        limitations: \u5c40\u9650\u6027\u5217\u8868<br \/>\n        next_steps: \u4e0b\u4e00\u6b65\u5efa\u8bae\u5217\u8868<\/p>\n<p>    Returns:<br \/>\n        \u683c\u5f0f\u5316\u7684\u7ed3\u8bba\u6587\u672c<br \/>\n    &#034;&#034;&#034;<\/span><\/p>\n<p>    conclusion <span class=\"token operator\">&#061;<\/span> <span class=\"token string-interpolation\"><span class=\"token string\">f&#034;&#034;&#034;<br \/>\n# \u7ed3\u8bba\u4e0e\u5efa\u8bae<\/p>\n<p>## \u5e94\u7528\u573a\u666f<br \/>\n<\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>scenario<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\"><\/p>\n<p>## \u63a8\u8350\u65b9\u6848<br \/>\n**\u63a8\u8350\u6a21\u578b**&#xff1a;<\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>recommended_model<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\"><br \/>\n**\u63a8\u8350\u683c\u5f0f**&#xff1a;<\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>recommended_format<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\"><\/p>\n<p>## \u5173\u952e\u6307\u6807\u6458\u8981<br \/>\n| \u6307\u6807 | \u6570\u503c |<br \/>\n|&#8212;&#8212;|&#8212;&#8212;|<br \/>\n&#034;&#034;&#034;<\/span><\/span><br \/>\n    <span class=\"token keyword\">for<\/span> metric<span class=\"token punctuation\">,<\/span> value <span class=\"token keyword\">in<\/span> key_metrics<span class=\"token punctuation\">.<\/span>items<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n        conclusion <span class=\"token operator\">&#043;&#061;<\/span> <span class=\"token string-interpolation\"><span class=\"token string\">f&#034;| <\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>metric<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\"> | <\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>value<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\"> |\\\\n&#034;<\/span><\/span><\/p>\n<p>    conclusion <span class=\"token operator\">&#043;&#061;<\/span> <span class=\"token string\">&#034;\\\\n## \u63a8\u8350\u7406\u7531\\\\n&#034;<\/span><br \/>\n    conclusion <span class=\"token operator\">&#043;&#061;<\/span> <span class=\"token string-interpolation\"><span class=\"token string\">f&#034;\u5728\u672c\u6b21 Benchmark \u6d4b\u8bd5\u4e2d&#xff0c;<\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>recommended_model<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\"> \u5728\u7cbe\u5ea6-\u901f\u5ea6-\u8d44\u6e90\u4e09\u7ef4\u5ea6\u4e0a\u53d6\u5f97\u4e86\u6700\u4f73\u5e73\u8861&#xff1a;\\\\n&#034;<\/span><\/span><br \/>\n    conclusion <span class=\"token operator\">&#043;&#061;<\/span> <span class=\"token string-interpolation\"><span class=\"token string\">f&#034;- \u7cbe\u5ea6\u65b9\u9762&#xff0c;mAP&#064;0.5:0.95 \u8fbe\u5230 <\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>key_metrics<span class=\"token punctuation\">.<\/span>get<span class=\"token punctuation\">(<\/span><span class=\"token string\">&#039;mAP&#064;0.5:0.95&#039;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#039;N\/A&#039;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">&#xff0c;\u6ee1\u8db3\u573a\u666f\u7cbe\u5ea6\u9700\u6c42\\\\n&#034;<\/span><\/span><br \/>\n    conclusion <span class=\"token operator\">&#043;&#061;<\/span> <span class=\"token string-interpolation\"><span class=\"token string\">f&#034;- \u901f\u5ea6\u65b9\u9762&#xff0c;\u5355\u5e27\u63a8\u7406\u5ef6\u8fdf <\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>key_metrics<span class=\"token punctuation\">.<\/span>get<span class=\"token punctuation\">(<\/span><span class=\"token string\">&#039;\u63a8\u7406\u5ef6\u8fdf&#039;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#039;N\/A&#039;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">&#xff0c;\u6ee1\u8db3\u5b9e\u65f6\u6027\u8981\u6c42\\\\n&#034;<\/span><\/span><br \/>\n    conclusion <span class=\"token operator\">&#043;&#061;<\/span> <span class=\"token string-interpolation\"><span class=\"token string\">f&#034;- \u8d44\u6e90\u65b9\u9762&#xff0c;\u663e\u5b58\u5360\u7528 <\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>key_metrics<span class=\"token punctuation\">.<\/span>get<span class=\"token punctuation\">(<\/span><span class=\"token string\">&#039;GPU\u663e\u5b58&#039;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#039;N\/A&#039;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">&#xff0c;\u5728\u76ee\u6807\u786c\u4ef6\u7ea6\u675f\u5185\\\\n&#034;<\/span><\/span><\/p>\n<p>    conclusion <span class=\"token operator\">&#043;&#061;<\/span> <span class=\"token string\">&#034;\\\\n## \u5c40\u9650\u6027\u4e0e\u6ce8\u610f\u4e8b\u9879\\\\n&#034;<\/span><br \/>\n    <span class=\"token keyword\">for<\/span> i<span class=\"token punctuation\">,<\/span> limitation <span class=\"token keyword\">in<\/span> <span class=\"token builtin\">enumerate<\/span><span class=\"token punctuation\">(<\/span>limitations<span class=\"token punctuation\">,<\/span> <span class=\"token number\">1<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n        conclusion <span class=\"token operator\">&#043;&#061;<\/span> <span class=\"token string-interpolation\"><span class=\"token string\">f&#034;<\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>i<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">. <\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>limitation<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">\\\\n&#034;<\/span><\/span><\/p>\n<p>    conclusion <span class=\"token operator\">&#043;&#061;<\/span> <span class=\"token string\">&#034;\\\\n## \u4e0b\u4e00\u6b65\u884c\u52a8\u5efa\u8bae\\\\n&#034;<\/span><br \/>\n    <span class=\"token keyword\">for<\/span> i<span class=\"token punctuation\">,<\/span> step <span class=\"token keyword\">in<\/span> <span class=\"token builtin\">enumerate<\/span><span class=\"token punctuation\">(<\/span>next_steps<span class=\"token punctuation\">,<\/span> <span class=\"token number\">1<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n        conclusion <span class=\"token operator\">&#043;&#061;<\/span> <span class=\"token string-interpolation\"><span class=\"token string\">f&#034;<\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>i<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">. <\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>step<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">\\\\n&#034;<\/span><\/span><\/p>\n<p>    <span class=\"token keyword\">return<\/span> conclusion<\/p>\n<p><span class=\"token comment\"># \u751f\u6210\u793a\u4f8b\u7ed3\u8bba<\/span><br \/>\nexample_conclusion <span class=\"token operator\">&#061;<\/span> generate_conclusion_template<span class=\"token punctuation\">(<\/span><br \/>\n    scenario<span class=\"token operator\">&#061;<\/span><span class=\"token string\">&#034;\u57ce\u5e02\u9053\u8def\u884c\u4eba\u8f66\u8f86\u68c0\u6d4b&#xff0c;\u8981\u6c42\u5b9e\u65f6\u5904\u7406 1080P \u89c6\u9891\u6d41&#xff08;30fps&#xff09;&#xff0c;\u90e8\u7f72\u786c\u4ef6\u4e3a Jetson Orin NX 8GB&#034;<\/span><span class=\"token punctuation\">,<\/span><br \/>\n    recommended_model<span class=\"token operator\">&#061;<\/span><span class=\"token string\">&#034;YOLOv12s&#034;<\/span><span class=\"token punctuation\">,<\/span><br \/>\n    recommended_format<span class=\"token operator\">&#061;<\/span><span class=\"token string\">&#034;TensorRT FP16 (.engine)&#034;<\/span><span class=\"token punctuation\">,<\/span><br \/>\n    key_metrics<span class=\"token operator\">&#061;<\/span><span class=\"token punctuation\">{<\/span><br \/>\n        <span class=\"token string\">&#034;mAP&#064;0.5:0.95&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">&#034;0.481&#034;<\/span><span class=\"token punctuation\">,<\/span><br \/>\n        <span class=\"token string\">&#034;\u63a8\u7406\u5ef6\u8fdf&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">&#034;3.1ms&#034;<\/span><span class=\"token punctuation\">,<\/span><br \/>\n        <span class=\"token string\">&#034;FPS&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">&#034;323&#034;<\/span><span class=\"token punctuation\">,<\/span><br \/>\n        <span class=\"token string\">&#034;GPU\u663e\u5b58&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">&#034;412MB&#034;<\/span><span class=\"token punctuation\">,<\/span><br \/>\n        <span class=\"token string\">&#034;\u6a21\u578b\u6587\u4ef6\u5927\u5c0f&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">&#034;18.9MB&#034;<\/span><span class=\"token punctuation\">,<\/span><br \/>\n    <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span><br \/>\n    limitations<span class=\"token operator\">&#061;<\/span><span class=\"token punctuation\">[<\/span><br \/>\n        <span class=\"token string\">&#034;YOLOv12s \u5728\u591c\u95f4\u4f4e\u5149\u7167\u573a\u666f\u4e0b\u7cbe\u5ea6\u6709\u4e00\u5b9a\u4e0b\u964d&#xff0c;\u5efa\u8bae\u989d\u5916\u6536\u96c6\u591c\u95f4\u6570\u636e\u8fdb\u884c\u5fae\u8c03&#034;<\/span><span class=\"token punctuation\">,<\/span><br \/>\n        <span class=\"token string\">&#034;\u5f53\u524d\u6d4b\u8bd5\u57fa\u4e8e COCO \u6570\u636e\u96c6&#xff0c;\u8fc1\u79fb\u5230\u7279\u5b9a\u9053\u8def\u573a\u666f\u53ef\u80fd\u9700\u8981 domain adaptation&#034;<\/span><span class=\"token punctuation\">,<\/span><br \/>\n        <span class=\"token string\">&#034;TensorRT \u5f15\u64ce\u6587\u4ef6\u4e0e\u5177\u4f53 GPU \u548c TensorRT \u7248\u672c\u7ed1\u5b9a&#xff0c;\u6362\u786c\u4ef6\u9700\u91cd\u65b0\u5bfc\u51fa&#034;<\/span><span class=\"token punctuation\">,<\/span><br \/>\n        <span class=\"token string\">&#034;INT8 \u91cf\u5316\u6548\u679c\u672a\u7ecf\u9a8c\u8bc1&#xff0c;\u5982\u9700\u8fdb\u4e00\u6b65\u63d0\u901f\u5e94\u5355\u72ec\u6d4b\u8bd5\u7cbe\u5ea6\u635f\u5931&#034;<\/span><span class=\"token punctuation\">,<\/span><br \/>\n    <span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">,<\/span><br \/>\n    next_steps<span class=\"token operator\">&#061;<\/span><span class=\"token punctuation\">[<\/span><br \/>\n        <span class=\"token string\">&#034;\u5728 Jetson Orin NX 8GB \u76ee\u6807\u786c\u4ef6\u4e0a\u590d\u73b0\u672c Benchmark&#xff08;\u672c\u6b21\u5728 A100 \u4e0a\u6d4b\u8bd5&#xff09;&#034;<\/span><span class=\"token punctuation\">,<\/span><br \/>\n        <span class=\"token string\">&#034;\u91c7\u96c6200&#043;\u5f20\u771f\u5b9e\u9053\u8def\u573a\u666f\u56fe\u50cf&#xff0c;\u8bc4\u4f30\u6a21\u578b\u5728 domain shift \u4e0b\u7684\u7cbe\u5ea6\u8868\u73b0&#034;<\/span><span class=\"token punctuation\">,<\/span><br \/>\n        <span class=\"token string\">&#034;\u5982\u7cbe\u5ea6\u4e0d\u8db3&#xff0c;\u8003\u8651\u5728\u76ee\u6807\u573a\u666f\u6570\u636e\u4e0a\u8fdb\u884c 50 epoch \u7684\u5fae\u8c03&#xff08;fine-tuning&#xff09;&#034;<\/span><span class=\"token punctuation\">,<\/span><br \/>\n        <span class=\"token string\">&#034;\u8bc4\u4f30 INT8 \u91cf\u5316\u65b9\u6848&#xff0c;\u82e5\u7cbe\u5ea6\u635f\u5931\u5728 1% mAP \u4ee5\u5185&#xff0c;\u53ef\u8fdb\u4e00\u6b65\u964d\u4f4e\u63a8\u7406\u5ef6\u8fdf&#034;<\/span><span class=\"token punctuation\">,<\/span><br \/>\n        <span class=\"token string\">&#034;\u5b8c\u6210\u90e8\u7f72\u540e\u8bbe\u7f6e\u76d1\u63a7\u544a\u8b66&#xff1a;\u5ef6\u8fdf\u8d85\u8fc7 5ms \u6216 GPU \u6e29\u5ea6\u8d85\u8fc7 80\u00b0C \u65f6\u544a\u8b66&#034;<\/span><span class=\"token punctuation\">,<\/span><br \/>\n    <span class=\"token punctuation\">]<\/span><br \/>\n<span class=\"token punctuation\">)<\/span><\/p>\n<p><span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>example_conclusion<span class=\"token punctuation\">)<\/span><\/p>\n<h4>\u5341\u4e8c\u3001\u7b2c\u5341\u677f\u5757&#xff1a;\u5b8c\u6574\u81ea\u52a8\u5316 Benchmark \u6d41\u6c34\u7ebf<\/h4>\n<p>\u524d\u9762\u7684\u5404\u4e2a\u677f\u5757\u76f8\u5bf9\u72ec\u7acb&#xff0c;\u771f\u6b63\u5de5\u7a0b\u5316\u7684\u505a\u6cd5\u662f\u628a\u5b83\u4eec\u4e32\u8054\u6210\u4e00\u6761\u81ea\u52a8\u5316\u6d41\u6c34\u7ebf&#xff0c;\u4e00\u952e\u8fd0\u884c&#xff0c;\u81ea\u52a8\u751f\u6210\u5b8c\u6574\u62a5\u544a\u3002<\/p>\n<p>\u76f8\u5173\u793a\u610f\u56fe\u7ed8\u5236\u5982\u4e0b&#xff0c;\u4ec5\u4f9b\u53c2\u8003&#xff1a;<\/p>\n<p> <img decoding=\"async\" src=\"https:\/\/www.wsisp.com\/helps\/wp-content\/uploads\/2026\/11\/20261101221007-6ae7b8bf99846.png\" \/> <\/p>\n<p><span class=\"token keyword\">import<\/span> yaml<br \/>\n<span class=\"token keyword\">import<\/span> json<br \/>\n<span class=\"token keyword\">import<\/span> time<br \/>\n<span class=\"token keyword\">import<\/span> pandas <span class=\"token keyword\">as<\/span> pd<br \/>\n<span class=\"token keyword\">import<\/span> numpy <span class=\"token keyword\">as<\/span> np<br \/>\n<span class=\"token keyword\">from<\/span> pathlib <span class=\"token keyword\">import<\/span> Path<br \/>\n<span class=\"token keyword\">from<\/span> datetime <span class=\"token keyword\">import<\/span> datetime<br \/>\n<span class=\"token keyword\">from<\/span> ultralytics <span class=\"token keyword\">import<\/span> YOLO<br \/>\n<span class=\"token keyword\">import<\/span> torch<\/p>\n<p><span class=\"token keyword\">class<\/span> <span class=\"token class-name\">YOLOv12BenchmarkPipeline<\/span><span class=\"token punctuation\">:<\/span><br \/>\n    <span class=\"token triple-quoted-string string\">&#034;&#034;&#034;<br \/>\n    YOLOv12 Benchmark \u5b8c\u6574\u81ea\u52a8\u5316\u6d41\u6c34\u7ebf<\/p>\n<p>    \u4f7f\u7528\u65b9\u6cd5&#xff1a;<br \/>\n        pipeline &#061; YOLOv12BenchmarkPipeline(config_path&#061;&#034;benchmark_config.yaml&#034;)<br \/>\n        pipeline.run()<\/p>\n<p>    \u751f\u6210\u4ea7\u7269&#xff1a;<br \/>\n        &#8211; benchmark_results\/<br \/>\n            \u251c\u2500\u2500 report.html           # \u4e3b\u62a5\u544a&#xff08;HTML \u683c\u5f0f&#xff09;<br \/>\n            \u251c\u2500\u2500 results.csv           # \u539f\u59cb\u7ed3\u679c\u6570\u636e<br \/>\n            \u251c\u2500\u2500 environment.json      # \u73af\u5883\u4fe1\u606f<br \/>\n            \u251c\u2500\u2500 accuracy_comparison.png<br \/>\n            \u251c\u2500\u2500 speed_comparison.png<br \/>\n            \u251c\u2500\u2500 resource_overview.png<br \/>\n            \u251c\u2500\u2500 radar_chart.png<br \/>\n            \u251c\u2500\u2500 pareto_frontier.png<br \/>\n            \u2514\u2500\u2500 reproduce.sh          # \u590d\u73b0\u811a\u672c<br \/>\n    &#034;&#034;&#034;<\/span><\/p>\n<p>    <span class=\"token keyword\">def<\/span> <span class=\"token function\">__init__<\/span><span class=\"token punctuation\">(<\/span>self<span class=\"token punctuation\">,<\/span> config_path<span class=\"token punctuation\">:<\/span> <span class=\"token builtin\">str<\/span> <span class=\"token operator\">&#061;<\/span> <span class=\"token boolean\">None<\/span><span class=\"token punctuation\">,<\/span> output_dir<span class=\"token punctuation\">:<\/span> <span class=\"token builtin\">str<\/span> <span class=\"token operator\">&#061;<\/span> <span class=\"token string\">&#034;benchmark_results&#034;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n        <span class=\"token triple-quoted-string string\">&#034;&#034;&#034;<br \/>\n        \u521d\u59cb\u5316\u6d41\u6c34\u7ebf<\/p>\n<p>        Args:<br \/>\n            config_path: \u914d\u7f6e\u6587\u4ef6\u8def\u5f84&#xff0c;\u4e3a None \u65f6\u4f7f\u7528\u9ed8\u8ba4\u914d\u7f6e<br \/>\n            output_dir: \u7ed3\u679c\u8f93\u51fa\u76ee\u5f55<br \/>\n        &#034;&#034;&#034;<\/span><br \/>\n        self<span class=\"token punctuation\">.<\/span>output_dir <span class=\"token operator\">&#061;<\/span> Path<span class=\"token punctuation\">(<\/span>output_dir<span class=\"token punctuation\">)<\/span><br \/>\n        self<span class=\"token punctuation\">.<\/span>output_dir<span class=\"token punctuation\">.<\/span>mkdir<span class=\"token punctuation\">(<\/span>parents<span class=\"token operator\">&#061;<\/span><span class=\"token boolean\">True<\/span><span class=\"token punctuation\">,<\/span> exist_ok<span class=\"token operator\">&#061;<\/span><span class=\"token boolean\">True<\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p>        <span class=\"token comment\"># \u52a0\u8f7d\u914d\u7f6e<\/span><br \/>\n        <span class=\"token keyword\">if<\/span> config_path <span class=\"token keyword\">and<\/span> Path<span class=\"token punctuation\">(<\/span>config_path<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">.<\/span>exists<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n            <span class=\"token keyword\">with<\/span> <span class=\"token builtin\">open<\/span><span class=\"token punctuation\">(<\/span>config_path<span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;r&#034;<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token keyword\">as<\/span> f<span class=\"token punctuation\">:<\/span><br \/>\n                self<span class=\"token punctuation\">.<\/span>config <span class=\"token operator\">&#061;<\/span> yaml<span class=\"token punctuation\">.<\/span>safe_load<span class=\"token punctuation\">(<\/span>f<span class=\"token punctuation\">)<\/span><br \/>\n        <span class=\"token keyword\">else<\/span><span class=\"token punctuation\">:<\/span><br \/>\n            <span class=\"token comment\"># \u9ed8\u8ba4\u914d\u7f6e<\/span><br \/>\n            self<span class=\"token punctuation\">.<\/span>config <span class=\"token operator\">&#061;<\/span> self<span class=\"token punctuation\">.<\/span>_default_config<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p>        <span class=\"token comment\"># \u7ed3\u679c\u5b58\u50a8<\/span><br \/>\n        self<span class=\"token punctuation\">.<\/span>results <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n            <span class=\"token string\">&#034;meta&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token punctuation\">{<\/span><span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span><br \/>\n            <span class=\"token string\">&#034;environment&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token punctuation\">{<\/span><span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span><br \/>\n            <span class=\"token string\">&#034;accuracy&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token punctuation\">{<\/span><span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span><br \/>\n            <span class=\"token string\">&#034;speed&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token punctuation\">{<\/span><span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span><br \/>\n            <span class=\"token string\">&#034;resources&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token punctuation\">{<\/span><span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span><br \/>\n        <span class=\"token punctuation\">}<\/span><\/p>\n<p>        <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string-interpolation\"><span class=\"token string\">f&#034;[Pipeline] \u521d\u59cb\u5316\u5b8c\u6210&#xff0c;\u7ed3\u679c\u5c06\u4fdd\u5b58\u81f3: <\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>self<span class=\"token punctuation\">.<\/span>output_dir<span class=\"token punctuation\">.<\/span>absolute<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">&#034;<\/span><\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p>    <span class=\"token keyword\">def<\/span> <span class=\"token function\">_default_config<\/span><span class=\"token punctuation\">(<\/span>self<span class=\"token punctuation\">)<\/span> <span class=\"token operator\">&#8211;<\/span><span class=\"token operator\">&gt;<\/span> <span class=\"token builtin\">dict<\/span><span class=\"token punctuation\">:<\/span><br \/>\n        <span class=\"token triple-quoted-string string\">&#034;&#034;&#034;\u8fd4\u56de\u9ed8\u8ba4\u6d4b\u8bd5\u914d\u7f6e&#034;&#034;&#034;<\/span><br \/>\n        <span class=\"token keyword\">return<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n            <span class=\"token string\">&#034;report&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n                <span class=\"token string\">&#034;title&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">&#034;YOLOv12 Benchmark Report&#034;<\/span><span class=\"token punctuation\">,<\/span><br \/>\n                <span class=\"token string\">&#034;author&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">&#034;Unknown&#034;<\/span><span class=\"token punctuation\">,<\/span><br \/>\n                <span class=\"token string\">&#034;purpose&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">&#034;\u6027\u80fd\u8bc4\u4f30&#034;<\/span><span class=\"token punctuation\">,<\/span><br \/>\n            <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span><br \/>\n            <span class=\"token string\">&#034;models&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token punctuation\">[<\/span><br \/>\n                <span class=\"token punctuation\">{<\/span><span class=\"token string\">&#034;path&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">&#034;yolov12n.pt&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;name&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">&#034;YOLOv12n&#034;<\/span><span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span><br \/>\n                <span class=\"token punctuation\">{<\/span><span class=\"token string\">&#034;path&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">&#034;yolov12s.pt&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;name&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">&#034;YOLOv12s&#034;<\/span><span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span><br \/>\n                <span class=\"token punctuation\">{<\/span><span class=\"token string\">&#034;path&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">&#034;yolov12m.pt&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;name&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">&#034;YOLOv12m&#034;<\/span><span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span><br \/>\n            <span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">,<\/span><br \/>\n            <span class=\"token string\">&#034;accuracy&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n                <span class=\"token string\">&#034;data&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">&#034;coco.yaml&#034;<\/span><span class=\"token punctuation\">,<\/span><br \/>\n                <span class=\"token string\">&#034;imgsz&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token number\">640<\/span><span class=\"token punctuation\">,<\/span><br \/>\n                <span class=\"token string\">&#034;batch&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token number\">16<\/span><span class=\"token punctuation\">,<\/span><br \/>\n                <span class=\"token string\">&#034;conf&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token number\">0.001<\/span><span class=\"token punctuation\">,<\/span><br \/>\n                <span class=\"token string\">&#034;iou&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token number\">0.7<\/span><span class=\"token punctuation\">,<\/span><br \/>\n                <span class=\"token string\">&#034;split&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">&#034;val&#034;<\/span><span class=\"token punctuation\">,<\/span><br \/>\n            <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span><br \/>\n            <span class=\"token string\">&#034;speed&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n                <span class=\"token string\">&#034;imgsz&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token number\">640<\/span><span class=\"token punctuation\">,<\/span><br \/>\n                <span class=\"token string\">&#034;batch_sizes&#034;<\/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><br \/>\n                <span class=\"token string\">&#034;n_warmup&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token number\">10<\/span><span class=\"token punctuation\">,<\/span><br \/>\n                <span class=\"token string\">&#034;n_repeat&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token number\">200<\/span><span class=\"token punctuation\">,<\/span><br \/>\n                <span class=\"token string\">&#034;half&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token boolean\">True<\/span><span class=\"token punctuation\">,<\/span><br \/>\n            <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span><br \/>\n            <span class=\"token string\">&#034;device&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">&#034;cuda:0&#034;<\/span> <span class=\"token keyword\">if<\/span> torch<span class=\"token punctuation\">.<\/span>cuda<span class=\"token punctuation\">.<\/span>is_available<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token keyword\">else<\/span> <span class=\"token string\">&#034;cpu&#034;<\/span><span class=\"token punctuation\">,<\/span><br \/>\n        <span class=\"token punctuation\">}<\/span><\/p>\n<p>    <span class=\"token keyword\">def<\/span> <span class=\"token function\">step1_collect_environment<\/span><span class=\"token punctuation\">(<\/span>self<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n        <span class=\"token triple-quoted-string string\">&#034;&#034;&#034;\u6b65\u9aa41&#xff1a;\u6536\u96c6\u73af\u5883\u4fe1\u606f&#034;&#034;&#034;<\/span><br \/>\n        <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;\\\\n&#034;<\/span> <span class=\"token operator\">&#043;<\/span> <span class=\"token string\">&#034;&#061;&#034;<\/span><span class=\"token operator\">*<\/span><span class=\"token number\">60<\/span><span class=\"token punctuation\">)<\/span><br \/>\n        <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;\u6b65\u9aa4 1\/6: \u6536\u96c6\u73af\u5883\u4fe1\u606f&#034;<\/span><span class=\"token punctuation\">)<\/span><br \/>\n        <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;&#061;&#034;<\/span><span class=\"token operator\">*<\/span><span class=\"token number\">60<\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p>        <span class=\"token keyword\">import<\/span> platform<br \/>\n        <span class=\"token keyword\">import<\/span> subprocess<\/p>\n<p>        env <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n            <span class=\"token string\">&#034;timestamp&#034;<\/span><span class=\"token punctuation\">:<\/span> datetime<span class=\"token punctuation\">.<\/span>now<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">.<\/span>strftime<span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;%Y-%m-%d %H:%M:%S&#034;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">,<\/span><br \/>\n            <span class=\"token string\">&#034;os&#034;<\/span><span class=\"token punctuation\">:<\/span> platform<span class=\"token punctuation\">.<\/span>platform<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">,<\/span><br \/>\n            <span class=\"token string\">&#034;python&#034;<\/span><span class=\"token punctuation\">:<\/span> platform<span class=\"token punctuation\">.<\/span>python_version<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">,<\/span><br \/>\n        <span class=\"token punctuation\">}<\/span><\/p>\n<p>        <span class=\"token keyword\">try<\/span><span class=\"token punctuation\">:<\/span><br \/>\n            <span class=\"token keyword\">import<\/span> torch<br \/>\n            env<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;torch&#034;<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&#061;<\/span> torch<span class=\"token punctuation\">.<\/span>__version__<br \/>\n            env<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;cuda&#034;<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&#061;<\/span> torch<span class=\"token punctuation\">.<\/span>version<span class=\"token punctuation\">.<\/span>cuda<br \/>\n            <span class=\"token keyword\">if<\/span> torch<span class=\"token punctuation\">.<\/span>cuda<span class=\"token punctuation\">.<\/span>is_available<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n                gpu <span class=\"token operator\">&#061;<\/span> torch<span class=\"token punctuation\">.<\/span>cuda<span class=\"token punctuation\">.<\/span>get_device_properties<span class=\"token punctuation\">(<\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">)<\/span><br \/>\n                env<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;gpu&#034;<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n                    <span class=\"token string\">&#034;name&#034;<\/span><span class=\"token punctuation\">:<\/span> gpu<span class=\"token punctuation\">.<\/span>name<span class=\"token punctuation\">,<\/span><br \/>\n                    <span class=\"token string\">&#034;memory_gb&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token builtin\">round<\/span><span class=\"token punctuation\">(<\/span>gpu<span class=\"token punctuation\">.<\/span>total_memory <span class=\"token operator\">\/<\/span> <span class=\"token number\">1024<\/span><span class=\"token operator\">**<\/span><span class=\"token number\">3<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">1<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">,<\/span><br \/>\n                    <span class=\"token string\">&#034;compute_capability&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string-interpolation\"><span class=\"token string\">f&#034;<\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>gpu<span class=\"token punctuation\">.<\/span>major<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">.<\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>gpu<span class=\"token punctuation\">.<\/span>minor<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">&#034;<\/span><\/span><span class=\"token punctuation\">,<\/span><br \/>\n                <span class=\"token punctuation\">}<\/span><br \/>\n        <span class=\"token keyword\">except<\/span> Exception <span class=\"token keyword\">as<\/span> e<span class=\"token punctuation\">:<\/span><br \/>\n            env<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;torch_error&#034;<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&#061;<\/span> <span class=\"token builtin\">str<\/span><span class=\"token punctuation\">(<\/span>e<span class=\"token punctuation\">)<\/span><\/p>\n<p>        <span class=\"token keyword\">try<\/span><span class=\"token punctuation\">:<\/span><br \/>\n            <span class=\"token keyword\">import<\/span> ultralytics<br \/>\n            env<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;ultralytics&#034;<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&#061;<\/span> ultralytics<span class=\"token punctuation\">.<\/span>__version__<br \/>\n        <span class=\"token keyword\">except<\/span> ImportError<span class=\"token punctuation\">:<\/span><br \/>\n            <span class=\"token keyword\">pass<\/span><\/p>\n<p>        self<span class=\"token punctuation\">.<\/span>results<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;environment&#034;<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&#061;<\/span> env<\/p>\n<p>        <span class=\"token comment\"># \u4fdd\u5b58\u73af\u5883\u4fe1\u606f<\/span><br \/>\n        env_path <span class=\"token operator\">&#061;<\/span> self<span class=\"token punctuation\">.<\/span>output_dir <span class=\"token operator\">\/<\/span> <span class=\"token string\">&#034;environment.json&#034;<\/span><br \/>\n        <span class=\"token keyword\">with<\/span> <span class=\"token builtin\">open<\/span><span class=\"token punctuation\">(<\/span>env_path<span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;w&#034;<\/span><span class=\"token punctuation\">,<\/span> encoding<span class=\"token operator\">&#061;<\/span><span class=\"token string\">&#034;utf-8&#034;<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token keyword\">as<\/span> f<span class=\"token punctuation\">:<\/span><br \/>\n            json<span class=\"token punctuation\">.<\/span>dump<span class=\"token punctuation\">(<\/span>env<span class=\"token punctuation\">,<\/span> f<span class=\"token punctuation\">,<\/span> indent<span class=\"token operator\">&#061;<\/span><span class=\"token number\">2<\/span><span class=\"token punctuation\">,<\/span> ensure_ascii<span class=\"token operator\">&#061;<\/span><span class=\"token boolean\">False<\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p>        <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string-interpolation\"><span class=\"token string\">f&#034;  \u73af\u5883\u4fe1\u606f\u5df2\u4fdd\u5b58: <\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>env_path<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">&#034;<\/span><\/span><span class=\"token punctuation\">)<\/span><br \/>\n        <span class=\"token keyword\">return<\/span> env<\/p>\n<p>    <span class=\"token keyword\">def<\/span> <span class=\"token function\">step2_run_accuracy_benchmark<\/span><span class=\"token punctuation\">(<\/span>self<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n        <span class=\"token triple-quoted-string string\">&#034;&#034;&#034;\u6b65\u9aa42&#xff1a;\u7cbe\u5ea6\u6d4b\u8bd5&#034;&#034;&#034;<\/span><br \/>\n        <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;\\\\n&#034;<\/span> <span class=\"token operator\">&#043;<\/span> <span class=\"token string\">&#034;&#061;&#034;<\/span><span class=\"token operator\">*<\/span><span class=\"token number\">60<\/span><span class=\"token punctuation\">)<\/span><br \/>\n        <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;\u6b65\u9aa4 2\/6: \u7cbe\u5ea6\u6d4b\u8bd5&#034;<\/span><span class=\"token punctuation\">)<\/span><br \/>\n        <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;&#061;&#034;<\/span><span class=\"token operator\">*<\/span><span class=\"token number\">60<\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p>        acc_config <span class=\"token operator\">&#061;<\/span> self<span class=\"token punctuation\">.<\/span>config<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;accuracy&#034;<\/span><span class=\"token punctuation\">]<\/span><\/p>\n<p>        <span class=\"token keyword\">for<\/span> model_cfg <span class=\"token keyword\">in<\/span> self<span class=\"token punctuation\">.<\/span>config<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;models&#034;<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">:<\/span><br \/>\n            model_name <span class=\"token operator\">&#061;<\/span> model_cfg<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;name&#034;<\/span><span class=\"token punctuation\">]<\/span><br \/>\n            model_path <span class=\"token operator\">&#061;<\/span> model_cfg<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;path&#034;<\/span><span class=\"token punctuation\">]<\/span><\/p>\n<p>            <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string-interpolation\"><span class=\"token string\">f&#034;\\\\n  \u6d4b\u8bd5\u6a21\u578b: <\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>model_name<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">&#034;<\/span><\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p>            <span class=\"token keyword\">try<\/span><span class=\"token punctuation\">:<\/span><br \/>\n                model <span class=\"token operator\">&#061;<\/span> YOLO<span class=\"token punctuation\">(<\/span>model_path<span class=\"token punctuation\">)<\/span><br \/>\n                results <span class=\"token operator\">&#061;<\/span> model<span class=\"token punctuation\">.<\/span>val<span class=\"token punctuation\">(<\/span><br \/>\n                    data<span class=\"token operator\">&#061;<\/span>acc_config<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;data&#034;<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">,<\/span><br \/>\n                    imgsz<span class=\"token operator\">&#061;<\/span>acc_config<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;imgsz&#034;<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">,<\/span><br \/>\n                    batch<span class=\"token operator\">&#061;<\/span>acc_config<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;batch&#034;<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">,<\/span><br \/>\n                    conf<span class=\"token operator\">&#061;<\/span>acc_config<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;conf&#034;<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">,<\/span><br \/>\n                    iou<span class=\"token operator\">&#061;<\/span>acc_config<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;iou&#034;<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">,<\/span><br \/>\n                    device<span class=\"token operator\">&#061;<\/span>self<span class=\"token punctuation\">.<\/span>config<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;device&#034;<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">,<\/span><br \/>\n                    split<span class=\"token operator\">&#061;<\/span>acc_config<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;split&#034;<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">,<\/span><br \/>\n                    verbose<span class=\"token operator\">&#061;<\/span><span class=\"token boolean\">False<\/span><span class=\"token punctuation\">,<\/span><br \/>\n                    plots<span class=\"token operator\">&#061;<\/span><span class=\"token boolean\">False<\/span><span class=\"token punctuation\">,<\/span>  <span class=\"token comment\"># \u4e0d\u751f\u6210\u56fe\u8868&#xff0c;\u6211\u4eec\u81ea\u5df1\u7ed8\u5236<\/span><br \/>\n                <span class=\"token punctuation\">)<\/span><\/p>\n<p>                self<span class=\"token punctuation\">.<\/span>results<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;accuracy&#034;<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">[<\/span>model_name<span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n                    <span class=\"token string\">&#034;mAP50&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token builtin\">float<\/span><span class=\"token punctuation\">(<\/span>results<span class=\"token punctuation\">.<\/span>box<span class=\"token punctuation\">.<\/span>map50<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">,<\/span><br \/>\n                    <span class=\"token string\">&#034;mAP50_95&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token builtin\">float<\/span><span class=\"token punctuation\">(<\/span>results<span class=\"token punctuation\">.<\/span>box<span class=\"token punctuation\">.<\/span><span class=\"token builtin\">map<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">,<\/span><br \/>\n                    <span class=\"token string\">&#034;Precision&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token builtin\">float<\/span><span class=\"token punctuation\">(<\/span>results<span class=\"token punctuation\">.<\/span>box<span class=\"token punctuation\">.<\/span>mp<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">,<\/span><br \/>\n                    <span class=\"token string\">&#034;Recall&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token builtin\">float<\/span><span class=\"token punctuation\">(<\/span>results<span class=\"token punctuation\">.<\/span>box<span class=\"token punctuation\">.<\/span>mr<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">,<\/span><br \/>\n                    <span class=\"token string\">&#034;F1&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token builtin\">float<\/span><span class=\"token punctuation\">(<\/span><br \/>\n                        <span class=\"token number\">2<\/span> <span class=\"token operator\">*<\/span> results<span class=\"token punctuation\">.<\/span>box<span class=\"token punctuation\">.<\/span>mp <span class=\"token operator\">*<\/span> results<span class=\"token punctuation\">.<\/span>box<span class=\"token punctuation\">.<\/span>mr <span class=\"token operator\">\/<\/span><br \/>\n                        <span class=\"token punctuation\">(<\/span>results<span class=\"token punctuation\">.<\/span>box<span class=\"token punctuation\">.<\/span>mp <span class=\"token operator\">&#043;<\/span> results<span class=\"token punctuation\">.<\/span>box<span class=\"token punctuation\">.<\/span>mr <span class=\"token operator\">&#043;<\/span> <span class=\"token number\">1e-9<\/span><span class=\"token punctuation\">)<\/span><br \/>\n                    <span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">,<\/span><br \/>\n                <span class=\"token punctuation\">}<\/span><br \/>\n                <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string-interpolation\"><span class=\"token string\">f&#034;    mAP&#064;0.5: <\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>self<span class=\"token punctuation\">.<\/span>results<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#039;accuracy&#039;<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">[<\/span>model_name<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">[<\/span><span class=\"token string\">&#039;mAP50&#039;<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">:<\/span><span class=\"token format-spec\">.4f<\/span><span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">&#034;<\/span><\/span><span class=\"token punctuation\">)<\/span><br \/>\n                <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string-interpolation\"><span class=\"token string\">f&#034;    mAP&#064;0.5:0.95: <\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>self<span class=\"token punctuation\">.<\/span>results<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#039;accuracy&#039;<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">[<\/span>model_name<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">[<\/span><span class=\"token string\">&#039;mAP50_95&#039;<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">:<\/span><span class=\"token format-spec\">.4f<\/span><span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">&#034;<\/span><\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p>            <span class=\"token keyword\">except<\/span> FileNotFoundError<span class=\"token punctuation\">:<\/span><br \/>\n                <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string-interpolation\"><span class=\"token string\">f&#034;    \u8b66\u544a: \u6a21\u578b\u6587\u4ef6\u4e0d\u5b58\u5728 <\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>model_path<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">&#xff0c;\u8df3\u8fc7&#034;<\/span><\/span><span class=\"token punctuation\">)<\/span><br \/>\n                self<span class=\"token punctuation\">.<\/span>results<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;accuracy&#034;<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">[<\/span>model_name<span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">{<\/span><span class=\"token string\">&#034;error&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">&#034;model not found&#034;<\/span><span class=\"token punctuation\">}<\/span><br \/>\n            <span class=\"token keyword\">except<\/span> Exception <span class=\"token keyword\">as<\/span> e<span class=\"token punctuation\">:<\/span><br \/>\n                <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string-interpolation\"><span class=\"token string\">f&#034;    \u9519\u8bef: <\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>e<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">&#034;<\/span><\/span><span class=\"token punctuation\">)<\/span><br \/>\n                self<span class=\"token punctuation\">.<\/span>results<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;accuracy&#034;<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">[<\/span>model_name<span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">{<\/span><span class=\"token string\">&#034;error&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token builtin\">str<\/span><span class=\"token punctuation\">(<\/span>e<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">}<\/span><\/p>\n<p>    <span class=\"token keyword\">def<\/span> <span class=\"token function\">step3_run_speed_benchmark<\/span><span class=\"token punctuation\">(<\/span>self<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n        <span class=\"token triple-quoted-string string\">&#034;&#034;&#034;\u6b65\u9aa43&#xff1a;\u901f\u5ea6\u6d4b\u8bd5&#034;&#034;&#034;<\/span><br \/>\n        <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;\\\\n&#034;<\/span> <span class=\"token operator\">&#043;<\/span> <span class=\"token string\">&#034;&#061;&#034;<\/span><span class=\"token operator\">*<\/span><span class=\"token number\">60<\/span><span class=\"token punctuation\">)<\/span><br \/>\n        <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;\u6b65\u9aa4 3\/6: \u901f\u5ea6\u6d4b\u8bd5&#034;<\/span><span class=\"token punctuation\">)<\/span><br \/>\n        <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;&#061;&#034;<\/span><span class=\"token operator\">*<\/span><span class=\"token number\">60<\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p>        speed_config <span class=\"token operator\">&#061;<\/span> self<span class=\"token punctuation\">.<\/span>config<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;speed&#034;<\/span><span class=\"token punctuation\">]<\/span><br \/>\n        device <span class=\"token operator\">&#061;<\/span> self<span class=\"token punctuation\">.<\/span>config<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;device&#034;<\/span><span class=\"token punctuation\">]<\/span><\/p>\n<p>        <span class=\"token keyword\">for<\/span> model_cfg <span class=\"token keyword\">in<\/span> self<span class=\"token punctuation\">.<\/span>config<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;models&#034;<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">:<\/span><br \/>\n            model_name <span class=\"token operator\">&#061;<\/span> model_cfg<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;name&#034;<\/span><span class=\"token punctuation\">]<\/span><br \/>\n            model_path <span class=\"token operator\">&#061;<\/span> model_cfg<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;path&#034;<\/span><span class=\"token punctuation\">]<\/span><\/p>\n<p>            <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string-interpolation\"><span class=\"token string\">f&#034;\\\\n  \u6d4b\u8bd5\u6a21\u578b: <\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>model_name<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">&#034;<\/span><\/span><span class=\"token punctuation\">)<\/span><br \/>\n            self<span class=\"token punctuation\">.<\/span>results<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;speed&#034;<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">[<\/span>model_name<span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">{<\/span><span class=\"token punctuation\">}<\/span><\/p>\n<p>            <span class=\"token keyword\">try<\/span><span class=\"token punctuation\">:<\/span><br \/>\n                model <span class=\"token operator\">&#061;<\/span> YOLO<span class=\"token punctuation\">(<\/span>model_path<span class=\"token punctuation\">)<\/span><br \/>\n                pytorch_model <span class=\"token operator\">&#061;<\/span> model<span class=\"token punctuation\">.<\/span>model<span class=\"token punctuation\">.<\/span>to<span class=\"token punctuation\">(<\/span>device<span class=\"token punctuation\">)<\/span><br \/>\n                pytorch_model<span class=\"token punctuation\">.<\/span><span class=\"token builtin\">eval<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p>                <span class=\"token keyword\">for<\/span> batch <span class=\"token keyword\">in<\/span> speed_config<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;batch_sizes&#034;<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">:<\/span><br \/>\n                    imgsz <span class=\"token operator\">&#061;<\/span> speed_config<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;imgsz&#034;<\/span><span class=\"token punctuation\">]<\/span><br \/>\n                    dtype <span class=\"token operator\">&#061;<\/span> torch<span class=\"token punctuation\">.<\/span>float16 <span class=\"token keyword\">if<\/span> speed_config<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;half&#034;<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token keyword\">and<\/span> <span class=\"token string\">&#034;cuda&#034;<\/span> <span class=\"token keyword\">in<\/span> device <span class=\"token keyword\">else<\/span> torch<span class=\"token punctuation\">.<\/span>float32<\/p>\n<p>                    dummy_input <span class=\"token operator\">&#061;<\/span> torch<span class=\"token punctuation\">.<\/span>randn<span class=\"token punctuation\">(<\/span>batch<span class=\"token punctuation\">,<\/span> <span class=\"token number\">3<\/span><span class=\"token punctuation\">,<\/span> imgsz<span class=\"token punctuation\">,<\/span> imgsz<span class=\"token punctuation\">,<\/span> dtype<span class=\"token operator\">&#061;<\/span>dtype<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">.<\/span>to<span class=\"token punctuation\">(<\/span>device<span class=\"token punctuation\">)<\/span><\/p>\n<p>                    <span class=\"token comment\"># \u9884\u70ed<\/span><br \/>\n                    <span class=\"token keyword\">with<\/span> torch<span class=\"token punctuation\">.<\/span>no_grad<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n                        <span class=\"token keyword\">for<\/span> _ <span class=\"token keyword\">in<\/span> <span class=\"token builtin\">range<\/span><span class=\"token punctuation\">(<\/span>speed_config<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;n_warmup&#034;<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n                            _ <span class=\"token operator\">&#061;<\/span> pytorch_model<span class=\"token punctuation\">(<\/span>dummy_input<span class=\"token punctuation\">)<\/span><br \/>\n                            <span class=\"token keyword\">if<\/span> <span class=\"token string\">&#034;cuda&#034;<\/span> <span class=\"token keyword\">in<\/span> device<span class=\"token punctuation\">:<\/span><br \/>\n                                torch<span class=\"token punctuation\">.<\/span>cuda<span class=\"token punctuation\">.<\/span>synchronize<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p>                    <span class=\"token comment\"># \u6b63\u5f0f\u6d4b\u8bd5<\/span><br \/>\n                    latencies <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">]<\/span><br \/>\n                    <span class=\"token keyword\">with<\/span> torch<span class=\"token punctuation\">.<\/span>no_grad<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n                        <span class=\"token keyword\">for<\/span> _ <span class=\"token keyword\">in<\/span> <span class=\"token builtin\">range<\/span><span class=\"token punctuation\">(<\/span>speed_config<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;n_repeat&#034;<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n                            <span class=\"token keyword\">if<\/span> <span class=\"token string\">&#034;cuda&#034;<\/span> <span class=\"token keyword\">in<\/span> device<span class=\"token punctuation\">:<\/span><br \/>\n                                torch<span class=\"token punctuation\">.<\/span>cuda<span class=\"token punctuation\">.<\/span>synchronize<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><br \/>\n                            t0 <span class=\"token operator\">&#061;<\/span> time<span class=\"token punctuation\">.<\/span>perf_counter<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><br \/>\n                            _ <span class=\"token operator\">&#061;<\/span> pytorch_model<span class=\"token punctuation\">(<\/span>dummy_input<span class=\"token punctuation\">)<\/span><br \/>\n                            <span class=\"token keyword\">if<\/span> <span class=\"token string\">&#034;cuda&#034;<\/span> <span class=\"token keyword\">in<\/span> device<span class=\"token punctuation\">:<\/span><br \/>\n                                torch<span class=\"token punctuation\">.<\/span>cuda<span class=\"token punctuation\">.<\/span>synchronize<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><br \/>\n                            latencies<span class=\"token punctuation\">.<\/span>append<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">(<\/span>time<span class=\"token punctuation\">.<\/span>perf_counter<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">&#8211;<\/span> t0<span class=\"token punctuation\">)<\/span> <span class=\"token operator\">*<\/span> <span class=\"token number\">1000<\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p>                    latencies <span class=\"token operator\">&#061;<\/span> np<span class=\"token punctuation\">.<\/span>array<span class=\"token punctuation\">(<\/span>latencies<span class=\"token punctuation\">)<\/span><br \/>\n                    key <span class=\"token operator\">&#061;<\/span> <span class=\"token string-interpolation\"><span class=\"token string\">f&#034;batch<\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>batch<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">&#034;<\/span><\/span><br \/>\n                    self<span class=\"token punctuation\">.<\/span>results<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;speed&#034;<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">[<\/span>model_name<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">[<\/span>key<span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n                        <span class=\"token string\">&#034;batch_size&#034;<\/span><span class=\"token punctuation\">:<\/span> batch<span class=\"token punctuation\">,<\/span><br \/>\n                        <span class=\"token string\">&#034;latency_mean_ms&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token builtin\">float<\/span><span class=\"token punctuation\">(<\/span>np<span class=\"token punctuation\">.<\/span>mean<span class=\"token punctuation\">(<\/span>latencies<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">,<\/span><br \/>\n                        <span class=\"token string\">&#034;latency_std_ms&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token builtin\">float<\/span><span class=\"token punctuation\">(<\/span>np<span class=\"token punctuation\">.<\/span>std<span class=\"token punctuation\">(<\/span>latencies<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">,<\/span><br \/>\n                        <span class=\"token string\">&#034;latency_p95_ms&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token builtin\">float<\/span><span class=\"token punctuation\">(<\/span>np<span class=\"token punctuation\">.<\/span>percentile<span class=\"token punctuation\">(<\/span>latencies<span class=\"token punctuation\">,<\/span> <span class=\"token number\">95<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">,<\/span><br \/>\n                        <span class=\"token string\">&#034;fps&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token builtin\">float<\/span><span class=\"token punctuation\">(<\/span>batch <span class=\"token operator\">*<\/span> <span class=\"token number\">1000<\/span> <span class=\"token operator\">\/<\/span> np<span class=\"token punctuation\">.<\/span>mean<span class=\"token punctuation\">(<\/span>latencies<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">,<\/span><br \/>\n                    <span class=\"token punctuation\">}<\/span><br \/>\n                    <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string-interpolation\"><span class=\"token string\">f&#034;    batch&#061;<\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>batch<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">: <\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>np<span class=\"token punctuation\">.<\/span>mean<span class=\"token punctuation\">(<\/span>latencies<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><span class=\"token format-spec\">.2f<\/span><span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">ms, <\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>batch<span class=\"token operator\">*<\/span><span class=\"token number\">1000<\/span><span class=\"token operator\">\/<\/span>np<span class=\"token punctuation\">.<\/span>mean<span class=\"token punctuation\">(<\/span>latencies<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><span class=\"token format-spec\">.1f<\/span><span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">fps&#034;<\/span><\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p>            <span class=\"token keyword\">except<\/span> FileNotFoundError<span class=\"token punctuation\">:<\/span><br \/>\n                <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string-interpolation\"><span class=\"token string\">f&#034;    \u8b66\u544a: \u6a21\u578b\u6587\u4ef6\u4e0d\u5b58\u5728 <\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>model_path<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">&#xff0c;\u8df3\u8fc7&#034;<\/span><\/span><span class=\"token punctuation\">)<\/span><br \/>\n            <span class=\"token keyword\">except<\/span> Exception <span class=\"token keyword\">as<\/span> e<span class=\"token punctuation\">:<\/span><br \/>\n                <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string-interpolation\"><span class=\"token string\">f&#034;    \u9519\u8bef: <\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>e<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">&#034;<\/span><\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p>    <span class=\"token keyword\">def<\/span> <span class=\"token function\">step4_collect_resources<\/span><span class=\"token punctuation\">(<\/span>self<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n        <span class=\"token triple-quoted-string string\">&#034;&#034;&#034;\u6b65\u9aa44&#xff1a;\u8d44\u6e90\u4fe1\u606f\u6536\u96c6&#034;&#034;&#034;<\/span><br \/>\n        <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;\\\\n&#034;<\/span> <span class=\"token operator\">&#043;<\/span> <span class=\"token string\">&#034;&#061;&#034;<\/span><span class=\"token operator\">*<\/span><span class=\"token number\">60<\/span><span class=\"token punctuation\">)<\/span><br \/>\n        <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;\u6b65\u9aa4 4\/6: \u8d44\u6e90\u4fe1\u606f\u6536\u96c6&#034;<\/span><span class=\"token punctuation\">)<\/span><br \/>\n        <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;&#061;&#034;<\/span><span class=\"token operator\">*<\/span><span class=\"token number\">60<\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p>        <span class=\"token keyword\">for<\/span> model_cfg <span class=\"token keyword\">in<\/span> self<span class=\"token punctuation\">.<\/span>config<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;models&#034;<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">:<\/span><br \/>\n            model_name <span class=\"token operator\">&#061;<\/span> model_cfg<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;name&#034;<\/span><span class=\"token punctuation\">]<\/span><br \/>\n            model_path <span class=\"token operator\">&#061;<\/span> model_cfg<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;path&#034;<\/span><span class=\"token punctuation\">]<\/span><\/p>\n<p>            <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string-interpolation\"><span class=\"token string\">f&#034;\\\\n  \u6536\u96c6\u6a21\u578b\u8d44\u6e90: <\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>model_name<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">&#034;<\/span><\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p>            resources <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">{<\/span><span class=\"token punctuation\">}<\/span><\/p>\n<p>            <span class=\"token keyword\">try<\/span><span class=\"token punctuation\">:<\/span><br \/>\n                <span class=\"token comment\"># \u6587\u4ef6\u5927\u5c0f<\/span><br \/>\n                <span class=\"token keyword\">if<\/span> Path<span class=\"token punctuation\">(<\/span>model_path<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">.<\/span>exists<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n                    resources<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;file_size_mb&#034;<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&#061;<\/span> <span class=\"token builtin\">round<\/span><span class=\"token punctuation\">(<\/span>Path<span class=\"token punctuation\">(<\/span>model_path<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">.<\/span>stat<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">.<\/span>st_size <span class=\"token operator\">\/<\/span> <span class=\"token number\">1024<\/span><span class=\"token operator\">**<\/span><span class=\"token number\">2<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">2<\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p>                <span class=\"token comment\"># \u53c2\u6570\u91cf<\/span><br \/>\n                model <span class=\"token operator\">&#061;<\/span> YOLO<span class=\"token punctuation\">(<\/span>model_path<span class=\"token punctuation\">)<\/span><br \/>\n                total_params <span class=\"token operator\">&#061;<\/span> <span class=\"token builtin\">sum<\/span><span class=\"token punctuation\">(<\/span>p<span class=\"token punctuation\">.<\/span>numel<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token keyword\">for<\/span> p <span class=\"token keyword\">in<\/span> model<span class=\"token punctuation\">.<\/span>model<span class=\"token punctuation\">.<\/span>parameters<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><br \/>\n                resources<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;params_M&#034;<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&#061;<\/span> <span class=\"token builtin\">round<\/span><span class=\"token punctuation\">(<\/span>total_params <span class=\"token operator\">\/<\/span> <span class=\"token number\">1e6<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">2<\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p>                self<span class=\"token punctuation\">.<\/span>results<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;resources&#034;<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">[<\/span>model_name<span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&#061;<\/span> resources<br \/>\n                <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string-interpolation\"><span class=\"token string\">f&#034;    \u6587\u4ef6\u5927\u5c0f: <\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>resources<span class=\"token punctuation\">.<\/span>get<span class=\"token punctuation\">(<\/span><span class=\"token string\">&#039;file_size_mb&#039;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#039;N\/A&#039;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\"> MB&#034;<\/span><\/span><span class=\"token punctuation\">)<\/span><br \/>\n                <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string-interpolation\"><span class=\"token string\">f&#034;    \u53c2\u6570\u91cf: <\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>resources<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#039;params_M&#039;<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\"> M&#034;<\/span><\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p>            <span class=\"token keyword\">except<\/span> FileNotFoundError<span class=\"token punctuation\">:<\/span><br \/>\n                <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string-interpolation\"><span class=\"token string\">f&#034;    \u8b66\u544a: \u6a21\u578b\u6587\u4ef6\u4e0d\u5b58\u5728&#xff0c;\u8df3\u8fc7&#034;<\/span><\/span><span class=\"token punctuation\">)<\/span><br \/>\n            <span class=\"token keyword\">except<\/span> Exception <span class=\"token keyword\">as<\/span> e<span class=\"token punctuation\">:<\/span><br \/>\n                <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string-interpolation\"><span class=\"token string\">f&#034;    \u9519\u8bef: <\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>e<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">&#034;<\/span><\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p>    <span class=\"token keyword\">def<\/span> <span class=\"token function\">step5_generate_visualizations<\/span><span class=\"token punctuation\">(<\/span>self<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n        <span class=\"token triple-quoted-string string\">&#034;&#034;&#034;\u6b65\u9aa45&#xff1a;\u751f\u6210\u53ef\u89c6\u5316\u56fe\u8868&#034;&#034;&#034;<\/span><br \/>\n        <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;\\\\n&#034;<\/span> <span class=\"token operator\">&#043;<\/span> <span class=\"token string\">&#034;&#061;&#034;<\/span><span class=\"token operator\">*<\/span><span class=\"token number\">60<\/span><span class=\"token punctuation\">)<\/span><br \/>\n        <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;\u6b65\u9aa4 5\/6: \u751f\u6210\u53ef\u89c6\u5316\u56fe\u8868&#034;<\/span><span class=\"token punctuation\">)<\/span><br \/>\n        <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;&#061;&#034;<\/span><span class=\"token operator\">*<\/span><span class=\"token number\">60<\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p>        <span class=\"token keyword\">import<\/span> matplotlib<span class=\"token punctuation\">.<\/span>pyplot <span class=\"token keyword\">as<\/span> plt<br \/>\n        <span class=\"token keyword\">import<\/span> matplotlib<br \/>\n        matplotlib<span class=\"token punctuation\">.<\/span>use<span class=\"token punctuation\">(<\/span><span class=\"token string\">&#039;Agg&#039;<\/span><span class=\"token punctuation\">)<\/span>  <span class=\"token comment\"># \u975e\u4ea4\u4e92\u5f0f\u540e\u7aef&#xff0c;\u9002\u5408\u81ea\u52a8\u5316\u811a\u672c<\/span><\/p>\n<p>        <span class=\"token comment\"># \u8fc7\u6ee4\u6389\u6709\u9519\u8bef\u7684\u6a21\u578b<\/span><br \/>\n        valid_models <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">[<\/span><br \/>\n            m <span class=\"token keyword\">for<\/span> m <span class=\"token keyword\">in<\/span> self<span class=\"token punctuation\">.<\/span>results<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;accuracy&#034;<\/span><span class=\"token punctuation\">]<\/span><br \/>\n            <span class=\"token keyword\">if<\/span> <span class=\"token string\">&#034;error&#034;<\/span> <span class=\"token keyword\">not<\/span> <span class=\"token keyword\">in<\/span> self<span class=\"token punctuation\">.<\/span>results<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;accuracy&#034;<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">[<\/span>m<span class=\"token punctuation\">]<\/span><br \/>\n        <span class=\"token punctuation\">]<\/span><\/p>\n<p>        <span class=\"token keyword\">if<\/span> <span class=\"token keyword\">not<\/span> valid_models<span class=\"token punctuation\">:<\/span><br \/>\n            <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;  \u6ca1\u6709\u6709\u6548\u7684\u7cbe\u5ea6\u6570\u636e&#xff0c;\u8df3\u8fc7\u56fe\u8868\u751f\u6210&#034;<\/span><span class=\"token punctuation\">)<\/span><br \/>\n            <span class=\"token keyword\">return<\/span><\/p>\n<p>        <span class=\"token comment\"># \u7cbe\u5ea6\u5bf9\u6bd4\u56fe<\/span><br \/>\n        fig<span class=\"token punctuation\">,<\/span> axes <span class=\"token operator\">&#061;<\/span> plt<span class=\"token punctuation\">.<\/span>subplots<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> figsize<span class=\"token operator\">&#061;<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">14<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">6<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><br \/>\n        fig<span class=\"token punctuation\">.<\/span>suptitle<span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;YOLOv12 Benchmark Results&#034;<\/span><span class=\"token punctuation\">,<\/span> fontsize<span class=\"token operator\">&#061;<\/span><span class=\"token number\">14<\/span><span class=\"token punctuation\">,<\/span> fontweight<span class=\"token operator\">&#061;<\/span><span class=\"token string\">&#039;bold&#039;<\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p>        map50_vals <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">[<\/span>self<span class=\"token punctuation\">.<\/span>results<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;accuracy&#034;<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">[<\/span>m<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;mAP50&#034;<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token keyword\">for<\/span> m <span class=\"token keyword\">in<\/span> valid_models<span class=\"token punctuation\">]<\/span><br \/>\n        map95_vals <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">[<\/span>self<span class=\"token punctuation\">.<\/span>results<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;accuracy&#034;<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">[<\/span>m<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;mAP50_95&#034;<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token keyword\">for<\/span> m <span class=\"token keyword\">in<\/span> valid_models<span class=\"token punctuation\">]<\/span><\/p>\n<p>        x <span class=\"token operator\">&#061;<\/span> np<span class=\"token punctuation\">.<\/span>arange<span class=\"token punctuation\">(<\/span><span class=\"token builtin\">len<\/span><span class=\"token punctuation\">(<\/span>valid_models<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><br \/>\n        axes<span class=\"token punctuation\">[<\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">.<\/span>bar<span class=\"token punctuation\">(<\/span>x <span class=\"token operator\">&#8211;<\/span> <span class=\"token number\">0.2<\/span><span class=\"token punctuation\">,<\/span> map50_vals<span class=\"token punctuation\">,<\/span> <span class=\"token number\">0.4<\/span><span class=\"token punctuation\">,<\/span> label<span class=\"token operator\">&#061;<\/span><span class=\"token string\">&#039;mAP&#064;0.5&#039;<\/span><span class=\"token punctuation\">,<\/span> color<span class=\"token operator\">&#061;<\/span><span class=\"token string\">&#039;#2196F3&#039;<\/span><span class=\"token punctuation\">,<\/span> alpha<span class=\"token operator\">&#061;<\/span><span class=\"token number\">0.85<\/span><span class=\"token punctuation\">)<\/span><br \/>\n        axes<span class=\"token punctuation\">[<\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">.<\/span>bar<span class=\"token punctuation\">(<\/span>x <span class=\"token operator\">&#043;<\/span> <span class=\"token number\">0.2<\/span><span class=\"token punctuation\">,<\/span> map95_vals<span class=\"token punctuation\">,<\/span> <span class=\"token number\">0.4<\/span><span class=\"token punctuation\">,<\/span> label<span class=\"token operator\">&#061;<\/span><span class=\"token string\">&#039;mAP&#064;0.5:0.95&#039;<\/span><span class=\"token punctuation\">,<\/span> color<span class=\"token operator\">&#061;<\/span><span class=\"token string\">&#039;#FF5722&#039;<\/span><span class=\"token punctuation\">,<\/span> alpha<span class=\"token operator\">&#061;<\/span><span class=\"token number\">0.85<\/span><span class=\"token punctuation\">)<\/span><br \/>\n        axes<span class=\"token punctuation\">[<\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">.<\/span>set_xticks<span class=\"token punctuation\">(<\/span>x<span class=\"token punctuation\">)<\/span><br \/>\n        axes<span class=\"token punctuation\">[<\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">.<\/span>set_xticklabels<span class=\"token punctuation\">(<\/span>valid_models<span class=\"token punctuation\">,<\/span> rotation<span class=\"token operator\">&#061;<\/span><span class=\"token number\">15<\/span><span class=\"token punctuation\">)<\/span><br \/>\n        axes<span class=\"token punctuation\">[<\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">.<\/span>set_ylabel<span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;mAP&#034;<\/span><span class=\"token punctuation\">)<\/span><br \/>\n        axes<span class=\"token punctuation\">[<\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">.<\/span>set_title<span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;Accuracy Comparison&#034;<\/span><span class=\"token punctuation\">)<\/span><br \/>\n        axes<span class=\"token punctuation\">[<\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">.<\/span>legend<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><br \/>\n        axes<span class=\"token punctuation\">[<\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">.<\/span>grid<span class=\"token punctuation\">(<\/span>axis<span class=\"token operator\">&#061;<\/span><span class=\"token string\">&#039;y&#039;<\/span><span class=\"token punctuation\">,<\/span> alpha<span class=\"token operator\">&#061;<\/span><span class=\"token number\">0.3<\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p>        <span class=\"token comment\"># \u901f\u5ea6\u5bf9\u6bd4\u56fe&#xff08;batch&#061;1&#xff09;<\/span><br \/>\n        valid_speed_models <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">[<\/span><br \/>\n            m <span class=\"token keyword\">for<\/span> m <span class=\"token keyword\">in<\/span> valid_models<br \/>\n            <span class=\"token keyword\">if<\/span> m <span class=\"token keyword\">in<\/span> self<span class=\"token punctuation\">.<\/span>results<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;speed&#034;<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token keyword\">and<\/span> <span class=\"token string\">&#034;batch1&#034;<\/span> <span class=\"token keyword\">in<\/span> self<span class=\"token punctuation\">.<\/span>results<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;speed&#034;<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">.<\/span>get<span class=\"token punctuation\">(<\/span>m<span class=\"token punctuation\">,<\/span> <span class=\"token punctuation\">{<\/span><span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span><br \/>\n        <span class=\"token punctuation\">]<\/span><\/p>\n<p>        <span class=\"token keyword\">if<\/span> valid_speed_models<span class=\"token punctuation\">:<\/span><br \/>\n            fps_vals <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">[<\/span>self<span class=\"token punctuation\">.<\/span>results<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;speed&#034;<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">[<\/span>m<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;batch1&#034;<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;fps&#034;<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token keyword\">for<\/span> m <span class=\"token keyword\">in<\/span> valid_speed_models<span class=\"token punctuation\">]<\/span><br \/>\n            axes<span class=\"token punctuation\">[<\/span><span class=\"token number\">1<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">.<\/span>bar<span class=\"token punctuation\">(<\/span>valid_speed_models<span class=\"token punctuation\">,<\/span> fps_vals<span class=\"token punctuation\">,<\/span> color<span class=\"token operator\">&#061;<\/span><span class=\"token string\">&#039;#4CAF50&#039;<\/span><span class=\"token punctuation\">,<\/span> alpha<span class=\"token operator\">&#061;<\/span><span class=\"token number\">0.85<\/span><span class=\"token punctuation\">)<\/span><br \/>\n            axes<span class=\"token punctuation\">[<\/span><span class=\"token number\">1<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">.<\/span>set_ylabel<span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;FPS (batch&#061;1)&#034;<\/span><span class=\"token punctuation\">)<\/span><br \/>\n            axes<span class=\"token punctuation\">[<\/span><span class=\"token number\">1<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">.<\/span>set_title<span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;Speed Comparison (batch&#061;1)&#034;<\/span><span class=\"token punctuation\">)<\/span><br \/>\n            axes<span class=\"token punctuation\">[<\/span><span class=\"token number\">1<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">.<\/span>grid<span class=\"token punctuation\">(<\/span>axis<span class=\"token operator\">&#061;<\/span><span class=\"token string\">&#039;y&#039;<\/span><span class=\"token punctuation\">,<\/span> alpha<span class=\"token operator\">&#061;<\/span><span class=\"token number\">0.3<\/span><span class=\"token punctuation\">)<\/span><br \/>\n            <span class=\"token keyword\">for<\/span> i<span class=\"token punctuation\">,<\/span> v <span class=\"token keyword\">in<\/span> <span class=\"token builtin\">enumerate<\/span><span class=\"token punctuation\">(<\/span>fps_vals<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n                axes<span class=\"token punctuation\">[<\/span><span class=\"token number\">1<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">.<\/span>text<span class=\"token punctuation\">(<\/span>i<span class=\"token punctuation\">,<\/span> v <span class=\"token operator\">&#043;<\/span> <span class=\"token number\">2<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string-interpolation\"><span class=\"token string\">f&#039;<\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>v<span class=\"token punctuation\">:<\/span><span class=\"token format-spec\">.0f<\/span><span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">&#039;<\/span><\/span><span class=\"token punctuation\">,<\/span> ha<span class=\"token operator\">&#061;<\/span><span class=\"token string\">&#039;center&#039;<\/span><span class=\"token punctuation\">,<\/span> fontsize<span class=\"token operator\">&#061;<\/span><span class=\"token number\">9<\/span><span class=\"token punctuation\">,<\/span> fontweight<span class=\"token operator\">&#061;<\/span><span class=\"token string\">&#039;bold&#039;<\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p>        plt<span class=\"token punctuation\">.<\/span>tight_layout<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><br \/>\n        save_path <span class=\"token operator\">&#061;<\/span> self<span class=\"token punctuation\">.<\/span>output_dir <span class=\"token operator\">\/<\/span> <span class=\"token string\">&#034;benchmark_overview.png&#034;<\/span><br \/>\n        plt<span class=\"token punctuation\">.<\/span>savefig<span class=\"token punctuation\">(<\/span>save_path<span class=\"token punctuation\">,<\/span> dpi<span class=\"token operator\">&#061;<\/span><span class=\"token number\">150<\/span><span class=\"token punctuation\">,<\/span> bbox_inches<span class=\"token operator\">&#061;<\/span><span class=\"token string\">&#039;tight&#039;<\/span><span class=\"token punctuation\">)<\/span><br \/>\n        plt<span class=\"token punctuation\">.<\/span>close<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><br \/>\n        <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string-interpolation\"><span class=\"token string\">f&#034;  \u603b\u89c8\u56fe\u5df2\u4fdd\u5b58: <\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>save_path<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">&#034;<\/span><\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p>    <span class=\"token keyword\">def<\/span> <span class=\"token function\">step6_generate_report<\/span><span class=\"token punctuation\">(<\/span>self<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n        <span class=\"token triple-quoted-string string\">&#034;&#034;&#034;\u6b65\u9aa46&#xff1a;\u751f\u6210\u6700\u7ec8\u62a5\u544a&#xff08;HTML\u683c\u5f0f&#xff09;&#034;&#034;&#034;<\/span><br \/>\n        <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;\\\\n&#034;<\/span> <span class=\"token operator\">&#043;<\/span> <span class=\"token string\">&#034;&#061;&#034;<\/span><span class=\"token operator\">*<\/span><span class=\"token number\">60<\/span><span class=\"token punctuation\">)<\/span><br \/>\n        <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;\u6b65\u9aa4 6\/6: \u751f\u6210\u6700\u7ec8\u62a5\u544a&#034;<\/span><span class=\"token punctuation\">)<\/span><br \/>\n        <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;&#061;&#034;<\/span><span class=\"token operator\">*<\/span><span class=\"token number\">60<\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p>        <span class=\"token comment\"># \u4fdd\u5b58\u539f\u59cb\u6570\u636e CSV<\/span><br \/>\n        all_records <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">]<\/span><br \/>\n        <span class=\"token keyword\">for<\/span> model_name <span class=\"token keyword\">in<\/span> self<span class=\"token punctuation\">.<\/span>results<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;accuracy&#034;<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">:<\/span><br \/>\n            record <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">{<\/span><span class=\"token string\">&#034;model&#034;<\/span><span class=\"token punctuation\">:<\/span> model_name<span class=\"token punctuation\">}<\/span><br \/>\n            <span class=\"token keyword\">if<\/span> <span class=\"token string\">&#034;error&#034;<\/span> <span class=\"token keyword\">not<\/span> <span class=\"token keyword\">in<\/span> self<span class=\"token punctuation\">.<\/span>results<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;accuracy&#034;<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">[<\/span>model_name<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">:<\/span><br \/>\n                record<span class=\"token punctuation\">.<\/span>update<span class=\"token punctuation\">(<\/span>self<span class=\"token punctuation\">.<\/span>results<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;accuracy&#034;<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">[<\/span>model_name<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">)<\/span><br \/>\n            <span class=\"token keyword\">if<\/span> model_name <span class=\"token keyword\">in<\/span> self<span class=\"token punctuation\">.<\/span>results<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;speed&#034;<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token keyword\">and<\/span> <span class=\"token string\">&#034;batch1&#034;<\/span> <span class=\"token keyword\">in<\/span> self<span class=\"token punctuation\">.<\/span>results<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;speed&#034;<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">[<\/span>model_name<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">:<\/span><br \/>\n                spd <span class=\"token operator\">&#061;<\/span> self<span class=\"token punctuation\">.<\/span>results<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;speed&#034;<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">[<\/span>model_name<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;batch1&#034;<\/span><span class=\"token punctuation\">]<\/span><br \/>\n                record<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;latency_ms&#034;<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&#061;<\/span> spd<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;latency_mean_ms&#034;<\/span><span class=\"token punctuation\">]<\/span><br \/>\n                record<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;fps&#034;<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&#061;<\/span> spd<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;fps&#034;<\/span><span class=\"token punctuation\">]<\/span><br \/>\n            <span class=\"token keyword\">if<\/span> model_name <span class=\"token keyword\">in<\/span> self<span class=\"token punctuation\">.<\/span>results<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;resources&#034;<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">:<\/span><br \/>\n                record<span class=\"token punctuation\">.<\/span>update<span class=\"token punctuation\">(<\/span>self<span class=\"token punctuation\">.<\/span>results<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;resources&#034;<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">[<\/span>model_name<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">)<\/span><br \/>\n            all_records<span class=\"token punctuation\">.<\/span>append<span class=\"token punctuation\">(<\/span>record<span class=\"token punctuation\">)<\/span><\/p>\n<p>        results_df <span class=\"token operator\">&#061;<\/span> pd<span class=\"token punctuation\">.<\/span>DataFrame<span class=\"token punctuation\">(<\/span>all_records<span class=\"token punctuation\">)<\/span><br \/>\n        csv_path <span class=\"token operator\">&#061;<\/span> self<span class=\"token punctuation\">.<\/span>output_dir <span class=\"token operator\">\/<\/span> <span class=\"token string\">&#034;results.csv&#034;<\/span><br \/>\n        results_df<span class=\"token punctuation\">.<\/span>to_csv<span class=\"token punctuation\">(<\/span>csv_path<span class=\"token punctuation\">,<\/span> index<span class=\"token operator\">&#061;<\/span><span class=\"token boolean\">False<\/span><span class=\"token punctuation\">)<\/span><br \/>\n        <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string-interpolation\"><span class=\"token string\">f&#034;  \u539f\u59cb\u6570\u636e\u5df2\u4fdd\u5b58: <\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>csv_path<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">&#034;<\/span><\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p>        <span class=\"token comment\"># \u751f\u6210\u7b80\u5355 HTML \u62a5\u544a<\/span><br \/>\n        html_content <span class=\"token operator\">&#061;<\/span> self<span class=\"token punctuation\">.<\/span>_generate_html_report<span class=\"token punctuation\">(<\/span>results_df<span class=\"token punctuation\">)<\/span><br \/>\n        html_path <span class=\"token operator\">&#061;<\/span> self<span class=\"token punctuation\">.<\/span>output_dir <span class=\"token operator\">\/<\/span> <span class=\"token string\">&#034;report.html&#034;<\/span><br \/>\n        <span class=\"token keyword\">with<\/span> <span class=\"token builtin\">open<\/span><span class=\"token punctuation\">(<\/span>html_path<span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;w&#034;<\/span><span class=\"token punctuation\">,<\/span> encoding<span class=\"token operator\">&#061;<\/span><span class=\"token string\">&#034;utf-8&#034;<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token keyword\">as<\/span> f<span class=\"token punctuation\">:<\/span><br \/>\n            f<span class=\"token punctuation\">.<\/span>write<span class=\"token punctuation\">(<\/span>html_content<span class=\"token punctuation\">)<\/span><br \/>\n        <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string-interpolation\"><span class=\"token string\">f&#034;  HTML \u62a5\u544a\u5df2\u4fdd\u5b58: <\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>html_path<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">&#034;<\/span><\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p>        <span class=\"token comment\"># \u751f\u6210\u590d\u73b0\u811a\u672c<\/span><br \/>\n        self<span class=\"token punctuation\">.<\/span>_generate_reproduce_script<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p>        <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string-interpolation\"><span class=\"token string\">f&#034;\\\\n\u2705 Benchmark \u62a5\u544a\u751f\u6210\u5b8c\u6210&#xff01;&#034;<\/span><\/span><span class=\"token punctuation\">)<\/span><br \/>\n        <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string-interpolation\"><span class=\"token string\">f&#034;   \u62a5\u544a\u76ee\u5f55: <\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>self<span class=\"token punctuation\">.<\/span>output_dir<span class=\"token punctuation\">.<\/span>absolute<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">&#034;<\/span><\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p>    <span class=\"token keyword\">def<\/span> <span class=\"token function\">_generate_html_report<\/span><span class=\"token punctuation\">(<\/span>self<span class=\"token punctuation\">,<\/span> results_df<span class=\"token punctuation\">:<\/span> pd<span class=\"token punctuation\">.<\/span>DataFrame<span class=\"token punctuation\">)<\/span> <span class=\"token operator\">&#8211;<\/span><span class=\"token operator\">&gt;<\/span> <span class=\"token builtin\">str<\/span><span class=\"token punctuation\">:<\/span><br \/>\n        <span class=\"token triple-quoted-string string\">&#034;&#034;&#034;\u751f\u6210 HTML \u683c\u5f0f\u62a5\u544a&#034;&#034;&#034;<\/span><br \/>\n        env <span class=\"token operator\">&#061;<\/span> self<span class=\"token punctuation\">.<\/span>results<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;environment&#034;<\/span><span class=\"token punctuation\">]<\/span><br \/>\n        cfg <span class=\"token operator\">&#061;<\/span> self<span class=\"token punctuation\">.<\/span>config<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;report&#034;<\/span><span class=\"token punctuation\">]<\/span><\/p>\n<p>        html <span class=\"token operator\">&#061;<\/span> <span class=\"token string-interpolation\"><span class=\"token string\">f&#034;&#034;&#034;&lt;!DOCTYPE html&gt;<br \/>\n&lt;html lang&#061;&#034;en&#034;&gt;<br \/>\n&lt;head&gt;<br \/>\n    &lt;meta charset&#061;&#034;UTF-8&#034;&gt;<br \/>\n    &lt;meta name&#061;&#034;viewport&#034; content&#061;&#034;width&#061;device-width, initial-scale&#061;1.0&#034;&gt;<br \/>\n    &lt;title&gt;<\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>cfg<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#039;title&#039;<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">&lt;\/title&gt;<br \/>\n    &lt;style&gt;<br \/>\n        body {{ font-family: &#039;Segoe UI&#039;, sans-serif; max-width: 1200px; margin: 0 auto; padding: 20px; color: #333; }}<br \/>\n        h1 {{ color: #1976D2; border-bottom: 3px solid #1976D2; padding-bottom: 10px; }}<br \/>\n        h2 {{ color: #388E3C; border-left: 4px solid #388E3C; padding-left: 10px; }}<br \/>\n        table {{ border-collapse: collapse; width: 100%; margin: 20px 0; }}<br \/>\n        th {{ background: #1976D2; color: white; padding: 10px 14px; text-align: left; }}<br \/>\n        td {{ padding: 8px 14px; border-bottom: 1px solid #ddd; }}<br \/>\n        tr:nth-child(even) {{ background: #f5f5f5; }}<br \/>\n        .meta-grid {{ display: grid; grid-template-columns: repeat(2, 1fr); gap: 16px; margin: 20px 0; }}<br \/>\n        .meta-card {{ background: #f8f9fa; border-radius: 8px; padding: 16px; border: 1px solid #e0e0e0; }}<br \/>\n        .meta-label {{ font-size: 12px; color: #666; text-transform: uppercase; }}<br \/>\n        .meta-value {{ font-size: 16px; font-weight: bold; color: #1976D2; margin-top: 4px; }}<br \/>\n        .section {{ margin: 40px 0; }}<br \/>\n        img {{ max-width: 100%; border-radius: 8px; box-shadow: 0 2px 8px rgba(0,0,0,0.1); }}<br \/>\n        .badge-green {{ background: #4CAF50; color: white; padding: 2px 8px; border-radius: 4px; font-size: 12px; }}<br \/>\n        .badge-blue  {{ background: #2196F3; color: white; padding: 2px 8px; border-radius: 4px; font-size: 12px; }}<br \/>\n    &lt;\/style&gt;<br \/>\n&lt;\/head&gt;<br \/>\n&lt;body&gt;<br \/>\n    &lt;h1&gt;&#x1f4ca; <\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>cfg<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#039;title&#039;<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">&lt;\/h1&gt;<\/p>\n<p>    &lt;div class&#061;&#034;meta-grid&#034;&gt;<br \/>\n        &lt;div class&#061;&#034;meta-card&#034;&gt;<br \/>\n            &lt;div class&#061;&#034;meta-label&#034;&gt;Report Generated&lt;\/div&gt;<br \/>\n            &lt;div class&#061;&#034;meta-value&#034;&gt;<\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>env<span class=\"token punctuation\">.<\/span>get<span class=\"token punctuation\">(<\/span><span class=\"token string\">&#039;timestamp&#039;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#039;N\/A&#039;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">&lt;\/div&gt;<br \/>\n        &lt;\/div&gt;<br \/>\n        &lt;div class&#061;&#034;meta-card&#034;&gt;<br \/>\n            &lt;div class&#061;&#034;meta-label&#034;&gt;Author&lt;\/div&gt;<br \/>\n            &lt;div class&#061;&#034;meta-value&#034;&gt;<\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>cfg<span class=\"token punctuation\">.<\/span>get<span class=\"token punctuation\">(<\/span><span class=\"token string\">&#039;author&#039;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#039;N\/A&#039;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">&lt;\/div&gt;<br \/>\n        &lt;\/div&gt;<br \/>\n        &lt;div class&#061;&#034;meta-card&#034;&gt;<br \/>\n            &lt;div class&#061;&#034;meta-label&#034;&gt;GPU&lt;\/div&gt;<br \/>\n            &lt;div class&#061;&#034;meta-value&#034;&gt;{env.get(&#039;gpu&#039;, {}).get(&#039;name&#039;, &#039;N\/A&#039;) if isinstance(env.get(&#039;gpu&#039;), dict) else env.get(&#039;gpu&#039;, &#039;N\/A&#039;)}&lt;\/div&gt;<br \/>\n        &lt;\/div&gt;<br \/>\n        &lt;div class&#061;&#034;meta-card&#034;&gt;<br \/>\n            &lt;div class&#061;&#034;meta-label&#034;&gt;Ultralytics Version&lt;\/div&gt;<br \/>\n            &lt;div class&#061;&#034;meta-value&#034;&gt;<\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>env<span class=\"token punctuation\">.<\/span>get<span class=\"token punctuation\">(<\/span><span class=\"token string\">&#039;ultralytics&#039;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#039;N\/A&#039;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">&lt;\/div&gt;<br \/>\n        &lt;\/div&gt;<br \/>\n    &lt;\/div&gt;<\/p>\n<p>    &lt;div class&#061;&#034;section&#034;&gt;<br \/>\n        &lt;h2&gt;Benchmark Results Summary&lt;\/h2&gt;<br \/>\n        <\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>results_df<span class=\"token punctuation\">.<\/span>to_html<span class=\"token punctuation\">(<\/span>index<span class=\"token operator\">&#061;<\/span><span class=\"token boolean\">False<\/span><span class=\"token punctuation\">,<\/span> classes<span class=\"token operator\">&#061;<\/span><span class=\"token string\">&#039;results-table&#039;<\/span><span class=\"token punctuation\">,<\/span> float_format<span class=\"token operator\">&#061;<\/span><span class=\"token keyword\">lambda<\/span> x<span class=\"token punctuation\">:<\/span> <span class=\"token string-interpolation\"><span class=\"token string\">f&#039;<\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>x<span class=\"token punctuation\">:<\/span><span class=\"token format-spec\">.4f<\/span><span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">&#039;<\/span><\/span> <span class=\"token keyword\">if<\/span> <span class=\"token builtin\">isinstance<\/span><span class=\"token punctuation\">(<\/span>x<span class=\"token punctuation\">,<\/span> <span class=\"token builtin\">float<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token keyword\">else<\/span> x<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\"><br \/>\n    &lt;\/div&gt;<\/p>\n<p>    &lt;div class&#061;&#034;section&#034;&gt;<br \/>\n        &lt;h2&gt;Environment Details&lt;\/h2&gt;<br \/>\n        &lt;table&gt;<br \/>\n            &lt;tr&gt;&lt;th&gt;Item&lt;\/th&gt;&lt;th&gt;Value&lt;\/th&gt;&lt;\/tr&gt;<br \/>\n            &lt;tr&gt;&lt;td&gt;OS&lt;\/td&gt;&lt;td&gt;<\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>env<span class=\"token punctuation\">.<\/span>get<span class=\"token punctuation\">(<\/span><span class=\"token string\">&#039;os&#039;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#039;N\/A&#039;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">&lt;\/td&gt;&lt;\/tr&gt;<br \/>\n            &lt;tr&gt;&lt;td&gt;Python&lt;\/td&gt;&lt;td&gt;<\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>env<span class=\"token punctuation\">.<\/span>get<span class=\"token punctuation\">(<\/span><span class=\"token string\">&#039;python&#039;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#039;N\/A&#039;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">&lt;\/td&gt;&lt;\/tr&gt;<br \/>\n            &lt;tr&gt;&lt;td&gt;PyTorch&lt;\/td&gt;&lt;td&gt;<\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>env<span class=\"token punctuation\">.<\/span>get<span class=\"token punctuation\">(<\/span><span class=\"token string\">&#039;torch&#039;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#039;N\/A&#039;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">&lt;\/td&gt;&lt;\/tr&gt;<br \/>\n            &lt;tr&gt;&lt;td&gt;CUDA&lt;\/td&gt;&lt;td&gt;<\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>env<span class=\"token punctuation\">.<\/span>get<span class=\"token punctuation\">(<\/span><span class=\"token string\">&#039;cuda&#039;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#039;N\/A&#039;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">&lt;\/td&gt;&lt;\/tr&gt;<br \/>\n            &lt;tr&gt;&lt;td&gt;Ultralytics&lt;\/td&gt;&lt;td&gt;<\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>env<span class=\"token punctuation\">.<\/span>get<span class=\"token punctuation\">(<\/span><span class=\"token string\">&#039;ultralytics&#039;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#039;N\/A&#039;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">&lt;\/td&gt;&lt;\/tr&gt;<br \/>\n        &lt;\/table&gt;<br \/>\n    &lt;\/div&gt;<\/p>\n<p>    &lt;div class&#061;&#034;section&#034;&gt;<br \/>\n        &lt;h2&gt;Visualization&lt;\/h2&gt;<br \/>\n        &lt;img src&#061;&#034;benchmark_overview.png&#034; alt&#061;&#034;Benchmark Overview&#034;&gt;<br \/>\n    &lt;\/div&gt;<\/p>\n<p>    &lt;footer style&#061;&#034;margin-top: 60px; padding-top: 20px; border-top: 1px solid #ddd; color: #999; font-size: 12px;&#034;&gt;<br \/>\n        Generated by YOLOv12BenchmarkPipeline | <\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>env<span class=\"token punctuation\">.<\/span>get<span class=\"token punctuation\">(<\/span><span class=\"token string\">&#039;timestamp&#039;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#039;&#039;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\"> |<br \/>\n        All results obtained under the environment described above.<br \/>\n        Results may vary on different hardware.<br \/>\n    &lt;\/footer&gt;<br \/>\n&lt;\/body&gt;<br \/>\n&lt;\/html&gt;&#034;&#034;&#034;<\/span><\/span><br \/>\n        <span class=\"token keyword\">return<\/span> html<\/p>\n<p>    <span class=\"token keyword\">def<\/span> <span class=\"token function\">_generate_reproduce_script<\/span><span class=\"token punctuation\">(<\/span>self<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n        <span class=\"token triple-quoted-string string\">&#034;&#034;&#034;\u751f\u6210\u590d\u73b0\u811a\u672c&#034;&#034;&#034;<\/span><br \/>\n        env <span class=\"token operator\">&#061;<\/span> self<span class=\"token punctuation\">.<\/span>results<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;environment&#034;<\/span><span class=\"token punctuation\">]<\/span><br \/>\n        script <span class=\"token operator\">&#061;<\/span> <span class=\"token string-interpolation\"><span class=\"token string\">f&#034;&#034;&#034;#!\/bin\/bash<br \/>\n# YOLOv12 Benchmark \u590d\u73b0\u811a\u672c<br \/>\n# \u751f\u6210\u65f6\u95f4: <\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>env<span class=\"token punctuation\">.<\/span>get<span class=\"token punctuation\">(<\/span><span class=\"token string\">&#039;timestamp&#039;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#039;N\/A&#039;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\"><br \/>\n# GPU: {env.get(&#039;gpu&#039;, {}).get(&#039;name&#039;, &#039;N\/A&#039;) if isinstance(env.get(&#039;gpu&#039;), dict) else &#039;N\/A&#039;}<\/p>\n<p># 1. \u5b89\u88c5\u4f9d\u8d56<br \/>\npip install ultralytics&#061;&#061;<\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>env<span class=\"token punctuation\">.<\/span>get<span class=\"token punctuation\">(<\/span><span class=\"token string\">&#039;ultralytics&#039;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#039;latest&#039;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\"><br \/>\npip install torch&#061;&#061;<\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>env<span class=\"token punctuation\">.<\/span>get<span class=\"token punctuation\">(<\/span><span class=\"token string\">&#039;torch&#039;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#039;latest&#039;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\"><\/p>\n<p># 2. \u4e0b\u8f7d COCO val2017 \u6570\u636e\u96c6&#xff08;\u5982\u5c1a\u672a\u4e0b\u8f7d&#xff09;<br \/>\n# python -c &#034;from ultralytics.utils.downloads import download; download(&#039;https:\/\/ultralytics.com\/assets\/coco2017val.zip&#039;)&#034;<\/p>\n<p># 3. \u8fd0\u884c Benchmark<br \/>\npython -c &#034;<br \/>\nfrom yolov12_benchmark_pipeline import YOLOv12BenchmarkPipeline<br \/>\npipeline &#061; YOLOv12BenchmarkPipeline()<br \/>\npipeline.run()<br \/>\n&#034;<\/p>\n<p>echo &#034;Benchmark \u5b8c\u6210&#xff0c;\u7ed3\u679c\u4fdd\u5b58\u5728 benchmark_results\/ \u76ee\u5f55&#034;<br \/>\n&#034;&#034;&#034;<\/span><\/span><br \/>\n        script_path <span class=\"token operator\">&#061;<\/span> self<span class=\"token punctuation\">.<\/span>output_dir <span class=\"token operator\">\/<\/span> <span class=\"token string\">&#034;reproduce.sh&#034;<\/span><br \/>\n        <span class=\"token keyword\">with<\/span> <span class=\"token builtin\">open<\/span><span class=\"token punctuation\">(<\/span>script_path<span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;w&#034;<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token keyword\">as<\/span> f<span class=\"token punctuation\">:<\/span><br \/>\n            f<span class=\"token punctuation\">.<\/span>write<span class=\"token punctuation\">(<\/span>script<span class=\"token punctuation\">)<\/span><br \/>\n        <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string-interpolation\"><span class=\"token string\">f&#034;  \u590d\u73b0\u811a\u672c\u5df2\u4fdd\u5b58: <\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>script_path<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">&#034;<\/span><\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p>    <span class=\"token keyword\">def<\/span> <span class=\"token function\">run<\/span><span class=\"token punctuation\">(<\/span>self<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n        <span class=\"token triple-quoted-string string\">&#034;&#034;&#034;\u8fd0\u884c\u5b8c\u6574 Benchmark \u6d41\u6c34\u7ebf&#034;&#034;&#034;<\/span><br \/>\n        <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string-interpolation\"><span class=\"token string\">f&#034;\\\\n<\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span><span class=\"token string\">&#039;&#061;&#039;<\/span><span class=\"token operator\">*<\/span><span class=\"token number\">60<\/span><span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">&#034;<\/span><\/span><span class=\"token punctuation\">)<\/span><br \/>\n        <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;YOLOv12 Benchmark \u6d41\u6c34\u7ebf\u542f\u52a8&#034;<\/span><span class=\"token punctuation\">)<\/span><br \/>\n        <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string-interpolation\"><span class=\"token string\">f&#034;<\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span><span class=\"token string\">&#039;&#061;&#039;<\/span><span class=\"token operator\">*<\/span><span class=\"token number\">60<\/span><span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">&#034;<\/span><\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p>        start_time <span class=\"token operator\">&#061;<\/span> time<span class=\"token punctuation\">.<\/span>time<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p>        self<span class=\"token punctuation\">.<\/span>step1_collect_environment<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><br \/>\n        self<span class=\"token punctuation\">.<\/span>step2_run_accuracy_benchmark<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><br \/>\n        self<span class=\"token punctuation\">.<\/span>step3_run_speed_benchmark<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><br \/>\n        self<span class=\"token punctuation\">.<\/span>step4_collect_resources<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><br \/>\n        self<span class=\"token punctuation\">.<\/span>step5_generate_visualizations<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><br \/>\n        self<span class=\"token punctuation\">.<\/span>step6_generate_report<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p>        elapsed <span class=\"token operator\">&#061;<\/span> time<span class=\"token punctuation\">.<\/span>time<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">&#8211;<\/span> start_time<br \/>\n        <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string-interpolation\"><span class=\"token string\">f&#034;\\\\n\u23f1\ufe0f  \u603b\u8017\u65f6: <\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>elapsed<span class=\"token operator\">\/<\/span><span class=\"token number\">60<\/span><span class=\"token punctuation\">:<\/span><span class=\"token format-spec\">.1f<\/span><span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\"> \u5206\u949f&#034;<\/span><\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p><span class=\"token comment\"># &#061;&#061;&#061;&#061;&#061; \u4f7f\u7528\u793a\u4f8b &#061;&#061;&#061;&#061;&#061;<\/span><br \/>\n<span class=\"token keyword\">if<\/span> __name__ <span class=\"token operator\">&#061;&#061;<\/span> <span class=\"token string\">&#034;__main__&#034;<\/span><span class=\"token punctuation\">:<\/span><br \/>\n    <span class=\"token comment\"># \u65b9\u5f0f1&#xff1a;\u4f7f\u7528\u9ed8\u8ba4\u914d\u7f6e&#xff08;\u6a21\u578b\u6587\u4ef6\u9700\u5b58\u5728&#xff09;<\/span><br \/>\n    <span class=\"token comment\"># pipeline &#061; YOLOv12BenchmarkPipeline()<\/span><br \/>\n    <span class=\"token comment\"># pipeline.run()<\/span><\/p>\n<p>    <span class=\"token comment\"># \u65b9\u5f0f2&#xff1a;\u4f7f\u7528\u81ea\u5b9a\u4e49\u914d\u7f6e\u6587\u4ef6<\/span><br \/>\n    <span class=\"token comment\"># pipeline &#061; YOLOv12BenchmarkPipeline(config_path&#061;&#034;my_benchmark.yaml&#034;)<\/span><br \/>\n    <span class=\"token comment\"># pipeline.run()<\/span><\/p>\n<p>    <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;YOLOv12BenchmarkPipeline \u5b9a\u4e49\u5b8c\u6210&#034;<\/span><span class=\"token punctuation\">)<\/span><br \/>\n    <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;\u4fee\u6539 config \u4e2d\u7684\u6a21\u578b\u8def\u5f84\u548c\u6570\u636e\u96c6\u8def\u5f84\u540e\u5373\u53ef\u8fd0\u884c&#034;<\/span><span class=\"token punctuation\">)<\/span><\/p>\n<h4>\u5341\u4e09\u3001Benchmark \u914d\u7f6e\u6587\u4ef6\u6a21\u677f<\/h4>\n<p>\u4e3a\u4e86\u8ba9 Benchmark \u6d41\u6c34\u7ebf\u53ef\u914d\u7f6e\u3001\u53ef\u590d\u7528&#xff0c;\u6211\u4eec\u63d0\u4f9b\u4e00\u4e2a\u5b8c\u6574\u7684 YAML \u914d\u7f6e\u6587\u4ef6\u6a21\u677f&#xff1a;<\/p>\n<p><span class=\"token comment\"># benchmark_config.yaml<\/span><br \/>\n<span class=\"token comment\"># YOLOv12 Benchmark \u5b8c\u6574\u914d\u7f6e\u6a21\u677f<\/span><br \/>\n<span class=\"token comment\"># \u4fee\u6539\u6b64\u6587\u4ef6\u4ee5\u9002\u914d\u4f60\u7684\u6d4b\u8bd5\u573a\u666f&#xff0c;\u65e0\u9700\u4fee\u6539 Python \u4ee3\u7801<\/span><\/p>\n<p><span class=\"token comment\"># &#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;<\/span><br \/>\n<span class=\"token comment\"># \u62a5\u544a\u5143\u4fe1\u606f<\/span><br \/>\n<span class=\"token comment\"># &#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;<\/span><br \/>\n<span class=\"token key atrule\">report<\/span><span class=\"token punctuation\">:<\/span><br \/>\n  <span class=\"token key atrule\">title<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">&#034;YOLOv12 \u5168\u89c4\u683c COCO val2017 Benchmark \u62a5\u544a&#034;<\/span><br \/>\n  <span class=\"token key atrule\">version<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">&#034;v1.0&#034;<\/span><br \/>\n  <span class=\"token key atrule\">author<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">&#034;\u4f60\u7684\u540d\u5b57&#034;<\/span><br \/>\n  <span class=\"token key atrule\">team<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">&#034;CV\u7b97\u6cd5\u7ec4&#034;<\/span><br \/>\n  <span class=\"token key atrule\">purpose<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">&#034;\u4e3a\u9879\u76eeXXX\u7684\u8fb9\u7f18\u7aef\u90e8\u7f72\u9009\u578b\u63d0\u4f9b\u6570\u636e\u652f\u6491&#034;<\/span><br \/>\n  <span class=\"token key atrule\">created_date<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">&#034;2025-03-15&#034;<\/span><\/p>\n<p><span class=\"token comment\"># &#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;<\/span><br \/>\n<span class=\"token comment\"># \u6d4b\u8bd5\u6a21\u578b\u5217\u8868<\/span><br \/>\n<span class=\"token comment\"># &#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;<\/span><br \/>\n<span class=\"token key atrule\">models<\/span><span class=\"token punctuation\">:<\/span><br \/>\n  <span class=\"token punctuation\">&#8211;<\/span> <span class=\"token key atrule\">name<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">&#034;YOLOv12n&#034;<\/span><br \/>\n    <span class=\"token key atrule\">path<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">&#034;yolov12n.pt&#034;<\/span><br \/>\n    <span class=\"token key atrule\">note<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">&#034;\u6700\u5c0f\u89c4\u683c&#xff0c;\u9002\u5408\u8fb9\u7f18\u7aef&#034;<\/span><br \/>\n  <span class=\"token punctuation\">&#8211;<\/span> <span class=\"token key atrule\">name<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">&#034;YOLOv12s&#034;<\/span><br \/>\n    <span class=\"token key atrule\">path<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">&#034;yolov12s.pt&#034;<\/span><br \/>\n    <span class=\"token key atrule\">note<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">&#034;\u5c0f\u89c4\u683c&#xff0c;\u7cbe\u5ea6\u901f\u5ea6\u5e73\u8861&#034;<\/span><br \/>\n  <span class=\"token punctuation\">&#8211;<\/span> <span class=\"token key atrule\">name<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">&#034;YOLOv12m&#034;<\/span><br \/>\n    <span class=\"token key atrule\">path<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">&#034;yolov12m.pt&#034;<\/span><br \/>\n    <span class=\"token key atrule\">note<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">&#034;\u4e2d\u7b49\u89c4\u683c&#034;<\/span><br \/>\n  <span class=\"token punctuation\">&#8211;<\/span> <span class=\"token key atrule\">name<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">&#034;YOLOv12l&#034;<\/span><br \/>\n    <span class=\"token key atrule\">path<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">&#034;yolov12l.pt&#034;<\/span><br \/>\n    <span class=\"token key atrule\">note<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">&#034;\u5927\u89c4\u683c&#034;<\/span><br \/>\n  <span class=\"token punctuation\">&#8211;<\/span> <span class=\"token key atrule\">name<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">&#034;YOLOv12x&#034;<\/span><br \/>\n    <span class=\"token key atrule\">path<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">&#034;yolov12x.pt&#034;<\/span><br \/>\n    <span class=\"token key atrule\">note<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">&#034;\u6700\u5927\u89c4\u683c&#xff0c;\u6700\u9ad8\u7cbe\u5ea6&#034;<\/span><\/p>\n<p><span class=\"token comment\"># &#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;<\/span><br \/>\n<span class=\"token comment\"># \u7cbe\u5ea6\u6d4b\u8bd5\u914d\u7f6e<\/span><br \/>\n<span class=\"token comment\"># &#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;<\/span><br \/>\n<span class=\"token key atrule\">accuracy<\/span><span class=\"token punctuation\">:<\/span><br \/>\n  <span class=\"token key atrule\">data<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">&#034;coco.yaml&#034;<\/span>          <span class=\"token comment\"># \u6570\u636e\u96c6\u914d\u7f6e\u6587\u4ef6<\/span><br \/>\n  <span class=\"token key atrule\">imgsz<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token number\">640<\/span>                 <span class=\"token comment\"># \u8f93\u5165\u5c3a\u5bf8<\/span><br \/>\n  <span class=\"token key atrule\">batch<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token number\">16<\/span>                  <span class=\"token comment\"># \u9a8c\u8bc1 batch \u5927\u5c0f<\/span><br \/>\n  <span class=\"token key atrule\">conf<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token number\">0.001<\/span>                <span class=\"token comment\"># \u9a8c\u8bc1\u7528\u4f4e\u7f6e\u4fe1\u5ea6\u9608\u503c&#xff08;\u4e0d\u5f71\u54cdmAP&#xff09;<\/span><br \/>\n  <span class=\"token key atrule\">iou<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token number\">0.7<\/span>                   <span class=\"token comment\"># NMS IoU \u9608\u503c<\/span><br \/>\n  <span class=\"token key atrule\">split<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">&#034;val&#034;<\/span>               <span class=\"token comment\"># \u4f7f\u7528\u9a8c\u8bc1\u96c6<\/span><br \/>\n  <span class=\"token key atrule\">save_json<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token boolean important\">true<\/span>            <span class=\"token comment\"># \u4fdd\u5b58 COCO \u683c\u5f0f\u9884\u6d4b\u7ed3\u679c&#xff08;\u7528\u4e8e\u5b98\u65b9\u8bc4\u4f30\u811a\u672c&#xff09;<\/span><br \/>\n  <span class=\"token key atrule\">plots<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token boolean important\">true<\/span>                <span class=\"token comment\"># \u751f\u6210 PR \u66f2\u7ebf\u7b49\u56fe\u8868<\/span><br \/>\n  <span class=\"token key atrule\">workers<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token number\">8<\/span>                 <span class=\"token comment\"># \u6570\u636e\u52a0\u8f7d\u7ebf\u7a0b\u6570<\/span><\/p>\n<p><span class=\"token comment\"># &#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;<\/span><br \/>\n<span class=\"token comment\"># \u901f\u5ea6\u6d4b\u8bd5\u914d\u7f6e<\/span><br \/>\n<span class=\"token comment\"># &#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;<\/span><br \/>\n<span class=\"token key atrule\">speed<\/span><span class=\"token punctuation\">:<\/span><br \/>\n  <span class=\"token key atrule\">imgsz<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token number\">640<\/span><br \/>\n  <span class=\"token key atrule\">batch_sizes<\/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 number\">16<\/span><span class=\"token punctuation\">]<\/span>   <span class=\"token comment\"># \u6d4b\u8bd5\u591a\u4e2a batch size<\/span><br \/>\n  <span class=\"token key atrule\">n_warmup<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token number\">10<\/span>               <span class=\"token comment\"># \u9884\u70ed\u6b21\u6570<\/span><br \/>\n  <span class=\"token key atrule\">n_repeat<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token number\">200<\/span>              <span class=\"token comment\"># \u6b63\u5f0f\u6d4b\u8bd5\u6b21\u6570<\/span><br \/>\n  <span class=\"token key atrule\">half<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token boolean important\">true<\/span>                 <span class=\"token comment\"># \u662f\u5426\u6d4b\u8bd5 FP16&#xff08;\u9700\u8981 CUDA&#xff09;<\/span><br \/>\n  <span class=\"token comment\"># \u6ce8\u610f&#xff1a;half&#061;true \u4ec5\u5728 CUDA \u8bbe\u5907\u4e0a\u6709\u6548<\/span><\/p>\n<p><span class=\"token comment\"># &#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;<\/span><br \/>\n<span class=\"token comment\"># \u63a8\u7406\u683c\u5f0f\u914d\u7f6e&#xff08;\u5bfc\u51fa\u540e\u518d\u6d4b&#xff09;<\/span><br \/>\n<span class=\"token comment\"># &#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;<\/span><br \/>\n<span class=\"token key atrule\">formats_to_test<\/span><span class=\"token punctuation\">:<\/span><br \/>\n  <span class=\"token punctuation\">&#8211;<\/span> <span class=\"token key atrule\">format<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">&#034;pytorch&#034;<\/span><br \/>\n    <span class=\"token key atrule\">suffix<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">&#034;.pt&#034;<\/span><br \/>\n  <span class=\"token punctuation\">&#8211;<\/span> <span class=\"token key atrule\">format<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">&#034;onnx&#034;<\/span><br \/>\n    <span class=\"token key atrule\">suffix<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">&#034;.onnx&#034;<\/span><br \/>\n    <span class=\"token key atrule\">export_args<\/span><span class=\"token punctuation\">:<\/span><br \/>\n      <span class=\"token key atrule\">simplify<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token boolean important\">true<\/span><br \/>\n      <span class=\"token key atrule\">opset<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token number\">17<\/span><br \/>\n  <span class=\"token punctuation\">&#8211;<\/span> <span class=\"token key atrule\">format<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">&#034;engine&#034;<\/span>          <span class=\"token comment\"># TensorRT<\/span><br \/>\n    <span class=\"token key atrule\">suffix<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">&#034;.engine&#034;<\/span><br \/>\n    <span class=\"token key atrule\">export_args<\/span><span class=\"token punctuation\">:<\/span><br \/>\n      <span class=\"token key atrule\">half<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token boolean important\">true<\/span>              <span class=\"token comment\"># FP16<\/span><br \/>\n      <span class=\"token key atrule\">workspace<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token number\">4<\/span>            <span class=\"token comment\"># GB<\/span><\/p>\n<p><span class=\"token comment\"># &#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;<\/span><br \/>\n<span class=\"token comment\"># \u786c\u4ef6\u4e0e\u8bbe\u5907\u914d\u7f6e<\/span><br \/>\n<span class=\"token comment\"># &#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;<\/span><br \/>\n<span class=\"token key atrule\">device<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">&#034;cuda:0&#034;<\/span>              <span class=\"token comment\"># \u76ee\u6807\u63a8\u7406\u8bbe\u5907<\/span><br \/>\n<span class=\"token comment\"># device: &#034;cpu&#034;               # CPU \u63a8\u7406<\/span><\/p>\n<p><span class=\"token comment\"># &#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;<\/span><br \/>\n<span class=\"token comment\"># \u8f93\u51fa\u914d\u7f6e<\/span><br \/>\n<span class=\"token comment\"># &#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;<\/span><br \/>\n<span class=\"token key atrule\">output<\/span><span class=\"token punctuation\">:<\/span><br \/>\n  <span class=\"token key atrule\">dir<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">&#034;benchmark_results&#034;<\/span>    <span class=\"token comment\"># \u8f93\u51fa\u76ee\u5f55<\/span><br \/>\n  <span class=\"token key atrule\">save_csv<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token boolean important\">true<\/span>              <span class=\"token comment\"># \u4fdd\u5b58\u539f\u59cb\u6570\u636e CSV<\/span><br \/>\n  <span class=\"token key atrule\">save_html<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token boolean important\">true<\/span>             <span class=\"token comment\"># \u751f\u6210 HTML \u62a5\u544a<\/span><br \/>\n  <span class=\"token key atrule\">save_plots<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token boolean important\">true<\/span>            <span class=\"token comment\"># \u751f\u6210\u53ef\u89c6\u5316\u56fe\u8868<\/span><br \/>\n  <span class=\"token key atrule\">plot_format<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">&#034;png&#034;<\/span>          <span class=\"token comment\"># \u56fe\u8868\u683c\u5f0f&#xff1a;png \/ pdf \/ svg<\/span><br \/>\n  <span class=\"token key atrule\">plot_dpi<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token number\">150<\/span>               <span class=\"token comment\"># \u56fe\u8868\u5206\u8fa8\u7387<\/span><\/p>\n<h4>\u5341\u56db\u3001\u62a5\u544a\u8d28\u91cf\u68c0\u67e5\u6e05\u5355<\/h4>\n<p>\u6bcf\u6b21\u751f\u6210\u62a5\u544a\u540e&#xff0c;\u5efa\u8bae\u5bf9\u7167\u4ee5\u4e0b\u68c0\u67e5\u6e05\u5355\u8fdb\u884c\u81ea\u67e5&#xff0c;\u786e\u4fdd\u62a5\u544a\u8d28\u91cf&#xff1a;<\/p>\n<p><span class=\"token keyword\">def<\/span> <span class=\"token function\">print_report_checklist<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n    <span class=\"token triple-quoted-string string\">&#034;&#034;&#034;<br \/>\n    \u6253\u5370 Benchmark \u62a5\u544a\u8d28\u91cf\u68c0\u67e5\u6e05\u5355<br \/>\n    \u6bcf\u6b21\u5b8c\u6210\u62a5\u544a\u524d\u5bf9\u7167\u68c0\u67e5&#xff0c;\u786e\u4fdd\u4e0d\u9057\u6f0f\u5173\u952e\u4fe1\u606f<br \/>\n    &#034;&#034;&#034;<\/span><\/p>\n<p>    checklist <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n        <span class=\"token string\">&#034;\u5143\u4fe1\u606f\u5b8c\u6574\u6027&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token punctuation\">[<\/span><br \/>\n            <span class=\"token string\">&#034;\u2705 \u62a5\u544a\u6807\u9898\u548c\u7248\u672c\u53f7\u5df2\u586b\u5199&#034;<\/span><span class=\"token punctuation\">,<\/span><br \/>\n            <span class=\"token string\">&#034;\u2705 \u4f5c\u8005\u548c\u6d4b\u8bd5\u65e5\u671f\u5df2\u586b\u5199&#034;<\/span><span class=\"token punctuation\">,<\/span><br \/>\n            <span class=\"token string\">&#034;\u2705 \u6d4b\u8bd5\u76ee\u7684\u5df2\u660e\u786e\u8bf4\u660e&#034;<\/span><span class=\"token punctuation\">,<\/span><br \/>\n            <span class=\"token string\">&#034;\u2705 ultralytics \u7248\u672c\u53f7\u5df2\u8bb0\u5f55&#xff08;\u7cbe\u786e\u5230 pip \u7248\u672c&#xff09;&#034;<\/span><span class=\"token punctuation\">,<\/span><br \/>\n            <span class=\"token string\">&#034;\u2705 \u5173\u8054\u9879\u76ee\u6216\u4efb\u52a1\u7f16\u53f7\u5df2\u586b\u5199&#034;<\/span><span class=\"token punctuation\">,<\/span><br \/>\n        <span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">,<\/span><br \/>\n        <span class=\"token string\">&#034;\u6d4b\u8bd5\u73af\u5883\u5b8c\u6574\u6027&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token punctuation\">[<\/span><br \/>\n            <span class=\"token string\">&#034;\u2705 GPU \u578b\u53f7\u548c\u663e\u5b58\u5927\u5c0f\u5df2\u8bb0\u5f55&#034;<\/span><span class=\"token punctuation\">,<\/span><br \/>\n            <span class=\"token string\">&#034;\u2705 CUDA \u548c cuDNN \u7248\u672c\u5df2\u8bb0\u5f55&#034;<\/span><span class=\"token punctuation\">,<\/span><br \/>\n            <span class=\"token string\">&#034;\u2705 \u64cd\u4f5c\u7cfb\u7edf\u7248\u672c\u5df2\u8bb0\u5f55&#034;<\/span><span class=\"token punctuation\">,<\/span><br \/>\n            <span class=\"token string\">&#034;\u2705 PyTorch \u7248\u672c\u5df2\u8bb0\u5f55&#034;<\/span><span class=\"token punctuation\">,<\/span><br \/>\n            <span class=\"token string\">&#034;\u2705 \u63a8\u7406\u6846\u67b6\u7248\u672c\u5df2\u8bb0\u5f55&#xff08;TensorRT\/ONNX Runtime&#xff09;&#034;<\/span><span class=\"token punctuation\">,<\/span><br \/>\n        <span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">,<\/span><br \/>\n        <span class=\"token string\">&#034;\u6570\u636e\u96c6\u8bf4\u660e\u5b8c\u6574\u6027&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token punctuation\">[<\/span><br \/>\n            <span class=\"token string\">&#034;\u2705 \u6570\u636e\u96c6\u540d\u79f0\u548c\u7248\u672c\u5df2\u8bf4\u660e&#xff08;\u5982 COCO val2017&#xff09;&#034;<\/span><span class=\"token punctuation\">,<\/span><br \/>\n            <span class=\"token string\">&#034;\u2705 \u56fe\u50cf\u6570\u91cf\u5df2\u8bb0\u5f55&#034;<\/span><span class=\"token punctuation\">,<\/span><br \/>\n            <span class=\"token string\">&#034;\u2705 \u7c7b\u522b\u6570\u91cf\u548c\u5217\u8868\u5df2\u8bb0\u5f55&#034;<\/span><span class=\"token punctuation\">,<\/span><br \/>\n            <span class=\"token string\">&#034;\u2705 \u9884\u5904\u7406\u53c2\u6570\u5df2\u8bf4\u660e&#xff08;\u8f93\u5165\u5c3a\u5bf8\u3001letterbox\u3001\u5f52\u4e00\u5316&#xff09;&#034;<\/span><span class=\"token punctuation\">,<\/span><br \/>\n            <span class=\"token string\">&#034;\u2705 \u5982\u4f7f\u7528\u81ea\u5b9a\u4e49\u6570\u636e\u96c6&#xff0c;\u5df2\u8bf4\u660e\u91c7\u96c6\u573a\u666f\u548c\u6807\u6ce8\u4fe1\u606f&#034;<\/span><span class=\"token punctuation\">,<\/span><br \/>\n        <span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">,<\/span><br \/>\n        <span class=\"token string\">&#034;\u7cbe\u5ea6\u6d4b\u8bd5\u4e25\u8c28\u6027&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token punctuation\">[<\/span><br \/>\n            <span class=\"token string\">&#034;\u2705 \u4f7f\u7528 val \u96c6&#xff08;\u975e train \u96c6&#xff09;\u8bc4\u4f30&#034;<\/span><span class=\"token punctuation\">,<\/span><br \/>\n            <span class=\"token string\">&#034;\u2705 conf \u53c2\u6570\u8bbe\u7f6e\u4e3a\u6781\u4f4e\u503c&#xff08;\u5982 0.001&#xff09;\u8fdb\u884c\u5168\u9762\u8bc4\u4f30&#034;<\/span><span class=\"token punctuation\">,<\/span><br \/>\n            <span class=\"token string\">&#034;\u2705 mAP&#064;0.5 \u548c mAP&#064;0.5:0.95 \u90fd\u6709\u8bb0\u5f55&#034;<\/span><span class=\"token punctuation\">,<\/span><br \/>\n            <span class=\"token string\">&#034;\u2705 Precision\u3001Recall\u3001F1 \u90fd\u6709\u8bb0\u5f55&#034;<\/span><span class=\"token punctuation\">,<\/span><br \/>\n            <span class=\"token string\">&#034;\u2705 \u6bcf\u7c7b AP \u7ed3\u679c&#xff08;\u53ef\u9009&#xff0c;\u4f46\u66f4\u5b8c\u6574&#xff09;&#034;<\/span><span class=\"token punctuation\">,<\/span><br \/>\n        <span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">,<\/span><br \/>\n        <span class=\"token string\">&#034;\u901f\u5ea6\u6d4b\u8bd5\u4e25\u8c28\u6027&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token punctuation\">[<\/span><br \/>\n            <span class=\"token string\">&#034;\u2705 \u8fdb\u884c\u4e86\u9884\u70ed&#xff08;warmup&#xff09;\u63a8\u7406&#034;<\/span><span class=\"token punctuation\">,<\/span><br \/>\n            <span class=\"token string\">&#034;\u2705 \u91cd\u590d\u6b21\u6570\u8db3\u591f&#xff08;\u2265100\u6b21&#xff09;&#034;<\/span><span class=\"token punctuation\">,<\/span><br \/>\n            <span class=\"token string\">&#034;\u2705 \u4f7f\u7528 torch.cuda.synchronize() \u786e\u4fdd\u540c\u6b65\u8ba1\u65f6&#034;<\/span><span class=\"token punctuation\">,<\/span><br \/>\n            <span class=\"token string\">&#034;\u2705 batch size \u5df2\u660e\u786e\u8bf4\u660e&#034;<\/span><span class=\"token punctuation\">,<\/span><br \/>\n            <span class=\"token string\">&#034;\u2705 \u6d4b\u8bd5\u4f7f\u7528\u5408\u6210\u6570\u636e&#xff08;\u6392\u9664 IO \u5e72\u6270&#xff09;&#034;<\/span><span class=\"token punctuation\">,<\/span><br \/>\n            <span class=\"token string\">&#034;\u2705 \u8bb0\u5f55\u4e86\u5747\u503c\u548c P95\/P99 \u5ef6\u8fdf&#xff08;\u4e0d\u53ea\u662f\u5747\u503c&#xff09;&#034;<\/span><span class=\"token punctuation\">,<\/span><br \/>\n            <span class=\"token string\">&#034;\u2705 FPS \u8ba1\u7b97\u8003\u8651\u4e86 batch size&#034;<\/span><span class=\"token punctuation\">,<\/span><br \/>\n        <span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">,<\/span><br \/>\n        <span class=\"token string\">&#034;\u8d44\u6e90\u5360\u7528\u5b8c\u6574\u6027&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token punctuation\">[<\/span><br \/>\n            <span class=\"token string\">&#034;\u2705 \u6a21\u578b\u6587\u4ef6\u5927\u5c0f\u5df2\u8bb0\u5f55&#034;<\/span><span class=\"token punctuation\">,<\/span><br \/>\n            <span class=\"token string\">&#034;\u2705 \u53c2\u6570\u91cf&#xff08;Params&#xff09;\u5df2\u8bb0\u5f55&#034;<\/span><span class=\"token punctuation\">,<\/span><br \/>\n            <span class=\"token string\">&#034;\u2705 GFLOPs \u5df2\u8bb0\u5f55&#034;<\/span><span class=\"token punctuation\">,<\/span><br \/>\n            <span class=\"token string\">&#034;\u2705 \u63a8\u7406\u65f6\u663e\u5b58\u5cf0\u503c\u5df2\u8bb0\u5f55&#034;<\/span><span class=\"token punctuation\">,<\/span><br \/>\n        <span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">,<\/span><br \/>\n        <span class=\"token string\">&#034;\u53ef\u89c6\u5316\u5b8c\u6574\u6027&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token punctuation\">[<\/span><br \/>\n            <span class=\"token string\">&#034;\u2705 \u7cbe\u5ea6\u5bf9\u6bd4\u56fe&#xff08;\u67f1\u72b6\u56fe&#xff09;&#034;<\/span><span class=\"token punctuation\">,<\/span><br \/>\n            <span class=\"token string\">&#034;\u2705 \u901f\u5ea6\u5bf9\u6bd4\u56fe&#xff08;\u5ef6\u8fdf\/FPS&#xff09;&#034;<\/span><span class=\"token punctuation\">,<\/span><br \/>\n            <span class=\"token string\">&#034;\u2705 \u8d44\u6e90\u5360\u7528\u6982\u89c8\u56fe&#034;<\/span><span class=\"token punctuation\">,<\/span><br \/>\n            <span class=\"token string\">&#034;\u2705 \u96f7\u8fbe\u56fe&#xff08;\u591a\u7ef4\u5ea6\u7efc\u5408\u5bf9\u6bd4&#xff09;&#034;<\/span><span class=\"token punctuation\">,<\/span><br \/>\n            <span class=\"token string\">&#034;\u2705 \u5e15\u7d2f\u6258\u524d\u6cbf\u56fe&#xff08;\u7cbe\u5ea6-\u901f\u5ea6\u6743\u8861&#xff09;&#034;<\/span><span class=\"token punctuation\">,<\/span><br \/>\n        <span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">,<\/span><br \/>\n        <span class=\"token string\">&#034;\u7ed3\u8bba\u8d28\u91cf&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token punctuation\">[<\/span><br \/>\n            <span class=\"token string\">&#034;\u2705 \u660e\u786e\u7ed9\u51fa\u63a8\u8350\u6a21\u578b\u548c\u63a8\u8350\u683c\u5f0f&#034;<\/span><span class=\"token punctuation\">,<\/span><br \/>\n            <span class=\"token string\">&#034;\u2705 \u63a8\u8350\u7406\u7531\u57fa\u4e8e\u6570\u636e&#xff0c;\u6709\u5177\u4f53\u6570\u5b57\u652f\u6491&#034;<\/span><span class=\"token punctuation\">,<\/span><br \/>\n            <span class=\"token string\">&#034;\u2705 \u8bf4\u660e\u4e86\u7ed3\u8bba\u7684\u9002\u7528\u6761\u4ef6&#xff08;\u7279\u5b9a\u786c\u4ef6\/\u573a\u666f&#xff09;&#034;<\/span><span class=\"token punctuation\">,<\/span><br \/>\n            <span class=\"token string\">&#034;\u2705 \u8bda\u5b9e\u6307\u51fa\u4e86\u5c40\u9650\u6027\u548c\u6ce8\u610f\u4e8b\u9879&#034;<\/span><span class=\"token punctuation\">,<\/span><br \/>\n            <span class=\"token string\">&#034;\u2705 \u63d0\u4f9b\u4e86\u53ef\u64cd\u4f5c\u7684\u4e0b\u4e00\u6b65\u5efa\u8bae&#034;<\/span><span class=\"token punctuation\">,<\/span><br \/>\n        <span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">,<\/span><br \/>\n        <span class=\"token string\">&#034;\u9644\u5f55\u5b8c\u6574\u6027&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token punctuation\">[<\/span><br \/>\n            <span class=\"token string\">&#034;\u2705 \u539f\u59cb\u7ed3\u679c CSV \u5df2\u9644\u4e0a&#034;<\/span><span class=\"token punctuation\">,<\/span><br \/>\n            <span class=\"token string\">&#034;\u2705 \u73af\u5883\u4fe1\u606f JSON \u5df2\u9644\u4e0a&#034;<\/span><span class=\"token punctuation\">,<\/span><br \/>\n            <span class=\"token string\">&#034;\u2705 \u6d4b\u8bd5\u811a\u672c\u6216\u590d\u73b0\u811a\u672c\u5df2\u9644\u4e0a&#034;<\/span><span class=\"token punctuation\">,<\/span><br \/>\n            <span class=\"token string\">&#034;\u2705 \u53ef\u89c6\u5316\u56fe\u8868\u5df2\u5d4c\u5165\u6216\u9644\u4e0a&#034;<\/span><span class=\"token punctuation\">,<\/span><br \/>\n        <span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">,<\/span><br \/>\n    <span class=\"token punctuation\">}<\/span><\/p>\n<p>    total_items <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">0<\/span><br \/>\n    <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;\\\\n&#034;<\/span> <span class=\"token operator\">&#043;<\/span> <span class=\"token string\">&#034;&#061;&#034;<\/span><span class=\"token operator\">*<\/span><span class=\"token number\">60<\/span><span class=\"token punctuation\">)<\/span><br \/>\n    <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;&#x1f4cb; YOLOv12 Benchmark \u62a5\u544a\u8d28\u91cf\u68c0\u67e5\u6e05\u5355&#034;<\/span><span class=\"token punctuation\">)<\/span><br \/>\n    <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;&#061;&#034;<\/span><span class=\"token operator\">*<\/span><span class=\"token number\">60<\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p>    <span class=\"token keyword\">for<\/span> category<span class=\"token punctuation\">,<\/span> items <span class=\"token keyword\">in<\/span> checklist<span class=\"token punctuation\">.<\/span>items<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n        <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string-interpolation\"><span class=\"token string\">f&#034;\\\\n\u3010<\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>category<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">\u3011&#034;<\/span><\/span><span class=\"token punctuation\">)<\/span><br \/>\n        <span class=\"token keyword\">for<\/span> item <span class=\"token keyword\">in<\/span> items<span class=\"token punctuation\">:<\/span><br \/>\n            <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string-interpolation\"><span class=\"token string\">f&#034;  <\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>item<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">&#034;<\/span><\/span><span class=\"token punctuation\">)<\/span><br \/>\n        total_items <span class=\"token operator\">&#043;&#061;<\/span> <span class=\"token builtin\">len<\/span><span class=\"token punctuation\">(<\/span>items<span class=\"token punctuation\">)<\/span><\/p>\n<p>    <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string-interpolation\"><span class=\"token string\">f&#034;\\\\n<\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span><span class=\"token string\">&#039;&#061;&#039;<\/span><span class=\"token operator\">*<\/span><span class=\"token number\">60<\/span><span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">&#034;<\/span><\/span><span class=\"token punctuation\">)<\/span><br \/>\n    <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string-interpolation\"><span class=\"token string\">f&#034;\u5171 <\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>total_items<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\"> \u9879\u68c0\u67e5\u9879&#xff0c;\u8bf7\u9010\u9879\u786e\u8ba4\u540e\u518d\u53d1\u5e03\u62a5\u544a&#034;<\/span><\/span><span class=\"token punctuation\">)<\/span><br \/>\n    <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;&#061;&#034;<\/span><span class=\"token operator\">*<\/span><span class=\"token number\">60<\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p>print_report_checklist<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><\/p>\n<h4>\u5341\u4e94\u3001\u62a5\u544a\u5206\u53d1\u4e0e\u7248\u672c\u7ba1\u7406<\/h4>\n<p>\u4e00\u4efd\u62a5\u544a\u4e0d\u662f\u5199\u5b8c\u5c31\u5b8c\u4e86&#xff0c;\u5b83\u8fd8\u9700\u8981\u88ab\u5206\u53d1\u3001\u88ab\u7248\u672c\u5316\u7ba1\u7406\u3002<\/p>\n<p>\u5206\u53d1\u5bf9\u8c61\u4e0e\u5173\u6ce8\u70b9&#xff1a;<\/p>\n<p>\u4e0d\u540c\u53d7\u4f17\u5bf9\u62a5\u544a\u5173\u6ce8\u7684\u5185\u5bb9\u4e0d\u540c\u3002\u7814\u53d1\u5de5\u7a0b\u5e08\u5173\u6ce8\u6d4b\u8bd5\u65b9\u6cd5\u548c\u539f\u59cb\u6570\u636e&#xff0c;\u80fd\u81ea\u884c\u9a8c\u8bc1\u548c\u590d\u73b0&#xff1b;\u6280\u672f\u8d1f\u8d23\u4eba\u5173\u6ce8\u7efc\u5408\u5bf9\u6bd4\u56fe\u548c\u7ed3\u8bba\u5efa\u8bae&#xff0c;\u9700\u8981\u5feb\u901f\u5224\u65ad\u9009\u578b\u65b9\u5411&#xff1b;\u4ea7\u54c1\u7ecf\u7406\u548c\u5ba2\u6237\u5173\u6ce8\u7cbe\u5ea6\u548c\u901f\u5ea6\u7684\u76f4\u89c2\u6570\u5b57&#xff0c;\u4ee5\u53ca\u5b83\u4eec\u610f\u5473\u7740\u4ec0\u4e48&#xff08;\u201c\u6bcf\u79d2\u80fd\u5904\u7406\u591a\u5c11\u8def\u89c6\u9891\u201d&#xff09;\u3002<\/p>\n<p>\u4e00\u4efd\u597d\u7684\u62a5\u544a\u5e94\u8be5\u8ba9\u4e0d\u540c\u53d7\u4f17\u90fd\u80fd\u627e\u5230\u81ea\u5df1\u60f3\u8981\u7684\u4fe1\u606f&#xff0c;\u800c\u4e0d\u9700\u8981\u4e00\u904d\u904d\u5f00\u4f1a\u89e3\u91ca\u3002<\/p>\n<p>\u7248\u672c\u7ba1\u7406\u5efa\u8bae&#xff1a;<\/p>\n<p>Benchmark \u62a5\u544a\u662f\u6d3b\u6587\u6863&#xff0c;\u968f\u7740\u6a21\u578b\u7248\u672c\u3001\u6570\u636e\u96c6\u3001\u786c\u4ef6\u73af\u5883\u7684\u53d8\u5316\u9700\u8981\u66f4\u65b0\u3002\u5efa\u8bae&#xff1a;<\/p>\n<li>\u7528 Git \u7ba1\u7406\u62a5\u544a\u53ca\u9644\u5e26\u7684\u6d4b\u8bd5\u811a\u672c\u548c\u539f\u59cb\u6570\u636e CSV<\/li>\n<li>\u62a5\u544a\u6587\u4ef6\u540d\u5305\u542b\u7248\u672c\u548c\u65e5\u671f&#xff0c;\u5982 yolov12_benchmark_v1.2_20250315.html<\/li>\n<li>\u6bcf\u6b21\u66f4\u65b0\u65f6\u5728\u62a5\u544a\u5934\u90e8\u7684&#034;\u66f4\u65b0\u5386\u53f2&#034;\u8868\u683c\u91cc\u8bb0\u5f55\u53d8\u66f4\u539f\u56e0\u548c\u53d8\u66f4\u5185\u5bb9<\/li>\n<li>\u91cd\u5927\u7248\u672c\u66f4\u65b0&#xff08;\u5982\u6362\u786c\u4ef6\u3001\u6362\u6570\u636e\u96c6&#xff09;\u5e94\u521b\u5efa\u65b0\u62a5\u544a&#xff0c;\u800c\u4e0d\u662f\u76f4\u63a5\u8986\u76d6\u539f\u6709\u62a5\u544a<\/li>\n<p><span class=\"token keyword\">def<\/span> <span class=\"token function\">create_report_changelog_template<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">&#8211;<\/span><span class=\"token operator\">&gt;<\/span> <span class=\"token builtin\">str<\/span><span class=\"token punctuation\">:<\/span><br \/>\n    <span class=\"token triple-quoted-string string\">&#034;&#034;&#034;<br \/>\n    \u751f\u6210\u62a5\u544a\u66f4\u65b0\u5386\u53f2\u6a21\u677f<br \/>\n    \u653e\u5728\u62a5\u544a\u5f00\u5934\u7684\u663e\u8457\u4f4d\u7f6e<br \/>\n    &#034;&#034;&#034;<\/span><br \/>\n    changelog <span class=\"token operator\">&#061;<\/span> <span class=\"token triple-quoted-string string\">&#034;&#034;&#034;<br \/>\n## \u7248\u672c\u66f4\u65b0\u5386\u53f2<\/p>\n<p>| \u7248\u672c   | \u65e5\u671f       | \u66f4\u65b0\u4eba | \u66f4\u65b0\u5185\u5bb9                                    |<br \/>\n|&#8212;&#8212;&#8211;|&#8212;&#8212;&#8212;&#8212;|&#8212;&#8212;&#8211;|&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;|<br \/>\n| v1.0   | 2025-03-15 | \u5f20\u4e09   | \u521d\u59cb\u7248\u672c&#xff0c;COCO val2017&#xff0c;A100 GPU             |<br \/>\n| v1.1   | 2025-03-20 | \u5f20\u4e09   | \u65b0\u589e INT8 \u91cf\u5316\u6d4b\u8bd5\u7ed3\u679c                       |<br \/>\n| v1.2   | 2025-04-01 | \u674e\u56db   | \u65b0\u589e\u81ea\u5b9a\u4e49\u6570\u636e\u96c6\u6d4b\u8bd5\u7ed3\u679c&#xff0c;\u66f4\u65b0\u7ed3\u8bba\u4e0e\u5efa\u8bae     |<\/p>\n<p>&gt; **\u91cd\u8981\u8bf4\u660e**&#xff1a;\u4e0d\u540c\u7248\u672c\u7684\u7ed3\u679c\u5728\u4e0d\u540c\u6d4b\u8bd5\u6761\u4ef6\u4e0b\u53d6\u5f97&#xff0c;\u8de8\u7248\u672c\u76f4\u63a5\u6bd4\u8f83\u6570\u5b57\u53ef\u80fd\u65e0\u610f\u4e49\u3002<br \/>\n&gt; \u5982\u9700\u8de8\u7248\u672c\u5bf9\u6bd4&#xff0c;\u8bf7\u786e\u8ba4\u6d4b\u8bd5\u73af\u5883\u548c\u6570\u636e\u96c6\u662f\u5426\u4e00\u81f4\u3002<br \/>\n&#034;&#034;&#034;<\/span><br \/>\n    <span class=\"token keyword\">return<\/span> changelog<\/p>\n<p><span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>create_report_changelog_template<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><\/p>\n<h4>\u5341\u516d\u3001\u5e38\u89c1\u95ee\u9898\u4e0e\u8e29\u5751\u8bb0\u5f55<\/h4>\n<p>\u505a\u4e86\u8fd9\u4e48\u591a\u9879\u76ee\u7684 Benchmark&#xff0c;\u6709\u4e9b\u5751\u51e0\u4e4e\u662f\u6bcf\u4e2a\u56e2\u961f\u90fd\u4f1a\u8e29\u7684&#xff0c;\u5728\u8fd9\u91cc\u4e13\u95e8\u8bb0\u5f55\u4e0b\u6765&#xff0c;\u5e0c\u671b\u80fd\u5e2e\u4f60\u8282\u7701\u51e0\u5929\u7684\u8c03\u8bd5\u65f6\u95f4\u3002<\/p>\n<p>\u57511&#xff1a;\u9884\u70ed\u4e0d\u8db3\u5bfc\u81f4\u9996\u6b21\u63a8\u7406\u5ef6\u8fdf\u5f02\u5e38\u9ad8<\/p>\n<p>\u75c7\u72b6&#xff1a;\u6d4b\u51fa\u6765\u7b2c\u4e00\u5e27\u5ef6\u8fdf\u662f 200ms&#xff0c;\u540e\u7eed\u5e27\u53ea\u6709 15ms&#xff0c;\u5e73\u5747\u4e0b\u6765\u4e25\u91cd\u5931\u771f\u3002 \u539f\u56e0&#xff1a;CUDA \u7684\u61d2\u52a0\u8f7d\u673a\u5236&#xff0c;\u7b2c\u4e00\u6b21\u63a8\u7406\u65f6\u9700\u8981 JIT \u7f16\u8bd1 kernel\u3002 \u89e3\u51b3&#xff1a;\u9884\u70ed\u81f3\u5c11 3 \u6b21&#xff0c;\u901a\u5e38 10 \u6b21\u6700\u7a33\u59a5\u3002<\/p>\n<p>\u57512&#xff1a;\u5fd8\u8bb0 torch.cuda.synchronize() \u5bfc\u81f4\u6d4b\u7684\u662f CPU \u63d0\u4ea4\u65f6\u95f4<\/p>\n<p>\u75c7\u72b6&#xff1a;\u6d4b\u51fa\u6765\u5ef6\u8fdf\u8d85\u4f4e&#xff0c;\u53ea\u6709 1~2ms&#xff0c;\u611f\u89c9\u4e0d\u5bf9\u52b2\u3002 \u539f\u56e0&#xff1a;PyTorch \u7684 GPU \u64cd\u4f5c\u662f\u5f02\u6b65\u7684&#xff0c;time.time() \u6d4b\u7684\u662f CPU \u63d0\u4ea4\u6307\u4ee4\u7684\u65f6\u95f4&#xff0c;\u4e0d\u662f GPU \u5b9e\u9645\u5b8c\u6210\u7684\u65f6\u95f4\u3002 \u89e3\u51b3&#xff1a;\u6bcf\u6b21\u8ba1\u65f6\u524d\u540e\u90fd\u52a0 torch.cuda.synchronize()\u3002<\/p>\n<p>\u57513&#xff1a;val \u6a21\u5f0f\u7684 batch \u5927\u5c0f\u5f71\u54cd\u7cbe\u5ea6\u7ed3\u679c<\/p>\n<p>\u75c7\u72b6&#xff1a;batch&#061;1 \u548c batch&#061;32 \u5f97\u5230\u7684 mAP \u4e0d\u4e00\u6837\u3002 \u539f\u56e0&#xff1a;ultralytics \u7684 letterbox padding \u5728\u4e0d\u540c batch size \u4e0b\u7684\u5b9e\u73b0\u7ec6\u8282\u53ef\u80fd\u6709\u5dee\u5f02&#xff08;\u5c24\u5176\u662f\u56fe\u50cf\u5c3a\u5bf8\u4e0d\u4e00\u81f4\u65f6\u7684 padding \u903b\u8f91&#xff09;\u3002 \u89e3\u51b3&#xff1a;\u7cbe\u5ea6\u6d4b\u8bd5\u7edf\u4e00\u4f7f\u7528\u4e00\u4e2a batch size&#xff0c;\u5e76\u5728\u62a5\u544a\u4e2d\u8bb0\u5f55\u3002\u901a\u5e38\u4f7f\u7528 batch&#061;16 \u6216 batch&#061;32\u3002<\/p>\n<p>\u57514&#xff1a;TensorRT \u5f15\u64ce\u5728\u4e0d\u540c\u673a\u5668\u4e0a\u65e0\u6cd5\u901a\u7528<\/p>\n<p>\u75c7\u72b6&#xff1a;\u5728 A100 \u4e0a\u5bfc\u51fa\u7684 .engine \u6587\u4ef6\u590d\u5236\u5230 RTX 3090 \u4e0a\u62a5\u9519\u3002 \u539f\u56e0&#xff1a;TensorRT \u5f15\u64ce\u662f\u9488\u5bf9\u7279\u5b9a GPU \u67b6\u6784\u7f16\u8bd1\u7684&#xff0c;\u4e0d\u540c GPU&#xff08;\u751a\u81f3\u76f8\u540c GPU \u7684\u4e0d\u540c\u9a71\u52a8\u7248\u672c&#xff09;\u751f\u6210\u7684\u5f15\u64ce\u4e0d\u901a\u7528\u3002 \u89e3\u51b3&#xff1a;\u5728\u76ee\u6807\u90e8\u7f72\u673a\u5668\u4e0a\u91cd\u65b0\u5bfc\u51fa\u3002\u62a5\u544a\u4e2d\u5fc5\u987b\u6ce8\u660e\u5f15\u64ce\u7684 GPU \u578b\u53f7\u548c TensorRT \u7248\u672c\u3002<\/p>\n<p>\u57515&#xff1a;\u7cbe\u5ea6\u6d4b\u8bd5 conf \u53c2\u6570\u8bbe\u7f6e\u8fc7\u9ad8<\/p>\n<p>\u75c7\u72b6&#xff1a;mAP \u6bd4\u5b98\u65b9\u4f4e\u5f88\u591a\u3002 \u539f\u56e0&#xff1a;val \u6a21\u5f0f\u4e0b conf \u53c2\u6570\u4f1a\u5f71\u54cd\u54ea\u4e9b\u9884\u6d4b\u6846\u53c2\u4e0e NMS \u540e\u88ab\u4fdd\u7559\u3002conf \u8fc7\u9ad8\u4f1a\u5bfc\u81f4\u5f88\u591a\u4f4e\u7f6e\u4fe1\u5ea6\u7684\u771f\u5b9e\u76ee\u6807\u88ab\u8fc7\u6ee4\u6389&#xff0c;\u5f71\u54cd Recall&#xff0c;\u4ece\u800c\u62c9\u4f4e mAP\u3002 \u89e3\u51b3&#xff1a;val \u6a21\u5f0f\u4e0b conf \u8bbe\u7f6e\u4e3a 0.001&#xff08;ultralytics \u5b98\u65b9\u9ed8\u8ba4\u503c&#xff09;&#xff0c;\u4e0d\u8981\u64c5\u81ea\u6539\u9ad8\u3002<\/p>\n<p><span class=\"token keyword\">def<\/span> <span class=\"token function\">print_common_pitfalls<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n    <span class=\"token triple-quoted-string string\">&#034;&#034;&#034;\u6253\u5370\u5e38\u89c1\u8e29\u5751\u53ca\u89e3\u51b3\u65b9\u6848&#034;&#034;&#034;<\/span><br \/>\n    pitfalls <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">[<\/span><br \/>\n        <span class=\"token punctuation\">{<\/span><br \/>\n            <span class=\"token string\">&#034;title&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">&#034;\u9884\u70ed\u4e0d\u8db3\u5bfc\u81f4\u5ef6\u8fdf\u5f02\u5e38&#034;<\/span><span class=\"token punctuation\">,<\/span><br \/>\n            <span class=\"token string\">&#034;symptom&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">&#034;\u7b2c\u4e00\u5e27\u5ef6\u8fdf\u8fdc\u9ad8\u4e8e\u540e\u7eed\u5e27&#034;<\/span><span class=\"token punctuation\">,<\/span><br \/>\n            <span class=\"token string\">&#034;cause&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">&#034;CUDA JIT \u7f16\u8bd1\u53d1\u751f\u5728\u7b2c\u4e00\u6b21\u63a8\u7406&#034;<\/span><span class=\"token punctuation\">,<\/span><br \/>\n            <span class=\"token string\">&#034;solution&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">&#034;\u8fdb\u884c\u81f3\u5c11 10 \u6b21\u9884\u70ed\u63a8\u7406&#xff0c;\u4e0d\u8ba1\u5165\u7edf\u8ba1&#034;<\/span><span class=\"token punctuation\">,<\/span><br \/>\n            <span class=\"token string\">&#034;code&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">&#034;for _ in range(n_warmup):\\\\n    model(dummy); torch.cuda.synchronize()&#034;<\/span><span class=\"token punctuation\">,<\/span><br \/>\n        <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span><br \/>\n        <span class=\"token punctuation\">{<\/span><br \/>\n            <span class=\"token string\">&#034;title&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">&#034;\u5fd8\u8bb0 synchronize \u6d4b\u5230 CPU \u63d0\u4ea4\u65f6\u95f4&#034;<\/span><span class=\"token punctuation\">,<\/span><br \/>\n            <span class=\"token string\">&#034;symptom&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">&#034;\u5ef6\u8fdf\u5f02\u5e38\u4f4e&#xff08;1~2ms&#xff09;&#xff0c;\u4e0d\u7b26\u5408\u76f4\u89c9&#034;<\/span><span class=\"token punctuation\">,<\/span><br \/>\n            <span class=\"token string\">&#034;cause&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">&#034;GPU \u64cd\u4f5c\u5f02\u6b65&#xff0c;CPU \u63d0\u4ea4\u6307\u4ee4\u540e\u7acb\u5373\u8fd4\u56de&#034;<\/span><span class=\"token punctuation\">,<\/span><br \/>\n            <span class=\"token string\">&#034;solution&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">&#034;\u8ba1\u65f6\u524d\u540e\u90fd\u8c03\u7528 torch.cuda.synchronize()&#034;<\/span><span class=\"token punctuation\">,<\/span><br \/>\n            <span class=\"token string\">&#034;code&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">&#034;torch.cuda.synchronize()\\\\nt0 &#061; time.perf_counter()\\\\nmodel(x)\\\\ntorch.cuda.synchronize()\\\\nt1 &#061; time.perf_counter()&#034;<\/span><span class=\"token punctuation\">,<\/span><br \/>\n        <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span><br \/>\n        <span class=\"token punctuation\">{<\/span><br \/>\n            <span class=\"token string\">&#034;title&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">&#034;TensorRT \u5f15\u64ce\u8de8\u673a\u5668\u4e0d\u901a\u7528&#034;<\/span><span class=\"token punctuation\">,<\/span><br \/>\n            <span class=\"token string\">&#034;symptom&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">&#034;\u590d\u5236 .engine \u6587\u4ef6\u5230\u5176\u4ed6\u673a\u5668\u62a5\u9519&#034;<\/span><span class=\"token punctuation\">,<\/span><br \/>\n            <span class=\"token string\">&#034;cause&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">&#034;TensorRT \u5f15\u64ce\u9488\u5bf9\u7279\u5b9a GPU \u67b6\u6784\u7f16\u8bd1&#034;<\/span><span class=\"token punctuation\">,<\/span><br \/>\n            <span class=\"token string\">&#034;solution&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">&#034;\u5728\u76ee\u6807\u786c\u4ef6\u4e0a\u91cd\u65b0\u5bfc\u51fa .engine \u6587\u4ef6&#034;<\/span><span class=\"token punctuation\">,<\/span><br \/>\n            <span class=\"token string\">&#034;code&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">&#034;model.export(format&#061;&#039;engine&#039;, half&#061;True)  # \u5728\u76ee\u6807\u673a\u5668\u4e0a\u8fd0\u884c&#034;<\/span><span class=\"token punctuation\">,<\/span><br \/>\n        <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span><br \/>\n        <span class=\"token punctuation\">{<\/span><br \/>\n            <span class=\"token string\">&#034;title&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">&#034;val \u6a21\u5f0f conf \u8bbe\u7f6e\u9519\u8bef\u5f71\u54cd mAP&#034;<\/span><span class=\"token punctuation\">,<\/span><br \/>\n            <span class=\"token string\">&#034;symptom&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">&#034;mAP \u8fdc\u4f4e\u4e8e\u5b98\u65b9&#xff0c;Recall \u504f\u4f4e&#034;<\/span><span class=\"token punctuation\">,<\/span><br \/>\n            <span class=\"token string\">&#034;cause&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">&#034;conf \u8fc7\u9ad8\u8fc7\u6ee4\u4e86\u771f\u5b9e\u76ee\u6807\u6846&#034;<\/span><span class=\"token punctuation\">,<\/span><br \/>\n            <span class=\"token string\">&#034;solution&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">&#034;val \u6a21\u5f0f\u4e0b\u59cb\u7ec8\u4f7f\u7528 conf&#061;0.001&#034;<\/span><span class=\"token punctuation\">,<\/span><br \/>\n            <span class=\"token string\">&#034;code&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">&#034;model.val(data&#061;&#039;coco.yaml&#039;, conf&#061;0.001)  # \u6b63\u786e\\\\n# model.val(data&#061;&#039;coco.yaml&#039;, conf&#061;0.5)  # \u9519\u8bef&#xff01;&#034;<\/span><span class=\"token punctuation\">,<\/span><br \/>\n        <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span><br \/>\n    <span class=\"token punctuation\">]<\/span><\/p>\n<p>    <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;\\\\n&#034;<\/span> <span class=\"token operator\">&#043;<\/span> <span class=\"token string\">&#034;&#061;&#034;<\/span><span class=\"token operator\">*<\/span><span class=\"token number\">60<\/span><span class=\"token punctuation\">)<\/span><br \/>\n    <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;\u26a0\ufe0f  \u5e38\u89c1 Benchmark \u8e29\u5751\u8bb0\u5f55&#034;<\/span><span class=\"token punctuation\">)<\/span><br \/>\n    <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;&#061;&#034;<\/span><span class=\"token operator\">*<\/span><span class=\"token number\">60<\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p>    <span class=\"token keyword\">for<\/span> i<span class=\"token punctuation\">,<\/span> p <span class=\"token keyword\">in<\/span> <span class=\"token builtin\">enumerate<\/span><span class=\"token punctuation\">(<\/span>pitfalls<span class=\"token punctuation\">,<\/span> <span class=\"token number\">1<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n        <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string-interpolation\"><span class=\"token string\">f&#034;\\\\n&#x1f6a8; \u5751 <\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>i<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">: <\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>p<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#039;title&#039;<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">&#034;<\/span><\/span><span class=\"token punctuation\">)<\/span><br \/>\n        <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string-interpolation\"><span class=\"token string\">f&#034;   \u75c7\u72b6: <\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>p<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#039;symptom&#039;<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">&#034;<\/span><\/span><span class=\"token punctuation\">)<\/span><br \/>\n        <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string-interpolation\"><span class=\"token string\">f&#034;   \u539f\u56e0: <\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>p<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#039;cause&#039;<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">&#034;<\/span><\/span><span class=\"token punctuation\">)<\/span><br \/>\n        <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string-interpolation\"><span class=\"token string\">f&#034;   \u89e3\u51b3: <\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>p<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#039;solution&#039;<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">&#034;<\/span><\/span><span class=\"token punctuation\">)<\/span><br \/>\n        <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string-interpolation\"><span class=\"token string\">f&#034;   \u4ee3\u7801\u793a\u4f8b:&#034;<\/span><\/span><span class=\"token punctuation\">)<\/span><br \/>\n        <span class=\"token keyword\">for<\/span> line <span class=\"token keyword\">in<\/span> p<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#039;code&#039;<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">.<\/span>split<span class=\"token punctuation\">(<\/span><span class=\"token string\">&#039;\\\\n&#039;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n            <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string-interpolation\"><span class=\"token string\">f&#034;     <\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>line<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">&#034;<\/span><\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p>print_common_pitfalls<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><\/p>\n<h3>\u4e0b\u671f\u9884\u544a<\/h3>\n<p>\u5199\u5b8c\u8fd9\u8282&#xff0c;\u6574\u4e2a\u7b2c\u516d\u7ae0\u5c31\u753b\u4e0a\u4e86\u53e5\u53f7\u3002\u4ece predict \u6a21\u5f0f\u7684\u53c2\u6570\u89e3\u6790&#xff0c;\u5230 val \u9a8c\u8bc1\u6d41\u7a0b&#xff0c;\u518d\u5230 mAP \u6307\u6807\u7684\u6df1\u5ea6\u5256\u6790&#xff0c;\u5230\u6df7\u6dc6\u77e9\u9635\u7684\u7c7b\u522b\u8bef\u68c0\u5206\u6790&#xff0c;\u4e00\u8def\u5230\u4eca\u5929\u7684 Benchmark \u62a5\u544a\u6a21\u677f\u2014\u2014\u8fd9\u4e00\u7ae0\u8d70\u4e0b\u6765&#xff0c;\u6211\u4eec\u628a YOLOv12 \u7684&#034;\u5982\u4f55\u8bc4\u4f30&#034;\u548c&#034;\u5982\u4f55\u62a5\u544a&#034;\u8bf4\u4e86\u4e2a\u900f\u5f7b\u3002<\/p>\n<p>\u4f46 YOLO \u7684\u6545\u4e8b\u8fdc\u6ca1\u7ed3\u675f\u3002<\/p>\n<p>\u4ece\u7b2c\u4e03\u7ae0\u5f00\u59cb&#xff0c;\u6211\u4eec\u8fce\u6765\u4e86\u4e00\u4e2a\u5f88\u591a\u4eba\u671f\u5f85\u5df2\u4e45\u7684\u8bdd\u9898&#xff1a;YOLOv12 \u7684\u591a\u4efb\u52a1\u6269\u5c55\u80fd\u529b\u3002<\/p>\n<p>\u5f88\u591a\u4eba\u5bf9 YOLO \u7684\u5370\u8c61\u8fd8\u505c\u7559\u5728&#034;\u5b83\u5c31\u662f\u4e2a\u76ee\u6807\u68c0\u6d4b\u6846\u67b6&#034;&#xff0c;\u4f46\u73b0\u4ee3\u7684 ultralytics YOLO \u7cfb\u5217\u65e9\u5df2\u4e0d\u6b62\u4e8e\u6b64\u3002YOLOv12 \u5728\u540c\u4e00\u5957\u6846\u67b6\u4f53\u7cfb\u4e0b&#xff0c;\u5b98\u65b9\u652f\u6301\u4e86 5 \u5927\u6838\u5fc3\u4efb\u52a1&#xff1a;<\/p>\n<ul>\n<li>Detect&#xff1a;\u7ecf\u5178\u76ee\u6807\u68c0\u6d4b&#xff0c;\u8f93\u51fa\u77e9\u5f62\u8fb9\u754c\u6846<\/li>\n<li>Segment&#xff1a;\u5b9e\u4f8b\u5206\u5272&#xff0c;\u8f93\u51fa\u5e26\u63a9\u7801\u7684\u7cbe\u7ec6\u8f6e\u5ed3<\/li>\n<li>Classify&#xff1a;\u56fe\u50cf\u5206\u7c7b&#xff0c;\u5224\u65ad\u6574\u5f20\u56fe\u5c5e\u4e8e\u54ea\u4e2a\u7c7b\u522b<\/li>\n<li>Pose&#xff1a;\u59ff\u6001\u4f30\u8ba1&#xff0c;\u68c0\u6d4b\u4eba\u4f53\u5173\u952e\u70b9&#xff08;17\u4e2a\u5173\u8282&#xff09;<\/li>\n<li>OBB&#xff1a;\u65cb\u8f6c\u76ee\u6807\u68c0\u6d4b&#xff0c;\u8f93\u51fa\u5e26\u89d2\u5ea6\u7684\u65cb\u8f6c\u77e9\u5f62\u6846&#xff08;\u7279\u522b\u9002\u5408\u4fef\u89c6\u89d2\u5ea6\u7684\u822a\u62cd\u76ee\u6807&#xff09;<\/li>\n<\/ul>\n<p>\u7b2c\u4e03\u7ae0\u7b2c1\u8282&#xff0c;\u6211\u4eec\u5c06\u4ece\u5b98\u65b9\u67b6\u6784\u89c6\u89d2\u51fa\u53d1&#xff0c;\u7cfb\u7edf\u68b3\u7406\u8fd9\u4e94\u5927\u4efb\u52a1\u7684&#xff1a;<\/p>\n<ul>\n<li>\u5404\u81ea\u7684\u9002\u7528\u573a\u666f\u4e0e\u6838\u5fc3\u5dee\u5f02<\/li>\n<li>\u7edf\u4e00\u7684\u8c03\u7528\u63a5\u53e3\u8bbe\u8ba1\u54f2\u5b66&#xff08;\u4e3a\u4ec0\u4e48\u4e94\u5927\u4efb\u52a1\u53ea\u9700\u8981\u4e00\u5957\u4ee3\u7801\u6846\u67b6&#xff1f;&#xff09;<\/li>\n<li>\u5404\u4efb\u52a1\u7684\u8f93\u51fa\u683c\u5f0f\u4e0e\u6807\u6ce8\u683c\u5f0f\u89c4\u8303<\/li>\n<li>\u4e94\u5927\u4efb\u52a1\u7684 Benchmark \u6027\u80fd\u6982\u89c8<\/li>\n<\/ul>\n<p>\u8fd9\u4e0d\u662f\u7b80\u5355\u7684&#034;API \u6587\u6863\u7ffb\u8bd1&#034;&#xff0c;\u800c\u662f\u4ece\u7cfb\u7edf\u8bbe\u8ba1\u7684\u89d2\u5ea6\u7406\u89e3 ultralytics \u4e3a\u4ec0\u4e48\u8981\u8fd9\u6837\u8bbe\u8ba1&#xff0c;\u8fd9\u6837\u7684\u8bbe\u8ba1\u7ed9\u6211\u4eec\u5e26\u6765\u4e86\u4ec0\u4e48&#xff0c;\u53c8\u5e26\u6765\u4e86\u54ea\u4e9b\u9690\u85cf\u7684\u5751\u3002<\/p>\n<p>\u5982\u679c\u4f60\u66fe\u7ecf\u60f3\u8fc7&#034;\u6211\u7684\u9879\u76ee\u65e2\u9700\u8981\u68c0\u6d4b\u53c8\u9700\u8981\u5206\u5272&#xff0c;\u80fd\u7528\u4e00\u4e2a\u6a21\u578b\u641e\u5b9a\u5417&#034;&#xff0c;\u6216\u8005&#034;\u65cb\u8f6c\u76ee\u6807\u68c0\u6d4b\u548c\u666e\u901a\u68c0\u6d4b\u5230\u5e95\u5dee\u5728\u54ea\u91cc&#034;&#xff0c;\u4e0b\u671f\u5185\u5bb9\u4f1a\u7ed9\u4f60\u4e00\u4e2a\u6e05\u6670\u3001\u7cfb\u7edf\u7684\u7b54\u6848\u3002<\/p>\n<p>\u656c\u8bf7\u671f\u5f85&#xff01;<\/p>\n<p>\u672c\u8282\u5c0f\u7ed3&#xff1a;\u4e00\u4efd\u6807\u51c6\u5316\u7684 YOLOv12 Benchmark \u62a5\u544a\u5305\u542b\u5341\u4e2a\u6838\u5fc3\u677f\u5757&#xff0c;\u4ece\u5143\u4fe1\u606f\u5230\u590d\u73b0\u811a\u672c&#xff0c;\u73af\u73af\u76f8\u6263\u3002\u597d\u7684\u62a5\u544a\u4e0d\u53ea\u662f\u6570\u5b57\u7684\u7f57\u5217&#xff0c;\u5b83\u662f\u56e2\u961f\u534f\u4f5c\u7684\u8bed\u8a00\u3001\u51b3\u7b56\u7684\u4f9d\u636e\u3001\u5de5\u7a0b\u77e5\u8bc6\u7684\u6c89\u6dc0\u3002\u5e0c\u671b\u672c\u8282\u63d0\u4f9b\u7684\u6a21\u677f\u548c\u4ee3\u7801\u80fd\u6210\u4e3a\u4f60\u9879\u76ee\u4e2d\u771f\u6b63\u53ef\u7528\u7684\u5de5\u5177&#xff0c;\u800c\u4e0d\u53ea\u662f\u793a\u4f8b\u4ee3\u7801\u3002\u8bb0\u4f4f\u90a3\u53e5\u8bdd&#xff1a;Benchmark \u4e0d\u662f\u4e3a\u4e86\u8bc1\u660e\u4f60\u7684\u6a21\u578b\u597d&#xff0c;\u800c\u662f\u4e3a\u4e86\u8bda\u5b9e\u5730\u544a\u8bc9\u4f60\u7684\u6a21\u578b\u5728\u54ea\u91cc\u597d\u3001\u5728\u54ea\u91cc\u4e0d\u597d\u3002 \u8fd9\u4efd\u8bda\u5b9e&#xff0c;\u662f\u5de5\u7a0b\u5e08\u7684\u57fa\u672c\u7d20\u517b\u3002<\/p>\n<h3>&#x1f4cc; \u9644\u5f55<\/h3>\n<p>\u76f8\u5173\u53c2\u8003\u8d44\u6599<\/p>\n<ul>\n<li>YOLOv12 \u5b98\u65b9\u8bba\u6587&#xff1a;YOLOv12: Attention-Centric Real-Time Object Detectors&#xff0c;Tian et al., 2025&#xff0c;arXiv: 2502.12524<\/li>\n<li>YOLOv12 \u6838\u5fc3\u673a\u5236&#xff1a;Area Attention&#xff08;\u533a\u57df\u6ce8\u610f\u529b\u673a\u5236&#xff09;<\/li>\n<li>YOLOv12 \u4e3b\u5e72\u8bbe\u8ba1&#xff1a;R-ELAN&#xff08;Residual Efficient Layer Aggregation Networks&#xff09;<\/li>\n<li>YOLOv12 \u6ce8\u610f\u529b\u52a0\u901f&#xff1a;Flash Attention \u96c6\u6210\u4e0e\u663e\u5b58\u4f18\u5316\u7b56\u7565<\/li>\n<li>YOLOv12 \u67b6\u6784\u601d\u60f3&#xff1a;Attention-Centric Design vs. CNN-Based Design<\/li>\n<li>DFL \u76f8\u5173&#xff1a;Generalized Focal Loss: Learning Qualified and Distributed Bounding Boxes for Dense Object Detection<\/li>\n<li>COCO \u6570\u636e\u96c6\u57fa\u51c6&#xff1a;https:\/\/cocodataset.org<\/li>\n<li>YOLOv12 \u5b98\u65b9\u4ed3\u5e93&#xff1a;https:\/\/github.com\/sunsmarterjie\/yolov12<\/li>\n<li>PyTorch \u5b98\u65b9\u5b89\u88c5\u6307\u5357&#xff1a;https:\/\/pytorch.org\/get-started\/locally\/<\/li>\n<li>NVIDIA CUDA Toolkit \u5f52\u6863&#xff1a;https:\/\/developer.nvidia.com\/cuda-toolkit-archive<\/li>\n<li>Miniconda \u4e0b\u8f7d&#xff1a;https:\/\/docs.conda.io\/en\/latest\/miniconda.html<\/li>\n<li>\u672c\u8282\u6240\u6709\u811a\u672c\u4ee3\u7801&#xff1a;\u89c1\u6587\u7ae0\u5404\u4ee3\u7801\u5757&#xff0c;\u53ef\u76f4\u63a5\u590d\u5236\u4f7f\u7528<\/li>\n<\/ul>\n<p>COCO:<\/p>\n<table>\n<tr>ModelTest SizeAP^valParamsFLOPsLatency<\/tr>\n<tbody>\n<tr>\n<td>YOLOv12-N<\/td>\n<td align=\"right\">640<\/td>\n<td align=\"right\">40.6%<\/td>\n<td align=\"right\">2.6M<\/td>\n<td align=\"right\">6.5G<\/td>\n<td align=\"right\">1.64 ms<\/td>\n<\/tr>\n<tr>\n<td>YOLOv12-S<\/td>\n<td align=\"right\">640<\/td>\n<td align=\"right\">48.0%<\/td>\n<td align=\"right\">9.3M<\/td>\n<td align=\"right\">21.4G<\/td>\n<td align=\"right\">2.61 ms<\/td>\n<\/tr>\n<tr>\n<td>YOLOv12-M<\/td>\n<td align=\"right\">640<\/td>\n<td align=\"right\">52.5%<\/td>\n<td align=\"right\">20.2M<\/td>\n<td align=\"right\">67.5G<\/td>\n<td align=\"right\">4.86 ms<\/td>\n<\/tr>\n<tr>\n<td>YOLOv12-L<\/td>\n<td align=\"right\">640<\/td>\n<td align=\"right\">53.7%<\/td>\n<td align=\"right\">26.4M<\/td>\n<td align=\"right\">88.9G<\/td>\n<td align=\"right\">6.17 ms<\/td>\n<\/tr>\n<tr>\n<td>YOLOv12-X<\/td>\n<td align=\"right\">640<\/td>\n<td align=\"right\">55.0%<\/td>\n<td align=\"right\">59.1M<\/td>\n<td align=\"right\">199.0G<\/td>\n<td align=\"right\">11.79 ms<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>\u5e0c\u671b\u672c\u6587\u56f4\u7ed5 YOLOv12 \u7684\u5b9e\u6218\u8bb2\u89e3&#xff0c;\u80fd\u591f\u5728\u4ee5\u4e0b\u51e0\u4e2a\u7ef4\u5ea6\u4e0a\u5207\u5b9e\u5e2e\u52a9\u5230\u4f60&#xff1a;<\/p>\n<ul>\n<li>&#x1f3af; \u6a21\u578b\u7cbe\u5ea6\u63d0\u5347&#xff1a;\u7ed3\u5408 YOLOv12 \u7684\u533a\u57df\u6ce8\u610f\u529b\u673a\u5236\u3001R-ELAN \u6b8b\u5dee\u805a\u5408\u7ed3\u6784\u4e0e Attention-Centric \u6574\u4f53\u67b6\u6784\u8bbe\u8ba1\u601d\u60f3&#xff0c;\u4ece\u7f51\u7edc\u7ed3\u6784\u3001\u7279\u5f81\u878d\u5408\u3001\u68c0\u6d4b\u5934\u3001\u6807\u7b7e\u5206\u914d\u3001\u635f\u5931\u51fd\u6570\u548c\u6570\u636e\u589e\u5f3a\u7b49\u65b9\u5411\u5c55\u5f00\u4f18\u5316&#xff0c;\u901a\u8fc7\u5de5\u7a0b\u5b9e\u9a8c\u8fdb\u4e00\u6b65\u63d0\u5347\u76ee\u6807\u68c0\u6d4b\u7cbe\u5ea6&#xff1b;<\/li>\n<li>&#x1f680; \u63a8\u7406\u901f\u5ea6\u4f18\u5316&#xff1a;\u7ed3\u5408 YOLOv12 \u7684 Flash Attention \u52a0\u901f\u673a\u5236&#xff0c;\u4ee5\u53ca\u6a21\u578b\u8f7b\u91cf\u5316\u3001\u7ed3\u6784\u91cd\u53c2\u6570\u5316\u3001\u526a\u679d\u3001\u91cf\u5316\u3001\u77e5\u8bc6\u84b8\u998f\u4e0e\u90e8\u7f72\u52a0\u901f\u7b56\u7565&#xff0c;\u5e2e\u52a9\u6a21\u578b\u5728\u771f\u5b9e\u4e1a\u52a1\u573a\u666f\u4e2d\u8fd0\u884c\u5f97\u66f4\u5feb\u3001\u66f4\u7a33\u5b9a&#xff1b;<\/li>\n<li>&#x1f9e9; \u5de5\u7a0b\u843d\u5730\u5b9e\u8df5&#xff1a;\u8986\u76d6\u6570\u636e\u51c6\u5907\u3001\u73af\u5883\u914d\u7f6e\u3001\u6a21\u578b\u8bad\u7ec3\u3001\u6548\u679c\u8bc4\u4f30\u3001\u95ee\u9898\u6392\u67e5\u3001\u6a21\u578b\u5bfc\u51fa\u4e0e\u90e8\u7f72\u63a8\u7406\u7b49\u5b8c\u6574\u94fe\u8def&#xff0c;\u63d0\u4f9b\u53ef\u76f4\u63a5\u590d\u7528\u6216\u7a0d\u52a0\u4fee\u6539\u5373\u53ef\u8fc1\u79fb\u7684\u5de5\u7a0b\u7ea7\u65b9\u6848&#xff1b;<\/li>\n<li>&#x1f9e0; \u6838\u5fc3\u673a\u5236\u7406\u89e3&#xff1a;\u6df1\u5165\u5206\u6790 YOLOv12 \u4e2d Area Attention \u533a\u57df\u6ce8\u610f\u529b\u3001R-ELAN \u6b8b\u5dee\u9ad8\u6548\u805a\u5408\u3001Flash Attention \u96c6\u6210\u4ee5\u53ca Attention-Centric \u7f51\u7edc\u8bbe\u8ba1 \u7684\u8bbe\u8ba1\u903b\u8f91&#xff0c;\u5e2e\u52a9\u4f60\u7406\u89e3\u6a21\u578b\u6027\u80fd\u63d0\u5347\u80cc\u540e\u7684\u539f\u56e0&#xff0c;\u800c\u4e0d\u662f\u505c\u7559\u5728\u7b80\u5355\u8c03\u7528\u5c42\u9762&#xff1b;<\/li>\n<li>&#x1f52c; \u6539\u8fdb\u65b9\u6848\u9a8c\u8bc1&#xff1a;\u901a\u8fc7\u6d88\u878d\u5b9e\u9a8c\u3001\u6307\u6807\u5bf9\u6bd4\u4e0e\u53ef\u89c6\u5316\u5206\u6790&#xff0c;\u8bc4\u4f30\u4e0d\u540c\u6539\u8fdb\u6a21\u5757\u5bf9 Precision\u3001Recall\u3001mAP\u3001FPS\u3001Latency\u3001\u53c2\u6570\u91cf\u548c FLOPs \u7684\u5b9e\u9645\u5f71\u54cd\u3002<\/li>\n<\/ul>\n<p> <img decoding=\"async\" width=\"1000\" src=\"https:\/\/www.wsisp.com\/helps\/wp-content\/uploads\/2026\/11\/20261101221008-6ae7b8c0e9cf4.png\" \/> <\/p>\n<p>PS&#xff1a;\u5982\u679c\u4f60\u6309\u7167\u6587\u4e2d\u6b65\u9aa4\u5bf9 YOLOv12 \u8fdb\u884c\u4f18\u5316\u540e\u4ecd\u7136\u9047\u5230\u95ee\u9898&#xff0c;\u8bf7\u4e0d\u5fc5\u7126\u8651\u6216\u7070\u5fc3\u3002<\/p>\n<p>YOLOv12 \u662f\u4e00\u4e2a\u6d89\u53ca\u6ce8\u610f\u529b\u673a\u5236\u3001\u7279\u5f81\u63d0\u53d6\u3001\u6807\u7b7e\u5206\u914d\u3001\u68af\u5ea6\u4f18\u5316\u3001\u7aef\u5230\u7aef\u9884\u6d4b\u4e0e\u90e8\u7f72\u73af\u5883\u7684\u590d\u6742\u76ee\u6807\u68c0\u6d4b\u6846\u67b6&#xff0c;\u6700\u7ec8\u8868\u73b0\u4f1a\u53d7\u5230 \u786c\u4ef6\u73af\u5883\u3001\u6570\u636e\u96c6\u8d28\u91cf\u3001\u4efb\u52a1\u5b9a\u4e49\u3001\u7c7b\u522b\u5206\u5e03\u3001\u8bad\u7ec3\u914d\u7f6e\u3001\u4ee3\u7801\u7248\u672c\u4e0e\u90e8\u7f72\u5e73\u53f0 \u7b49\u591a\u91cd\u56e0\u7d20\u7684\u5171\u540c\u5f71\u54cd\u3002<\/p>\n<p>\u8fd9\u662f\u76ee\u6807\u68c0\u6d4b\u9879\u76ee\u4e2d\u5341\u5206\u5e38\u89c1\u7684\u5ba2\u89c2\u73b0\u8c61&#xff0c;\u5e76\u4e0d\u610f\u5473\u7740\u67d0\u4e2a\u6539\u8fdb\u6a21\u5757\u4e00\u5b9a\u65e0\u6548\u3002<\/p>\n<p>\u5982\u679c\u4f60\u5728\u5b9e\u8df5\u8fc7\u7a0b\u4e2d\u9047\u5230\u4ee5\u4e0b\u95ee\u9898&#xff1a;<\/p>\n<ul>\n<li>&#x1f41b; \u6a21\u5757\u66ff\u6362\u540e\u51fa\u73b0\u65b0\u7684\u62a5\u9519\u6216 Bug&#xff1b;<\/li>\n<li>&#x1f4c9; Precision\u3001Recall \u6216 mAP \u96be\u4ee5\u7ee7\u7eed\u63d0\u5347&#xff1b;<\/li>\n<li>&#x1f4c8; \u8bad\u7ec3\u635f\u5931\u5f02\u5e38\u3001\u68af\u5ea6\u4e0d\u7a33\u5b9a\u6216\u6a21\u578b\u96be\u4ee5\u6536\u655b&#xff1b;<\/li>\n<li>&#x1f3af; Area Attention \u4e0e R-ELAN \u6a21\u5757\u8bad\u7ec3\u6548\u679c\u5f02\u5e38&#xff1b;<\/li>\n<li>\u23f1\ufe0f \u63a8\u7406\u901f\u5ea6\u3001Latency\u3001\u663e\u5b58\u5360\u7528\u6216\u90e8\u7f72\u6027\u80fd\u4e0d\u8fbe\u9884\u671f&#xff1b;<\/li>\n<li>&#x1f504; \u4fee\u6539\u7f51\u7edc\u7ed3\u6784\u540e\u51fa\u73b0\u7ef4\u5ea6\u3001\u901a\u9053\u6570\u6216\u7279\u5f81\u5c42\u4e0d\u5339\u914d&#xff1b;<\/li>\n<li>\u2699\ufe0f Flash Attention \u96c6\u6210\u540e\u51fa\u73b0\u7b97\u5b50\u517c\u5bb9\u6027\u6216\u663e\u5b58\u6ea2\u51fa\u95ee\u9898&#xff1b;<\/li>\n<li>&#x1f4e6; \u6a21\u578b\u5bfc\u51fa ONNX\u3001TensorRT\u3001OpenVINO \u7b49\u683c\u5f0f\u65f6\u5931\u8d25&#xff1b;<\/li>\n<\/ul>\n<p>\u6b22\u8fce\u5c06 \u5b8c\u6574\u62a5\u9519\u4fe1\u606f &#043; \u73af\u5883\u7248\u672c &#043; \u5173\u952e\u914d\u7f6e\u622a\u56fe &#043; \u7f51\u7edc\u914d\u7f6e\u6587\u4ef6 &#043; \u6838\u5fc3\u4ee3\u7801\u7247\u6bb5 \u7c98\u8d34\u81f3\u8bc4\u8bba\u533a&#xff0c;\u6211\u4eec\u53ef\u4ee5\u4e00\u8d77\u5206\u6790\u95ee\u9898\u6839\u56e0&#xff0c;\u5e76\u63a2\u8ba8\u66f4\u52a0\u53ef\u884c\u7684\u89e3\u51b3\u65b9\u6848\u3002<\/p>\n<p>\u5982\u679c\u4f60\u5df2\u7ecf\u6478\u7d22\u51fa\u66f4\u4f18\u7684\u8bad\u7ec3\u53c2\u6570\u3001\u7f51\u7edc\u7ed3\u6784\u3001\u6ce8\u610f\u529b\u914d\u7f6e\u3001\u6a21\u5757\u7ec4\u5408\u6216\u90e8\u7f72\u4f18\u5316\u601d\u8def&#xff0c;\u4e5f\u975e\u5e38\u6b22\u8fce\u5728\u8bc4\u8bba\u533a\u5206\u4eab\u3002<\/p>\n<p>\u4f60\u7684\u6bcf\u4e00\u6761\u5b9e\u6218\u7ecf\u9a8c&#xff0c;\u90fd\u53ef\u80fd\u6210\u4e3a\u5176\u4ed6\u5f00\u53d1\u8005\u89e3\u51b3\u95ee\u9898\u3001\u51cf\u5c11\u8bd5\u9519\u6210\u672c\u7684\u5173\u952e\u7ebf\u7d22\u3002<\/p>\n<p>\u90e8\u5206\u7ae0\u8282\u8fd8\u4f1a\u7ed3\u5408\u56fd\u5185\u5916\u524d\u6cbf\u8bba\u6587\u4e0e AIGC \u5927\u6a21\u578b\u6280\u672f&#xff0c;\u5bf9 YOLOv12 \u7684\u4e3b\u6d41\u6539\u8fdb\u65b9\u6848\u8fdb\u884c\u91cd\u6784\u4e0e\u518d\u8bbe\u8ba1&#xff0c;\u4f7f\u5185\u5bb9\u66f4\u52a0\u8d34\u8fd1\u5de5\u4e1a\u68c0\u6d4b\u3001\u667a\u6167\u4ea4\u901a\u3001\u6e38\u620f\u5206\u6790\u3001\u884c\u4e3a\u8bc6\u522b\u3001\u9065\u611f\u5f71\u50cf\u3001\u65e0\u4eba\u673a\u89c6\u89c9\u4e0e\u8fb9\u7f18\u8bbe\u5907\u90e8\u7f72\u7b49\u771f\u5b9e\u5e94\u7528\u573a\u666f\u3002<\/p>\n<p> <img decoding=\"async\" width=\"700\" src=\"https:\/\/www.wsisp.com\/helps\/wp-content\/uploads\/2026\/11\/20261101221009-6ae7b8c17236e.png\" \/> <\/p>\n<h3>&#x1f9e7;&#x1f9e7; \u6587\u672b\u798f\u5229&#xff0c;\u7b49\u4f60\u6765\u62ff&#xff01;&#x1f9e7;&#x1f9e7;<\/h3>\n<p>&#x1f4cc; \u6587\u4e2d\u6240\u6d89\u53ca\u7684\u6280\u672f\u5185\u5bb9&#xff0c;\u5927\u591a\u6765\u6e90\u4e8e\u672c\u4eba\u5728 YOLOv12 \u9879\u76ee\u4e2d\u7684\u4e00\u7ebf\u5b9e\u8df5\u79ef\u7d2f&#xff0c;\u90e8\u5206\u6848\u4f8b\u53c2\u8003\u4e86\u5f00\u6e90\u9879\u76ee\u3001\u516c\u5f00\u8bba\u6587\u3001\u6280\u672f\u793e\u533a\u8d44\u6599\u4e0e\u8bfb\u8005\u53cd\u9988\u3002<\/p>\n<p>\u5982\u6709\u7248\u6743\u76f8\u5173\u95ee\u9898&#xff0c;\u6b22\u8fce\u7b2c\u4e00\u65f6\u95f4\u8054\u7cfb&#xff0c;\u6211\u5c06\u5c3d\u5feb\u6838\u5b9e\u5e76\u8fdb\u884c\u4fee\u6539\u6216\u4e0b\u7ebf\u5904\u7406\u3002<\/p>\n<p>\u90e8\u5206\u95ee\u9898\u5206\u6790\u601d\u8def\u4e0e\u6392\u67e5\u8def\u5f84\u53c2\u8003\u4e86\u6280\u672f\u793e\u533a\u53ca AI \u95ee\u7b54\u5e73\u53f0&#xff0c;\u5728\u6b64\u4e00\u5e76\u81f4\u8c22 &#x1f64f;<\/p>\n<p>\u6700\u540e\u60f3\u8bf4\u7684\u662f&#xff1a;<\/p>\n<p><font color=\"red\">YOLOv12 \u7684\u4f18\u5316\u672c\u8d28\u4e0a\u662f\u4e00\u4e2a\u9ad8\u5ea6\u4f9d\u8d56\u4efb\u52a1\u3001\u6570\u636e\u548c\u90e8\u7f72\u73af\u5883\u7684\u7cfb\u7edf\u5de5\u7a0b\u95ee\u9898&#xff0c;\u4e0d\u5b58\u5728&#034;\u4e00\u62db\u901a\u6740&#034;\u7684\u94f6\u5f39\u65b9\u6848\u3002<\/font><\/p>\n<p>\u533a\u57df\u6ce8\u610f\u529b\u673a\u5236\u3001R-ELAN \u6b8b\u5dee\u805a\u5408\u3001Flash Attention \u52a0\u901f\u3001\u8f7b\u91cf\u5316\u5377\u79ef\u3001\u6539\u8fdb\u68c0\u6d4b\u5934\u3001IoU \u635f\u5931\u51fd\u6570\u3001\u7279\u5f81\u878d\u5408\u6a21\u5757\u548c\u6570\u636e\u589e\u5f3a\u7b56\u7565&#xff0c;\u90fd\u6709\u5176\u9002\u7528\u6761\u4ef6\u3002<\/p>\n<p>\u67d0\u4e2a\u6a21\u5757\u5728\u516c\u5f00\u6570\u636e\u96c6\u4e0a\u53d6\u5f97\u63d0\u5347&#xff0c;\u5e76\u4e0d\u610f\u5473\u7740\u5b83\u80fd\u591f\u5728\u6240\u6709\u81ea\u5b9a\u4e49\u6570\u636e\u96c6\u3001\u786c\u4ef6\u5e73\u53f0\u548c\u4e1a\u52a1\u573a\u666f\u4e2d\u83b7\u5f97\u540c\u6837\u6536\u76ca\u3002<\/p>\n<p>\u5c24\u5176\u5bf9\u4e8e YOLOv12 \u800c\u8a00&#xff0c;\u5728\u8fdb\u884c\u7ed3\u6784\u6539\u8fdb\u65f6\u8fd8\u9700\u8981\u989d\u5916\u5173\u6ce8 Area Attention \u7684\u611f\u53d7\u91ce\u8303\u56f4\u3001R-ELAN \u6b8b\u5dee\u8def\u5f84\u7684\u68af\u5ea6\u4f20\u64ad\u4ee5\u53ca Flash Attention \u7684\u786c\u4ef6\u517c\u5bb9\u6027\u3002\u67d0\u4e9b\u76f4\u63a5\u4ece YOLOv8\u3001YOLOv10\u3001YOLOv11 \u7b49\u6a21\u578b\u8fc1\u79fb\u8fc7\u6765\u7684\u6a21\u5757&#xff0c;\u5982\u679c\u6ca1\u6709\u5904\u7406\u597d\u6ce8\u610f\u529b\u5c42\u4e0e\u5377\u79ef\u5c42\u4e4b\u95f4\u7684\u901a\u9053\u9002\u914d\u5173\u7cfb&#xff0c;\u4e5f\u53ef\u80fd\u51fa\u73b0\u7cbe\u5ea6\u4e0b\u964d\u3001\u8bad\u7ec3\u4e0d\u7a33\u5b9a\u6216\u63a8\u7406\u903b\u8f91\u5f02\u5e38\u7b49\u95ee\u9898\u3002<\/p>\n<p>\u771f\u6b63\u6709\u6548\u7684\u4f18\u5316\u8def\u5f84&#xff0c;\u6c38\u8fdc\u6e90\u4e8e&#xff1a;<\/p>\n<ul>\n<li>\u5bf9\u4e1a\u52a1\u76ee\u6807\u4e0e\u8bc4\u4ef7\u6307\u6807\u7684\u51c6\u786e\u7406\u89e3&#xff1b;<\/li>\n<li>\u5bf9\u6570\u636e\u8d28\u91cf\u548c\u7c7b\u522b\u5206\u5e03\u7684\u6301\u7eed\u5206\u6790&#xff1b;<\/li>\n<li>\u5bf9\u6a21\u578b\u74f6\u9888\u7684\u5b9a\u4f4d\u4e0e\u9488\u5bf9\u6027\u6539\u8fdb&#xff1b;<\/li>\n<li>\u5bf9 Area Attention \u533a\u57df\u5212\u5206\u4e0e R-ELAN \u805a\u5408\u673a\u5236\u7684\u6b63\u786e\u7406\u89e3&#xff1b;<\/li>\n<li>\u5bf9\u5b9e\u9a8c\u53d8\u91cf\u7684\u4e25\u683c\u63a7\u5236&#xff1b;<\/li>\n<li>\u5bf9\u7cbe\u5ea6\u3001\u901f\u5ea6\u3001Latency\u3001\u53c2\u6570\u91cf\u548c\u90e8\u7f72\u6210\u672c\u7684\u7efc\u5408\u6743\u8861&#xff1b;<\/li>\n<li>\u4ee5\u53ca\u4e00\u8f6e\u53c8\u4e00\u8f6e\u53ef\u590d\u73b0\u7684\u5bf9\u6bd4\u5b9e\u9a8c\u3002<\/li>\n<\/ul>\n<p>\u5982\u679c\u4f60\u5df2\u7ecf\u5728\u81ea\u5df1\u7684\u9879\u76ee\u4e2d\u63a2\u7d22\u51fa\u4e86\u66f4\u52a0\u9ad8\u6548\u3001\u7a33\u5b9a\u7684 YOLOv12 \u4f18\u5316\u8def\u5f84&#xff0c;\u975e\u5e38\u9f13\u52b1\u4f60&#xff1a;<\/p>\n<ul>\n<li>&#x1f4ac; \u5728\u8bc4\u8bba\u533a\u7b80\u8981\u5206\u4eab\u6838\u5fc3\u601d\u8def\u4e0e\u5b9e\u9a8c\u7ed3\u8bba&#xff1b;<\/li>\n<li>&#x1f4ca; \u5206\u4eab\u4e0d\u540c\u6a21\u5757\u7684\u6d88\u878d\u5b9e\u9a8c\u7ed3\u679c&#xff1b;<\/li>\n<li>&#x1f4dd; \u5c06\u5b8c\u6574\u8fc7\u7a0b\u6574\u7406\u6210\u6559\u7a0b\u3001\u535a\u5ba2\u6216\u7cfb\u5217\u6587\u7ae0&#xff1b;<\/li>\n<li>&#x1f527; \u63d0\u4ea4\u53ef\u590d\u73b0\u7684\u914d\u7f6e\u6587\u4ef6\u3001\u4ee3\u7801\u6216\u5de5\u7a0b\u5b9e\u8df5\u7ecf\u9a8c\u3002<\/li>\n<\/ul>\n<p>\u4f60\u7684\u7ecf\u9a8c&#xff0c;\u6216\u8bb8\u6b63\u662f\u522b\u4eba\u5361\u5173\u5df2\u4e45\u6240\u7f3a\u5c11\u7684\u6700\u540e\u4e00\u5757\u62fc\u56fe\u3002<\/p>\n<p>\u2705 \u672c\u671f\u5173\u4e8e YOLOv12 \u4f18\u5316\u4e0e\u5b9e\u6218\u5e94\u7528 \u7684\u5185\u5bb9\u5c31\u5148\u804a\u5230\u8fd9\u91cc\u3002<\/p>\n<p>\u5982\u679c\u4f60\u60f3\u8fdb\u4e00\u6b65\u6df1\u5165&#xff1a;<\/p>\n<ul>\n<li>&#x1f50d; \u7cfb\u7edf\u7406\u89e3 Area Attention \u4e0e YOLOv12 \u7684\u6574\u4f53\u7f51\u7edc\u7ed3\u6784&#xff1b;<\/li>\n<li>&#x1f3af; \u6df1\u5165\u7406\u89e3 R-ELAN \u6b8b\u5dee\u9ad8\u6548\u5c42\u805a\u5408\u7f51\u7edc\u7684\u8bbe\u8ba1\u601d\u8def&#xff1b;<\/li>\n<li>&#x1f680; \u638c\u63e1 YOLOv12 Flash Attention \u96c6\u6210\u4e0e\u663e\u5b58\u4f18\u5316\u5b9e\u73b0\u539f\u7406&#xff1b;<\/li>\n<li>&#x1f9f1; \u5b66\u4e60\u4e3b\u5e72\u7f51\u7edc\u3001\u9888\u90e8\u7f51\u7edc\u3001\u68c0\u6d4b\u5934\u4e0e\u7279\u5f81\u878d\u5408\u6a21\u5757\u7684\u6539\u8fdb\u65b9\u6cd5&#xff1b;<\/li>\n<li>&#x1f4c9; \u638c\u63e1\u635f\u5931\u51fd\u6570\u3001\u5339\u914d\u5ea6\u91cf\u3001\u6837\u672c\u5206\u914d\u4e0e\u8bad\u7ec3\u7b56\u7565\u7684\u4f18\u5316\u6280\u5de7&#xff1b;<\/li>\n<li>\u26a1 \u5bf9\u6bd4\u4e0d\u540c\u573a\u666f\u4e0b\u7684\u6a21\u578b\u8f7b\u91cf\u5316\u4e0e\u90e8\u7f72\u52a0\u901f\u65b9\u6848&#xff1b;<\/li>\n<li>&#x1f9ea; \u5efa\u7acb\u89c4\u8303\u7684\u6d88\u878d\u5b9e\u9a8c\u3001\u6307\u6807\u5bf9\u6bd4\u4e0e\u6a21\u578b\u8bc4\u4f30\u6d41\u7a0b&#xff1b;<\/li>\n<li>&#x1f9e0; \u7cfb\u7edf\u6784\u5efa\u4e00\u5957\u5c5e\u4e8e\u81ea\u5df1\u7684 YOLOv12 \u8c03\u4f18\u65b9\u6cd5\u8bba&#xff1b;<\/li>\n<\/ul>\n<p>\u6b22\u8fce\u7ee7\u7eed\u5173\u6ce8\u4e13\u680f&#xff1a;\u300aYOLOv12\u5b9e\u6218&#xff1a;\u4ece\u5165\u95e8\u5230\u6df1\u5ea6\u4f18\u5316\u300b<\/p>\n<p>\u671f\u5f85\u8fd9\u4e9b\u5185\u5bb9\u80fd\u591f\u5728\u4f60\u7684\u9879\u76ee\u4e2d\u771f\u6b63\u843d\u5730\u89c1\u6548&#xff0c;\u5e2e\u52a9\u4f60 \u5c11\u8e29\u5751\u3001\u591a\u63d0\u6548\u3001\u5feb\u9a8c\u8bc1\u3001\u7a33\u90e8\u7f72&#xff0c;\u6211\u4eec\u4e0b\u671f\u89c1\u3002<\/p>\n<p>\u2728 \u5f53\u7136&#xff0c;\u5982\u679c YOLOv12 \u4e13\u680f\u5df2\u7ecf\u65e0\u6cd5\u6ee1\u8db3\u4f60&#xff0c;\u4e5f\u53ef\u4ee5\u7ee7\u7eed\u5173\u6ce8&#xff1a;<\/p>\n<ul>\n<li>\n<p>\u300aYOLOv10\u5b9e\u6218&#xff1a;\u4ece\u5165\u95e8\u5230\u6df1\u5ea6\u4f18\u5316\u300b<\/p>\n<\/li>\n<li>\n<p>\u300aYOLOv11\u5b9e\u6218&#xff1a;\u4ece\u5165\u95e8\u5230\u6df1\u5ea6\u4f18\u5316\u300b<\/p>\n<\/li>\n<li>\n<p>\u300aYOLOv9\u5b9e\u6218&#xff1a;\u4ece\u5165\u95e8\u5230\u6df1\u5ea6\u4f18\u5316\u300b<\/p>\n<\/li>\n<\/ul>\n<p>\u66f4\u591a\u65b0\u7248\u672c\u3001\u65b0\u6a21\u5757\u4e0e\u65b0\u8bba\u6587\u7684\u5de5\u7a0b\u590d\u73b0\u5185\u5bb9&#xff0c;\u4e5f\u4f1a\u6301\u7eed\u66f4\u65b0\u3002<\/p>\n<p>\u270d\ufe0f \u7801\u5b57\u4e0d\u6613&#xff0c;\u5982\u679c\u8fd9\u7bc7\u6587\u7ae0\u5bf9\u4f60\u6709\u6240\u542f\u53d1\u6216\u5e2e\u52a9&#xff0c;\u6b22\u8fce\u7ed9\u6211\u6765\u4e2a \u4e00\u952e\u4e09\u8fde&#xff1a;\u5173\u6ce8 &#043; \u70b9\u8d5e &#043; \u6536\u85cf\u3002<\/p>\n<p>\u4f60\u7684\u652f\u6301&#xff0c;\u662f\u6211\u6301\u7eed\u8f93\u51fa\u9ad8\u8d28\u91cf YOLOv12 \u6280\u672f\u5185\u5bb9\u4e0e\u5de5\u7a0b\u5b9e\u6218\u6848\u4f8b\u6700\u76f4\u63a5\u7684\u52a8\u529b\u6765\u6e90\u3002<\/p>\n<p>\u540c\u65f6\u8bda\u631a\u63a8\u8350\u5173\u6ce8\u6211\u7684\u6280\u672f\u53f7&#xff1a; \u300c\u733f\u5708\u5947\u5999\u5c4b\u300d<\/p>\n<p>\u5728\u8fd9\u91cc&#xff0c;\u4f60\u53ef\u4ee5&#xff1a;<\/p>\n<ul>\n<li>&#x1f4e1; \u7b2c\u4e00\u65f6\u95f4\u83b7\u53d6 YOLOv12\u3001\u76ee\u6807\u68c0\u6d4b\u3001\u591a\u76ee\u6807\u8ffd\u8e2a\u4e0e\u591a\u4efb\u52a1\u5b66\u4e60\u7b49\u65b9\u5411\u7684\u8fdb\u9636\u5185\u5bb9&#xff1b;<\/li>\n<li>&#x1f6e0;\ufe0f \u83b7\u53d6\u89c6\u89c9\u7b97\u6cd5\u3001\u6df1\u5ea6\u5b66\u4e60\u4e0e\u6a21\u578b\u90e8\u7f72\u7684\u6700\u65b0\u4f18\u5316\u65b9\u6848\u548c\u5de5\u7a0b\u5b9e\u6218\u7ecf\u9a8c&#xff1b;<\/li>\n<li>&#x1f4da; \u5b66\u4e60 PyTorch\u3001OpenCV\u3001ONNX\u3001TensorRT \u7b49\u76f8\u5173\u6280\u672f&#xff1b;<\/li>\n<li>&#x1f381; \u83b7\u53d6 BAT \u5927\u5382\u9762\u7ecf\u3001\u6280\u672f\u4e66\u7c4d PDF\u3001\u5de5\u7a0b\u6a21\u677f\u4e0e\u5e38\u7528\u5de5\u5177\u6e05\u5355\u7b49\u5b9e\u7528\u8d44\u6e90\u3002<\/li>\n<\/ul>\n<p>\u671f\u5f85\u5728\u66f4\u591a\u7ef4\u5ea6\u4e0a\u4e0e\u4f60\u4e00\u8d77\u8fdb\u6b65\u3001\u5171\u540c\u6210\u957f\u3002<\/p>\n<h3>&#x1f468;\u200d&#x1f4bb; About Me \u00b7 \u5173\u4e8e\u4f5c\u8005<\/h3>\n<p>\u6211\u662f\u4e13\u6ce8\u4e8e \u8ba1\u7b97\u673a\u89c6\u89c9\u3001\u56fe\u50cf\u8bc6\u522b\u3001\u76ee\u6807\u68c0\u6d4b\u4e0e\u6df1\u5ea6\u5b66\u4e60\u5de5\u7a0b\u843d\u5730 \u7684\u8bb2\u5e08\u548c\u6280\u672f\u535a\u4e3b&#xff0c;\u7b14\u540d bug\u83cc&#xff1a;<\/p>\n<ul>\n<li>\u6d3b\u8dc3\u4e8e CSDN&#xff5c;\u7a00\u571f\u6398\u91d1&#xff5c;InfoQ&#xff5c;51CTO&#xff5c;\u534e\u4e3a\u4e91\u5f00\u53d1\u8005\u793e\u533a&#xff5c;\u963f\u91cc\u4e91\u5f00\u53d1\u8005\u793e\u533a&#xff5c;\u817e\u8baf\u4e91\u5f00\u53d1\u8005\u793e\u533a&#xff5c;\u5f00\u6e90\u4e2d\u56fd&#xff5c;\u535a\u5ba2\u56ed&#xff5c;\u58a8\u5929\u8f6e \u7b49\u591a\u4e2a\u6280\u672f\u793e\u533a&#xff1b;<\/li>\n<li>CSDN \u535a\u5ba2\u4e4b\u661f Top 30\u3001\u534e\u4e3a\u4e91\u591a\u5e74\u5ea6\u5341\u4f73\u535a\u4e3b\u53ca\u5353\u8d8a\u8d21\u732e\u5956\u83b7\u5f97\u8005\u3001\u6398\u91d1\u591a\u5e74\u5ea6\u4eba\u6c14\u4f5c\u8005 Top 40&#xff1b;<\/li>\n<li>CSDN\u3001\u6398\u91d1\u3001InfoQ\u300151CTO \u7b49\u5e73\u53f0\u7b7e\u7ea6\u4f5c\u8005\u53ca\u4f18\u8d28\u521b\u4f5c\u8005&#xff1b;<\/li>\n<li>\u5168\u7f51\u7c89\u4e1d\u7d2f\u8ba1 30w&#043;\u3002<\/li>\n<\/ul>\n<p>\u66f4\u591a\u9ad8\u8d28\u91cf\u6280\u672f\u5185\u5bb9\u4e0e\u6210\u957f\u8d44\u6599&#xff0c;\u53ef\u67e5\u770b\u5408\u96c6\u5165\u53e3&#xff1a;<\/p>\n<p>&#x1f449; \u70b9\u51fb\u67e5\u770b &#x1f448;\ufe0f<\/p>\n<p>\u786c\u6838\u6280\u672f\u53f7 \u300c\u733f\u5708\u5947\u5999\u5c4b\u300d \u671f\u5f85\u4f60\u7684\u52a0\u5165&#xff0c;\u4e00\u8d77\u8fdb\u9636\u3001\u4e00\u8d77\u6253\u602a\u5347\u7ea7\u3002<\/p>\n<p> <img decoding=\"async\" src=\"https:\/\/www.wsisp.com\/helps\/wp-content\/uploads\/2026\/11\/20261101221009-6ae7b8c180707.png\" \/> <\/p>\n<p>&#8211; End &#8211;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>&#x1f3c6; \u672c\u6587\u6536\u5f55\u4e8e \u300aYOLOv12\u5b9e\u6218&#xff1a;\u4ece\u5165\u95e8\u5230\u6df1\u5ea6\u4f18\u5316\u300b \u4e13\u680f\u3002 \u8be5\u4e13\u680f\u7cfb\u7edf\u590d\u73b0\u5e76\u6df1\u5ea6\u68b3\u7406\u5168\u7f51\u4e3b\u6d41 YOLOv12 \u6539\u8fdb\u65b9\u6cd5\u4e0e\u5de5\u7a0b\u5b9e\u6218\u6848\u4f8b&#xff0c;\u8986\u76d6\u5206\u7c7b\u3001\u76ee\u6807\u68c0\u6d4b\u3001\u5b9e\u4f8b\u5206\u5272\u3001\u591a\u76ee\u6807\u8ffd\u8e2a\u3001\u5173\u952e\u70b9\u68c0\u6d4b\u3001\u65cb\u8f6c\u76ee\u6807\u68c0\u6d4b\u7b49\u591a\u4e2a\u65b9\u5411&#xff0c;\u575a\u6301 \u6301\u7eed\u66f4\u65b0  \u6df1\u5ea6\u89e3\u6790  \u5de5\u7a0b\u9a8c\u8bc1\u3002 \u4e13\u680f\u5c06\u56f4\u7ed5 YOLOv12 \u7684\u7f51\u7edc\u7ed3\u6784\u3001\u8bad\u7ec3\u7b56\u7565\u3001\u6807\u7b7e\u5206\u914d\u3001\u635f\u5931\u51fd\u6570\u3001\u6570\u636e\u589e\u5f3a\u3001\u6a21\u578b\u538b\u7f29\u3001\u63a8\u7406\u52a0\u901f\u4e0e\u90e8\u7f72\u843d\u5730\u7b49\u5185\u5bb9\u5c55\u5f00&#xff0c;\u91cd\u70b9\u5206\u6790 Area Atte<\/p>\n","protected":false},"author":2,"featured_media":121174,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[13860,7379,152,1665,523],"topic":[],"class_list":["post-121182","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-server","tag-benchmark-","tag-yolov12","tag-pytorch","tag-1665","tag-523"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v20.3 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>YOLOv12\u3010\u7b2c\u516d\u7ae0\uff1a\u63a8\u7406\u3001\u9a8c\u8bc1\u4e0e Benchmark\u7bc7\u00b7\u7b2c15\u8282\u3011YOLOv12 Benchmark \u62a5\u544a\u6a21\u677f - \u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3<\/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.wsisp.com\/helps\/121182.html\" \/>\n<meta property=\"og:locale\" content=\"zh_CN\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"YOLOv12\u3010\u7b2c\u516d\u7ae0\uff1a\u63a8\u7406\u3001\u9a8c\u8bc1\u4e0e Benchmark\u7bc7\u00b7\u7b2c15\u8282\u3011YOLOv12 Benchmark \u62a5\u544a\u6a21\u677f - \u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3\" \/>\n<meta property=\"og:description\" content=\"&#x1f3c6; \u672c\u6587\u6536\u5f55\u4e8e \u300aYOLOv12\u5b9e\u6218&#xff1a;\u4ece\u5165\u95e8\u5230\u6df1\u5ea6\u4f18\u5316\u300b \u4e13\u680f\u3002 \u8be5\u4e13\u680f\u7cfb\u7edf\u590d\u73b0\u5e76\u6df1\u5ea6\u68b3\u7406\u5168\u7f51\u4e3b\u6d41 YOLOv12 \u6539\u8fdb\u65b9\u6cd5\u4e0e\u5de5\u7a0b\u5b9e\u6218\u6848\u4f8b&#xff0c;\u8986\u76d6\u5206\u7c7b\u3001\u76ee\u6807\u68c0\u6d4b\u3001\u5b9e\u4f8b\u5206\u5272\u3001\u591a\u76ee\u6807\u8ffd\u8e2a\u3001\u5173\u952e\u70b9\u68c0\u6d4b\u3001\u65cb\u8f6c\u76ee\u6807\u68c0\u6d4b\u7b49\u591a\u4e2a\u65b9\u5411&#xff0c;\u575a\u6301 \u6301\u7eed\u66f4\u65b0 \u6df1\u5ea6\u89e3\u6790 \u5de5\u7a0b\u9a8c\u8bc1\u3002 \u4e13\u680f\u5c06\u56f4\u7ed5 YOLOv12 \u7684\u7f51\u7edc\u7ed3\u6784\u3001\u8bad\u7ec3\u7b56\u7565\u3001\u6807\u7b7e\u5206\u914d\u3001\u635f\u5931\u51fd\u6570\u3001\u6570\u636e\u589e\u5f3a\u3001\u6a21\u578b\u538b\u7f29\u3001\u63a8\u7406\u52a0\u901f\u4e0e\u90e8\u7f72\u843d\u5730\u7b49\u5185\u5bb9\u5c55\u5f00&#xff0c;\u91cd\u70b9\u5206\u6790 Area Atte\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.wsisp.com\/helps\/121182.html\" \/>\n<meta property=\"og:site_name\" content=\"\u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3\" \/>\n<meta property=\"article:published_time\" content=\"2026-11-01T22:10:12+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.wsisp.com\/helps\/wp-content\/uploads\/2026\/11\/20261101221001-6ae7b8b9a8503.png\" \/>\n<meta name=\"author\" content=\"admin\" \/>\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\" \/>\n\t<meta name=\"twitter:label2\" content=\"\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4\" \/>\n\t<meta name=\"twitter:data2\" content=\"41 \u5206\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.wsisp.com\/helps\/121182.html\",\"url\":\"https:\/\/www.wsisp.com\/helps\/121182.html\",\"name\":\"YOLOv12\u3010\u7b2c\u516d\u7ae0\uff1a\u63a8\u7406\u3001\u9a8c\u8bc1\u4e0e Benchmark\u7bc7\u00b7\u7b2c15\u8282\u3011YOLOv12 Benchmark \u62a5\u544a\u6a21\u677f - \u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3\",\"isPartOf\":{\"@id\":\"https:\/\/www.wsisp.com\/helps\/#website\"},\"datePublished\":\"2026-11-01T22:10:12+00:00\",\"dateModified\":\"2026-11-01T22:10:12+00:00\",\"author\":{\"@id\":\"https:\/\/www.wsisp.com\/helps\/#\/schema\/person\/358e386c577a3ab51c4493330a20ad41\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.wsisp.com\/helps\/121182.html#breadcrumb\"},\"inLanguage\":\"zh-Hans\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.wsisp.com\/helps\/121182.html\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.wsisp.com\/helps\/121182.html#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\u9996\u9875\",\"item\":\"https:\/\/www.wsisp.com\/helps\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"YOLOv12\u3010\u7b2c\u516d\u7ae0\uff1a\u63a8\u7406\u3001\u9a8c\u8bc1\u4e0e Benchmark\u7bc7\u00b7\u7b2c15\u8282\u3011YOLOv12 Benchmark \u62a5\u544a\u6a21\u677f\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.wsisp.com\/helps\/#website\",\"url\":\"https:\/\/www.wsisp.com\/helps\/\",\"name\":\"\u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3\",\"description\":\"\u9999\u6e2f\u670d\u52a1\u5668_\u9999\u6e2f\u4e91\u670d\u52a1\u5668\u8d44\u8baf_\u670d\u52a1\u5668\u5e2e\u52a9\u6587\u6863_\u670d\u52a1\u5668\u6559\u7a0b\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.wsisp.com\/helps\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"zh-Hans\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.wsisp.com\/helps\/#\/schema\/person\/358e386c577a3ab51c4493330a20ad41\",\"name\":\"admin\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-Hans\",\"@id\":\"https:\/\/www.wsisp.com\/helps\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/gravatar.wp-china-yes.net\/avatar\/?s=96&d=mystery\",\"contentUrl\":\"https:\/\/gravatar.wp-china-yes.net\/avatar\/?s=96&d=mystery\",\"caption\":\"admin\"},\"sameAs\":[\"http:\/\/wp.wsisp.com\"],\"url\":\"https:\/\/www.wsisp.com\/helps\/author\/admin\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"YOLOv12\u3010\u7b2c\u516d\u7ae0\uff1a\u63a8\u7406\u3001\u9a8c\u8bc1\u4e0e Benchmark\u7bc7\u00b7\u7b2c15\u8282\u3011YOLOv12 Benchmark \u62a5\u544a\u6a21\u677f - \u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3","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.wsisp.com\/helps\/121182.html","og_locale":"zh_CN","og_type":"article","og_title":"YOLOv12\u3010\u7b2c\u516d\u7ae0\uff1a\u63a8\u7406\u3001\u9a8c\u8bc1\u4e0e Benchmark\u7bc7\u00b7\u7b2c15\u8282\u3011YOLOv12 Benchmark \u62a5\u544a\u6a21\u677f - \u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3","og_description":"&#x1f3c6; \u672c\u6587\u6536\u5f55\u4e8e \u300aYOLOv12\u5b9e\u6218&#xff1a;\u4ece\u5165\u95e8\u5230\u6df1\u5ea6\u4f18\u5316\u300b \u4e13\u680f\u3002 \u8be5\u4e13\u680f\u7cfb\u7edf\u590d\u73b0\u5e76\u6df1\u5ea6\u68b3\u7406\u5168\u7f51\u4e3b\u6d41 YOLOv12 \u6539\u8fdb\u65b9\u6cd5\u4e0e\u5de5\u7a0b\u5b9e\u6218\u6848\u4f8b&#xff0c;\u8986\u76d6\u5206\u7c7b\u3001\u76ee\u6807\u68c0\u6d4b\u3001\u5b9e\u4f8b\u5206\u5272\u3001\u591a\u76ee\u6807\u8ffd\u8e2a\u3001\u5173\u952e\u70b9\u68c0\u6d4b\u3001\u65cb\u8f6c\u76ee\u6807\u68c0\u6d4b\u7b49\u591a\u4e2a\u65b9\u5411&#xff0c;\u575a\u6301 \u6301\u7eed\u66f4\u65b0 \u6df1\u5ea6\u89e3\u6790 \u5de5\u7a0b\u9a8c\u8bc1\u3002 \u4e13\u680f\u5c06\u56f4\u7ed5 YOLOv12 \u7684\u7f51\u7edc\u7ed3\u6784\u3001\u8bad\u7ec3\u7b56\u7565\u3001\u6807\u7b7e\u5206\u914d\u3001\u635f\u5931\u51fd\u6570\u3001\u6570\u636e\u589e\u5f3a\u3001\u6a21\u578b\u538b\u7f29\u3001\u63a8\u7406\u52a0\u901f\u4e0e\u90e8\u7f72\u843d\u5730\u7b49\u5185\u5bb9\u5c55\u5f00&#xff0c;\u91cd\u70b9\u5206\u6790 Area Atte","og_url":"https:\/\/www.wsisp.com\/helps\/121182.html","og_site_name":"\u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3","article_published_time":"2026-11-01T22:10:12+00:00","og_image":[{"url":"https:\/\/www.wsisp.com\/helps\/wp-content\/uploads\/2026\/11\/20261101221001-6ae7b8b9a8503.png"}],"author":"admin","twitter_card":"summary_large_image","twitter_misc":{"\u4f5c\u8005":"admin","\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4":"41 \u5206"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.wsisp.com\/helps\/121182.html","url":"https:\/\/www.wsisp.com\/helps\/121182.html","name":"YOLOv12\u3010\u7b2c\u516d\u7ae0\uff1a\u63a8\u7406\u3001\u9a8c\u8bc1\u4e0e Benchmark\u7bc7\u00b7\u7b2c15\u8282\u3011YOLOv12 Benchmark \u62a5\u544a\u6a21\u677f - \u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3","isPartOf":{"@id":"https:\/\/www.wsisp.com\/helps\/#website"},"datePublished":"2026-11-01T22:10:12+00:00","dateModified":"2026-11-01T22:10:12+00:00","author":{"@id":"https:\/\/www.wsisp.com\/helps\/#\/schema\/person\/358e386c577a3ab51c4493330a20ad41"},"breadcrumb":{"@id":"https:\/\/www.wsisp.com\/helps\/121182.html#breadcrumb"},"inLanguage":"zh-Hans","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.wsisp.com\/helps\/121182.html"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.wsisp.com\/helps\/121182.html#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\u9996\u9875","item":"https:\/\/www.wsisp.com\/helps"},{"@type":"ListItem","position":2,"name":"YOLOv12\u3010\u7b2c\u516d\u7ae0\uff1a\u63a8\u7406\u3001\u9a8c\u8bc1\u4e0e Benchmark\u7bc7\u00b7\u7b2c15\u8282\u3011YOLOv12 Benchmark \u62a5\u544a\u6a21\u677f"}]},{"@type":"WebSite","@id":"https:\/\/www.wsisp.com\/helps\/#website","url":"https:\/\/www.wsisp.com\/helps\/","name":"\u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3","description":"\u9999\u6e2f\u670d\u52a1\u5668_\u9999\u6e2f\u4e91\u670d\u52a1\u5668\u8d44\u8baf_\u670d\u52a1\u5668\u5e2e\u52a9\u6587\u6863_\u670d\u52a1\u5668\u6559\u7a0b","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.wsisp.com\/helps\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"zh-Hans"},{"@type":"Person","@id":"https:\/\/www.wsisp.com\/helps\/#\/schema\/person\/358e386c577a3ab51c4493330a20ad41","name":"admin","image":{"@type":"ImageObject","inLanguage":"zh-Hans","@id":"https:\/\/www.wsisp.com\/helps\/#\/schema\/person\/image\/","url":"https:\/\/gravatar.wp-china-yes.net\/avatar\/?s=96&d=mystery","contentUrl":"https:\/\/gravatar.wp-china-yes.net\/avatar\/?s=96&d=mystery","caption":"admin"},"sameAs":["http:\/\/wp.wsisp.com"],"url":"https:\/\/www.wsisp.com\/helps\/author\/admin"}]}},"_links":{"self":[{"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/posts\/121182","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/comments?post=121182"}],"version-history":[{"count":0,"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/posts\/121182\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/media\/121174"}],"wp:attachment":[{"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/media?parent=121182"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/categories?post=121182"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/tags?post=121182"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/topic?post=121182"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}