-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.html
249 lines (231 loc) · 28.7 KB
/
index.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
<!DOCTYPE html><html class="hide-aside" lang="zh-CN" data-theme="light"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no"><title>文羊羽</title><meta name="author" content="文羊羽"><meta name="copyright" content="文羊羽"><meta name="format-detection" content="telephone=no"><meta name="theme-color" content="#ffffff"><meta property="og:type" content="website">
<meta property="og:title" content="文羊羽">
<meta property="og:url" content="https://whut-zhangwx.github.io/index.html">
<meta property="og:site_name" content="文羊羽">
<meta property="og:locale" content="zh_CN">
<meta property="og:image" content="https://whut-zhangwx.github.io/img/avatar.jpg">
<meta property="article:author" content="文羊羽">
<meta name="twitter:card" content="summary">
<meta name="twitter:image" content="https://whut-zhangwx.github.io/img/avatar.jpg"><link rel="shortcut icon" href="/img/avatar.jpg"><link rel="canonical" href="https://whut-zhangwx.github.io/"><link rel="preconnect" href="//cdn.jsdelivr.net"/><link rel="preconnect" href="//busuanzi.ibruce.info"/><link rel="stylesheet" href="/css/index.css"><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@fortawesome/fontawesome-free/css/all.min.css" media="print" onload="this.media='all'"><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@fancyapps/ui/dist/fancybox.min.css" media="print" onload="this.media='all'"><script>const GLOBAL_CONFIG = {
root: '/',
algolia: undefined,
localSearch: {"path":"/search.xml","preload":true,"languages":{"hits_empty":"找不到您查询的内容:${query}"}},
translate: undefined,
noticeOutdate: undefined,
highlight: {"plugin":"highlighjs","highlightCopy":true,"highlightLang":true,"highlightHeightLimit":false},
copy: {
success: '复制成功',
error: '复制错误',
noSupport: '浏览器不支持'
},
relativeDate: {
homepage: false,
post: false
},
runtime: '天',
date_suffix: {
just: '刚刚',
min: '分钟前',
hour: '小时前',
day: '天前',
month: '个月前'
},
copyright: undefined,
lightbox: 'fancybox',
Snackbar: undefined,
source: {
justifiedGallery: {
js: 'https://cdn.jsdelivr.net/npm/flickr-justified-gallery/dist/fjGallery.min.js',
css: 'https://cdn.jsdelivr.net/npm/flickr-justified-gallery/dist/fjGallery.min.css'
}
},
isPhotoFigcaption: false,
islazyload: false,
isAnchor: false
}</script><script id="config-diff">var GLOBAL_CONFIG_SITE = {
title: '文羊羽',
isPost: false,
isHome: true,
isHighlightShrink: false,
isToc: false,
postUpdate: '2025-02-04 15:39:04'
}</script><noscript><style type="text/css">
#nav {
opacity: 1
}
.justified-gallery img {
opacity: 1
}
#recent-posts time,
#post-meta time {
display: inline !important
}
</style></noscript><script>(win=>{
win.saveToLocal = {
set: function setWithExpiry(key, value, ttl) {
if (ttl === 0) return
const now = new Date()
const expiryDay = ttl * 86400000
const item = {
value: value,
expiry: now.getTime() + expiryDay,
}
localStorage.setItem(key, JSON.stringify(item))
},
get: function getWithExpiry(key) {
const itemStr = localStorage.getItem(key)
if (!itemStr) {
return undefined
}
const item = JSON.parse(itemStr)
const now = new Date()
if (now.getTime() > item.expiry) {
localStorage.removeItem(key)
return undefined
}
return item.value
}
}
win.getScript = url => new Promise((resolve, reject) => {
const script = document.createElement('script')
script.src = url
script.async = true
script.onerror = reject
script.onload = script.onreadystatechange = function() {
const loadState = this.readyState
if (loadState && loadState !== 'loaded' && loadState !== 'complete') return
script.onload = script.onreadystatechange = null
resolve()
}
document.head.appendChild(script)
})
win.activateDarkMode = function () {
document.documentElement.setAttribute('data-theme', 'dark')
if (document.querySelector('meta[name="theme-color"]') !== null) {
document.querySelector('meta[name="theme-color"]').setAttribute('content', '#0d0d0d')
}
}
win.activateLightMode = function () {
document.documentElement.setAttribute('data-theme', 'light')
if (document.querySelector('meta[name="theme-color"]') !== null) {
document.querySelector('meta[name="theme-color"]').setAttribute('content', '#ffffff')
}
}
const t = saveToLocal.get('theme')
if (t === 'dark') activateDarkMode()
else if (t === 'light') activateLightMode()
const asideStatus = saveToLocal.get('aside-status')
if (asideStatus !== undefined) {
if (asideStatus === 'hide') {
document.documentElement.classList.add('hide-aside')
} else {
document.documentElement.classList.remove('hide-aside')
}
}
const detectApple = () => {
if(/iPad|iPhone|iPod|Macintosh/.test(navigator.userAgent)){
document.documentElement.classList.add('apple')
}
}
detectApple()
})(window)</script><meta name="generator" content="Hexo 6.3.0"><link href="https://cdn.bootcss.com/KaTeX/0.11.1/katex.min.css" rel="stylesheet" /></head><body><div id="sidebar"><div id="menu-mask"></div><div id="sidebar-menus"><div class="avatar-img is-center"><img src="/img/avatar.jpg" onerror="onerror=null;src='/img/friend_404.gif'" alt="avatar"/></div><div class="sidebar-site-data site-data is-center"><a href="/archives/"><div class="headline">文章</div><div class="length-num">95</div></a><a href="/tags/"><div class="headline">标签</div><div class="length-num">118</div></a><a href="/categories/"><div class="headline">分类</div><div class="length-num">37</div></a></div><hr/><div class="menus_items"><div class="menus_item"><a class="site-page" href="/"><i class="fa-fw fas fa-home"></i><span> 首页</span></a></div><div class="menus_item"><a class="site-page" href="/archives/"><i class="fa-fw fas fa-archive"></i><span> 归档</span></a></div><div class="menus_item"><a class="site-page" href="/tags/"><i class="fa-fw fas fa-tags"></i><span> 标签</span></a></div><div class="menus_item"><a class="site-page" href="/categories/"><i class="fa-fw fas fa-folder-open"></i><span> 分类</span></a></div></div></div></div><div class="page" id="body-wrap"><header class="full_page" id="page-header" style="background: linear-gradient(20deg, #0062be, #925696, #cc426e, #fb0347)"><nav id="nav"><span id="blog_name"><a id="site-name" href="/">文羊羽</a></span><div id="menus"><div id="search-button"><a class="site-page social-icon search"><i class="fas fa-search fa-fw"></i><span> 搜索</span></a></div><div class="menus_items"><div class="menus_item"><a class="site-page" href="/"><i class="fa-fw fas fa-home"></i><span> 首页</span></a></div><div class="menus_item"><a class="site-page" href="/archives/"><i class="fa-fw fas fa-archive"></i><span> 归档</span></a></div><div class="menus_item"><a class="site-page" href="/tags/"><i class="fa-fw fas fa-tags"></i><span> 标签</span></a></div><div class="menus_item"><a class="site-page" href="/categories/"><i class="fa-fw fas fa-folder-open"></i><span> 分类</span></a></div></div><div id="toggle-menu"><a class="site-page"><i class="fas fa-bars fa-fw"></i></a></div></div></nav><div id="site-info"><h1 id="site-title">文羊羽</h1><div id="site-subtitle"><span id="subtitle"></span></div><div id="site_social_icons"><a class="social-icon" href="https://github.com/whut-zhangwx" target="_blank" title="Github"><i class="fab fa-github"></i></a></div></div><div id="scroll-down"><i class="fas fa-angle-down scroll-down-effects"></i></div></header><main class="layout" id="content-inner"><div class="recent-posts" id="recent-posts"><div class="recent-post-item"><div class="recent-post-info no-cover"><a class="article-title" href="/IntermediateLayerGetter/" title="IntermediateLayerGetter 获取中间结果">IntermediateLayerGetter 获取中间结果</a><div class="article-meta-wrap"><span class="post-meta-date"><i class="far fa-calendar-alt"></i><span class="article-meta-label">发表于</span><time datetime="2025-02-02T16:00:00.000Z" title="发表于 2025-02-03 00:00:00">2025-02-03</time></span><span class="article-meta"><span class="article-meta-separator">|</span><i class="fas fa-inbox"></i><a class="article-meta__categories" href="/categories/deep-learning/">deep learning</a></span></div><div class="content">获取中间结果
利用 IntermediateLayerGetter 方法可以非常方便的获取中间结果,例如获取 resnet 的中间结果——features,这一点很有用,因为很多模型都会使用 resnet 作为 backbone 来提取 features。
123456789101112131415161718192021import torchfrom torchvision.models import resnet18from torchvision.models._utils import IntermediateLayerGetterinput = torch.rand(size=(1, 3, 224, 224))model = resnet18()output = model(input)print(output.shape)# torch.Size([1, 1000])'''extract layer1, layer2, layer3 and layer4, giving as names feat1, feat2, feat3 and fea ...</div></div></div><div class="recent-post-item"><div class="recent-post-info no-cover"><a class="article-title" href="/python-packing-and-unpacking/" title="Python 包裹传递和解包传递">Python 包裹传递和解包传递</a><div class="article-meta-wrap"><span class="post-meta-date"><i class="far fa-calendar-alt"></i><span class="article-meta-label">发表于</span><time datetime="2025-01-11T16:00:00.000Z" title="发表于 2025-01-12 00:00:00">2025-01-12</time></span><span class="article-meta"><span class="article-meta-separator">|</span><i class="fas fa-inbox"></i><a class="article-meta__categories" href="/categories/python/">python</a></span></div><div class="content">简介
在 Python 中,参数传递方式有两种主要形式:位置参数和关键字参数。通过使用包裹传递(packing)和解包传递(unpacking),可以灵活地处理任意数量的参数。
单星号 *
单星号 * 用于处理位置参数的打包和解包。
单星号打包
单星号 * 打包会将多个位置参数打包成一个 tuple 对象
123456def sum_all(*args): print(f"{args = }, {type(args) = }") return sum(args)result = sum_all(1, 2, 3, 4)# args = (1, 2, 3, 4), type(args) = <class 'tuple'>
单星号解包
单星号 * 解包用于将一个可迭代对象解包为位置参数
123456def add(a, b, c): return a + b + cdata = [1, 2, 3]print(*data) # 1 2 3result = add(*data) # add(1, 2 ...</div></div></div><div class="recent-post-item"><div class="recent-post-info no-cover"><a class="article-title" href="/resnet-implement-of-pytorch/" title="Pytorch 对 ResNet 的实现">Pytorch 对 ResNet 的实现</a><div class="article-meta-wrap"><span class="post-meta-date"><i class="far fa-calendar-alt"></i><span class="article-meta-label">发表于</span><time datetime="2025-01-02T16:00:00.000Z" title="发表于 2025-01-03 00:00:00">2025-01-03</time></span><span class="article-meta"><span class="article-meta-separator">|</span><i class="fas fa-inbox"></i><a class="article-meta__categories" href="/categories/deep-learning/">deep learning</a></span></div><div class="content">参考
pytorch vision resnet
resnet.py | pytorch github
借助 torch hub
可以直接借助 torch hub pytorch vision resnet 来加载预训练的 resnet。
12345678import torchmodel = torch.hub.load('pytorch/vision:v0.10.0', 'resnet18', pretrained=True)'''or any of these variants'''# model = torch.hub.load('pytorch/vision:v0.10.0', 'resnet34', pretrained=True)# model = torch.hub.load('pytorch/vision:v0.10.0', 'resnet50', pretrained=True)# mod ...</div></div></div><div class="recent-post-item"><div class="recent-post-info no-cover"><a class="article-title" href="/python-formatted-output/" title="Python 标准化输出">Python 标准化输出</a><div class="article-meta-wrap"><span class="post-meta-date"><i class="far fa-calendar-alt"></i><span class="article-meta-label">发表于</span><time datetime="2024-12-12T16:00:00.000Z" title="发表于 2024-12-13 00:00:00">2024-12-13</time></span><span class="article-meta"><span class="article-meta-separator">|</span><i class="fas fa-inbox"></i><a class="article-meta__categories" href="/categories/python/">python</a></span></div><div class="content">Document
Input and Output - formatted-string-literals | python docs
Python format 格式化函数 | 菜鸟教程
使用 f-strings
f-strings 是 Python 从 3.6 版本开始引入的一种字符串格式化方式,其全称为“格式化字符串字面量”。f-strings 使用更加简洁的语法,并且具有更高的可读性和性能。
f-strings 的语法使得可以直接在字符串中使用 {} 嵌入变量和python表达式,并允许在 : 后添加格式化字符说明。
123name, age, height = "zhang", 18, 1.7print(f"My name is {name}, I'm {age} years old and {height:.2f} meter tall.")# My name is zhang, I'm 18 years old and 1.70 me ...</div></div></div><div class="recent-post-item"><div class="recent-post-info no-cover"><a class="article-title" href="/evaluation-metrics-for-segmentation/" title="图像分割的评价指标">图像分割的评价指标</a><div class="article-meta-wrap"><span class="post-meta-date"><i class="far fa-calendar-alt"></i><span class="article-meta-label">发表于</span><time datetime="2024-12-11T16:00:00.000Z" title="发表于 2024-12-12 00:00:00">2024-12-12</time></span><span class="article-meta"><span class="article-meta-separator">|</span><i class="fas fa-inbox"></i><a class="article-meta__categories" href="/categories/deep-learning/">deep learning</a></span></div><div class="content">TP TN FP FN
The following are the 4 basic terminologies you need to know.
True Positives (TP): when the actual value is Positive and predicted is also Positive.
True Negatives (TN): when the actual value is Negative and prediction is also Negative.
False Positives (FP): When the actual is negative but prediction is Positive. Also known as the Type 1 error.
False Negatives (FN): When the actual is Positive but the prediction is Negative. Also known as the Type 2 error.
OA, Overall Accuracy, ...</div></div></div><div class="recent-post-item"><div class="recent-post-info no-cover"><a class="article-title" href="/python-configuration/" title="Python Config">Python Config</a><div class="article-meta-wrap"><span class="post-meta-date"><i class="far fa-calendar-alt"></i><span class="article-meta-label">发表于</span><time datetime="2024-12-08T16:00:00.000Z" title="发表于 2024-12-09 00:00:00">2024-12-09</time></span><span class="article-meta"><span class="article-meta-separator">|</span><i class="fas fa-inbox"></i><a class="article-meta__categories" href="/categories/python/">python</a><i class="fas fa-angle-right article-meta-link"></i><a class="article-meta__categories" href="/categories/python/deep-learning/">deep learning</a></span></div><div class="content">简介
使用 Python 编写一些深度学习算法时,经常会涉及到大量超参数的配置。通过 Python 的两个标准库,ml_collections 和 dataclasses,可以实现对这些配置进行管理。
ml_collections
ml_collections 是一个 Python 库,主要用于管理实验配置,其中的 ConfigDict 是一个核心工具。ConfigDict 提供了一种结构化的、易于管理的方式来定义和操作配置。它类似于 Python 的字典,但增强了功能,以便更方便地进行深度学习实验或其他场景中的配置管理。
1234567891011121314from ml_collections import ConfigDictdef get_config() -> ConfigDict: config = ConfigDict() config.model = ConfigDict() config.model.type = 'ResNet' config.model.num_layers = 50 config.optimizer = &# ...</div></div></div><div class="recent-post-item"><div class="recent-post-info no-cover"><a class="article-title" href="/python-datetime/" title="Python 格式化时间">Python 格式化时间</a><div class="article-meta-wrap"><span class="post-meta-date"><i class="far fa-calendar-alt"></i><span class="article-meta-label">发表于</span><time datetime="2024-12-08T16:00:00.000Z" title="发表于 2024-12-09 00:00:00">2024-12-09</time></span><span class="article-meta"><span class="article-meta-separator">|</span><i class="fas fa-inbox"></i><a class="article-meta__categories" href="/categories/python/">python</a></span></div><div class="content">datetime
在 Python 中使用 datetime 库可以获取当前时间
12345678from datetime import datetime# 获取当前时间now = datetime.now()# 格式化时间为指定格式formatted_time = now.strftime("%Y-%m-%d %H:%M:%S %p")print(formatted_time) # 2024-12-09 20:34:41 PM
其中各个字母的含义如下
%Y - 年份(四位数,例如 2024)
%m - 月份(两位数,例如 01 到 12)
%d - 日期(两位数,例如 01 到 31)
%H - 小时(24 小时制,两位数,例如 00 到 23)
%I - 小时(12 小时制,两位数,例如 01 到 12)
%M - 分钟(两位数,例如 00 到 59)
%S - 秒数(两位数,例如 00 到 59)
%p - 上下午标识(AM 或 PM)
</div></div></div><div class="recent-post-item"><div class="recent-post-info no-cover"><a class="article-title" href="/python-logging/" title="Python Logging">Python Logging</a><div class="article-meta-wrap"><span class="post-meta-date"><i class="far fa-calendar-alt"></i><span class="article-meta-label">发表于</span><time datetime="2024-12-05T16:00:00.000Z" title="发表于 2024-12-06 00:00:00">2024-12-06</time></span><span class="article-meta"><span class="article-meta-separator">|</span><i class="fas fa-inbox"></i><a class="article-meta__categories" href="/categories/python/">python</a></span></div><div class="content">参考
logging — Python 的日志记录工具{target="_blank"}
通过 logging 调用
123456789101112131415161718192021222324import loggingdef main() -> None: # logging.basicConfig(level=logging.DEBUG) logging.basicConfig(level=logging.INFO, format="%(asctime)s %(levelname)s %(message)s", datefmt="%Y-%m-%d %H:%M:%S") # logging.basicConfig(level=logging.WARNING) logging.debug("This is a debug message.") logging.info("This is a in ...</div></div></div><div class="recent-post-item"><div class="recent-post-info no-cover"><a class="article-title" href="/python-type-hints/" title="Python 类型提示">Python 类型提示</a><div class="article-meta-wrap"><span class="post-meta-date"><i class="far fa-calendar-alt"></i><span class="article-meta-label">发表于</span><time datetime="2024-12-05T16:00:00.000Z" title="发表于 2024-12-06 00:00:00">2024-12-06</time></span><span class="article-meta"><span class="article-meta-separator">|</span><i class="fas fa-inbox"></i><a class="article-meta__categories" href="/categories/python/">python</a></span></div><div class="content">简介
Python 的类型提示(Type Hints)是在 Python 3.5 中正式引入的,作为 PEP 484 – Type Hints 的一部分。它是一种在代码中显式声明变量、参数、返回值等的类型信息的方式。它对代码运行没有实际影响,只是作为一种可选的静态类型标注,意在为开发者提供变量、参数和返回值的类型信息,方便代码阅读。
可以把类型提示当作一种注释,就是告诉开发者这个变量“应该”是提示的类型,但是 python 编译器本身不做类型检查,即便代码运行时这个变量不是标注的类型,也不会有任何提示。
普通变量的类型提示
在创建变量时可以进行类型提示
123x: int = 1y: float = 1.0z: str = "hello"
还可以对一些自定义的数据类型进行提示
1234import numpyimport torchx: numpy.ndarray = numpy.array([1, 2, 3])y: torch.tensor = torch.tensor([1, 2, 3])
函数参数和返回值类型
在函数定义中,可以为参数和返回值添加类型提示:
1 ...</div></div></div><div class="recent-post-item"><div class="recent-post-info no-cover"><a class="article-title" href="/should-image-shape-be-CxHxW-or-HxWxC/" title="关于image的shape是CxHxW还是HxWxC">关于image的shape是CxHxW还是HxWxC</a><div class="article-meta-wrap"><span class="post-meta-date"><i class="far fa-calendar-alt"></i><span class="article-meta-label">发表于</span><time datetime="2024-11-28T16:00:00.000Z" title="发表于 2024-11-29 00:00:00">2024-11-29</time></span><span class="article-meta"><span class="article-meta-separator">|</span><i class="fas fa-inbox"></i><a class="article-meta__categories" href="/categories/deep-learing/">deep learing</a></span></div><div class="content">H×W×C Or C×H×W
123456789101112131415from PIL import Imageimport numpy as npfrom torchvision import transformsimage_path = r"path/to/image"mask_path = r"path/to/mask"img = Image.open(image_path) # size: (width, height)mask = Image.open(mask_path) # size: (width, height)np_img = np.array(img) # shape: (height, width, 3)np_mask = np.array(img) # shape: (height, width, 3)ts_img = transforms.PILToTensor()(img) # shape: torch.Size([3, height, width])ts_mask = transforms.PILToTensor ...</div></div></div><nav id="pagination"><div class="pagination"><span class="page-number current">1</span><a class="page-number" href="/page/2/#content-inner">2</a><span class="space">…</span><a class="page-number" href="/page/10/#content-inner">10</a><a class="extend next" rel="next" href="/page/2/#content-inner"><i class="fas fa-chevron-right fa-fw"></i></a></div></nav></div><div class="aside-content" id="aside-content"><div class="card-widget card-info"><div class="is-center"><div class="avatar-img"><img src="/img/avatar.jpg" onerror="this.onerror=null;this.src='/img/friend_404.gif'" alt="avatar"/></div><div class="author-info__name">文羊羽</div><div class="author-info__description"></div></div><div class="card-info-data site-data is-center"><a href="/archives/"><div class="headline">文章</div><div class="length-num">95</div></a><a href="/tags/"><div class="headline">标签</div><div class="length-num">118</div></a><a href="/categories/"><div class="headline">分类</div><div class="length-num">37</div></a></div><a id="card-info-btn" target="_blank" rel="noopener" href="https://www.zhihu.com/people/onexiaophai"><i class="fa-brands fa-zhihu"></i><span></span></a><div class="card-info-social-icons is-center"><a class="social-icon" href="https://github.com/whut-zhangwx" target="_blank" title="Github"><i class="fab fa-github"></i></a></div></div><div class="sticky_layout"><div class="card-widget card-recent-post"><div class="item-headline"><i class="fas fa-history"></i><span>最新文章</span></div><div class="aside-list"><div class="aside-list-item no-cover"><div class="content"><a class="title" href="/IntermediateLayerGetter/" title="IntermediateLayerGetter 获取中间结果">IntermediateLayerGetter 获取中间结果</a><time datetime="2025-02-02T16:00:00.000Z" title="发表于 2025-02-03 00:00:00">2025-02-03</time></div></div><div class="aside-list-item no-cover"><div class="content"><a class="title" href="/python-packing-and-unpacking/" title="Python 包裹传递和解包传递">Python 包裹传递和解包传递</a><time datetime="2025-01-11T16:00:00.000Z" title="发表于 2025-01-12 00:00:00">2025-01-12</time></div></div><div class="aside-list-item no-cover"><div class="content"><a class="title" href="/resnet-implement-of-pytorch/" title="Pytorch 对 ResNet 的实现">Pytorch 对 ResNet 的实现</a><time datetime="2025-01-02T16:00:00.000Z" title="发表于 2025-01-03 00:00:00">2025-01-03</time></div></div><div class="aside-list-item no-cover"><div class="content"><a class="title" href="/python-formatted-output/" title="Python 标准化输出">Python 标准化输出</a><time datetime="2024-12-12T16:00:00.000Z" title="发表于 2024-12-13 00:00:00">2024-12-13</time></div></div><div class="aside-list-item no-cover"><div class="content"><a class="title" href="/evaluation-metrics-for-segmentation/" title="图像分割的评价指标">图像分割的评价指标</a><time datetime="2024-12-11T16:00:00.000Z" title="发表于 2024-12-12 00:00:00">2024-12-12</time></div></div></div></div><div class="card-widget card-webinfo"><div class="item-headline"><i class="fas fa-chart-line"></i><span>网站资讯</span></div><div class="webinfo"><div class="webinfo-item"><div class="item-name">文章数目 :</div><div class="item-count">95</div></div><div class="webinfo-item"><div class="item-name">已运行时间 :</div><div class="item-count" id="runtimeshow" data-publishDate="2025-02-04T07:39:02.501Z"><i class="fa-solid fa-spinner fa-spin"></i></div></div><div class="webinfo-item"><div class="item-name">本站总字数 :</div><div class="item-count">353.6k</div></div><div class="webinfo-item"><div class="item-name">本站访客数 :</div><div class="item-count" id="busuanzi_value_site_uv"><i class="fa-solid fa-spinner fa-spin"></i></div></div><div class="webinfo-item"><div class="item-name">本站总访问量 :</div><div class="item-count" id="busuanzi_value_site_pv"><i class="fa-solid fa-spinner fa-spin"></i></div></div><div class="webinfo-item"><div class="item-name">最后更新时间 :</div><div class="item-count" id="last-push-date" data-lastPushDate="2025-02-04T07:39:02.684Z"><i class="fa-solid fa-spinner fa-spin"></i></div></div></div></div></div></div></main><footer id="footer"><div id="footer-wrap"><div class="copyright">©2020 - 2025 By 文羊羽</div><div class="footer_custom_text">Hi, welcome to my <a href="https://whut-zhangwx.github.io/">blog</a>!</div></div></footer></div><div id="rightside"><div id="rightside-config-hide"><button id="darkmode" type="button" title="浅色和深色模式转换"><i class="fas fa-adjust"></i></button><button id="hide-aside-btn" type="button" title="单栏和双栏切换"><i class="fas fa-arrows-alt-h"></i></button></div><div id="rightside-config-show"><button id="rightside_config" type="button" title="设置"><i class="fas fa-cog fa-spin"></i></button><button id="go-up" type="button" title="回到顶部"><i class="fas fa-arrow-up"></i></button></div></div><div id="local-search"><div class="search-dialog"><nav class="search-nav"><span class="search-dialog-title">搜索</span><span id="loading-status"></span><button class="search-close-button"><i class="fas fa-times"></i></button></nav><div class="is-center" id="loading-database"><i class="fas fa-spinner fa-pulse"></i><span> 数据库加载中</span></div><div class="search-wrap"><div id="local-search-input"><div class="local-search-box"><input class="local-search-box--input" placeholder="搜索文章" type="text"/></div></div><hr/><div id="local-search-results"></div></div></div><div id="search-mask"></div></div><div><script src="/js/utils.js"></script><script src="/js/main.js"></script><script src="https://cdn.jsdelivr.net/npm/@fancyapps/ui/dist/fancybox.umd.min.js"></script><script src="/js/search/local-search.js"></script><div class="js-pjax"><script>function subtitleType () {
if (true) {
window.typed = new Typed("#subtitle", {
strings: ["好记性不如烂笔头"],
startDelay: 300,
typeSpeed: 300,
loop: true,
backSpeed: 50
})
} else {
document.getElementById("subtitle").innerHTML = '好记性不如烂笔头'
}
}
if (true) {
if (typeof Typed === 'function') {
subtitleType()
} else {
getScript('https://cdn.jsdelivr.net/npm/typed.js/lib/typed.min.js').then(subtitleType)
}
} else {
subtitleType()
}</script><script>(() => {
const $mermaidWrap = document.querySelectorAll('#article-container .mermaid-wrap')
if ($mermaidWrap.length) {
window.runMermaid = () => {
window.loadMermaid = true
const theme = document.documentElement.getAttribute('data-theme') === 'dark' ? 'default' : 'default'
Array.from($mermaidWrap).forEach((item, index) => {
const mermaidSrc = item.firstElementChild
const mermaidThemeConfig = '%%{init:{ \'theme\':\'' + theme + '\'}}%%\n'
const mermaidID = 'mermaid-' + index
const mermaidDefinition = mermaidThemeConfig + mermaidSrc.textContent
mermaid.mermaidAPI.render(mermaidID, mermaidDefinition, (svgCode) => {
mermaidSrc.insertAdjacentHTML('afterend', svgCode)
})
})
}
const loadMermaid = () => {
window.loadMermaid ? runMermaid() : getScript('https://cdn.jsdelivr.net/npm/mermaid/dist/mermaid.min.js').then(runMermaid)
}
window.pjax ? loadMermaid() : document.addEventListener('DOMContentLoaded', loadMermaid)
}
})()</script></div><script async data-pjax src="//busuanzi.ibruce.info/busuanzi/2.3/busuanzi.pure.mini.js"></script></div></body></html>