{"id":4674,"date":"2026-01-05T18:23:37","date_gmt":"2026-01-05T10:23:37","guid":{"rendered":"https:\/\/10ccc.cc\/?p=4674"},"modified":"2026-01-23T01:19:50","modified_gmt":"2026-01-22T17:19:50","slug":"yolo%ef%bc%9a%e4%bb%8e%e6%a8%a1%e5%9e%8b%e6%9c%ac%e5%9c%b0%e5%be%ae%e8%b0%83%e5%88%b0%e9%83%a8%e7%bd%b2","status":"publish","type":"post","link":"https:\/\/10ccc.cc\/?p=4674","title":{"rendered":"YOLO\uff1a\u4ece\u6a21\u578b\u672c\u5730\u5fae\u8c03\u5230\u90e8\u7f72"},"content":{"rendered":"<blockquote><p>\u524d\u6bb5\u65f6\u95f4\u62ff\u5230\u4e86\u4e00\u5757\u6b63\u70b9\u539f\u5b50\u7684 i.mx6ull \u677f\u5b50\uff0cbilibili \u4e00\u4e0b\u540e\u53d1\u73b0\u53ef\u4ee5\u8fd0\u884c linux\u3002 \u90a3\u80fd\u4e0d\u80fd\u52a0\u4e2a\u6444\u50cf\u5934\u505a\u4e2a\u76d1\u63a7\u54c8\u57fa\u7c73\u7684\u4e1c\u897f\u5462\uff1f\uff1f\uff1f\u4f3c\u4e4e\u662f\u53ef\u4ee5\u7684\u3002<\/p><\/blockquote>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-4605 size-full aligncenter\" src=\"https:\/\/10ccc.cc\/wp-content\/uploads\/2026\/01\/1767411946-tumblr_mrtrdwKWb51qe6mn3o2_500.gif\" alt=\"\" width=\"500\" height=\"206\" \/><\/p>\n<p style=\"text-align: center;\">\u4e8e\u662f\uff0c\u5c31\u8fd9\u4e48\u505a\u4e86\u4e2a\u6109\u5feb\u7684\u51b3\u5b9a\uff0c<del datetime=\"2026-01-03T11:45:15+00:00\">\u4e0d\u662f\uff1f<\/del><\/p>\n<h1>1. \u7eed<\/h1>\n<p>\u6709\u4e9b\u8bb8\u8bef\u89e3\u3002\u5f00\u59cb\u67e5\u9605\u8d44\u6599\u4ee5\u53ca\u548c\u514b\u52b3\u5fb7\u3001\u5409\u76ae\u8e22\u4e86\u89e3\u7684\u76f8\u5173\u5185\u5bb9\u7684\u65f6\u5019\uff0c\u5f53\u65f6\u7406\u89e3\u53ea\u9700\u8981\u7528 OpenCV\u00a0 \u5c31\u53ef\u4ee5\u4e86\uff0c\u4f46\u662f\u4ece\u7b2c\u4e00\u884c\u4ee3\u7801\u5230\u5b9e\u9645\u8dd1\u901a\u4e00\u4e2a\u201c\u53ef\u7528\u7684\u201d demo \u65f6\uff0c\u624d\u53d1\u73b0\uff0c<ins datetime=\"2026-01-03T11:46:14+00:00\">\u5bf9\u4e8e\u8fd9\u4e2a\u4efb\u52a1<\/ins>\uff0cOpenCV \u53ea\u662f\u89e3\u51b3\u4e86\u8fd0\u884c\u7684\u95ee\u9898\u3002\u5176\u4e2d\u5305\u542b\u7684 Yolo\u624d\u662f\u6838\u5fc3\u3002 \u7ec6\u7a76\u4e00\u4e0b\uff0c\u624d\u53d1\u73b0\u8981\u771f\u6b63\u4f7f \u7528 Yolo \uff0c\u8fd8\u9700\u8981\u5bf9 yolo \u6a21\u578b\u6839\u636e\u81ea\u8eab\u8981\u6c42\u8fdb\u884c\u8bad\u7ec3\u5fae\u8c03(\u8bad\u7ec3\u8fc7\u7a0b\u7684\u4ee3\u7801\u7ed9\u611f\u89c9 Yolo \u4f3c\u4e4e\u662f\u57fa\u4e8e Pytorch \u7684)\u3002<\/p>\n<blockquote><p>\u597d\u5bb6\u4f19\uff0c\u53c8\u56de\u5230\u673a\u5668\u5b66\u4e60\u4e86\u662f\u5427\u3002Let's try how to train and deploy a yolo model!<\/p><\/blockquote>\n<h1>2. \u6574\u4f53\u6d41\u7a0b<\/h1>\n<p>\u5728\u6b64\uff0c\u6211\u9884\u8ba1\u6309\u7167\u4e0b\u8ff0\u6d41\u7a0b\u8fdb\u884c\u9610\u8ff0\uff1a<\/p>\n<ol>\n<li><strong>\u73af\u5883\u642d\u5efa<\/strong>\uff1a\u6807\u6ce8\u73af\u5883\u3001\u8bad\u7ec3\u73af\u5883\u51c6\u5907\uff1b<\/li>\n<li><strong>\u8bad\u7ec3\u6570\u636e\u7684\u51c6\u5907<\/strong>\uff1a\u8fd9\u70b9\u5305\u62ec\uff1a\u6574\u7406\u8bad\u7ec3\u6570\u636e\u96c6\u3001\u6e05\u6d17\u6570\u636e\u3001\u6570\u636e\u6807\u6ce8\u3001\u6570\u636e\u683c\u5f0f\u8f6c\u6362(\u8fd9\u4e2a\u53ef\u4ee5\u5ffd\u7565\uff0c\u4e00\u822c\u6807\u6ce8\u5de5\u5177\u5728\u5bfc\u51fa\u65f6\u4f1a\u81ea\u52a8\u63d0\u4f9b\u8f6c\u6362\u683c\u5f0f\u7684\u529f\u80fd)\uff1b<\/li>\n<li><strong>\u6570\u636e\u96c6\u5212\u5206\uff1a<\/strong>\u5212\u5206 Training \/ Validation \u6570\u636e\u96c6\uff0c\u7531\u4e8e\u6570\u636e\u91cf\u8f83\u591a\uff0cTest\u96c6\u5408\u6211\u4eec\u5c31\u5ffd\u7565\u4e86\uff0c\u8fd9\u6b65\u6211\u5728\u540e\u7eed\u5185\u5bb9\u4e2d\u4f1a\u63d0\u4f9b\u76f8\u5173\u811a\u672c\uff1b<\/li>\n<li><strong>\u6a21\u578b\u5fae\u8c03\u8bad\u7ec3<\/strong>\uff1a\u8fd9\u91cc\u6211\u4eec\u9009\u62e9 yolo11s.pt \u4f5c\u4e3a\u57fa\u7840\u6a21\u578b\uff1b\u6839\u636e\u5bf9\u4e00\u4e9b\u5173\u952e\u53c2\u6570\u7684\u76d1\u63a7\uff0c\u53ef\u80fd\u9700\u8981\u91cd\u590d\u591a\u6b21\u8fdb\u884c\u8c03\u6574\uff1b<\/li>\n<li><strong>\u6a21\u578b\u9a8c\u8bc1<\/strong>\uff1a\u8fd9\u91cc\uff0c\u901a\u8fc7\u67e5\u770b\u76f8\u5173\u5173\u952e\u53c2\u6570\uff0c\u5982loss\u3001 Confusion Matrix\u7b49\uff1b<\/li>\n<li><strong>\u5b9e\u9645\u63a8\u7406\u548c\u6d4b\u8bd5<\/strong>\uff1a\u7528\u771f\u5b9e\u7684\u56fe\u7247\u8fdb\u884c\u6d4b\u8bd5\uff0c\u67e5\u770b\u5b9e\u9645\u8bc6\u522b\u7ed3\u679c\uff1b<\/li>\n<li><strong>\u90e8\u7f72\uff1a<\/strong>\u90e8\u7f72\u5230\u5b9e\u9645\u8bbe\u5907<strong>\u3002<\/strong><\/li>\n<\/ol>\n<p>&nbsp;<\/p>\n<h1>3. \u73af\u5883\u642d\u5efa<\/h1>\n<p>\u5728\u5b9e\u9645\u64cd\u4f5c\u8fc7\u7a0b\uff0c\u53d1\u73b0\u6570\u636e\u6807\u6ce8\u8f6f\u4ef6 label-studio \u548c yolo \u6709\u90e8\u5206\u4f9d\u8d56\u91cd\u53e0\uff0c\u4f46\u8981\u6c42\u7248\u672c\u4e0d\u540c\u3002\u56e0\u6b64\uff0c\u5efa\u8bae\u5206\u522b\u4e3a\u4ed6\u4eec\u5efa\u7acb\u4e00\u4e2a\u72ec\u7acb\u7684\u73af\u5883\u3002\u73af\u5883\u7ba1\u7406\u56e0\u4e3a\u4e4b\u524d\u5df2\u7ecf\u5b89\u88c5\u4e86 <a href=\"https:\/\/www.anaconda.com\" target=\"_blank\"  rel=\"nofollow\" >anaconda<\/a> \uff0c\u5c31\u4f7f\u7528\u5b83\u4e0d\u505a\u53d8\u66f4\u3002 \u5982\u679c\u89c9\u5f97 anaconda \u592a\u81c3\u80bf\uff0c\u53ef\u4ee5\u4f7f\u7528 miniconda \u6216\u8005 <a href=\"https:\/\/docs.astral.sh\/uv\/getting-started\/installation\/\" target=\"_blank\"  rel=\"nofollow\" >uv<\/a>\u00a0 ; \u5f53\u7136\uff0c\u5982\u679c\u4f60\u5df2\u7ecf\u5b89\u88c5\u4e86 3.11 \u6216\u4ee5\u4e0a\u7248\u672c\u7684 python \uff0c\u7528\u81ea\u5e26\u7684 pyenv \u4e5f\u53ef\u4ee5\u3002\u4f46\u8fd9\u91cc\uff0c\u6211\u4eec\u4ee5 anaconda \u4e3a\u6807\u51c6\u3002<\/p>\n<p>&nbsp;<\/p>\n<p>\u5982\u679c\u4f60\u4f7f\u7528\u7684\u662f macOS \u6216 linux\uff1a<\/p>\n<p>\u9996\u5148\uff0c\u6211\u4eec\u6253\u5f00 terminal\uff0c\u5728 documents \u6587\u4ef6\u5939\u4e0b\u521b\u5efa\u9879\u76ee\u76ee\u5f55<ins datetime=\"2026-01-03T13:20:14+00:00\"> yolo_finetune<\/ins>\uff1a<\/p>\n<div class=\"dm-code-snippet dark no-background no-background-mobile dm-normal-version\" style=\"background-color:#abb8c3;\" snippet-height=\"\">\n\t\t\t<div class=\"control-language\">\n                <div class=\"dm-buttons\">\n                    <div class=\"dm-buttons-left\">\n                        <div class=\"dm-button-snippet red-button\"><\/div>\n                        <div class=\"dm-button-snippet orange-button\"><\/div>\n                        <div class=\"dm-button-snippet green-button\"><\/div>\n                    <\/div>\n                    <div class=\"dm-buttons-right\">\n                        <a id=\"dm-copy-raw-code\">\n                        <span class=\"dm-copy-text\">Copy Code<\/span>\n                        <span class=\"dm-copy-confirmed\" style=\"display:none\">Copied<\/span>\n                        <span class=\"dm-error-message\" style=\"display:none\">Use a different Browser<\/span><\/a>\n                    <\/div>\n                <\/div>\n                <pre class=\"no-line-numbers\"><code id=\"dm-code-raw\" class=\"no-wrap language-shell\"><\/p>\n<pre class=\"dm-pre-admin-side\">cd documents\r\n\r\nmkdir yolo_finetune\r\n\r\ncd yolo_finetune<\/pre>\n<p><\/code><\/pre>\n\t\t\t<\/div>\n        <\/div>\n<p>&nbsp;<\/p>\n<p>\u5982\u679c\u4f60\u4f7f\u7528\u7684\u662f windows,:<\/p>\n<p>\u5219\u53ef\u4ee5\u6253\u5f00 cmd , \u5728\u5e38\u7528\u7684\u4f4d\u7f6e\uff0c\u6bd4\u5982 D:\\ \u521b\u5efa\u6211\u4eec\u7684\u9879\u76ee\u76ee\u5f55 <ins datetime=\"2026-01-03T13:20:14+00:00\">yolo_finetune<\/ins>\uff1a<\/p>\n<div class=\"dm-code-snippet dark no-background no-background-mobile dm-normal-version\" style=\"background-color:#abb8c3;\" snippet-height=\"\">\n\t\t\t<div class=\"control-language\">\n                <div class=\"dm-buttons\">\n                    <div class=\"dm-buttons-left\">\n                        <div class=\"dm-button-snippet red-button\"><\/div>\n                        <div class=\"dm-button-snippet orange-button\"><\/div>\n                        <div class=\"dm-button-snippet green-button\"><\/div>\n                    <\/div>\n                    <div class=\"dm-buttons-right\">\n                        <a id=\"dm-copy-raw-code\">\n                        <span class=\"dm-copy-text\">Copy Code<\/span>\n                        <span class=\"dm-copy-confirmed\" style=\"display:none\">Copied<\/span>\n                        <span class=\"dm-error-message\" style=\"display:none\">Use a different Browser<\/span><\/a>\n                    <\/div>\n                <\/div>\n                <pre class=\"no-line-numbers\"><code id=\"dm-code-raw\" class=\"no-wrap language-shell\"><\/p>\n<pre class=\"dm-pre-admin-side\">D:\r\n\r\nmkdir yolo_finetune \r\n\r\ncd yolo_finetune<\/pre>\n<p><\/code><\/pre>\n\t\t\t<\/div>\n        <\/div>\n<p>&nbsp;<\/p>\n<p>\u4e00\u5207\u5c31\u7eea\uff0c\u6211\u4eec\u5df2\u7ecf\u8eab\u5904 yolo_finetune \u4e2d,\u00a0 \u53ef\u4ee5\u8fdb\u884c\u540e\u7eed\u6b65\u9aa4\u3002<\/p>\n<p>&nbsp;<\/p>\n<h2>3.1 label-studio \u73af\u5883<\/h2>\n<p>\u4e3a label-studio \u521b\u5efa\u72ec\u7acb\u7684\u73af\u5883\uff0c\u907f\u514d\u4f9d\u8d56\u51b2\u7a81\u5bfc\u81f4\u8bad\u7ec3\u6216\u6807\u6ce8\u4efb\u52a1\u51fa\u73b0\u95ee\u9898(<del datetime=\"2026-01-03T13:20:14+00:00\">\u867d\u7136\u5c1d\u8bd5\u4e86\u53ea\u7528\u4e00\u4e2a\u73af\u5883\u4f3c\u4e4e\u4e5f\u6ca1\u4ec0\u4e48\u4e8b\uff0c\u4f46\u4e3a\u4e86\u53ef\u590d\u73b0\u6027\uff0c\u8fd8\u662f\u5206\u5f00\u4e3a\u597d<\/del>)\u3002\u5728\u6b64\uff0c\u53ef\u901a\u8fc7\u540e\u7eed\u547d\u4ee4\u521b\u5efa\uff1a<\/p>\n<div class=\"dm-code-snippet dark no-background no-background-mobile dm-slim-version\" style=\"background-color:#abb8c3;\" snippet-height=\"\">\n\t\t\t<div class=\"control-language\">\n                <div class=\"dm-buttons\">\n                    <div class=\"dm-buttons-left\">\n                        <div class=\"dm-button-snippet red-button\"><\/div>\n                        <div class=\"dm-button-snippet orange-button\"><\/div>\n                        <div class=\"dm-button-snippet green-button\"><\/div>\n                    <\/div>\n                    <div class=\"dm-buttons-right\">\n                        <a id=\"dm-copy-raw-code\">\n                        <span class=\"dm-copy-text\">Copy Code<\/span>\n                        <span class=\"dm-copy-confirmed\" style=\"display:none\">Copied<\/span>\n                        <span class=\"dm-error-message\" style=\"display:none\">Use a different Browser<\/span><\/a>\n                    <\/div>\n                <\/div>\n                <pre class=\"no-line-numbers\"><code id=\"dm-code-raw\" class=\"no-wrap language-shell\"><\/p>\n<pre class=\"dm-pre-admin-side\">conda create -p .\/labelenv python=3.11<\/pre>\n<p><\/code><\/pre>\n\t\t\t<\/div>\n        <\/div>\n<p>\u4e0a\u8ff0\u547d\u4ee4\u4f1a\u5728\u5f53\u524d\u76ee\u5f55\uff08yolo_finetune\uff09\u4e2d\u521b\u5efa\u73af\u5883 labelenv \uff0cpython \u7248\u672c\u4e3a 3.11\u00a0 \u3002\u7136\u540e\u6211\u4eec\u901a\u8fc7\u4e0b\u65b9\u547d\u4ee4\u6fc0\u6d3b\u5b83\u3002<\/p>\n<p>&nbsp;<\/p>\n<div class=\"dm-code-snippet dark no-background no-background-mobile dm-slim-version\" style=\"background-color:#abb8c3;\" snippet-height=\"\">\n\t\t\t<div class=\"control-language\">\n                <div class=\"dm-buttons\">\n                    <div class=\"dm-buttons-left\">\n                        <div class=\"dm-button-snippet red-button\"><\/div>\n                        <div class=\"dm-button-snippet orange-button\"><\/div>\n                        <div class=\"dm-button-snippet green-button\"><\/div>\n                    <\/div>\n                    <div class=\"dm-buttons-right\">\n                        <a id=\"dm-copy-raw-code\">\n                        <span class=\"dm-copy-text\">Copy Code<\/span>\n                        <span class=\"dm-copy-confirmed\" style=\"display:none\">Copied<\/span>\n                        <span class=\"dm-error-message\" style=\"display:none\">Use a different Browser<\/span><\/a>\n                    <\/div>\n                <\/div>\n                <pre class=\"no-line-numbers\"><code id=\"dm-code-raw\" class=\"no-wrap language-shell\"><\/p>\n<pre class=\"dm-pre-admin-side\">conda activate .\/labelenv<\/pre>\n<p><\/code><\/pre>\n\t\t\t<\/div>\n        <\/div>\n<p>&nbsp;<\/p>\n<p>\u63a5\u7740\u6211\u4eec\u5b89\u88c5 label-studio\uff1a<\/p>\n<div class=\"dm-code-snippet dark no-background no-background-mobile dm-slim-version\" style=\"background-color:#abb8c3;\" snippet-height=\"\">\n\t\t\t<div class=\"control-language\">\n                <div class=\"dm-buttons\">\n                    <div class=\"dm-buttons-left\">\n                        <div class=\"dm-button-snippet red-button\"><\/div>\n                        <div class=\"dm-button-snippet orange-button\"><\/div>\n                        <div class=\"dm-button-snippet green-button\"><\/div>\n                    <\/div>\n                    <div class=\"dm-buttons-right\">\n                        <a id=\"dm-copy-raw-code\">\n                        <span class=\"dm-copy-text\">Copy Code<\/span>\n                        <span class=\"dm-copy-confirmed\" style=\"display:none\">Copied<\/span>\n                        <span class=\"dm-error-message\" style=\"display:none\">Use a different Browser<\/span><\/a>\n                    <\/div>\n                <\/div>\n                <pre class=\"no-line-numbers\"><code id=\"dm-code-raw\" class=\"no-wrap language-shell\">\n<pre class=\"language-bash\" data-v-efb858b9=\"\"><code class=\"language-bash\">pip <span class=\"token function\">install<\/span>\u00a0label-studio\r\n<\/code><\/pre>\n\t\t\t<\/div>\n        <\/div>\r\n\r\n\r\n\u8981\u4f7f\u7528\u7684\u65f6\u5019\uff0c\u6211\u4eec\u53ef\u4ee5\u6309\u7167\u4e0a\u8ff0\u6b65\u9aa4\u4e2d\u7684\u65b9\u6cd5\uff0c\u6fc0\u6d3b labelenv,\u7136\u540e\u542f\u52a8 label-studio\u3002\u5177\u4f53\u53ef\u6253\u5f00 terminal \uff1a\r\n<\/code><\/pre>\n<div class=\"dm-code-snippet dark no-background no-background-mobile dm-normal-version\" style=\"background-color:#abb8c3;\" snippet-height=\"\">\n\t\t\t<div class=\"control-language\">\n                <div class=\"dm-buttons\">\n                    <div class=\"dm-buttons-left\">\n                        <div class=\"dm-button-snippet red-button\"><\/div>\n                        <div class=\"dm-button-snippet orange-button\"><\/div>\n                        <div class=\"dm-button-snippet green-button\"><\/div>\n                    <\/div>\n                    <div class=\"dm-buttons-right\">\n                        <a id=\"dm-copy-raw-code\">\n                        <span class=\"dm-copy-text\">Copy Code<\/span>\n                        <span class=\"dm-copy-confirmed\" style=\"display:none\">Copied<\/span>\n                        <span class=\"dm-error-message\" style=\"display:none\">Use a different Browser<\/span><\/a>\n                    <\/div>\n                <\/div>\n                <pre class=\"no-line-numbers\"><code id=\"dm-code-raw\" class=\"no-wrap language-shell\">\n<pre class=\"language-bash\" data-v-efb858b9=\"\"><code class=\"language-bash\">cd ~\/documents\/yolo_finetune\r\n\r\nconda activate .\/labelenv\r\n\r\nlabel-studio\r\n<\/code><\/pre>\n\t\t\t<\/div>\n        <\/div>\r\n\r\n\u6216\u8005windows\u4e0b\uff0c\u6253\u5f00 cmd\uff1a<\/code><\/pre>\n<div class=\"dm-code-snippet dark no-background no-background-mobile dm-normal-version\" style=\"background-color:#abb8c3;\" snippet-height=\"\">\n\t\t\t<div class=\"control-language\">\n                <div class=\"dm-buttons\">\n                    <div class=\"dm-buttons-left\">\n                        <div class=\"dm-button-snippet red-button\"><\/div>\n                        <div class=\"dm-button-snippet orange-button\"><\/div>\n                        <div class=\"dm-button-snippet green-button\"><\/div>\n                    <\/div>\n                    <div class=\"dm-buttons-right\">\n                        <a id=\"dm-copy-raw-code\">\n                        <span class=\"dm-copy-text\">Copy Code<\/span>\n                        <span class=\"dm-copy-confirmed\" style=\"display:none\">Copied<\/span>\n                        <span class=\"dm-error-message\" style=\"display:none\">Use a different Browser<\/span><\/a>\n                    <\/div>\n                <\/div>\n                <pre class=\"no-line-numbers\"><code id=\"dm-code-raw\" class=\"no-wrap language-shell\">\n<pre class=\"language-bash\" data-v-efb858b9=\"\"><code class=\"language-bash\">D:\r\n\r\ncd yolo_finetune\r\n\r\nconda activate .\/labelenv\r\n\r\nlabel-studio\r\n<\/code><\/pre>\n\t\t\t<\/div>\n        <\/div>\r\n\r\n<\/code><\/pre>\n<h2>3.2 YOLO \u73af\u5883<\/h2>\n<div class=\"dm-code-snippet dark no-background no-background-mobile dm-normal-version\" style=\"background-color:#abb8c3;\" snippet-height=\"\">\n\t\t\t<div class=\"control-language\">\n                <div class=\"dm-buttons\">\n                    <div class=\"dm-buttons-left\">\n                        <div class=\"dm-button-snippet red-button\"><\/div>\n                        <div class=\"dm-button-snippet orange-button\"><\/div>\n                        <div class=\"dm-button-snippet green-button\"><\/div>\n                    <\/div>\n                    <div class=\"dm-buttons-right\">\n                        <a id=\"dm-copy-raw-code\">\n                        <span class=\"dm-copy-text\">Copy Code<\/span>\n                        <span class=\"dm-copy-confirmed\" style=\"display:none\">Copied<\/span>\n                        <span class=\"dm-error-message\" style=\"display:none\">Use a different Browser<\/span><\/a>\n                    <\/div>\n                <\/div>\n                <pre class=\"no-line-numbers\"><code id=\"dm-code-raw\" class=\"no-wrap language-shell\"><\/p>\n<pre class=\"dm-pre-admin-side\">conda create -p .\/yoloenv python=3.11\r\n\r\nconda activate .\/yoloenv<\/pre>\n<p><\/code><\/pre>\n\t\t\t<\/div>\n        <\/div>\n<p>\u4e0a\u8ff0\u547d\u4ee4\u4f1a\u5728\u5f53\u524d\u76ee\u5f55\uff08yolo_finetune\uff09\u4e2d\u521b\u5efa\u73af\u5883 yoloenv \uff0cpython \u7248\u672c\u4e3a 3.11\u00a0 \u3002\u7136\u540e\u6211\u4eec\u6fc0\u6d3b\u5b83\u3002<\/p>\n<p>YOLO \u4f9d\u8d56\u4e2d\u5305\u542b Pytorch\u3002\u800cPytorch\u7684\u5b89\u88c5\u65b9\u5f0f\u4e5f\u4f9d\u8d56\u4f60\u7684\u786c\u4ef6\u3002\u7136\uff0c\u5728\u6b64\u4e4b\u524d\uff0c\u8bf7\u5148\u68c0\u67e5\u4f60\u5f53\u524d\u4f7f\u7528\u7684\u7535\u8111\u7684\u786c\u4ef6\uff1a<\/p>\n<h3>3.2.1 WIN:<\/h3>\n<p>\u5982\u679c\u4f60\u662f windows, \u8bf7\u5148\u5b89\u88c5 nvida \u663e\u5361\u9a71\u52a8\u4ee5\u53ca CUDA\u3002CUDA \u7248\u672c\u6700\u597d\u4e0d\u5c0f\u4e8e 11.8\uff0c \u4e0d\u9ad8\u4e8e 13.0 (2026-01-03 \u5199\u7a3f\u65f6\u7684\u6700\u9ad8\u652f\u6301\u7248\u672c)\u3002<ins datetime=\"2026-01-03T14:36:36+00:00\">\u5982\u679c\u4f60\u7535\u8111\u6ca1\u6709\u663e\u5361\u3001\u6216\u8005\u662famd\u663e\u5361 (<del datetime=\"2026-01-03T14:36:36+00:00\">pytorch\u662f\u6709\u76f8\u5173api\u7684\uff0c\u4f46\u6ca1\u7528\u8fc7amd\u7684\u5361\uff0c\u4e0d\u77e5\u9053\u5177\u4f53\u600e\u4e48\u7528<\/del>)\u3001\u53c8\u6216\u662f macOS\u7cfb\u7edf\uff0c<\/ins>\u8bf7\u8df3\u8fc7\u3002<\/p>\n<blockquote><p>\u5b89\u88c5\u6559\u7a0b\uff1a<a href=\"https:\/\/zhuanlan.zhihu.com\/p\/32400431090\" target=\"_blank\"  rel=\"nofollow\" >https:\/\/zhuanlan.zhihu.com\/p\/32400431090<\/a><\/p><\/blockquote>\n<p>\u5b89\u88c5\u5e76\u91cd\u542f\u5b8c\u6210\u540e\uff0c\u6253\u5f00cmd\uff0c\u6307\u5b9a\u4e0b\u65b9\u6307\u4ee4\uff0c\u5b83\u5e94\u8be5\u663e\u793a\u5df2\u5b89\u88c5\u7684 cuda \u7248\u672c\uff0c<ins datetime=\"2026-01-03T14:36:36+00:00\">\u4e0b\u6587\u5047\u8bbe\u4f60\u5b89\u88c5\u7684\u662f 12.8 \u7248\u672c\u7684 CUDA:<\/ins><\/p>\n<div class=\"dm-code-snippet dark no-background no-background-mobile dm-slim-version\" style=\"background-color:#abb8c3;\" snippet-height=\"\">\n\t\t\t<div class=\"control-language\">\n                <div class=\"dm-buttons\">\n                    <div class=\"dm-buttons-left\">\n                        <div class=\"dm-button-snippet red-button\"><\/div>\n                        <div class=\"dm-button-snippet orange-button\"><\/div>\n                        <div class=\"dm-button-snippet green-button\"><\/div>\n                    <\/div>\n                    <div class=\"dm-buttons-right\">\n                        <a id=\"dm-copy-raw-code\">\n                        <span class=\"dm-copy-text\">Copy Code<\/span>\n                        <span class=\"dm-copy-confirmed\" style=\"display:none\">Copied<\/span>\n                        <span class=\"dm-error-message\" style=\"display:none\">Use a different Browser<\/span><\/a>\n                    <\/div>\n                <\/div>\n                <pre class=\"no-line-numbers\"><code id=\"dm-code-raw\" class=\"no-wrap language-shell\"><\/p>\n<pre class=\"dm-pre-admin-side\">nvcc -V<\/pre>\n<p><\/code><\/pre>\n\t\t\t<\/div>\n        <\/div>\n<p>\u5b83\u7684\u8f93\u51fa\u5e94\u8be5\u7c7b\u4f3c\u4e8e\u4e0b\u56fe\uff0c\u5982\u679c\u4e00\u81f4\uff0c\u53ef\u4ee5\u8d70\u540e\u7eed\u6b65\u9aa4\uff0c\u5426\u5219\u8bf7\u91cd\u65b0\u5b89\u88c5\u9a71\u52a8\u548c CUDA\u3002<\/p>\n<figure id=\"attachment_4698\" aria-describedby=\"caption-attachment-4698\" style=\"width: 654px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-4698 size-full\" src=\"https:\/\/10ccc.cc\/wp-content\/uploads\/2026\/01\/1767452510-v2-d7fab4892883c7ef28724fd2259ff208_1440w.png\" alt=\"nvcc -V\u6267\u884c\u7ed3\u679c\" width=\"654\" height=\"178\" srcset=\"https:\/\/10ccc.cc\/wp-content\/uploads\/2026\/01\/1767452510-v2-d7fab4892883c7ef28724fd2259ff208_1440w.png 654w, https:\/\/10ccc.cc\/wp-content\/uploads\/2026\/01\/1767452510-v2-d7fab4892883c7ef28724fd2259ff208_1440w-300x82.png 300w\" sizes=\"auto, (max-width: 654px) 100vw, 654px\" \/><figcaption id=\"caption-attachment-4698\" class=\"wp-caption-text\">nvcc -V\u6267\u884c\u7ed3\u679c<\/figcaption><\/figure>\n<p>&nbsp;<\/p>\n<h3>3.2.2 MAC:<\/h3>\n<blockquote><p>\u65e0\u9700\u505a\u4efb\u4f55\u4e8b<\/p><\/blockquote>\n<p>&nbsp;<\/p>\n<h3>3.2.3 WIN\u5b89\u88c5Pytorch:<\/h3>\n<blockquote>\n<ol>\n<li><ins datetime=\"2026-01-03T14:36:36+00:00\">\u64cd\u4f5c\u524d\u8bf7\u5728 \u6fc0\u6d3b yoloenv \u7684 terminal \u6216 cmd \u7a97\u53e3\u4e2d\u8fdb\u884c<\/ins>\u3002<\/li>\n<li>\u5982\u679c\u4f60\u662f windows \u7cfb\u7edf\uff0c\u8fd8\u8bb0\u5f97\u4f60\u88c5\u7684 CUDA \u7248\u672c\u5417\uff1f<\/li>\n<\/ol>\n<\/blockquote>\n<p>&nbsp;<\/p>\n<p>\u6211\u4eec\u524d\u5f80 Pytorh\u7684\u5b98\u7f51\uff1a<a href=\"https:\/\/pytorch.org\/\" target=\"_blank\"  rel=\"nofollow\" >pytorch.org<\/a> \u3002\u5982\u679c\u4f60\u662fwindows \u53ef\u6839\u636e\u4f60\u7684\u9a71\u52a8\u7684\u5b89\u88c5\u60c5\u51b5\u9009\u62e9\u590d\u5236\u4e0b\u65b9\u7684\u5b89\u88c5\u547d\u4ee4\uff1a<\/p>\n<table>\n<tbody>\n<tr>\n<td style=\"text-align: center;\">\n<p><figure id=\"attachment_4699\" aria-describedby=\"caption-attachment-4699\" style=\"width: 300px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/10ccc.cc\/wp-content\/uploads\/2026\/01\/1767453495-wincuda.png\" alt=\"YOLO\uff1a\u4ece\u6a21\u578b\u672c\u5730\u5fae\u8c03\u5230\u90e8\u7f72\" title=\"\" data-rel=\"lightbox-image-0\" data-rl_title=\"\" data-rl_caption=\"\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-4699 size-medium\" src=\"https:\/\/10ccc.cc\/wp-content\/uploads\/2026\/01\/1767453495-wincuda-300x126.png\" alt=\"CUDA\" width=\"300\" height=\"126\" srcset=\"https:\/\/10ccc.cc\/wp-content\/uploads\/2026\/01\/1767453495-wincuda-300x126.png 300w, https:\/\/10ccc.cc\/wp-content\/uploads\/2026\/01\/1767453495-wincuda-1024x430.png 1024w, https:\/\/10ccc.cc\/wp-content\/uploads\/2026\/01\/1767453495-wincuda-768x323.png 768w, https:\/\/10ccc.cc\/wp-content\/uploads\/2026\/01\/1767453495-wincuda-1536x646.png 1536w, https:\/\/10ccc.cc\/wp-content\/uploads\/2026\/01\/1767453495-wincuda.png 1756w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><figcaption id=\"caption-attachment-4699\" class=\"wp-caption-text\">CUDA<\/figcaption><\/figure><\/td>\n<td>\n<p><figure id=\"attachment_4701\" aria-describedby=\"caption-attachment-4701\" style=\"width: 300px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/10ccc.cc\/wp-content\/uploads\/2026\/01\/1767453498-wincpu.png\" alt=\"YOLO\uff1a\u4ece\u6a21\u578b\u672c\u5730\u5fae\u8c03\u5230\u90e8\u7f72\" title=\"\" data-rel=\"lightbox-image-1\" data-rl_title=\"\" data-rl_caption=\"\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-4701 size-medium\" src=\"https:\/\/10ccc.cc\/wp-content\/uploads\/2026\/01\/1767453498-wincpu-300x128.png\" alt=\"CPU\" width=\"300\" height=\"128\" srcset=\"https:\/\/10ccc.cc\/wp-content\/uploads\/2026\/01\/1767453498-wincpu-300x128.png 300w, https:\/\/10ccc.cc\/wp-content\/uploads\/2026\/01\/1767453498-wincpu-1024x436.png 1024w, https:\/\/10ccc.cc\/wp-content\/uploads\/2026\/01\/1767453498-wincpu-768x327.png 768w, https:\/\/10ccc.cc\/wp-content\/uploads\/2026\/01\/1767453498-wincpu-1536x654.png 1536w, https:\/\/10ccc.cc\/wp-content\/uploads\/2026\/01\/1767453498-wincpu.png 1692w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><figcaption id=\"caption-attachment-4701\" class=\"wp-caption-text\">CPU<\/figcaption><\/figure><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>cuda:<\/p>\n<div class=\"dm-code-snippet dark no-background  dm-slim-version\" style=\"background-color:#abb8c3;\" snippet-height=\"\">\n\t\t\t<div class=\"control-language\">\n                <div class=\"dm-buttons\">\n                    <div class=\"dm-buttons-left\">\n                        <div class=\"dm-button-snippet red-button\"><\/div>\n                        <div class=\"dm-button-snippet orange-button\"><\/div>\n                        <div class=\"dm-button-snippet green-button\"><\/div>\n                    <\/div>\n                    <div class=\"dm-buttons-right\">\n                        <a id=\"dm-copy-raw-code\">\n                        <span class=\"dm-copy-text\">Copy Code<\/span>\n                        <span class=\"dm-copy-confirmed\" style=\"display:none\">Copied<\/span>\n                        <span class=\"dm-error-message\" style=\"display:none\">Use a different Browser<\/span><\/a>\n                    <\/div>\n                <\/div>\n                <pre class=\"no-line-numbers\"><code id=\"dm-code-raw\" class=\"no-wrap language-shell\"><\/p>\n<p class=\"dm-pre-admin-side\">pip3 install torch torchvision --index-url https:\/\/download.pytorch.org\/whl\/cu128<\/p>\n<p><\/code><\/pre>\n\t\t\t<\/div>\n        <\/div>\n<p>cpu:<\/p>\n<div class=\"dm-code-snippet dark no-background  dm-slim-version\" style=\"background-color:#abb8c3;\" snippet-height=\"\">\n\t\t\t<div class=\"control-language\">\n                <div class=\"dm-buttons\">\n                    <div class=\"dm-buttons-left\">\n                        <div class=\"dm-button-snippet red-button\"><\/div>\n                        <div class=\"dm-button-snippet orange-button\"><\/div>\n                        <div class=\"dm-button-snippet green-button\"><\/div>\n                    <\/div>\n                    <div class=\"dm-buttons-right\">\n                        <a id=\"dm-copy-raw-code\">\n                        <span class=\"dm-copy-text\">Copy Code<\/span>\n                        <span class=\"dm-copy-confirmed\" style=\"display:none\">Copied<\/span>\n                        <span class=\"dm-error-message\" style=\"display:none\">Use a different Browser<\/span><\/a>\n                    <\/div>\n                <\/div>\n                <pre class=\"no-line-numbers\"><code id=\"dm-code-raw\" class=\"no-wrap language-shell\"><\/p>\n<p class=\"dm-pre-admin-side\">pip3 install torch torchvision --index-url https:\/\/download.pytorch.org\/whl\/cpu<\/p>\n<p><\/code><\/pre>\n\t\t\t<\/div>\n        <\/div>\n<p>\u5b89\u88c5\u5b8c\u6210\u540e\u6211\u4eec\u53ef\u4ee5\u9a8c\u8bc1\u662f\u5426\u5b89\u88c5\u6210\u529f\u3002\u5728\u540c\u4e00\u4e2a cmd \u7a97\u53e3\u4e2d\u8f93\u5165\uff1a<\/p>\n<div class=\"dm-code-snippet dark no-background no-background-mobile dm-normal-version\" style=\"background-color:#abb8c3;\" snippet-height=\"\">\n\t\t\t<div class=\"control-language\">\n                <div class=\"dm-buttons\">\n                    <div class=\"dm-buttons-left\">\n                        <div class=\"dm-button-snippet red-button\"><\/div>\n                        <div class=\"dm-button-snippet orange-button\"><\/div>\n                        <div class=\"dm-button-snippet green-button\"><\/div>\n                    <\/div>\n                    <div class=\"dm-buttons-right\">\n                        <a id=\"dm-copy-raw-code\">\n                        <span class=\"dm-copy-text\">Copy Code<\/span>\n                        <span class=\"dm-copy-confirmed\" style=\"display:none\">Copied<\/span>\n                        <span class=\"dm-error-message\" style=\"display:none\">Use a different Browser<\/span><\/a>\n                    <\/div>\n                <\/div>\n                <pre class=\"no-line-numbers\"><code id=\"dm-code-raw\" class=\"no-wrap language-python\"><\/p>\n<pre class=\"dm-pre-admin-side\">python\r\n\r\nimport torch\r\ntorch.cuda.is_available()<\/pre>\n<p><\/code><\/pre>\n\t\t\t<\/div>\n        <\/div>\n<p>\u5982\u679c\u8f93\u51fa\u662f True, \u5219\u8bf4\u660e\u4f60\u7684 Cuda \u548c Pytorch \u90fd\u5b89\u88c5\u6b63\u5e38; \u5982\u679c\u662f False, \u8bf7\u91cd\u65b0\u5b89\u88c5 \u6216 \u76f4\u63a5\u4f7f\u7528 cpu \u7248\u672c\uff08\u4f46\u4f1a\u975e\u5e38\u6162\uff09\u3002<\/p>\n<p>&nbsp;<\/p>\n<h3>3.2.4 MAC\u5b89\u88c5Pytorch:<\/h3>\n<blockquote><p><ins datetime=\"2026-01-03T14:36:36+00:00\">\u00a0\u64cd\u4f5c\u524d\u8bf7\u5728 \u6fc0\u6d3b yoloenv \u7684 terminal \u7a97\u53e3\u4e2d\u8fdb\u884c<\/ins>\u3002<\/p><\/blockquote>\n<figure id=\"attachment_4700\" aria-describedby=\"caption-attachment-4700\" style=\"width: 300px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/10ccc.cc\/wp-content\/uploads\/2026\/01\/1767453497-mac.png\" alt=\"YOLO\uff1a\u4ece\u6a21\u578b\u672c\u5730\u5fae\u8c03\u5230\u90e8\u7f72\" title=\"\" data-rel=\"lightbox-image-2\" data-rl_title=\"\" data-rl_caption=\"\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-4700 size-medium\" src=\"https:\/\/10ccc.cc\/wp-content\/uploads\/2026\/01\/1767453497-mac-300x126.png\" alt=\"MPS\" width=\"300\" height=\"126\" srcset=\"https:\/\/10ccc.cc\/wp-content\/uploads\/2026\/01\/1767453497-mac-300x126.png 300w, https:\/\/10ccc.cc\/wp-content\/uploads\/2026\/01\/1767453497-mac-1024x430.png 1024w, https:\/\/10ccc.cc\/wp-content\/uploads\/2026\/01\/1767453497-mac-768x322.png 768w, https:\/\/10ccc.cc\/wp-content\/uploads\/2026\/01\/1767453497-mac-1536x644.png 1536w, https:\/\/10ccc.cc\/wp-content\/uploads\/2026\/01\/1767453497-mac.png 1702w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><figcaption id=\"caption-attachment-4700\" class=\"wp-caption-text\">MPS<\/figcaption><\/figure>\n<p>\u5982\u679c\u662f mac ,\u76f4\u63a5\u4f7f\u7528\u4e0b\u65b9\u547d\u4ee4\u5b89\u88c5\u5373\u53ef\uff1a<\/p>\n<div class=\"dm-code-snippet dark no-background  dm-slim-version\" style=\"background-color:#abb8c3;\" snippet-height=\"\">\n\t\t\t<div class=\"control-language\">\n                <div class=\"dm-buttons\">\n                    <div class=\"dm-buttons-left\">\n                        <div class=\"dm-button-snippet red-button\"><\/div>\n                        <div class=\"dm-button-snippet orange-button\"><\/div>\n                        <div class=\"dm-button-snippet green-button\"><\/div>\n                    <\/div>\n                    <div class=\"dm-buttons-right\">\n                        <a id=\"dm-copy-raw-code\">\n                        <span class=\"dm-copy-text\">Copy Code<\/span>\n                        <span class=\"dm-copy-confirmed\" style=\"display:none\">Copied<\/span>\n                        <span class=\"dm-error-message\" style=\"display:none\">Use a different Browser<\/span><\/a>\n                    <\/div>\n                <\/div>\n                <pre class=\"no-line-numbers\"><code id=\"dm-code-raw\" class=\"no-wrap language-shell\"><\/p>\n<p>pip3 install torch torchvision<\/p>\n<p><\/code><\/pre>\n\t\t\t<\/div>\n        <\/div>\n<p>\u9a8c\u8bc1\u662f\u5426\u5b89\u88c5\u6210\u529f\u3002\u5728\u540c\u4e00\u4e2a terminal \u7a97\u53e3\u4e2d\u8f93\u5165\uff1a<\/p>\n<div class=\"dm-code-snippet dark no-background no-background-mobile dm-normal-version\" style=\"background-color:#abb8c3;\" snippet-height=\"\">\n\t\t\t<div class=\"control-language\">\n                <div class=\"dm-buttons\">\n                    <div class=\"dm-buttons-left\">\n                        <div class=\"dm-button-snippet red-button\"><\/div>\n                        <div class=\"dm-button-snippet orange-button\"><\/div>\n                        <div class=\"dm-button-snippet green-button\"><\/div>\n                    <\/div>\n                    <div class=\"dm-buttons-right\">\n                        <a id=\"dm-copy-raw-code\">\n                        <span class=\"dm-copy-text\">Copy Code<\/span>\n                        <span class=\"dm-copy-confirmed\" style=\"display:none\">Copied<\/span>\n                        <span class=\"dm-error-message\" style=\"display:none\">Use a different Browser<\/span><\/a>\n                    <\/div>\n                <\/div>\n                <pre class=\"no-line-numbers\"><code id=\"dm-code-raw\" class=\"no-wrap language-python\"><\/p>\n<pre class=\"dm-pre-admin-side\">python\r\n\r\nimport torch\r\ntorch.mps.is_available()<\/pre>\n<p><\/code><\/pre>\n\t\t\t<\/div>\n        <\/div>\n<p>\u5982\u679c\u8f93\u51fa\u662f True, \u5219\u8bf4\u660e Pytorch \u5b89\u88c5\u6b63\u5e38; \u5982\u679c\u662f False, \u53ef\u5c1d\u8bd5\u6309\u8fd9\u4e2a\u3010<a href=\"https:\/\/developer.apple.com\/metal\/pytorch\/\" target=\"_blank\"  rel=\"nofollow\" >Apple\u5b98\u65b9\u6559\u7a0b<\/a>\u3011\u91cd\u65b0\u5b89\u88c5 \u6216 \u540e\u7eed\u76f4\u63a5\u4f7f\u7528 cpu \u7248\u672c\u8bad\u7ec3\u548c\u63a8\u7406\u3002<\/p>\n<p>&nbsp;<\/p>\n<p>pytorch\u5b89\u88c5\u5b8c\u6210\u540e\uff0c\u6211\u4eec\u5b89\u88c5yolo \u4ee5\u53ca onnx (\u540e\u7eed\u5bfc\u51faonnx\u7ed9OpenCV\u4f7f\u7528\u65f6\u5019\u8981\u7528):<\/p>\n<div class=\"dm-code-snippet dark no-background no-background-mobile dm-normal-version\" style=\"background-color:#abb8c3;\" snippet-height=\"\">\n\t\t\t<div class=\"control-language\">\n                <div class=\"dm-buttons\">\n                    <div class=\"dm-buttons-left\">\n                        <div class=\"dm-button-snippet red-button\"><\/div>\n                        <div class=\"dm-button-snippet orange-button\"><\/div>\n                        <div class=\"dm-button-snippet green-button\"><\/div>\n                    <\/div>\n                    <div class=\"dm-buttons-right\">\n                        <a id=\"dm-copy-raw-code\">\n                        <span class=\"dm-copy-text\">Copy Code<\/span>\n                        <span class=\"dm-copy-confirmed\" style=\"display:none\">Copied<\/span>\n                        <span class=\"dm-error-message\" style=\"display:none\">Use a different Browser<\/span><\/a>\n                    <\/div>\n                <\/div>\n                <pre class=\"no-line-numbers\"><code id=\"dm-code-raw\" class=\"no-wrap language-python\"><\/p>\n<p>pip install -U ultralytics<\/p>\n<p><span class=\"s1\">pip3 install onnx onnxslim onnxruntime<span class=\"Apple-converted-space\">\u00a0<\/span><\/span><\/p>\n<p><\/code><\/pre>\n\t\t\t<\/div>\n        <\/div>\n<p>&nbsp;<\/p>\n<h4>\u51c6\u5907\u57fa\u7840\u6a21\u578byolo11s.pt\uff0c\u7136\u540e\u7528\u51c6\u5907\u597d\u7684\u56fe\u7247\u5728\u5176\u57fa\u7840\u4e0a\u8fdb\u884c\u5fae\u8c03\u3002\u8be5\u547d\u4ee4\u5c06\u4e0b\u8f7d <span class=\"s1\">yolo11s.pt \u5230<\/span> yolo_finetune \u6587\u4ef6\u5939\u5185\uff1a<\/h4>\n<div class=\"dm-code-snippet dark no-background no-background-mobile dm-slim-version\" style=\"background-color:#abb8c3;\" snippet-height=\"\">\n\t\t\t<div class=\"control-language\">\n                <div class=\"dm-buttons\">\n                    <div class=\"dm-buttons-left\">\n                        <div class=\"dm-button-snippet red-button\"><\/div>\n                        <div class=\"dm-button-snippet orange-button\"><\/div>\n                        <div class=\"dm-button-snippet green-button\"><\/div>\n                    <\/div>\n                    <div class=\"dm-buttons-right\">\n                        <a id=\"dm-copy-raw-code\">\n                        <span class=\"dm-copy-text\">Copy Code<\/span>\n                        <span class=\"dm-copy-confirmed\" style=\"display:none\">Copied<\/span>\n                        <span class=\"dm-error-message\" style=\"display:none\">Use a different Browser<\/span><\/a>\n                    <\/div>\n                <\/div>\n                <pre class=\"no-line-numbers\"><code id=\"dm-code-raw\" class=\"no-wrap language-python\"><\/p>\n<p class=\"p1\"><span class=\"s1\">yolo export model=yolo11s.pt format=pt<\/span><\/p>\n<p><\/code><\/pre>\n\t\t\t<\/div>\n        <\/div>\n<p>\u5b8c\u4e8b\u5177\u5907\uff0c\u6b64\u65f6\uff0c\u6211\u4eec\u5df2\u7ecf\u5b8c\u6210\u4e86 labelenv \u548c yoloenv \u73af\u5883\u642d\u5efa\u7684\u5de5\u4f5c\uff0c\u53ef\u4ee5\u7740\u624b\u540e\u7eed\u6570\u636e\u96c6\u76f8\u5173\u7684\u5de5\u4f5c\u3002\u5f53\u524d\uff0c\u6211\u4eec\u7684 yolo_finetune \u6587\u4ef6\u5939\u5185\u7684\u7ed3\u6784\u5e94\u8be5\u7c7b\u4f3c\u4e8e<\/p>\n<figure id=\"attachment_4702\" aria-describedby=\"caption-attachment-4702\" style=\"width: 640px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/10ccc.cc\/wp-content\/uploads\/2026\/01\/1767458177-currenfolder.png\" alt=\"YOLO\uff1a\u4ece\u6a21\u578b\u672c\u5730\u5fae\u8c03\u5230\u90e8\u7f72\" title=\"\" data-rel=\"lightbox-image-3\" data-rl_title=\"\" data-rl_caption=\"\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-4702 size-large\" src=\"https:\/\/10ccc.cc\/wp-content\/uploads\/2026\/01\/1767458177-currenfolder-1024x334.png\" alt=\"\u6587\u4ef6\u7ed3\u6784\" width=\"640\" height=\"209\" srcset=\"https:\/\/10ccc.cc\/wp-content\/uploads\/2026\/01\/1767458177-currenfolder-1024x334.png 1024w, https:\/\/10ccc.cc\/wp-content\/uploads\/2026\/01\/1767458177-currenfolder-300x98.png 300w, https:\/\/10ccc.cc\/wp-content\/uploads\/2026\/01\/1767458177-currenfolder-768x251.png 768w, https:\/\/10ccc.cc\/wp-content\/uploads\/2026\/01\/1767458177-currenfolder.png 1434w\" sizes=\"auto, (max-width: 640px) 100vw, 640px\" \/><\/a><figcaption id=\"caption-attachment-4702\" class=\"wp-caption-text\">\u6587\u4ef6\u7ed3\u6784<\/figcaption><\/figure>\n<p>&nbsp;<\/p>\n<blockquote><p>yolo11s.onnx \u53ef\u4ee5\u5ffd\u7565\uff0c\u5dee\u5f02\u539f\u56e0\u662f\u6211\u5728\u5bfc\u51fa yolo11s.pt \u7684\u65f6\u5019\u4f7f\u7528\u7684\u547d\u4ee4 <span class=\"s1\">yolo export model=yolo11s.pt format=onnx \u3002<\/span><\/p><\/blockquote>\n<p>&nbsp;<\/p>\n<h1>4. \u8bad\u7ec3\u6570\u636e\u7684\u51c6\u5907<\/h1>\n<figure id=\"attachment_4645\" aria-describedby=\"caption-attachment-4645\" style=\"width: 540px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-4645 size-full\" src=\"https:\/\/10ccc.cc\/wp-content\/uploads\/2026\/01\/1767411994-tumblr_odbsk5Ezqw1qe6mn3o1_540.gif\" alt=\"\u6570\u636e\u96c6\u7684\u597d\u574f\u5f88\u5927\u7a0b\u5ea6\u4e0a\u5f71\u54cd\u6a21\u578b\u6027\u80fd\" width=\"540\" height=\"308\" \/><figcaption id=\"caption-attachment-4645\" class=\"wp-caption-text\">\u6570\u636e\u96c6\u7684\u597d\u574f\u5f88\u5927\u7a0b\u5ea6\u4e0a\u5f71\u54cd\u6a21\u578b\u6027\u80fd<\/figcaption><\/figure>\n<h2>4.1 \u4e0b\u8f7d\u6570\u636e\u96c6\uff1a<\/h2>\n<blockquote><p>\u732b\u5206\u7c7b\u6570\u636e\u96c6.zip<br \/>\n\u94fe\u63a5\uff1a<a href=\"https:\/\/pan.quark.cn\/s\/2ada05b5d874\" target=\"_blank\" rel=\"noopener\" rel=\"nofollow\" >https:\/\/pan.quark.cn\/s\/2ada05b5d874<\/a><br \/>\n\u63d0\u53d6\u7801\uff1a1xNa<\/p><\/blockquote>\n<p>\u539f\u6570\u636e\u5df2\u7ecf\u8fdb\u884c\u4e86\u57fa\u672c\u7684\u6e05\u6d17\uff0c\u5254\u9664\u4e86\u8fc7\u4e8e\u6a21\u7cca\u3001\u9a6c\u8d5b\u514b\u3001\u5c3a\u5bf8\u4e0d\u5408\u683c\u7684\u56fe\u7247\uff0c\u5e76\u4e14\u5df2\u7ecf\u6309\u7167 \u6d4b\u8bd5 : \u8bad\u7ec3 = 1 : 9 \u5212\u5206\u4e86\u6570\u636e\u3002<\/p>\n<h2>4.2 \u57fa\u7840\u6570\u636e\u6e05\u6d17<\/h2>\n<p>\u5176\u4e2d\u5bf9\u4e8e\u6a21\u7cca(<span style=\"font-size: 10pt;\">\u9ad8\u65af\u6a21\u7cca<\/span>)\u7684\u5224\u65ad\u662f\u5c06\u56fe\u7247\u8f6c\u7070\u5ea6\u56fe\u540e\u8ba1\u7b97 <em>Laplacian Operator(\u4e8c\u9636\u5bfc)\u53ca\u5176\u65b9\u5dee\uff1b\u5bf9\u4e8e\u6a21\u7cca(<span style=\"font-size: 10pt;\">\u9a6c\u8d5b\u514b\u6a21\u7cca<\/span>)\uff0c\u5219\u662f\u5bf9\u7070\u5ea6\u56fe\u6c42sobel\u65b9\u5411\u96c6\u4e2d\u5ea6<\/em><\/p>\n<p>&nbsp;<\/p>\n<div class=\"dm-code-snippet dark no-background  dm-normal-version\" style=\"background-color:#abb8c3;\" snippet-height=\"\">\n\t\t\t<div class=\"control-language\">\n                <div class=\"dm-buttons\">\n                    <div class=\"dm-buttons-left\">\n                        <div class=\"dm-button-snippet red-button\"><\/div>\n                        <div class=\"dm-button-snippet orange-button\"><\/div>\n                        <div class=\"dm-button-snippet green-button\"><\/div>\n                    <\/div>\n                    <div class=\"dm-buttons-right\">\n                        <a id=\"dm-copy-raw-code\">\n                        <span class=\"dm-copy-text\">Copy Code<\/span>\n                        <span class=\"dm-copy-confirmed\" style=\"display:none\">Copied<\/span>\n                        <span class=\"dm-error-message\" style=\"display:none\">Use a different Browser<\/span><\/a>\n                    <\/div>\n                <\/div>\n                <pre class=\"no-line-numbers\"><code id=\"dm-code-raw\" class=\"no-wrap language-clike\"><\/p>\n<pre class=\"dm-pre-admin-side\">cv::mat img, gray, lap;\r\nimg = cv::imread(\"path to image\");\r\n\r\n\r\ncv::cvtColor(img, gray, cv::COLOR_BGR2GRAY);          \r\ncv::Laplacian(gray, lap, CV_64F);              \r\n       \r\ncv::Scalar mean, sigma;\r\ncv::meanStdDev(lap, mu, sigma);                     \r\ndouble variance = sigma.val[0] * sigma.val[0];\r\ndouble threshold = 100.0;\r\n\/*\r\n\u7136\u540e\u901a\u8fc7  variance \u4e0e threshold \u6bd4\u8f83\uff0c\u5c0f\u4e8ethreshold \u8bf4\u660e\u6a21\u7cca\r\n*\/\r\n<\/pre>\n<p><\/code><\/pre>\n\t\t\t<\/div>\n        <\/div>\n<p>&nbsp;<\/p>\n<div class=\"dm-code-snippet dark no-background no-background-mobile dm-normal-version\" style=\"background-color:#abb8c3;\" snippet-height=\"50\">\n\t\t\t<div class=\"control-language\">\n                <div class=\"dm-buttons\">\n                    <div class=\"dm-buttons-left\">\n                        <div class=\"dm-button-snippet red-button\"><\/div>\n                        <div class=\"dm-button-snippet orange-button\"><\/div>\n                        <div class=\"dm-button-snippet green-button\"><\/div>\n                    <\/div>\n                    <div class=\"dm-buttons-right\">\n                        <a id=\"dm-copy-raw-code\">\n                        <span class=\"dm-copy-text\">Copy Code<\/span>\n                        <span class=\"dm-copy-confirmed\" style=\"display:none\">Copied<\/span>\n                        <span class=\"dm-error-message\" style=\"display:none\">Use a different Browser<\/span><\/a>\n                    <\/div>\n                <\/div>\n                <pre class=\"no-line-numbers\"><code id=\"dm-code-raw\" class=\"wrap language-clike\"><\/p>\n<pre class=\"dm-pre-admin-side\">bool isMosaicByGradient(const cv::Mat&amp; img)\r\n{\r\n    cv::Mat gray;\r\n    cv::cvtColor(img, gray, cv::COLOR_BGR2GRAY);\r\n\r\n    cv::Mat gx, gy;\r\n    cv::Sobel(gray, gx, CV_32F, 1, 0, 3);\r\n    cv::Sobel(gray, gy, CV_32F, 0, 1, 3);\r\n\r\n    cv::Mat mag, angle;\r\n    cv::cartToPolar(gx, gy, mag, angle, true); \/\/ angle: 0~360\u00b0\r\n\r\n    int hvCount = 0;\r\n    int total = 0;\r\n\r\n    for (int y = 0; y &lt; angle.rows; y++)\r\n    {\r\n        for (int x = 0; x &lt; angle.cols; x++)\r\n        {\r\n            float m = mag.at&lt;float&gt;(y, x);\r\n            if (m &lt; 20) continue;  \/\/ \u5ffd\u7565\u5f31\u8fb9\u7f18\r\n\r\n            float a = angle.at&lt;float&gt;(y, x);\r\n            total++;\r\n\r\n            \/\/ \u63a5\u8fd1 0\u00b0, 90\u00b0, 180\u00b0, 270\u00b0\r\n            if (a &lt; 10 || (a &gt; 80 &amp;&amp; a &lt; 100) ||\r\n                (a &gt; 170 &amp;&amp; a &lt; 190) ||\r\n                (a &gt; 260 &amp;&amp; a &lt; 280))\r\n            {\r\n                hvCount++;\r\n            }\r\n        }\r\n    }\r\n\r\n    if (total == 0) return false;\r\n\r\n    double ratio = (double)hvCount \/ total;\r\n    return ratio &gt; 0.75; \/\/ \u9a6c\u8d5b\u514b\u901a\u5e38 &gt; 0.8\r\n}\r\n<\/pre>\n<p><\/code><\/pre>\n\t\t\t<\/div>\n        <\/div>\n<p>&nbsp;<\/p>\n<h1>5. \u6570\u636e\u6807\u6ce8<\/h1>\n<h2>5.1 \u96c6\u5408\u6570\u636e<\/h2>\n<p>\u89e3\u538b \u732b\u5206\u7c7b\u6570\u636e\u96c6.zip \u540e\uff0c\u5c06\u4e14\u4ec5\u5c06\u56fe\u7247\u653e\u5230 cat_data \u6587\u4ef6\u5939\u4e2d\u5e76\u7ecf\u8fc7\u6e05\u6d17\u540e\uff0c\u4f60\u7684\u9879\u76ee\u76ee\u5f55\u7ed3\u6784\u5e94\u8be5\u7c7b\u4f3c\u4e8e\u4e0b\u56fe\uff1a<\/p>\n<figure id=\"attachment_4709\" aria-describedby=\"caption-attachment-4709\" style=\"width: 640px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/10ccc.cc\/wp-content\/uploads\/2026\/01\/1767502268-Snipaste_2026-01-04_12-50-02.png\" alt=\"YOLO\uff1a\u4ece\u6a21\u578b\u672c\u5730\u5fae\u8c03\u5230\u90e8\u7f72\" title=\"\" data-rel=\"lightbox-image-4\" data-rl_title=\"\" data-rl_caption=\"\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-4709 size-large\" src=\"https:\/\/10ccc.cc\/wp-content\/uploads\/2026\/01\/1767502268-Snipaste_2026-01-04_12-50-02-1024x275.png\" alt=\"\u5f53\u524d\u6587\u4ef6\u7ed3\u6784\" width=\"640\" height=\"172\" srcset=\"https:\/\/10ccc.cc\/wp-content\/uploads\/2026\/01\/1767502268-Snipaste_2026-01-04_12-50-02-1024x275.png 1024w, https:\/\/10ccc.cc\/wp-content\/uploads\/2026\/01\/1767502268-Snipaste_2026-01-04_12-50-02-300x81.png 300w, https:\/\/10ccc.cc\/wp-content\/uploads\/2026\/01\/1767502268-Snipaste_2026-01-04_12-50-02-768x206.png 768w, https:\/\/10ccc.cc\/wp-content\/uploads\/2026\/01\/1767502268-Snipaste_2026-01-04_12-50-02-1536x413.png 1536w, https:\/\/10ccc.cc\/wp-content\/uploads\/2026\/01\/1767502268-Snipaste_2026-01-04_12-50-02.png 1592w\" sizes=\"auto, (max-width: 640px) 100vw, 640px\" \/><\/a><figcaption id=\"caption-attachment-4709\" class=\"wp-caption-text\">\u5f53\u524d\u6587\u4ef6\u7ed3\u6784<\/figcaption><\/figure>\n<h2>5.2 LabelStudio\u521b\u5efayolo\u9879\u76ee<\/h2>\n<p><ins datetime=\"2026-01-04T02:49:47+00:00\">\u6fc0\u6d3b labelenv<\/ins> \u540e\u8f93\u5165\u547d\u4ee4 <span style=\"background-color: #999999; color: #ffffff;\" data-darkreader-inline-bgcolor=\"\" data-darkreader-inline-color=\"\">label-studio<\/span> \u540e\u4f1a\u81ea\u52a8\u5728\u6d4f\u89c8\u5668\u4e2d(<span style=\"font-size: 10pt;\">\u5730\u5740\uff1ahttp:\/\/localhost:8080\/<\/span> )\u6253\u5f00 Label Studio \u3002\u6253\u5f00\u540e\u9700\u8981\u6ce8\u518c(<span style=\"font-size: 10pt;\">\u6570\u636e\u662f\u5b58\u5728\u672c\u5730\u7684\uff0c\u65e0\u9700\u8054\u7f51\uff0c\u8d26\u6237\u4ec5\u7528\u4e8e\u533a\u5206\u6743\u9650<\/span>)\uff0c\u968f\u4fbf\u8f93\u5165\u90ae\u7bb1\u548c\u5bc6\u7801\u5c31\u597d\u3002\u8fdb\u5165 Label Studio<\/p>\n<figure id=\"attachment_4710\" aria-describedby=\"caption-attachment-4710\" style=\"width: 640px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/10ccc.cc\/wp-content\/uploads\/2026\/01\/1767502759-Snipaste_2026-01-04_12-57-19.png\" alt=\"YOLO\uff1a\u4ece\u6a21\u578b\u672c\u5730\u5fae\u8c03\u5230\u90e8\u7f72\" title=\"\" data-rel=\"lightbox-image-5\" data-rl_title=\"\" data-rl_caption=\"\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-4710 size-large\" src=\"https:\/\/10ccc.cc\/wp-content\/uploads\/2026\/01\/1767502759-Snipaste_2026-01-04_12-57-19-1024x518.png\" alt=\"Label Studio \u4e3b\u754c\u9762\" width=\"640\" height=\"324\" srcset=\"https:\/\/10ccc.cc\/wp-content\/uploads\/2026\/01\/1767502759-Snipaste_2026-01-04_12-57-19-1024x518.png 1024w, https:\/\/10ccc.cc\/wp-content\/uploads\/2026\/01\/1767502759-Snipaste_2026-01-04_12-57-19-300x152.png 300w, https:\/\/10ccc.cc\/wp-content\/uploads\/2026\/01\/1767502759-Snipaste_2026-01-04_12-57-19-768x388.png 768w, https:\/\/10ccc.cc\/wp-content\/uploads\/2026\/01\/1767502759-Snipaste_2026-01-04_12-57-19-1536x776.png 1536w, https:\/\/10ccc.cc\/wp-content\/uploads\/2026\/01\/1767502759-Snipaste_2026-01-04_12-57-19-2048x1035.png 2048w\" sizes=\"auto, (max-width: 640px) 100vw, 640px\" \/><\/a><figcaption id=\"caption-attachment-4710\" class=\"wp-caption-text\">Label Studio \u4e3b\u754c\u9762<\/figcaption><\/figure>\n<h3>5.2.1 \u521b\u5efa\u9879\u76ee<\/h3>\n<p>\u5728\u4e3b\u754c\u9762\u4e0a\u70b9\u51fb Create Project \u521b\u5efa\u6807\u6ce8\u9879\u76ee CatLabel\uff1a<\/p>\n<p style=\"text-align: center;\"><a href=\"https:\/\/10ccc.cc\/wp-content\/uploads\/2026\/01\/1767504075-11.png\" alt=\"YOLO\uff1a\u4ece\u6a21\u578b\u672c\u5730\u5fae\u8c03\u5230\u90e8\u7f72\" title=\"\" data-rel=\"lightbox-image-6\" data-rl_title=\"\" data-rl_caption=\"\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-4711 size-large aligncenter\" src=\"https:\/\/10ccc.cc\/wp-content\/uploads\/2026\/01\/1767504075-11-1024x332.png\" alt=\"\" width=\"640\" height=\"208\" srcset=\"https:\/\/10ccc.cc\/wp-content\/uploads\/2026\/01\/1767504075-11-1024x332.png 1024w, https:\/\/10ccc.cc\/wp-content\/uploads\/2026\/01\/1767504075-11-300x97.png 300w, https:\/\/10ccc.cc\/wp-content\/uploads\/2026\/01\/1767504075-11-768x249.png 768w, https:\/\/10ccc.cc\/wp-content\/uploads\/2026\/01\/1767504075-11-1536x499.png 1536w, https:\/\/10ccc.cc\/wp-content\/uploads\/2026\/01\/1767504075-11-2048x665.png 2048w\" sizes=\"auto, (max-width: 640px) 100vw, 640px\" \/><\/a>\u5728Project Name\u4e2d\u586b\u5199CatLabel<\/p>\n<p style=\"text-align: center;\"><a href=\"https:\/\/10ccc.cc\/wp-content\/uploads\/2026\/01\/1767504090-22.png\" alt=\"YOLO\uff1a\u4ece\u6a21\u578b\u672c\u5730\u5fae\u8c03\u5230\u90e8\u7f72\" title=\"\" data-rel=\"lightbox-image-7\" data-rl_title=\"\" data-rl_caption=\"\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-4716 size-large\" src=\"https:\/\/10ccc.cc\/wp-content\/uploads\/2026\/01\/1767504090-22-1024x375.png\" alt=\"\" width=\"640\" height=\"234\" srcset=\"https:\/\/10ccc.cc\/wp-content\/uploads\/2026\/01\/1767504090-22-1024x375.png 1024w, https:\/\/10ccc.cc\/wp-content\/uploads\/2026\/01\/1767504090-22-300x110.png 300w, https:\/\/10ccc.cc\/wp-content\/uploads\/2026\/01\/1767504090-22-768x281.png 768w, https:\/\/10ccc.cc\/wp-content\/uploads\/2026\/01\/1767504090-22-1536x563.png 1536w, https:\/\/10ccc.cc\/wp-content\/uploads\/2026\/01\/1767504090-22-2048x750.png 2048w\" sizes=\"auto, (max-width: 640px) 100vw, 640px\" \/><\/a>\u5728Data Import \u4e2d\u5bfc\u5165 cat_data \u4e2d\u5df2\u7ecf\u51c6\u5907\u597d\u7684\u56fe\u7247\u6570\u636e<\/p>\n<p style=\"text-align: center;\"><a href=\"https:\/\/10ccc.cc\/wp-content\/uploads\/2026\/01\/1767504087-33.png\" alt=\"YOLO\uff1a\u4ece\u6a21\u578b\u672c\u5730\u5fae\u8c03\u5230\u90e8\u7f72\" title=\"\" data-rel=\"lightbox-image-8\" data-rl_title=\"\" data-rl_caption=\"\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-4715 size-large\" src=\"https:\/\/10ccc.cc\/wp-content\/uploads\/2026\/01\/1767504087-33-1024x289.png\" alt=\"\" width=\"640\" height=\"181\" srcset=\"https:\/\/10ccc.cc\/wp-content\/uploads\/2026\/01\/1767504087-33-1024x289.png 1024w, https:\/\/10ccc.cc\/wp-content\/uploads\/2026\/01\/1767504087-33-300x85.png 300w, https:\/\/10ccc.cc\/wp-content\/uploads\/2026\/01\/1767504087-33-768x217.png 768w, https:\/\/10ccc.cc\/wp-content\/uploads\/2026\/01\/1767504087-33-1536x434.png 1536w, https:\/\/10ccc.cc\/wp-content\/uploads\/2026\/01\/1767504087-33-2048x578.png 2048w\" sizes=\"auto, (max-width: 640px) 100vw, 640px\" \/><\/a>Labeling Setup\u4e2d\u9009\u62e9 Object Detection with Bounding Boxes<\/p>\n<p style=\"text-align: center;\"><a href=\"https:\/\/10ccc.cc\/wp-content\/uploads\/2026\/01\/1767504084-44.png\" alt=\"YOLO\uff1a\u4ece\u6a21\u578b\u672c\u5730\u5fae\u8c03\u5230\u90e8\u7f72\" title=\"\" data-rel=\"lightbox-image-9\" data-rl_title=\"\" data-rl_caption=\"\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-4714 size-large\" src=\"https:\/\/10ccc.cc\/wp-content\/uploads\/2026\/01\/1767504084-44-1024x424.png\" alt=\"\" width=\"640\" height=\"265\" srcset=\"https:\/\/10ccc.cc\/wp-content\/uploads\/2026\/01\/1767504084-44-1024x424.png 1024w, https:\/\/10ccc.cc\/wp-content\/uploads\/2026\/01\/1767504084-44-300x124.png 300w, https:\/\/10ccc.cc\/wp-content\/uploads\/2026\/01\/1767504084-44-768x318.png 768w, https:\/\/10ccc.cc\/wp-content\/uploads\/2026\/01\/1767504084-44-1536x636.png 1536w, https:\/\/10ccc.cc\/wp-content\/uploads\/2026\/01\/1767504084-44-2048x848.png 2048w\" sizes=\"auto, (max-width: 640px) 100vw, 640px\" \/><\/a>\u6dfb\u52a0\u6807\u7b7e Cat\uff0c\u5e76\u5220\u9664\u591a\u4f59\u6807\u7b7e<\/p>\n<h3>5.2.2 \u6807\u6ce8\u5e76\u5bfc\u51fa<\/h3>\n<p>\u8fd9\u662f\u6700\u65e0\u8da3\u4f46\u5f88\u91cd\u8981\u7684\u90e8\u5206\uff0c\u6807\u6ce8\u8981\u5305\u62ec\u732b\u7684\u6574\u4f53\uff0c\u4f46\u4e0d\u4e5f\u4e0d\u80fd\u5305\u62ec\u592a\u591a\u4e0d\u662f\u732b\u7684\u90e8\u5206\u3002<\/p>\n<p>&nbsp;<\/p>\n<p style=\"text-align: center;\"><a href=\"https:\/\/10ccc.cc\/wp-content\/uploads\/2026\/01\/1767504078-66.png\" alt=\"YOLO\uff1a\u4ece\u6a21\u578b\u672c\u5730\u5fae\u8c03\u5230\u90e8\u7f72\" title=\"\" data-rel=\"lightbox-image-10\" data-rl_title=\"\" data-rl_caption=\"\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-4712 size-large\" src=\"https:\/\/10ccc.cc\/wp-content\/uploads\/2026\/01\/1767504078-66-1024x543.png\" alt=\"\" width=\"640\" height=\"339\" srcset=\"https:\/\/10ccc.cc\/wp-content\/uploads\/2026\/01\/1767504078-66-1024x543.png 1024w, https:\/\/10ccc.cc\/wp-content\/uploads\/2026\/01\/1767504078-66-300x159.png 300w, https:\/\/10ccc.cc\/wp-content\/uploads\/2026\/01\/1767504078-66-768x407.png 768w, https:\/\/10ccc.cc\/wp-content\/uploads\/2026\/01\/1767504078-66-1536x815.png 1536w, https:\/\/10ccc.cc\/wp-content\/uploads\/2026\/01\/1767504078-66-2048x1086.png 2048w\" sizes=\"auto, (max-width: 640px) 100vw, 640px\" \/><\/a>\u6309\u56fe\u4e2d\u6570\u5b57\u987a\u5e8f\u8fdb\u884c\u64cd\u4f5c<\/p>\n<p style=\"text-align: center;\"><a href=\"https:\/\/10ccc.cc\/wp-content\/uploads\/2026\/01\/1767504460-77.png\" alt=\"YOLO\uff1a\u4ece\u6a21\u578b\u672c\u5730\u5fae\u8c03\u5230\u90e8\u7f72\" title=\"\" data-rel=\"lightbox-image-11\" data-rl_title=\"\" data-rl_caption=\"\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-4718 size-large\" src=\"https:\/\/10ccc.cc\/wp-content\/uploads\/2026\/01\/1767504460-77-1024x363.png\" alt=\"\" width=\"640\" height=\"227\" srcset=\"https:\/\/10ccc.cc\/wp-content\/uploads\/2026\/01\/1767504460-77-1024x363.png 1024w, https:\/\/10ccc.cc\/wp-content\/uploads\/2026\/01\/1767504460-77-300x106.png 300w, https:\/\/10ccc.cc\/wp-content\/uploads\/2026\/01\/1767504460-77-768x272.png 768w, https:\/\/10ccc.cc\/wp-content\/uploads\/2026\/01\/1767504460-77-1536x545.png 1536w, https:\/\/10ccc.cc\/wp-content\/uploads\/2026\/01\/1767504460-77-2048x726.png 2048w\" sizes=\"auto, (max-width: 640px) 100vw, 640px\" \/><\/a>\u4e00\u5f20\u56fe\u7247\u6807\u6ce8\u64cd\u4f5c\u5b8c\u6210\u540e\u5c06\u5de6\u4fa7\u7684\u56fe\u7247\u52fe\u9009\u4e0a\uff0c\u8868\u793a\u6b64\u56fe\u5df2\u7ecf\u6807\u6ce8\u5b8c\u6210<\/p>\n<p>\u5c06\u5bfc\u5165\u7684\u56fe\u7247\u5168\u90e8\u6807\u6ce8\u5b8c\u6210\u540e\uff0c\u6211\u4eec\u56de\u5230\u5217\u8868\uff0c\u5c06\u6240\u6709\u5df2\u6807\u6ce8\u7684\u56fe\u7247\u9009\u4e2d\u5e76\u5bfc\u51fa\u3002\u6ce8\u610f\uff0c\u9009\u62e9\u5bfc\u51fa\u683c\u5f0f\u7684\u65f6\u5019\u9700\u8981\u9009\u62e9yolo with images<\/p>\n<figure id=\"attachment_4720\" aria-describedby=\"caption-attachment-4720\" style=\"width: 640px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/10ccc.cc\/wp-content\/uploads\/2026\/01\/1767504467-88.png\" alt=\"YOLO\uff1a\u4ece\u6a21\u578b\u672c\u5730\u5fae\u8c03\u5230\u90e8\u7f72\" title=\"\" data-rel=\"lightbox-image-12\" data-rl_title=\"\" data-rl_caption=\"\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-4720 size-large\" src=\"https:\/\/10ccc.cc\/wp-content\/uploads\/2026\/01\/1767504467-88-1024x245.png\" alt=\"\" width=\"640\" height=\"153\" srcset=\"https:\/\/10ccc.cc\/wp-content\/uploads\/2026\/01\/1767504467-88-1024x245.png 1024w, https:\/\/10ccc.cc\/wp-content\/uploads\/2026\/01\/1767504467-88-300x72.png 300w, https:\/\/10ccc.cc\/wp-content\/uploads\/2026\/01\/1767504467-88-768x184.png 768w, https:\/\/10ccc.cc\/wp-content\/uploads\/2026\/01\/1767504467-88-1536x367.png 1536w, https:\/\/10ccc.cc\/wp-content\/uploads\/2026\/01\/1767504467-88-2048x490.png 2048w\" sizes=\"auto, (max-width: 640px) 100vw, 640px\" \/><\/a><figcaption id=\"caption-attachment-4720\" class=\"wp-caption-text\">\u9009\u62e9\u5168\u90e8\u5df2\u6807\u6ce8\u56fe\u7247\u4ee5\u5907\u5bfc\u51fa<\/figcaption><\/figure>\n<p>&nbsp;<\/p>\n<figure id=\"attachment_4719\" aria-describedby=\"caption-attachment-4719\" style=\"width: 640px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/10ccc.cc\/wp-content\/uploads\/2026\/01\/1767504464-99.png\" alt=\"YOLO\uff1a\u4ece\u6a21\u578b\u672c\u5730\u5fae\u8c03\u5230\u90e8\u7f72\" title=\"\" data-rel=\"lightbox-image-13\" data-rl_title=\"\" data-rl_caption=\"\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-4719 size-large\" src=\"https:\/\/10ccc.cc\/wp-content\/uploads\/2026\/01\/1767504464-99-1024x506.png\" alt=\"\" width=\"640\" height=\"316\" srcset=\"https:\/\/10ccc.cc\/wp-content\/uploads\/2026\/01\/1767504464-99-1024x506.png 1024w, https:\/\/10ccc.cc\/wp-content\/uploads\/2026\/01\/1767504464-99-300x148.png 300w, https:\/\/10ccc.cc\/wp-content\/uploads\/2026\/01\/1767504464-99-768x380.png 768w, https:\/\/10ccc.cc\/wp-content\/uploads\/2026\/01\/1767504464-99-1536x759.png 1536w, https:\/\/10ccc.cc\/wp-content\/uploads\/2026\/01\/1767504464-99-2048x1012.png 2048w\" sizes=\"auto, (max-width: 640px) 100vw, 640px\" \/><\/a><figcaption id=\"caption-attachment-4719\" class=\"wp-caption-text\">\u9009\u62e9YOLO with Images<\/figcaption><\/figure>\n<p>\u5bfc\u51fa\u540e\u7684\u662f\u4e00\u4e2a\u538b\u7f29\u5305\uff0c\u5b83\u7684\u540d\u5b57\u7c7b\u4f3c\u4e8e \uff1aproject-2-at-2026-01-04-05-26-5e265015.zip \u3002\u6211\u4eec\u5c06\u538b\u7f29\u5305\u7684\u5185\u5bb9\u4e2d\u7684\u5185\u5bb9\u5bfc\u51fa\u5230\u9879\u76ee\u6839\u76ee\u5f55 yolo_finetune\u4e2d\u7684 labeled_data\u4e2d\u3002\u6b64\u65f6\uff0clabeled_data \u7684\u7ed3\u6784\u5e94\u8be5\u5982\u4e0b\u56fe\u6240\u793a\uff1a<\/p>\n<figure id=\"attachment_4708\" aria-describedby=\"caption-attachment-4708\" style=\"width: 640px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/10ccc.cc\/wp-content\/uploads\/2026\/01\/1767501518-Snipaste_2026-01-04_12-38-17.png\" alt=\"YOLO\uff1a\u4ece\u6a21\u578b\u672c\u5730\u5fae\u8c03\u5230\u90e8\u7f72\" title=\"\" data-rel=\"lightbox-image-14\" data-rl_title=\"\" data-rl_caption=\"\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-4708 size-large\" src=\"https:\/\/10ccc.cc\/wp-content\/uploads\/2026\/01\/1767501518-Snipaste_2026-01-04_12-38-17-1024x170.png\" alt=\"labeled_data \u6587\u4ef6\u5939\u7ed3\u6784\" width=\"640\" height=\"106\" srcset=\"https:\/\/10ccc.cc\/wp-content\/uploads\/2026\/01\/1767501518-Snipaste_2026-01-04_12-38-17-1024x170.png 1024w, https:\/\/10ccc.cc\/wp-content\/uploads\/2026\/01\/1767501518-Snipaste_2026-01-04_12-38-17-300x50.png 300w, https:\/\/10ccc.cc\/wp-content\/uploads\/2026\/01\/1767501518-Snipaste_2026-01-04_12-38-17-768x128.png 768w, https:\/\/10ccc.cc\/wp-content\/uploads\/2026\/01\/1767501518-Snipaste_2026-01-04_12-38-17.png 1240w\" sizes=\"auto, (max-width: 640px) 100vw, 640px\" \/><\/a><figcaption id=\"caption-attachment-4708\" class=\"wp-caption-text\">labeled_data \u6587\u4ef6\u5939\u7ed3\u6784<\/figcaption><\/figure>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<h1>6. \u6570\u636e\u96c6\u5212\u5206<\/h1>\n<p>\u6570\u636e\u96c6\u5408\u5e76\u4e14<ins datetime=\"2026-01-04T02:49:47+00:00\">\u6807\u6ce8\u540e<\/ins>\uff0c\u5c06 label studio\u5bfc\u51fa\u7684\u6587\u4ef6\u5939 labeled_data \u540e <a href=\"https:\/\/10ccc.cc\/wp-content\/uploads\/2026\/01\/1767496212-train_val_split.py\">train_val_split.py<\/a> \u6765\u91cd\u65b0\u5212\u5206\u3002<\/p>\n<figure id=\"attachment_4708\" aria-describedby=\"caption-attachment-4708\" style=\"width: 640px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/10ccc.cc\/wp-content\/uploads\/2026\/01\/1767501518-Snipaste_2026-01-04_12-38-17.png\" alt=\"YOLO\uff1a\u4ece\u6a21\u578b\u672c\u5730\u5fae\u8c03\u5230\u90e8\u7f72\" title=\"\" data-rel=\"lightbox-image-14\" data-rl_title=\"\" data-rl_caption=\"\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-4708 size-large\" src=\"https:\/\/10ccc.cc\/wp-content\/uploads\/2026\/01\/1767501518-Snipaste_2026-01-04_12-38-17-1024x170.png\" alt=\"labeled_data \u6587\u4ef6\u5939\u7ed3\u6784\" width=\"640\" height=\"106\" srcset=\"https:\/\/10ccc.cc\/wp-content\/uploads\/2026\/01\/1767501518-Snipaste_2026-01-04_12-38-17-1024x170.png 1024w, https:\/\/10ccc.cc\/wp-content\/uploads\/2026\/01\/1767501518-Snipaste_2026-01-04_12-38-17-300x50.png 300w, https:\/\/10ccc.cc\/wp-content\/uploads\/2026\/01\/1767501518-Snipaste_2026-01-04_12-38-17-768x128.png 768w, https:\/\/10ccc.cc\/wp-content\/uploads\/2026\/01\/1767501518-Snipaste_2026-01-04_12-38-17.png 1240w\" sizes=\"auto, (max-width: 640px) 100vw, 640px\" \/><\/a><figcaption id=\"caption-attachment-4708\" class=\"wp-caption-text\">labeled_data \u6587\u4ef6\u5939\u7ed3\u6784<\/figcaption><\/figure>\n<p>\u6ce8\u610f<ins datetime=\"2026-01-04T02:49:47+00:00\">\u6fc0\u6d3b labelenv \u540e\u6267\u884c<\/ins>\u4e0b\u65b9\u547d\u4ee4\uff0c\u6267\u884c\u5b8c\u6bd5\u540e\uff0cyolo_finetune \u6587\u4ef6\u5939\u5185\u4f1a\u591a\u4e00\u4e2adata\u6587\u4ef6\u5939\uff0c\u5176\u4e2d labeled_data \u662f\u5df2\u7ecf\u6807\u6ce8\u597d\u7684 yolo \u6570\u636e\u96c6\u5408\uff0c\u5982\u4e0b\u56fe\u6240\u793a\uff1a<\/p>\n<figure id=\"attachment_4721\" aria-describedby=\"caption-attachment-4721\" style=\"width: 640px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/10ccc.cc\/wp-content\/uploads\/2026\/01\/1767509351-datafolder.png\" alt=\"YOLO\uff1a\u4ece\u6a21\u578b\u672c\u5730\u5fae\u8c03\u5230\u90e8\u7f72\" title=\"\" data-rel=\"lightbox-image-16\" data-rl_title=\"\" data-rl_caption=\"\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-4721 size-large\" src=\"https:\/\/10ccc.cc\/wp-content\/uploads\/2026\/01\/1767509351-datafolder-1024x293.png\" alt=\"\" width=\"640\" height=\"183\" srcset=\"https:\/\/10ccc.cc\/wp-content\/uploads\/2026\/01\/1767509351-datafolder-1024x293.png 1024w, https:\/\/10ccc.cc\/wp-content\/uploads\/2026\/01\/1767509351-datafolder-300x86.png 300w, https:\/\/10ccc.cc\/wp-content\/uploads\/2026\/01\/1767509351-datafolder-768x220.png 768w, https:\/\/10ccc.cc\/wp-content\/uploads\/2026\/01\/1767509351-datafolder-1536x440.png 1536w, https:\/\/10ccc.cc\/wp-content\/uploads\/2026\/01\/1767509351-datafolder.png 1564w\" sizes=\"auto, (max-width: 640px) 100vw, 640px\" \/><\/a><figcaption id=\"caption-attachment-4721\" class=\"wp-caption-text\">data folder structure<\/figcaption><\/figure>\n<div class=\"dm-code-snippet dark no-background no-background-mobile dm-slim-version\" style=\"background-color:#abb8c3;\" snippet-height=\"\">\n\t\t\t<div class=\"control-language\">\n                <div class=\"dm-buttons\">\n                    <div class=\"dm-buttons-left\">\n                        <div class=\"dm-button-snippet red-button\"><\/div>\n                        <div class=\"dm-button-snippet orange-button\"><\/div>\n                        <div class=\"dm-button-snippet green-button\"><\/div>\n                    <\/div>\n                    <div class=\"dm-buttons-right\">\n                        <a id=\"dm-copy-raw-code\">\n                        <span class=\"dm-copy-text\">Copy Code<\/span>\n                        <span class=\"dm-copy-confirmed\" style=\"display:none\">Copied<\/span>\n                        <span class=\"dm-error-message\" style=\"display:none\">Use a different Browser<\/span><\/a>\n                    <\/div>\n                <\/div>\n                <pre class=\"no-line-numbers\"><code id=\"dm-code-raw\" class=\"no-wrap language-shell\"><\/p>\n<pre class=\"dm-pre-admin-side\">python train_val_split.py --datapath=\".\/labeled_data\" --train_pct=0.9<\/pre>\n<p><\/code><\/pre>\n\t\t\t<\/div>\n        <\/div>\n<h1><\/h1>\n<h1>7. \u6a21\u578b\u5fae\u8c03\u8bad\u7ec3<\/h1>\n<figure id=\"attachment_4726\" aria-describedby=\"caption-attachment-4726\" style=\"width: 640px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/10ccc.cc\/wp-content\/uploads\/2026\/01\/1767542111-Snipaste_2026-01-04_23-54-49.png\" alt=\"YOLO\uff1a\u4ece\u6a21\u578b\u672c\u5730\u5fae\u8c03\u5230\u90e8\u7f72\" title=\"\" data-rel=\"lightbox-image-17\" data-rl_title=\"\" data-rl_caption=\"\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-4726 size-large\" src=\"https:\/\/10ccc.cc\/wp-content\/uploads\/2026\/01\/1767542111-Snipaste_2026-01-04_23-54-49-1024x621.png\" alt=\"\" width=\"640\" height=\"388\" srcset=\"https:\/\/10ccc.cc\/wp-content\/uploads\/2026\/01\/1767542111-Snipaste_2026-01-04_23-54-49-1024x621.png 1024w, https:\/\/10ccc.cc\/wp-content\/uploads\/2026\/01\/1767542111-Snipaste_2026-01-04_23-54-49-300x182.png 300w, https:\/\/10ccc.cc\/wp-content\/uploads\/2026\/01\/1767542111-Snipaste_2026-01-04_23-54-49-768x466.png 768w, https:\/\/10ccc.cc\/wp-content\/uploads\/2026\/01\/1767542111-Snipaste_2026-01-04_23-54-49-1536x932.png 1536w, https:\/\/10ccc.cc\/wp-content\/uploads\/2026\/01\/1767542111-Snipaste_2026-01-04_23-54-49.png 1724w\" sizes=\"auto, (max-width: 640px) 100vw, 640px\" \/><\/a><figcaption id=\"caption-attachment-4726\" class=\"wp-caption-text\">\u8bad\u7ec3\u786e\u5b9e\u5403\u5185\u5b58<\/figcaption><\/figure>\n<p>&nbsp;<\/p>\n<p>\u6a21\u578b\u5fae\u8c03\u8bad\u7ec3\u7684\u5177\u4f53\u8fc7\u7a0b\u53ef\u3010\u5c55\u5f00\u3011\u4e0b\u65b9 Jupyter Notebook \u6765\u67e5\u770b\u3002\u5f53\u7136\uff0c\u4f60\u4e5f\u53ef\u4ee5<ins datetime=\"2026-01-04T17:04:37+00:00\">\u3010<a href=\"https:\/\/10ccc.cc\/wp-content\/uploads\/2026\/01\/1767585903-YOLO_FINETUNE_NOTEBOOK.ipynb\">\u4e0b\u8f7d<\/a>\u3011<\/ins>\u540e\u672c\u5730\u8fd0\u884c\u3002<\/p>\n<p style=\"text-align: center;\"><div class=\"jupyter-notebook-wrapper\">\n            <button class=\"jupyter-toggle-btn\">\u5c55\u5f00<\/button>\n            <iframe id=\"YOLO_FINETUNE_NOTEBOOK\" style=\"border: 1px lightgrey solid; height: 300px;\" src=\"https:\/\/10ccc.cc\/wp-content\/uploads\/jupyter-notebooks\/YOLO_FINETUNE_NOTEBOOK.html\" width=\"100%\" frameborder=\"0\" scrolling=\"no\"><\/iframe>\n            <button class=\"jupyter-toggle-btn1\">\u5c55\u5f00<\/button>\n         <\/div><script>\n        (function(){\n            var iframe = document.getElementById(\"YOLO_FINETUNE_NOTEBOOK\");\n            var wrapper = iframe.parentElement;\n            var toggleBtn = wrapper.querySelector(\".jupyter-toggle-btn\");\n            var toggleBtn1 = wrapper.querySelector(\".jupyter-toggle-btn1\");\n            var isExpanded = false;\n            var fullHeight = 0;\n            \n            function getFullHeight() {\n                return iframe.contentWindow.document.body.scrollHeight + 4;\n            }\n            \n            function toggleHeight() {\n                if (isExpanded) {\n                    iframe.style.height = \"300px\";\n                    toggleBtn.textContent = \"\u5c55\u5f00\";\n                    toggleBtn1.textContent = \"\u5c55\u5f00\";\n                } else {\n                    fullHeight = getFullHeight();\n                    iframe.style.height = fullHeight + \"px\";\n                    toggleBtn.textContent = \"\u6536\u56de\";\n                    toggleBtn1.textContent = \"\u6536\u56de\";\n                }\n                isExpanded = !isExpanded;\n            }\n            \n            toggleBtn.addEventListener(\"click\", toggleHeight);\n\n\n            function toggleHeight1() {\n                if (isExpanded) {\n                    iframe.style.height = \"300px\";\n                    toggleBtn1.textContent = \"\u5c55\u5f00\";\n                    toggleBtn.textContent = \"\u5c55\u5f00\";\n                } else {\n                    fullHeight = getFullHeight();\n                    iframe.style.height = fullHeight + \"px\";\n                    toggleBtn1.textContent = \"\u6536\u56de\";\n                    toggleBtn.textContent = \"\u6536\u56de\";\n                }\n                isExpanded = !isExpanded;\n            }\n            \n            toggleBtn1.addEventListener(\"click\", toggleHeight1);\n\n            \/\/ \u9875\u9762\u5927\u5c0f\u6539\u53d8\u65f6\u91cd\u65b0\u8ba1\u7b97\n            window.addEventListener(\"resize\", function() {\n                if (isExpanded) {\n                    fullHeight = getFullHeight();\n                    iframe.style.height = fullHeight + \"px\";\n                }\n            });\n            \n            \/\/ iframe\u52a0\u8f7d\u5b8c\u6210\u540e\u521d\u59cb\u5316\n            iframe.addEventListener(\"load\", function() {\n                fullHeight = getFullHeight();\n            });\n        })();\n        <\/script><\/p>\n<p>&nbsp;<\/p>\n<p>\u8bad\u7ec3\u5b8c\u6210\u540e\uff0c\u9879\u76ee\u6587\u4ef6\u5939 yolo_fintune \u7684\u7ed3\u6784\u5e94\u8be5\u5982\u4e0b\uff1a<\/p>\n<p><a href=\"https:\/\/10ccc.cc\/wp-content\/uploads\/2026\/01\/1767545592-Snipaste_2026-01-05_00-52-54.png\" alt=\"YOLO\uff1a\u4ece\u6a21\u578b\u672c\u5730\u5fae\u8c03\u5230\u90e8\u7f72\" title=\"\" data-rel=\"lightbox-image-18\" data-rl_title=\"\" data-rl_caption=\"\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-4728 size-large\" src=\"https:\/\/10ccc.cc\/wp-content\/uploads\/2026\/01\/1767545592-Snipaste_2026-01-05_00-52-54-1024x387.png\" alt=\"\" width=\"640\" height=\"242\" srcset=\"https:\/\/10ccc.cc\/wp-content\/uploads\/2026\/01\/1767545592-Snipaste_2026-01-05_00-52-54-1024x387.png 1024w, https:\/\/10ccc.cc\/wp-content\/uploads\/2026\/01\/1767545592-Snipaste_2026-01-05_00-52-54-300x113.png 300w, https:\/\/10ccc.cc\/wp-content\/uploads\/2026\/01\/1767545592-Snipaste_2026-01-05_00-52-54-768x290.png 768w, https:\/\/10ccc.cc\/wp-content\/uploads\/2026\/01\/1767545592-Snipaste_2026-01-05_00-52-54-1536x581.png 1536w, https:\/\/10ccc.cc\/wp-content\/uploads\/2026\/01\/1767545592-Snipaste_2026-01-05_00-52-54.png 1582w\" sizes=\"auto, (max-width: 640px) 100vw, 640px\" \/><\/a><\/p>\n<p>\u6ce8\u610f\u8bad\u7ec3\u547d\u4ee4\uff1a<\/p>\n<div class=\"dm-code-snippet dark no-background no-background-mobile dm-slim-version\" style=\"background-color:#abb8c3;\" snippet-height=\"\">\n\t\t\t<div class=\"control-language\">\n                <div class=\"dm-buttons\">\n                    <div class=\"dm-buttons-left\">\n                        <div class=\"dm-button-snippet red-button\"><\/div>\n                        <div class=\"dm-button-snippet orange-button\"><\/div>\n                        <div class=\"dm-button-snippet green-button\"><\/div>\n                    <\/div>\n                    <div class=\"dm-buttons-right\">\n                        <a id=\"dm-copy-raw-code\">\n                        <span class=\"dm-copy-text\">Copy Code<\/span>\n                        <span class=\"dm-copy-confirmed\" style=\"display:none\">Copied<\/span>\n                        <span class=\"dm-error-message\" style=\"display:none\">Use a different Browser<\/span><\/a>\n                    <\/div>\n                <\/div>\n                <pre class=\"no-line-numbers\"><code id=\"dm-code-raw\" class=\"no-wrap language-shell\"><\/p>\n<pre class=\"dm-pre-admin-side\">!yolo detect train data=\".\/data\/data.yaml\" model=\".\/yolo11s.pt\" epochs=60 imgsz=640 device={device}<\/pre>\n<p><\/code><\/pre>\n\t\t\t<\/div>\n        <\/div>\n<p>\u5982\u679c\u5e0c\u671b\u540e\u7eed\u624b\u52a8\u5728 cmd\/terminal \u4e2d\u6267\u884c\uff0c\u800c\u4e0d\u4f7f\u7528 jupyer notebook\u3002 \u4f60\u53ef\u4ee5\u6839\u636e\u81ea\u8eab\u8bbe\u5907\u7684\u60c5\u51b5\u8c03\u6574 device , \u6bd4\u5982\uff1a\u4f7f\u7528 Nvidia \u7684\u663e\u5361\u5219\u4fee\u6539\u4e3a cuda , \u4f7f\u7528 mac\/macbook \u5219\u4fee\u6539\u4e3amps\u3002<\/p>\n<p>&nbsp;<\/p>\n<p>\u7b14\u8bb0\u4e2d\u7684 <a href=\"https:\/\/10ccc.cc\/wp-content\/uploads\/2026\/01\/1767548470-create_data_yaml.py\">create_data_yaml()<\/a> \u51fd\u6570\u6bd4\u8f83\u91cd\u8981\uff0c\u5176\u5b9a\u4e49\u4ee5\u53ca\u7528\u6cd5\u5982\u4e0b\u3002\u6267\u884c\u5b8c\u6210\u540e\uff0c\u4f1a\u5728 .\/data \u6587\u4ef6\u5939\u4e2d\u751f\u6210\u8bad\u7ec3\u6240\u9700\u7684 data.yaml \u3002\u5efa\u8bae\u8be6\u7ec6\u9605\u8bfb jupyter notebook \u4e2d\u7684\u6b64\u90e8\u5206\u5185\u5bb9\u3002\u56e0\u4e3a\u811a\u672c\u4e0e\u672c\u9879\u76ee\u6587\u4ef6\u5939\u7684\u7ed3\u6784\u4ee5\u53ca\u4e4b\u524d\u6b65\u9aa4\u7684\u6240\u6709\u64cd\u4f5c\u5f3a\u76f8\u5173\uff0c\u5982\u679c\u4e0d\u80fd\u7406\u89e3\uff0c\u8bf7\u8be6\u7ec6\u9605\u8bfb\u672c\u6587\u4e4b\u524d\u7684\u6b65\u9aa4\u3002<\/p>\n<div class=\"dm-code-snippet dark no-background no-background-mobile dm-normal-version\" style=\"background-color:#abb8c3;\" snippet-height=\"\">\n\t\t\t<div class=\"control-language\">\n                <div class=\"dm-buttons\">\n                    <div class=\"dm-buttons-left\">\n                        <div class=\"dm-button-snippet red-button\"><\/div>\n                        <div class=\"dm-button-snippet orange-button\"><\/div>\n                        <div class=\"dm-button-snippet green-button\"><\/div>\n                    <\/div>\n                    <div class=\"dm-buttons-right\">\n                        <a id=\"dm-copy-raw-code\">\n                        <span class=\"dm-copy-text\">Copy Code<\/span>\n                        <span class=\"dm-copy-confirmed\" style=\"display:none\">Copied<\/span>\n                        <span class=\"dm-error-message\" style=\"display:none\">Use a different Browser<\/span><\/a>\n                    <\/div>\n                <\/div>\n                <pre class=\"no-line-numbers\"><code id=\"dm-code-raw\" class=\"no-wrap language-python\"><\/p>\n<pre class=\"dm-pre-admin-side\">import yaml\r\nimport os\r\n\r\ndef create_data_yaml(path_to_classes_txt, path_to_data_yaml, path_to_data_folder):\r\n\r\n  # Read class.txt to get class names\r\n  if not os.path.exists(path_to_classes_txt):\r\n    print(f'classes.txt file not found! Please create a classes.txt labelmap and move it to {path_to_classes_txt}')\r\n    return\r\n  with open(path_to_classes_txt, 'r') as f:\r\n    classes = []\r\n    for line in f.readlines():\r\n      if len(line.strip()) == 0: continue\r\n      classes.append(line.strip())\r\n  number_of_classes = len(classes)\r\n\r\n  # Create data dictionary\r\n  data = {\r\n      'path': f'{path_to_data_folder}',\r\n      'train': 'train\/images',\r\n      'val': 'validation\/images',\r\n      'nc': number_of_classes,\r\n      'names': classes\r\n  }\r\n\r\n  # Write data to YAML file\r\n  with open(path_to_data_yaml, 'w') as f:\r\n    yaml.dump(data, f, sort_keys=False)\r\n  print(f'Created config file at {path_to_data_yaml}')\r\n\r\n  return\r\n\r\n# Define path to classes.txt and run function\r\npath_to_data_folder =  '.\/data'\r\npath_to_classes_txt = '.\/labeled_data\/classes.txt'\r\npath_to_data_yaml = '.\/data\/data.yaml'\r\n\r\ncreate_data_yaml(path_to_classes_txt, path_to_data_yaml, path_to_data_folder)\r\n<\/pre>\n<p><\/code><\/pre>\n\t\t\t<\/div>\n        <\/div>\n<h1>8. \u6a21\u578b\u9a8c\u8bc1<\/h1>\n<figure id=\"attachment_4734\" aria-describedby=\"caption-attachment-4734\" style=\"width: 640px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/10ccc.cc\/wp-content\/uploads\/2026\/01\/1767584534-yolo_training_curves-scaled.png\" alt=\"YOLO\uff1a\u4ece\u6a21\u578b\u672c\u5730\u5fae\u8c03\u5230\u90e8\u7f72\" title=\"\" data-rel=\"lightbox-image-19\" data-rl_title=\"\" data-rl_caption=\"\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-4734 size-large\" src=\"https:\/\/10ccc.cc\/wp-content\/uploads\/2026\/01\/1767584534-yolo_training_curves-1024x818.png\" alt=\"\" width=\"640\" height=\"511\" srcset=\"https:\/\/10ccc.cc\/wp-content\/uploads\/2026\/01\/1767584534-yolo_training_curves-1024x818.png 1024w, https:\/\/10ccc.cc\/wp-content\/uploads\/2026\/01\/1767584534-yolo_training_curves-300x240.png 300w, https:\/\/10ccc.cc\/wp-content\/uploads\/2026\/01\/1767584534-yolo_training_curves-768x613.png 768w, https:\/\/10ccc.cc\/wp-content\/uploads\/2026\/01\/1767584534-yolo_training_curves-1536x1227.png 1536w, https:\/\/10ccc.cc\/wp-content\/uploads\/2026\/01\/1767584534-yolo_training_curves-2048x1636.png 2048w\" sizes=\"auto, (max-width: 640px) 100vw, 640px\" \/><\/a><figcaption id=\"caption-attachment-4734\" class=\"wp-caption-text\">\u6027\u80fd\u8bc4\u4f30<\/figcaption><\/figure>\n<p>&nbsp;<\/p>\n<p>\u8fd9\u6b21\u7684\u8bad\u7ec3\u4ece\u90a3\u4e2a <strong>mAP50 <\/strong>\u770b\uff1a\u6700\u4f73 mAP50\uff1a--&gt;0.995\uff08\u63a5\u8fd1100%\uff09\u51fa\u73b0\u5728 \u5927\u6982\u7b2c 41 epoch \u8fd9\u8bf4\u660e\uff1a<ins datetime=\"2026-01-05T04:05:28+00:00\">\u6a21\u578b\u51e0\u4e4e\u201c\u4ece\u4e0d\u6f0f\u68c0\u201d\u76ee\u6807<\/ins>\uff1b\u800c\u4ece <strong>mAP50-90<\/strong> \u770b\uff1a\u6700\u4f73 mAP50-90\uff1a--&gt;0.8 \u51fa\u73b0\u5728 \u5927\u6982\u7b2c 1 \u4e2a epoch , \u540e\u7eed\u5374\u4e00\u76f4\u4e0b\u964d\u5e76\u518d\u4e5f\u6ca1\u6709\u8d85\u8fc70.8\uff0c\u8fd9\u610f\u5473\u7740\uff1a<ins datetime=\"2026-01-05T04:05:28+00:00\">\u6a21\u578b\u51e0\u4e4e\u80fd\u68c0\u6d4b\u5230\u76ee\u6807\u5374\u72c2\u6846\u4e0d\u51c6 ---&gt; \u6846\u548c\u76ee\u6807\u8d34\u5f97\u4e0d\u591f\u51c6\u786e\uff1b<\/ins><\/p>\n<p>&nbsp;<\/p>\n<p>\u4f46\u662f\u4ece *Train Loss \u548c *Val Loss\u6765\u770b\uff0c\u5b58\u5728\u6bd4\u8f83\u4e25\u91cd\u7684\u8fc7\u62df\u5408\u73b0\u8c61<\/p>\n<ol>\n<li>\u770b\u5230\u8bad\u7ec3\u635f\u5931\u4e0b\u964d\u00a0 --&gt; \u6a21\u578b\u5728\u5b66\u4e60<\/li>\n<li>\u770b\u5230\u9a8c\u8bc1\u635f\u5931\u4e0a\u5347 --&gt; \u5f00\u59cb\u8fc7\u62df\u5408<\/li>\n<li>\u770b\u5230 mAP50-95 \u5728\u7b2c 2 \u8f6e\u5c31\u8fbe\u5230\u5cf0\u503c --&gt; \u8fc7\u65e9\u505c\u6b62\u6cdb\u5316<\/li>\n<li>\u770b\u5230 mAP50 \u63a5\u8fd1 1.0 \u4f46 mAP50-95 \u53ea\u6709 0.75\u00a0 --&gt; \u00a0\u6a21\u578b\u5728\u6b7b\u8bb0\u786c\u80cc<\/li>\n<li>\u770b\u5230\u8bad\u7ec3\u96c6\u548c\u9a8c\u8bc1\u96c6\u5dee\u8ddd\u5927 --&gt; \u6ca1\u6709\u6cdb\u5316\u80fd\u529b<\/li>\n<\/ol>\n<p>\u5177\u4f53\u53ef\u67e5\u770b\u4e0b\u56fe\uff1a<\/p>\n<figure id=\"attachment_4740\" aria-describedby=\"caption-attachment-4740\" style=\"width: 640px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/10ccc.cc\/wp-content\/uploads\/2026\/01\/1767591409-Snipaste_2026-01-05_13-36-35.png\" alt=\"YOLO\uff1a\u4ece\u6a21\u578b\u672c\u5730\u5fae\u8c03\u5230\u90e8\u7f72\" title=\"\" data-rel=\"lightbox-image-20\" data-rl_title=\"\" data-rl_caption=\"\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-4740 size-large\" src=\"https:\/\/10ccc.cc\/wp-content\/uploads\/2026\/01\/1767591409-Snipaste_2026-01-05_13-36-35-e1767591524705-1024x744.png\" alt=\"\" width=\"640\" height=\"465\" srcset=\"https:\/\/10ccc.cc\/wp-content\/uploads\/2026\/01\/1767591409-Snipaste_2026-01-05_13-36-35-e1767591524705-1024x744.png 1024w, https:\/\/10ccc.cc\/wp-content\/uploads\/2026\/01\/1767591409-Snipaste_2026-01-05_13-36-35-e1767591524705-300x218.png 300w, https:\/\/10ccc.cc\/wp-content\/uploads\/2026\/01\/1767591409-Snipaste_2026-01-05_13-36-35-e1767591524705-768x558.png 768w, https:\/\/10ccc.cc\/wp-content\/uploads\/2026\/01\/1767591409-Snipaste_2026-01-05_13-36-35-e1767591524705.png 1533w\" sizes=\"auto, (max-width: 640px) 100vw, 640px\" \/><\/a><figcaption id=\"caption-attachment-4740\" class=\"wp-caption-text\">YOLO\u6a21\u578b\u8fc7\u62df\u5408\u8bca\u65ad\u62a5\u544a<\/figcaption><\/figure>\n<p>&nbsp;<\/p>\n<p>\u6240\u4ee5\u6574\u4f53\u6765\u770b\uff0c\u6b64\u6b21\u8bad\u7ec3\u7684\u6a21\u578b\uff1a\u3010\u627e\u5230\u732b\u7684\u80fd\u529b\u5f88\u5f3a\u3011\uff0c\u3010\u4f46\u662f\u6846\u201c\u51c6\u201d\u7684\u80fd\u529b\u6bd4\u8f83\u5dee\u3011\uff0c\u3010\u5728\u590d\u6742\u73af\u5883\u4e0b\u6846\u9519\u7684\u53ef\u80fd\u6027\u6bd4\u8f83\u5927\u3011\uff1b\u4f46\u662f\u8003\u8651\u5230\u8bad\u7ec3\u6837\u672c\u6570\u91cf\u8f83\u5c11\uff0c\u800c\u4e14\u8bad\u7ec3\u6570\u636e\u4e2d\u7684\u573a\u666f\u4e5f\u6bd4\u8f83\u5355\u4e00\uff0c\u8fd9\u4e2a\u7ed3\u679c\u3010\u53ef\u4ee5\u3011\u63a5\u53d7\uff0c\u56e0\u4e3a\u6211\u4eec\u6b64\u6b21\u7684\u76ee\u6807\u662f\uff1a<strong>\u53ea\u8981\u68c0\u6d4b\u51fa\u6765\u5c31\u884c\u3002<\/strong><\/p>\n<p>&nbsp;<\/p>\n<h1>9. \u5b9e\u9645\u63a8\u7406\u548c\u6d4b\u8bd5<\/h1>\n<p>python: \u67e5\u770b\u7b14\u8bb0\u5373\u53ef\uff1b<\/p>\n<p>cpp:\u9700\u8981\u6ce8\u610f\u3010YOLO\u7684\u7248\u672c\u3011\uff0c\u4e0d\u540c\u7248\u672c\u7684YOLO\u52a0\u8f7d\u65b9\u5f0f\u6709\u6240\u4e0d\u540c\u3002\u5373\uff1a\u5982\u679c\u5728\u5fae\u8c03\u65f6\uff0c\u4f7f\u7528\u7684 base model \u662f YOLOv5 , \u5219\u5fae\u8c03\u6a21\u578b\u7684\u52a0\u8f7d\u65b9\u5f0f\u4e5f\u9700\u8981\u4e0e YOLOv5\u4e00\u81f4\uff0c\u5176\u4f59\u7248\u672c\u540c\u7406\u3002<\/p>\n<p>&nbsp;<\/p>\n<p>\u4ee5 v5 \u4e3a\u4f8b:<\/p>\n<p>cpp\u6587\u4ef6--&gt;\u3010<a href=\"https:\/\/10ccc.cc\/wp-content\/uploads\/2026\/01\/1767609436-yolov5_cpp_inference.cpp\">yolov5_cpp_inference.cpp<\/a>\u3011 \u66f4\u591a --&gt; \u3010<a href=\"https:\/\/github.com\/ultralytics\/ultralytics\/tree\/main\/examples\" target=\"_blank\"  rel=\"nofollow\" >ultralytics-example<\/a>\u3011<\/p>\n<p>onnx\u6587\u4ef6 --&gt;\u3010<a href=\"https:\/\/10ccc.cc\/wp-content\/uploads\/2026\/01\/1767608545-best_onnx.zip\">best.onnx<\/a>\u3011<\/p>\n<p>&nbsp;<\/p>\n<div class=\"dm-code-snippet dark no-background no-background-mobile dm-normal-version\" style=\"background-color:#abb8c3;\" snippet-height=\"300\">\n\t\t\t<div class=\"control-language\">\n                <div class=\"dm-buttons\">\n                    <div class=\"dm-buttons-left\">\n                        <div class=\"dm-button-snippet red-button\"><\/div>\n                        <div class=\"dm-button-snippet orange-button\"><\/div>\n                        <div class=\"dm-button-snippet green-button\"><\/div>\n                    <\/div>\n                    <div class=\"dm-buttons-right\">\n                        <a id=\"dm-copy-raw-code\">\n                        <span class=\"dm-copy-text\">Copy Code<\/span>\n                        <span class=\"dm-copy-confirmed\" style=\"display:none\">Copied<\/span>\n                        <span class=\"dm-error-message\" style=\"display:none\">Use a different Browser<\/span><\/a>\n                    <\/div>\n                <\/div>\n                <pre class=\"line-numbers\"><code id=\"dm-code-raw\" class=\"no-wrap language-clike\"><\/p>\n<pre class=\"dm-pre-admin-side\">#include &lt;iostream&gt;\r\n#include &lt;opencv2\/opencv.hpp&gt;\r\n#include &lt;opencv2\/dnn\/dnn.hpp&gt;\r\n#include &lt;string&gt;\r\n#include &lt;vector&gt;\r\n\r\nusing cv::Mat;\r\nusing std::cout;\r\nusing std::endl;\r\nusing std::string;\r\nusing std::vector;\r\n\/\/ \u524d\u5904\u7406\r\n\/\/ \u63a8\u7406\r\n\/\/ \u540e\u5904\u7406:\u7b5b\u9664\u7f6e\u4fe1\u5ea6\u8fc7\u4f4e\u7684\u76ee\u6807\uff0c\u6309\u7c7b\u522b\u5206\u7c7b\u5e76\u5f97\u5230\u7c7b\u522b\u7f16\u53f7\uff0c\u7b5b\u9664\u91cd\u590d\u5ea6\u8fc7\u9ad8\u7684\u6846\uff0c\u7ed3\u675f\r\n\r\n\/\/ \u7b5b\u9664\u91cd\u590d\u5ea6\u8fc7\u9ad8\u7684\u6846\u7b56\u75651\uff1a\u62ff\u5230\u7f6e\u4fe1\u5ea6\u6700\u9ad8\u7684\u6846\uff0c\u628a\u5269\u4e0b\u7684\u53bb\u6389\r\n\/\/ \u7b5b\u9664\u91cd\u590d\u5ea6\u8fc7\u9ad8\u7684\u6846\u7b56\u75652\uff1a\u62ff\u5230\u7f6e\u4fe1\u5ea6\u6700\u9ad8\u7684\u6846\uff0c\u770b\u5269\u4e0b\u7684\u6846\u662f\u5426\u91cd\u590d\uff0c\u91cd\u590d\u8fc7\u591a\u5c31\u5220\u9664\uff0c\u4e5f\u5c31\u662f\u6240\u8c13\u7684nms\r\n\r\nstatic const vector&lt;string&gt; class_name = {\"cat\", \"chicken\", \"cow\", \"dog\", \"fox\", \"goat\", \"horse\", \"person\", \"racoon\", \"skunk\"};\r\n\r\n\r\n\/\/ letterbox resize: \u4fdd\u6301\u6bd4\u4f8b\u7f29\u653e + \u586b\u5145\r\ncv::Mat letterbox(const cv::Mat&amp; src, int new_size = 640) {\r\n    int original_w = src.cols;\r\n    int original_h = src.rows;\r\n\r\n    \/\/ \u8ba1\u7b97\u7f29\u653e\u6bd4\u4f8b\r\n    float scale = std::min((float)new_size \/ original_w, (float)new_size \/ original_h);\r\n    int new_w = int(original_w * scale);\r\n    int new_h = int(original_h * scale);\r\n\r\n    \/\/ resize \u5230\u65b0\u5c3a\u5bf8\r\n    cv::Mat resized;\r\n    cv::resize(src, resized, cv::Size(new_w, new_h));\r\n\r\n    \/\/ \u521b\u5efa\u76ee\u6807\u56fe (640x640, \u9ed1\u8272\u80cc\u666f)\r\n    cv::Mat output = cv::Mat::zeros(new_size, new_size, src.type());\r\n\r\n    \/\/ \u8ba1\u7b97\u586b\u5145\u504f\u79fb\r\n    int top = (new_size - new_h) \/ 2;\r\n    int left = (new_size - new_w) \/ 2;\r\n\r\n    \/\/ \u5c06\u7f29\u653e\u540e\u7684\u56fe\u50cf\u590d\u5236\u5230\u4e2d\u5fc3\r\n    resized.copyTo(output(cv::Rect(left, top, new_w, new_h)));\r\n\r\n    return output;\r\n}\r\n\r\nvoid print_result(const Mat &amp;result, float conf = 0.7, int len_data = 15)\r\n{\r\n    float *pdata = (float *)result.data;\r\n    for (int i = 0; i &lt; result.total() \/ len_data; i++)\r\n    {\r\n        if (pdata[4] &gt; conf)\r\n        {\r\n            for (int j = 0; j &lt; len_data; j++)\r\n            {\r\n                cout &lt;&lt; pdata[j] &lt;&lt; \" \";\r\n            }\r\n            cout &lt;&lt; endl;\r\n        }\r\n        pdata += len_data;\r\n    }\r\n    return;\r\n}\r\n\r\nvector&lt;vector&lt;float&gt;&gt; get_info(const Mat &amp;result, float conf = 0.7, int len_data = 15)\r\n{\r\n    float *pdata = (float *)result.data;\r\n    vector&lt;vector&lt;float&gt;&gt; info;\r\n    for (int i = 0; i &lt; result.total() \/ len_data; i++)\r\n    {\r\n        if (pdata[4] &gt; conf)\r\n        {\r\n            vector&lt;float&gt; info_line;\r\n            for (int j = 0; j &lt; len_data; j++)\r\n            {\r\n                \/\/ cout &lt;&lt; pdata[j] &lt;&lt; \" \";\r\n                info_line.push_back(pdata[j]);\r\n            }\r\n            \/\/ cout &lt;&lt; endl;\r\n            info.push_back(info_line);\r\n        }\r\n        pdata += len_data;\r\n    }\r\n    return info;\r\n}\r\n\r\nvoid info_simplify(vector&lt;vector&lt;float&gt;&gt; &amp;info)\r\n{\r\n    for (auto i = 0; i &lt; info.size(); i++)\r\n    {\r\n        info[i][5] = std::max_element(info[i].cbegin() + 5, info[i].cend()) - (info[i].cbegin() + 5);\r\n        info[i].resize(6);\r\n        float x = info[i][0];\r\n        float y = info[i][1];\r\n        float w = info[i][2];\r\n        float h = info[i][3];\r\n        info[i][0] = x - w \/ 2.0;\r\n        info[i][1] = y - h \/ 2.0;\r\n        info[i][2] = x + w \/ 2.0;\r\n        info[i][3] = y + h \/ 2.0;\r\n    }\r\n}\r\n\r\nvector&lt;vector&lt;vector&lt;float&gt;&gt;&gt; split_info(vector&lt;vector&lt;float&gt;&gt; &amp;info)\r\n{\r\n    vector&lt;vector&lt;vector&lt;float&gt;&gt;&gt; info_split;\r\n    vector&lt;int&gt; class_id;\r\n    for (auto i = 0; i &lt; info.size(); i++)\r\n    {\r\n        if (std::find(class_id.begin(), class_id.end(), (int)info[i][5]) == class_id.end())\r\n        {\r\n            class_id.push_back((int)info[i][5]);\r\n            vector&lt;vector&lt;float&gt;&gt; info_;\r\n            info_split.push_back(info_);\r\n        }\r\n        info_split[std::find(class_id.begin(), class_id.end(), (int)info[i][5]) - class_id.begin()].push_back(info[i]);\r\n    }\r\n    return info_split;\r\n}\r\n\r\nvoid nms(vector&lt;vector&lt;float&gt;&gt; &amp;info, float iou = 0.4)\r\n{\r\n    int counter = 0;\r\n    vector&lt;vector&lt;float&gt;&gt; return_info;\r\n    while (counter &lt; info.size())\r\n    {\r\n        return_info.clear();\r\n        float x1 = 0;\r\n        float x2 = 0;\r\n        float y1 = 0;\r\n        float y2 = 0;\r\n        std::sort(info.begin(), info.end(), [](vector&lt;float&gt; p1, vector&lt;float&gt; p2)\r\n                  { return p1[4] &gt; p2[4]; });\r\n        for (auto i = 0; i &lt; info.size(); i++)\r\n        {\r\n            if (i &lt; counter)\r\n            {\r\n                return_info.push_back(info[i]);\r\n                continue;\r\n            }\r\n            if (i == counter)\r\n            {\r\n                x1 = info[i][0];\r\n                y1 = info[i][1];\r\n                x2 = info[i][2];\r\n                y2 = info[i][3];\r\n                return_info.push_back(info[i]);\r\n                continue;\r\n            }\r\n            if (info[i][0] &gt; x2 or info[i][2] &lt; x1 or info[i][1] &gt; y2 or info[i][3] &lt; y1)\r\n            {\r\n                return_info.push_back(info[i]);\r\n            }\r\n            else\r\n            {\r\n                float over_x1 = std::max(x1, info[i][0]);\r\n                float over_y1 = std::max(y1, info[i][1]);\r\n                float over_x2 = std::min(x2, info[i][2]);\r\n                float over_y2 = std::min(y2, info[i][3]);\r\n                float s_over = (over_x2 - over_x1) * (over_y2 - over_y1);\r\n                float s_total = (x2 - x1) * (y2 - y1) + (info[i][0] - info[i][2]) * (info[i][1] - info[i][3]) - s_over;\r\n                if (s_over \/ s_total &lt; iou)\r\n                {\r\n                    return_info.push_back(info[i]);\r\n                }\r\n            }\r\n        }\r\n        info = return_info;\r\n        counter += 1;\r\n    }\r\n}\r\n\r\nvoid print_info(const vector&lt;vector&lt;float&gt;&gt; &amp;info)\r\n{\r\n    for (auto i = 0; i &lt; info.size(); i++)\r\n    {\r\n        for (auto j = 0; j &lt; info[i].size(); j++)\r\n        {\r\n            cout &lt;&lt; info[i][j] &lt;&lt; \" \";\r\n        }\r\n        cout &lt;&lt; endl;\r\n    }\r\n}\r\n\r\nvoid draw_box(Mat &amp;img, const vector&lt;vector&lt;float&gt;&gt; &amp;info)\r\n{\r\n    for (int i = 0; i &lt; info.size(); i++)\r\n    {\r\n        cv::rectangle(img, cv::Point(info[i][0], info[i][1]), cv::Point(info[i][2], info[i][3]), cv::Scalar(0, 255, 0));\r\n        string label;\r\n        label += class_name[info[i][5]];\r\n        label += \"  \";\r\n        std::stringstream oss;\r\n        oss &lt;&lt; info[i][4];\r\n        label += oss.str();\r\n        cv::putText(img, label, cv::Point(info[i][0], info[i][1]), 1, 2, cv::Scalar(0, 255, 0), 2);\r\n\r\n    }\r\n}\r\n\r\nint main()\r\n{\r\n    cv::dnn::Net net = cv::dnn::readNetFromONNX(\"best.onnx\");\r\n    Mat img = letterbox(cv::imread(\"fox.jpg\"), 640);\r\n    cv::resize(img, img, cv::Size(640, 640));\r\n    bool result1 = cv::imwrite(\"test.png\", img);\r\n    Mat blob = cv::dnn::blobFromImage(img, 1.0 \/ 255.0, cv::Size(640, 640), cv::Scalar(), true);\r\n    net.setInput(blob);\r\n    vector&lt;Mat&gt; netoutput;\r\n    vector&lt;string&gt; out_name = {\"output\"};\r\n    net.forward(netoutput, out_name);\r\n    Mat result = netoutput[0];\r\n    print_result(result);\r\n    vector&lt;vector&lt;float&gt;&gt; info = get_info(result);\r\n    info_simplify(info);\r\n    vector&lt;vector&lt;vector&lt;float&gt;&gt;&gt; info_split = split_info(info);\r\n    \/\/ cout &lt;&lt; \" split info\" &lt;&lt; endl;\r\n    \/\/ print_info(info_split[0]);\r\n    \/\/ cout &lt;&lt; info.size() &lt;&lt; \" \" &lt;&lt; info[0].size() &lt;&lt; endl;\r\n\r\n    for(auto i=0; i &lt; info_split.size(); i++)\r\n    {\r\n        nms(info_split[i]);\r\n        draw_box(img, info_split[i]);\r\n    }\r\n\r\n    \/\/ nms(info_split[0]);\r\n    \/\/ cout &lt;&lt; \"nms\" &lt;&lt; endl;\r\n    \/\/ print_info(info_split[0]);\r\n    \/\/ draw_box(img, info_split[0]);\r\n    cv::imshow(\"test\", img);\r\n    cv::waitKey(0);\r\n    return 0;\r\n}\r\n<\/pre>\n<p><\/code><\/pre>\n\t\t\t<\/div>\n        <\/div>\n<p>&nbsp;<\/p>\n<h1>10. \u90e8\u7f72<\/h1>\n<blockquote><p>\u5f85\u677f\u5b50ready<\/p><\/blockquote>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-4602 size-full\" src=\"https:\/\/10ccc.cc\/wp-content\/uploads\/2026\/01\/1767411942-tumblr_mr28wn4rLk1qe6mn3o1_400.gif\" alt=\"Gone with the flow\" width=\"323\" height=\"500\" \/><\/p>\n<p style=\"text-align: center;\"><strong>Gone with the flow<\/strong><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u524d\u6bb5\u65f6\u95f4\u62ff\u5230\u4e86\u4e00\u5757\u6b63\u70b9\u539f\u5b50\u7684 i.mx6ull \u677f\u5b50\uff0cbilibili \u4e00\u4e0b\u540e\u53d1\u73b0\u53ef\u4ee5\u8fd0\u884c linux\u3002 \u90a3\u80fd\u4e0d\u80fd\u52a0\u4e2a\u6444\u50cf\u5934\u505a\u4e2a\u76d1 &#8230;<\/p>\n","protected":false},"author":1,"featured_media":4567,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"emotion":"","emotion_color":"","title_style":"","license":"","footnotes":""},"categories":[123,82,104],"tags":[81,165,91,181,182,183,89,108,107,106],"class_list":["post-4674","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-python","category-82","category-note","tag-ai","tag-cpp","tag-mac","tag-opencv","tag-pytorch","tag-windows","tag-89","tag-108","tag-107","tag-106"],"_links":{"self":[{"href":"https:\/\/10ccc.cc\/index.php?rest_route=\/wp\/v2\/posts\/4674","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/10ccc.cc\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/10ccc.cc\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/10ccc.cc\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/10ccc.cc\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=4674"}],"version-history":[{"count":44,"href":"https:\/\/10ccc.cc\/index.php?rest_route=\/wp\/v2\/posts\/4674\/revisions"}],"predecessor-version":[{"id":4824,"href":"https:\/\/10ccc.cc\/index.php?rest_route=\/wp\/v2\/posts\/4674\/revisions\/4824"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/10ccc.cc\/index.php?rest_route=\/wp\/v2\/media\/4567"}],"wp:attachment":[{"href":"https:\/\/10ccc.cc\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=4674"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/10ccc.cc\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=4674"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/10ccc.cc\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=4674"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}