{"id":448,"date":"2025-03-16T10:20:45","date_gmt":"2025-03-16T02:20:45","guid":{"rendered":"https:\/\/www.bertzzz-horizon.xyz\/?p=448"},"modified":"2025-03-17T19:07:45","modified_gmt":"2025-03-17T11:07:45","slug":"u-net-image-segmentation","status":"publish","type":"post","link":"https:\/\/www.bertzzz-horizon.xyz\/?p=448","title":{"rendered":"U-Net Image Segmentation"},"content":{"rendered":"\n<p><\/p>\n\n\n\n<p>\u672c\u6587\u7528\u5230\u7684\u4ee3\u7801\u6765\u81ea<\/p>\n\n\n\n<p><a href=\"https:\/\/github.com\/jvanvugt\/pytorch-unet\">https:\/\/github.com\/jvanvugt\/pytorch-unet<\/a><\/p>\n\n\n\n<p>\u53c2\u8003\u4e86\u8bba\u6587<\/p>\n\n\n\n<p><em><strong><a href=\"https:\/\/arxiv.org\/abs\/1505.04597\">Ronneberger, O., Fischer, P., &amp; Brox, T. (n.d.). U-Net: Convolutional Networks for Biomedical Image Segmentation.&nbsp;ArXiv Preprint,&nbsp;arXiv:1505.04597.<\/a><\/strong><\/em><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<figure class=\"wp-block-image aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"693\" src=\"https:\/\/www.bertzzz-horizon.xyz\/wordpress\/wp-content\/uploads\/2025\/03\/image-1024x693.png\" alt=\"\" class=\"wp-image-450\" srcset=\"https:\/\/www.bertzzz-horizon.xyz\/wordpress\/wp-content\/uploads\/2025\/03\/image-1024x693.png 1024w, https:\/\/www.bertzzz-horizon.xyz\/wordpress\/wp-content\/uploads\/2025\/03\/image-300x203.png 300w, https:\/\/www.bertzzz-horizon.xyz\/wordpress\/wp-content\/uploads\/2025\/03\/image-768x520.png 768w, https:\/\/www.bertzzz-horizon.xyz\/wordpress\/wp-content\/uploads\/2025\/03\/image-1536x1040.png 1536w, https:\/\/www.bertzzz-horizon.xyz\/wordpress\/wp-content\/uploads\/2025\/03\/image.png 1577w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\">U-net architecture (example for 32&#215;32 pixels in the lowest resolution). Each blue box corresponds to a multi-channel feature map. The number of channels is denoted on top of the box. The x-y-size is provided at the lower left edge of the box. White boxes represent copied feature maps. The arrows denote the different operations.<\/figcaption><\/figure>\n\n\n\n<p>U-Net \u7684\u7ed3\u6784\u975e\u5e38\u50cf\u4e00\u4e2aU\u5b57\uff0c\u8fd9\u4e5f\u662f\u5176\u540d\u5b57\u6765\u6e90\u3002<\/p>\n\n\n\n<p>\u9996\u5148\u6211\u4eec\u6765\u770b<strong><em>UNetConvBlock<\/em><\/strong>\u7c7b\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"python\" class=\"language-python\">class UNetConvBlock(nn.Module):\n    def __init__(self, in_size, out_size, padding, batch_norm):\n        super(UNetConvBlock, self).__init__()\n        block = []\n\n        block.append(nn.Conv2d(in_size, out_size, kernel_size=3, padding=int(padding)))\n        block.append(nn.ReLU())\n        if batch_norm:\n            block.append(nn.BatchNorm2d(out_size))\n\n        block.append(nn.Conv2d(out_size, out_size, kernel_size=3, padding=int(padding)))\n        block.append(nn.ReLU())\n        if batch_norm:\n            block.append(nn.BatchNorm2d(out_size))\n\n        self.block = nn.Sequential(*block)\n\n    def forward(self, x):\n        out = self.block(x)\n        return out<\/code><\/pre>\n\n\n\n<p>\u8fd9\u91cc\u6ca1\u4ec0\u4e48\u597d\u8bf4\u7684\uff0c\u5b9a\u4e49\u4e86UNetConvBlock\u5757\u4ee5\u53caforward\u51fd\u6570\u3002\u5982\u679cbatch_norm\u4e3aTrue\u7684\u8bdd\u8fd8\u4f1a\u52a0\u5165\u6279\u91cf\u5316\u5f52\u4e00\u5c42\u3002\u4f7f\u7528\u4e24\u5c42<img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.bertzzz-horizon.xyz\/wordpress\/wp-content\/ql-cache\/quicklatex.com-fc870a936f7b8e42a89ae4ee7e317455_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#51;&#92;&#44;&#92;&#116;&#105;&#109;&#101;&#115;&#92;&#44;&#51;\" title=\"Rendered by QuickLaTeX.com\" height=\"12\" width=\"45\" style=\"vertical-align: 0px;\"\/>\u5377\u79ef\u6709\u5229\u4e8e\u9010\u6b65\u589e\u52a0\u975e\u7ebf\u6027\uff0c\u8ba9\u7f51\u7edc\u5b66\u4e60\u66f4\u52a0\u590d\u6742\u7684\u7279\u5f81\u3002<\/p>\n\n\n\n<p>\u63a5\u4e0b\u6765\u662f<strong><em>UNetUpBlock<\/em><\/strong>\u7c7b\uff0c\u5176\u5b9a\u4e49\u4e86\u4e0a\u91c7\u6837\u5c42\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"python\" class=\"language-python\">class UNetUpBlock(nn.Module):\n    def __init__(self, in_size, out_size, up_mode, padding, batch_norm):\n        super(UNetUpBlock, self).__init__()\n        if up_mode == 'upconv':\n            self.up = nn.ConvTranspose2d(in_size, out_size, kernel_size=2, stride=2)\n        elif up_mode == 'upsample':\n            self.up = nn.Sequential(\n                nn.Upsample(mode='bilinear', scale_factor=2),\n                nn.Conv2d(in_size, out_size, kernel_size=1),\n            )\n\n        self.conv_block = UNetConvBlock(in_size, out_size, padding, batch_norm)\n\n    def center_crop(self, layer, target_size):\n        _, _, layer_height, layer_width = layer.size()\n        diff_y = (layer_height - target_size[0]) \/\/ 2\n        diff_x = (layer_width - target_size[1]) \/\/ 2\n        return layer[\n            :, :, diff_y : (diff_y + target_size[0]), diff_x : (diff_x + target_size[1])\n        ]\n\n    def forward(self, x, bridge):\n        up = self.up(x)\n        crop1 = self.center_crop(bridge, up.shape[2:])\n        out = torch.cat([up, crop1], 1)\n        out = self.conv_block(out)\n\n        return out<\/code><\/pre>\n\n\n\n<p>\u53ef\u4ee5\u770b\u5230\u5176\u4e2d\u5206\u4e86\u53cd\u5377\u79ef<em><sub>upconv<\/sub><\/em>\u4e0e\u53cc\u7ebf\u6027\u63d2\u503c<em><sub>upsample<\/sub><\/em>\u3002\u5176\u4e2d\u7684<br><strong><em><code>out = torch.cat([up, crop1], 1)<\/code><\/em><\/strong><br>\u5c06\u4e0a\u91c7\u6837\u540e\u7684\u7279\u5f81\u56fe\u4e0e\u8df3\u8dc3\u8fde\u63a5\u7684\u7279\u5f81\u56fe\u62fc\u63a5\u3002<\/p>\n\n\n\n<p>\u6574\u4e2a\u7684U-Net\u7f51\u7edc\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"python\" class=\"language-python\">class UNet(nn.Module):\n    def __init__(\n        self,\n        in_channels=1,\n        n_classes=2,\n        depth=5,\n        wf=6,\n        padding=False,\n        batch_norm=False,\n        up_mode='upconv',\n    ):\n        super(UNet, self).__init__()\n        assert up_mode in ('upconv', 'upsample')\n        self.padding = padding\n        self.depth = depth\n        prev_channels = in_channels\n        self.down_path = nn.ModuleList()\n        for i in range(depth):\n            self.down_path.append(\n                UNetConvBlock(prev_channels, 2 ** (wf + i), padding, batch_norm)\n            )\n            prev_channels = 2 ** (wf + i)\n\n        self.up_path = nn.ModuleList()\n        for i in reversed(range(depth - 1)):\n            self.up_path.append(\n                UNetUpBlock(prev_channels, 2 ** (wf + i), up_mode, padding, batch_norm)\n            )\n            prev_channels = 2 ** (wf + i)\n\n        self.last = nn.Conv2d(prev_channels, n_classes, kernel_size=1)\n\n    def forward(self, x):\n        blocks = []\n        for i, down in enumerate(self.down_path):\n            x = down(x)\n            if i != len(self.down_path) - 1:\n                blocks.append(x)\n                x = F.max_pool2d(x, 2)\n\n        for i, up in enumerate(self.up_path):\n            x = up(x, blocks[-i - 1])\n\n        return self.last(x)<\/code><\/pre>\n\n\n\n<p>\u9996\u5148\u5173\u6ce8\u4e0b\u91c7\u6837\u8def\u5f84<strong><em>self.down_path<\/em><\/strong>\uff0c\u4f7f\u7528<em>depth<\/em>\u63a7\u5236U-Net\u7684\u5c42\u6570\uff0c\u7528<em>wf<\/em><sub>(width factor)<\/sub>\u63a7\u5236\u9996\u5c42\u901a\u9053\u6570\u4e3a2 ** wf\uff0c\u4e14\u540e\u7eed\u6bcf\u4e00\u5c42\u901a\u9053\u90fd\u52a0\u500d\u3002\u7528<em>UNetConvBlock<\/em>\u6765\u6784\u5efa\u6bcf\u4e00\u5c42\u7684\u5377\u79ef\u64cd\u4f5c\u3002<\/p>\n\n\n\n<p>\u7136\u540e\u662f\u4f7f\u7528<strong><em>F.max_pool2d<\/em><\/strong>\u8fdb\u884c<img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.bertzzz-horizon.xyz\/wordpress\/wp-content\/ql-cache\/quicklatex.com-752d69a411601042dd93b75f243bbcdb_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#50;&#92;&#44;&#92;&#116;&#105;&#109;&#101;&#115;&#92;&#44;&#50;\" title=\"Rendered by QuickLaTeX.com\" height=\"12\" width=\"44\" style=\"vertical-align: 0px;\"\/>\u6700\u5927\u6c60\u5316\uff0c\u8ba9\u7279\u5f81\u56fe\u7f29\u5c0f\u4e00\u534a\uff0c\u53ef\u4ee5\u51cf\u5c11\u8ba1\u7b97\u91cf\uff0c\u4e5f\u80fd\u7ed9\u4e88\u7f51\u7edc\u66f4\u5927\u7684\u611f\u53d7\u91ce\u3002\u540c\u65f6\u5176\u4e2d<em>blocks.append(x)<\/em>\u4e5f\u5efa\u7acb\u4e86\u8df3\u8dc3\u8fde\u63a5\u6240\u9700\u8981\u7684\u7279\u5f81\u56fe\u3002<\/p>\n\n\n\n<p>\u4e0a\u91c7\u6837\u8def\u5f84<strong><em>self.up_path<\/em><\/strong>\uff0c\u901a\u8fc7<em>UNetUpBlock<\/em>\u9010\u6b65\u6062\u590d\u56fe\u50cf\u7684\u7a7a\u95f4\u5206\u8fa8\u7387\uff0c<em>reversed()<\/em>\u786e\u4fdd\u8def\u5f84\u6b63\u786e\u3002<\/p>\n\n\n\n<p>\u5728\u6700\u7ec8\u5206\u7c7b\u5c42\uff0c<br><strong><em><code>self.last = nn.Conv2d(prev_channels, n_classes, kernel_size=1)<\/code><\/em><\/strong><br><em>kernel_size = 1<\/em>\u8fdb\u884c\u9010\u50cf\u7d20\u5206\u7c7b\uff0c\u6700\u540e\u8f93\u51fa\u5f62\u72b6<img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.bertzzz-horizon.xyz\/wordpress\/wp-content\/ql-cache\/quicklatex.com-deb50fd79d0f246e1e36c1a84e7c38ca_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#40;&#78;&#44;&#92;&#44;&#67;&#95;&#123;&#111;&#117;&#116;&#125;&#44;&#92;&#44;&#72;&#95;&#123;&#111;&#117;&#116;&#125;&#44;&#92;&#44;&#87;&#95;&#123;&#111;&#117;&#116;&#125;&#41;\" title=\"Rendered by QuickLaTeX.com\" height=\"19\" width=\"165\" style=\"vertical-align: -5px;\"\/>\u3002<\/p>\n\n\n\n<p>U-Net\u8fd8\u6709\u4e00\u4e2a\u6838\u5fc3\u5c31\u662f\u8df3\u8dc3\u8fde\u63a5\u3002\u5176\u6838\u5fc3\u601d\u60f3\u662f\uff1a<\/p>\n\n\n\n<blockquote class=\"wp-block-quote\">\n<p>\u5728\u524d\u5411\u4f20\u64ad\u65f6\uff0c\u5c06\u7f16\u7801\u5668\uff08\u4e0b\u91c7\u6837\uff09\u67d0\u5c42\u7684\u8f93\u51fa\u76f4\u63a5\u4f20\u8f93\u5230\u89e3\u7801\u5668\uff08\u4e0a\u91c7\u6837\uff09\u76f8\u5e94\u5c42\uff0c\u5e76\u8fdb\u884c\u7279\u5f81\u878d\u5408\u3002<\/p>\n<\/blockquote>\n\n\n\n<p>\u8df3\u8dc3\u8fde\u63a5\u7684\u6838\u5fc3\u65b9\u5f0f\u5982\u4e0b\uff1a<\/p>\n\n\n\n<p class=\"has-text-align-justify\">\u5728\u4e0b\u91c7\u6837\u8def\u5f84\u4e2d\uff0c\u6bcf\u4e00\u6b21\u6211\u4eec\u90fd\u4f1a\u4fdd\u7559\u4e2d\u95f4\u7279\u5f81\u56fe\uff08\u5982\u679c<code>batch_norm=True<\/code>\uff0c\u8fd8\u4f1a\u5305\u542b\u6279\u91cf\u5f52\u4e00\u5316\uff09<\/p>\n\n\n\n<p><p class=\"ql-center-displayed-equation\" style=\"line-height: 19px;\"><span class=\"ql-right-eqno\"> &nbsp; <\/span><span class=\"ql-left-eqno\"> &nbsp; <\/span><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.bertzzz-horizon.xyz\/wordpress\/wp-content\/ql-cache\/quicklatex.com-d7b3df58e0783180bde0f9957941666b_l3.png\" height=\"19\" width=\"187\" class=\"ql-img-displayed-equation quicklatex-auto-format\" alt=\"&#92;&#91;&#70;&#95;&#105;&#92;&#44;&#61;&#92;&#44;&#67;&#111;&#110;&#118;&#66;&#108;&#111;&#99;&#107;&#95;&#105;&#40;&#70;&#95;&#123;&#105;&#45;&#49;&#125;&#41;&#92;&#93;\" title=\"Rendered by QuickLaTeX.com\"\/><\/p><\/p>\n\n\n\n<p>\u7136\u540e\u7528\u6700\u5927\u6c60\u5316\u8fdb\u884c\u4e0b\u91c7\u6837\u8ba9\u7279\u5f81\u56fe\u5c3a\u5bf8\u51cf\u534a<\/p>\n\n\n\n<p><p class=\"ql-center-displayed-equation\" style=\"line-height: 21px;\"><span class=\"ql-right-eqno\"> &nbsp; <\/span><span class=\"ql-left-eqno\"> &nbsp; <\/span><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.bertzzz-horizon.xyz\/wordpress\/wp-content\/ql-cache\/quicklatex.com-249a88a75a33007965e8c0134d589bca_l3.png\" height=\"21\" width=\"182\" class=\"ql-img-displayed-equation quicklatex-auto-format\" alt=\"&#92;&#91;&#123;&#70;&#95;&#105;&#125;&#94;&#123;&#92;&#112;&#114;&#105;&#109;&#101;&#125;&#92;&#44;&#61;&#92;&#44;&#77;&#97;&#120;&#80;&#111;&#111;&#108;&#105;&#110;&#103;&#40;&#70;&#95;&#105;&#41;&#92;&#93;\" title=\"Rendered by QuickLaTeX.com\"\/><\/p><\/p>\n\n\n\n<p>\u6700\u540e\u5b58\u50a8<img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.bertzzz-horizon.xyz\/wordpress\/wp-content\/ql-cache\/quicklatex.com-b89a6b18e448d9846311a621372b228a_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#70;&#95;&#105;\" title=\"Rendered by QuickLaTeX.com\" height=\"15\" width=\"16\" style=\"vertical-align: -3px;\"\/>\u4f9b\u8df3\u8dc3\u8fde\u63a5\u4f7f\u7528<\/p>\n\n\n\n<p><p class=\"ql-center-displayed-equation\" style=\"line-height: 14px;\"><span class=\"ql-right-eqno\"> &nbsp; <\/span><span class=\"ql-left-eqno\"> &nbsp; <\/span><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.bertzzz-horizon.xyz\/wordpress\/wp-content\/ql-cache\/quicklatex.com-f2d48abaf44910e1a083e283c97180e9_l3.png\" height=\"14\" width=\"62\" class=\"ql-img-displayed-equation quicklatex-auto-format\" alt=\"&#92;&#91;&#83;&#95;&#105;&#92;&#44;&#61;&#92;&#44;&#70;&#95;&#105;&#92;&#93;\" title=\"Rendered by QuickLaTeX.com\"\/><\/p><\/p>\n\n\n\n<p>\u4e4b\u540e\u5728\u89e3\u7801\u8def\u5f84\u4e2d\uff0c\u9700\u8981\u5bf9\u7279\u5f81\u56fe\u8fdb\u884c\u4e0a\u91c7\u6837\uff0c\u4f7f\u5176\u6062\u590d\u5230\u539f\u59cb\u5206\u8fa8\u7387<\/p>\n\n\n\n<p><p class=\"ql-center-displayed-equation\" style=\"line-height: 22px;\"><span class=\"ql-right-eqno\"> &nbsp; <\/span><span class=\"ql-left-eqno\"> &nbsp; <\/span><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.bertzzz-horizon.xyz\/wordpress\/wp-content\/ql-cache\/quicklatex.com-ecf66bc81738029caf512d2b60db6542_l3.png\" height=\"22\" width=\"129\" class=\"ql-img-displayed-equation quicklatex-auto-format\" alt=\"&#92;&#91;&#123;&#70;&#95;&#105;&#125;&#94;&#123;&#85;&#125;&#92;&#44;&#61;&#92;&#44;&#85;&#112;&#40;&#70;&#95;&#123;&#105;&#43;&#49;&#125;&#41;&#92;&#93;\" title=\"Rendered by QuickLaTeX.com\"\/><\/p><\/p>\n\n\n\n<p>\u63d0\u53d6\u51fa\u4e4b\u524d\u7684<img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.bertzzz-horizon.xyz\/wordpress\/wp-content\/ql-cache\/quicklatex.com-8f5464d0cc3e4b8b84f8f8534f966ca8_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#83;&#95;&#105;\" title=\"Rendered by QuickLaTeX.com\" height=\"15\" width=\"16\" style=\"vertical-align: -3px;\"\/>\u8fdb\u884c\u62fc\u63a5<\/p>\n\n\n\n<p><p class=\"ql-center-displayed-equation\" style=\"line-height: 22px;\"><span class=\"ql-right-eqno\"> &nbsp; <\/span><span class=\"ql-left-eqno\"> &nbsp; <\/span><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.bertzzz-horizon.xyz\/wordpress\/wp-content\/ql-cache\/quicklatex.com-1ad42ff0e842e5173a24094ee3b09e42_l3.png\" height=\"22\" width=\"297\" class=\"ql-img-displayed-equation quicklatex-auto-format\" alt=\"&#92;&#91;&#123;&#70;&#95;&#105;&#125;&#94;&#123;&#77;&#125;&#92;&#44;&#61;&#92;&#44;&#67;&#111;&#110;&#99;&#97;&#116;&#40;&#123;&#70;&#95;&#105;&#125;&#94;&#123;&#85;&#125;&#44;&#92;&#44;&#67;&#101;&#110;&#116;&#101;&#114;&#67;&#114;&#111;&#112;&#40;&#83;&#95;&#105;&#41;&#41;&#92;&#93;\" title=\"Rendered by QuickLaTeX.com\"\/><\/p><\/p>\n\n\n\n<p>\u5bf9\u4e8e\u62fc\u63a5\u540e\u7684\u7279\u5f81\u56fe\u8981\u8fdb\u884c\u5377\u79ef\u878d\u5408\u64cd\u4f5c\uff08<img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.bertzzz-horizon.xyz\/wordpress\/wp-content\/ql-cache\/quicklatex.com-f34f74d98915e33f37a086f8cbfb996a_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#67;\" title=\"Rendered by QuickLaTeX.com\" height=\"12\" width=\"14\" style=\"vertical-align: 0px;\"\/>\u662f\u4e24\u6b21<img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.bertzzz-horizon.xyz\/wordpress\/wp-content\/ql-cache\/quicklatex.com-fc870a936f7b8e42a89ae4ee7e317455_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#51;&#92;&#44;&#92;&#116;&#105;&#109;&#101;&#115;&#92;&#44;&#51;\" title=\"Rendered by QuickLaTeX.com\" height=\"12\" width=\"45\" style=\"vertical-align: 0px;\"\/>\u5377\u79ef\uff09<\/p>\n\n\n\n<p><p class=\"ql-center-displayed-equation\" style=\"line-height: 22px;\"><span class=\"ql-right-eqno\"> &nbsp; <\/span><span class=\"ql-left-eqno\"> &nbsp; <\/span><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.bertzzz-horizon.xyz\/wordpress\/wp-content\/ql-cache\/quicklatex.com-1e965974ad1f2e5c5b2a6399f7149403_l3.png\" height=\"22\" width=\"126\" class=\"ql-img-displayed-equation quicklatex-auto-format\" alt=\"&#92;&#91;&#123;&#70;&#95;&#105;&#125;&#94;&#123;&#111;&#117;&#116;&#125;&#92;&#44;&#61;&#92;&#44;&#67;&#40;&#123;&#70;&#95;&#105;&#125;&#94;&#123;&#77;&#125;&#41;&#92;&#93;\" title=\"Rendered by QuickLaTeX.com\"\/><\/p><\/p>\n\n\n\n<p>\u7136\u540e\u5728\u89e3\u7801\u8def\u5f84\u5b8c\u6210\u540e\u518d\u56de\u5230\u4e0a\u9762\u63d0\u5230\u7684\u6700\u7ec8\u5206\u7c7b\u5c42\uff0c\u7528<img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.bertzzz-horizon.xyz\/wordpress\/wp-content\/ql-cache\/quicklatex.com-a7bf1e7e0a438f806f96b54eca6b7f09_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#49;&#92;&#44;&#92;&#116;&#105;&#109;&#101;&#115;&#92;&#44;&#49;\" title=\"Rendered by QuickLaTeX.com\" height=\"12\" width=\"43\" style=\"vertical-align: 0px;\"\/>\u5377\u79ef\u5c42\u6620\u5c04\u5230\u7c7b\u522b\u6570\u3002<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u672c\u6587\u7528\u5230\u7684\u4ee3\u7801\u6765\u81ea https:\/\/github.com\/jvanvugt\/pytorch-unet \u53c2\u8003\u4e86\u8bba [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":459,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_jetpack_memberships_contains_paid_content":false},"categories":[9,11],"tags":[],"jetpack_sharing_enabled":true,"jetpack_featured_media_url":"https:\/\/www.bertzzz-horizon.xyz\/wordpress\/wp-content\/uploads\/2025\/03\/ma.png","_links":{"self":[{"href":"https:\/\/www.bertzzz-horizon.xyz\/index.php?rest_route=\/wp\/v2\/posts\/448"}],"collection":[{"href":"https:\/\/www.bertzzz-horizon.xyz\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.bertzzz-horizon.xyz\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.bertzzz-horizon.xyz\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.bertzzz-horizon.xyz\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=448"}],"version-history":[{"count":17,"href":"https:\/\/www.bertzzz-horizon.xyz\/index.php?rest_route=\/wp\/v2\/posts\/448\/revisions"}],"predecessor-version":[{"id":468,"href":"https:\/\/www.bertzzz-horizon.xyz\/index.php?rest_route=\/wp\/v2\/posts\/448\/revisions\/468"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.bertzzz-horizon.xyz\/index.php?rest_route=\/wp\/v2\/media\/459"}],"wp:attachment":[{"href":"https:\/\/www.bertzzz-horizon.xyz\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=448"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.bertzzz-horizon.xyz\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=448"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.bertzzz-horizon.xyz\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=448"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}