文章目录
- 0 前言
- 1 项目运行效果
- 2 课题背景
-
- 2.1、痤疮的医学背景与社会影响
- 2.2、传统痤疮诊断方法的技术局限
-
- 2.2.1 视觉评估法
- 2.2.2 摄影记录法
- 2.2.3 皮肤镜检测
- 2.3、计算机视觉在皮肤病诊断中的发展
-
- 3.1 早期图像处理方法(2000-2010)
- 2.3.2 机器学习时代(2011-2015)
- 2.4、深度学习带来的技术革命
-
- 2.4.1 技术优势
- 2.4.2 在痤疮诊断中的进展
- 2.5、本项目的创新价值与研究意义
-
- 2.5.1 技术创新点
- 2.5.2 临床应用价值
- 5.3 社会经济效益
- 2.6、技术发展趋势与挑战
- 3 设计框架
-
- 3.1 系统概述
- 3.2 技术架构
-
- 3.2.1 系统架构图
- 3.2.2 技术选型
- 3.3 核心模块设计
-
- 3.3.1 系统主循环
- 3.3.2 检测处理流程
- 3.4 关键算法实现
-
- 3.4.1 NMS算法伪代码
- 3.4.2 模型预测流程
- 3.5 交互系统设计
-
- 3.5.1 UI布局结构
- 3.5.2 状态管理逻辑
- 3.6 模型训练方案
-
- 3.6.1 数据集准备
- 3.6.2 训练流程
- 3.6.3 数据增强策略
- 3.7 结果可视化方案
-
- 3.7.1 显示逻辑
- 3.7.2 诊断报告生成
- 3.8 系统流程图
-
- 3.8.1 ASCII流程图
- 3.8.2 详细流程说明
- 4 最后
0 前言
🔥这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。并且很难找到完整的毕设参考学习资料。
为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目提供大家参考学习,今天要分享的是
🚩 毕业设计 深度学习yolov11痤疮检测医疗辅助系统(源码+论文))
🥇学长这里给一个题目综合评分(每项满分5分)
难度系数:3分 工作量:4分 创新点:5分
🧿项目分享:见主页任意置顶文章
1 项目运行效果



2 课题背景
2.1、痤疮的医学背景与社会影响
痤疮(Acne Vulgaris)是一种常见的毛囊皮脂腺慢性炎症性疾病,主要发生在面部、胸背等皮脂腺丰富的部位。根据世界卫生组织(WHO)的统计数据,全球约有85%的12-24岁青少年受到不同程度痤疮的困扰,其中15-20%的患者发展为中度或重度痤疮。在中国,流行病学调查显示青少年痤疮患病率高达70-87%,已成为皮肤科最常见的就诊原因之一。
痤疮的临床表现多样,从轻微的黑头、白头粉刺到严重的炎症性结节、囊肿,不仅影响患者的外观形象,更可能导致永久性瘢痕形成。研究表明,中重度痤疮患者中:
- 约40%会出现不同程度的心理问题
- 30%患者有社交障碍
- 15%伴有焦虑或抑郁症状
痤疮的治疗效果与早期诊断和准确分级密切相关。然而,传统痤疮诊断存在以下突出问题:
2.2、传统痤疮诊断方法的技术局限
目前临床常用的痤疮评估方法主要包括:
2.2.1 视觉评估法
医生通过肉眼观察进行定性判断,常用的分级系统包括:
- Pillsbury分级(1956):4级分类法
- Leeds技术(1984):0-10分评分系统
- 全球痤疮分级系统(GAGS):结合部位权重和病变类型
这些方法虽然简单易行,但存在明显的观察者间变异(inter-observer variation),研究表明不同医生对同一患者的评估结果差异可达30%以上。
2.2.2 摄影记录法
通过标准化的面部摄影记录痤疮变化,但存在:
- 光线条件影响大
- 二维图像无法反映病变立体特征
- 后期分析仍依赖人工
2.2.3 皮肤镜检测
可观察毛孔和微粉刺,但对炎症性痤疮评估价值有限,且设备成本高,难以普及。
2.3、计算机视觉在皮肤病诊断中的发展
21世纪以来,随着数字图像处理和机器学习技术的发展,计算机辅助诊断(CAD)系统在医学影像领域取得显著进展。在皮肤病学方面:
3.1 早期图像处理方法(2000-2010)
- 基于颜色特征的痤疮区域分割
- 形态学处理识别粉刺轮廓
- 纹理分析区分炎症性病变
代表性研究:
- 2005年,Tan等首次实现痤疮的自动计数系统(准确率72%)
- 2008年,Chantharaphaichi等开发基于HSV色彩空间的痤疮检测算法
2.3.2 机器学习时代(2011-2015)
- 支持向量机(SVM)分类器
- 随机森林特征选择
- 局部二值模式(LBP)特征提取
系统性能提升至85%左右,但面临特征工程复杂、泛化能力有限等问题。
2.4、深度学习带来的技术革命
2016年后,深度卷积神经网络(CNN)在医学图像分析领域展现出突破性优势:
2.4.1 技术优势
2.4.2 在痤疮诊断中的进展
- 2017年,韩国团队开发基于ResNet的痤疮分级系统(准确率89%)
- 2019年,U-net架构实现痤疮病变的像素级分割(mIoU 0.82)
- 2021年,Transformer模型在跨中心验证中表现优异
然而,现有系统仍存在以下不足:
2.5、本项目的创新价值与研究意义
基于YOLOv11的痤疮检测系统在以下方面具有显著创新:
2.5.1 技术创新点
2.5.2 临床应用价值
5.3 社会经济效益
根据市场调研,中国皮肤科AI辅助诊断市场规模预计2025年将达到120亿元,年复合增长率35%。本系统的开发不仅具有科研价值,更具备广阔的产业化前景。
2.6、技术发展趋势与挑战
未来痤疮智能诊断的发展将聚焦以下方向:
本课题将在这些前沿方向进行探索性研究,为推动皮肤病诊疗的数字化、智能化发展提供技术支撑和实践经验。
3 设计框架
3.1 系统概述
本系统是基于YOLOv11深度学习模型的面部痤疮检测定位系统,主要功能包括:
- 静态图片痤疮检测
- 视频流实时分析
- 摄像头实时检测
- 痤疮位置标记与诊断建议
3.2 技术架构
3.2.1 系统架构图
#mermaid-svg-9sUQCaSvvhNauUKT{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-9sUQCaSvvhNauUKT .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-9sUQCaSvvhNauUKT .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-9sUQCaSvvhNauUKT .error-icon{fill:#552222;}#mermaid-svg-9sUQCaSvvhNauUKT .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-9sUQCaSvvhNauUKT .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-9sUQCaSvvhNauUKT .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-9sUQCaSvvhNauUKT .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-9sUQCaSvvhNauUKT .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-9sUQCaSvvhNauUKT .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-9sUQCaSvvhNauUKT .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-9sUQCaSvvhNauUKT .marker{fill:#333333;stroke:#333333;}#mermaid-svg-9sUQCaSvvhNauUKT .marker.cross{stroke:#333333;}#mermaid-svg-9sUQCaSvvhNauUKT svg{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-9sUQCaSvvhNauUKT p{margin:0;}#mermaid-svg-9sUQCaSvvhNauUKT .label{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;color:#333;}#mermaid-svg-9sUQCaSvvhNauUKT .cluster-label text{fill:#333;}#mermaid-svg-9sUQCaSvvhNauUKT .cluster-label span{color:#333;}#mermaid-svg-9sUQCaSvvhNauUKT .cluster-label span p{background-color:transparent;}#mermaid-svg-9sUQCaSvvhNauUKT .label text,#mermaid-svg-9sUQCaSvvhNauUKT span{fill:#333;color:#333;}#mermaid-svg-9sUQCaSvvhNauUKT .node rect,#mermaid-svg-9sUQCaSvvhNauUKT .node circle,#mermaid-svg-9sUQCaSvvhNauUKT .node ellipse,#mermaid-svg-9sUQCaSvvhNauUKT .node polygon,#mermaid-svg-9sUQCaSvvhNauUKT .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-9sUQCaSvvhNauUKT .rough-node .label text,#mermaid-svg-9sUQCaSvvhNauUKT .node .label text,#mermaid-svg-9sUQCaSvvhNauUKT .image-shape .label,#mermaid-svg-9sUQCaSvvhNauUKT .icon-shape .label{text-anchor:middle;}#mermaid-svg-9sUQCaSvvhNauUKT .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-9sUQCaSvvhNauUKT .rough-node .label,#mermaid-svg-9sUQCaSvvhNauUKT .node .label,#mermaid-svg-9sUQCaSvvhNauUKT .image-shape .label,#mermaid-svg-9sUQCaSvvhNauUKT .icon-shape .label{text-align:center;}#mermaid-svg-9sUQCaSvvhNauUKT .node.clickable{cursor:pointer;}#mermaid-svg-9sUQCaSvvhNauUKT .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-9sUQCaSvvhNauUKT .arrowheadPath{fill:#333333;}#mermaid-svg-9sUQCaSvvhNauUKT .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-9sUQCaSvvhNauUKT .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-9sUQCaSvvhNauUKT .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-9sUQCaSvvhNauUKT .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-9sUQCaSvvhNauUKT .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-9sUQCaSvvhNauUKT .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-9sUQCaSvvhNauUKT .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-9sUQCaSvvhNauUKT .cluster text{fill:#333;}#mermaid-svg-9sUQCaSvvhNauUKT .cluster span{color:#333;}#mermaid-svg-9sUQCaSvvhNauUKT div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-9sUQCaSvvhNauUKT .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-9sUQCaSvvhNauUKT rect.text{fill:none;stroke-width:0;}#mermaid-svg-9sUQCaSvvhNauUKT .icon-shape,#mermaid-svg-9sUQCaSvvhNauUKT .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-9sUQCaSvvhNauUKT .icon-shape p,#mermaid-svg-9sUQCaSvvhNauUKT .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-9sUQCaSvvhNauUKT .icon-shape .label rect,#mermaid-svg-9sUQCaSvvhNauUKT .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-9sUQCaSvvhNauUKT .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-9sUQCaSvvhNauUKT .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-9sUQCaSvvhNauUKT :root{–mermaid-font-family:\”trebuchet ms\”,verdana,arial,sans-serif;}
技术栈
用户界面
图像输入
YOLOv11模型
检测结果
NMS处理
结果可视化
诊断报告
PyTorch
PyQt5
OpenCV
3.2.2 技术选型
| YOLOv11 | 目标检测核心模型 | v8.1.0 |
| PyQt5 | 图形用户界面 | 5.15.9 |
| OpenCV | 图像处理与显示 | 4.7.0 |
| PyTorch | 深度学习框架 | 2.0.1 |
3.3 核心模块设计
3.3.1 系统主循环
class AcneDetectionApp:
def __init__(self):
# 初始化模型和UI
self.model = YOLO("best.pt")
self.init_ui()
def init_ui(self):
# 创建主窗口
# 添加控制按钮
# 设置结果显示区域
def run(self):
# 启动应用主循环
app.exec_()
3.3.2 检测处理流程
Processor
Model
UI
Processor
Model
UI
#mermaid-svg-l6zZgEpp1Seec2fz{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-l6zZgEpp1Seec2fz .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-l6zZgEpp1Seec2fz .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-l6zZgEpp1Seec2fz .error-icon{fill:#552222;}#mermaid-svg-l6zZgEpp1Seec2fz .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-l6zZgEpp1Seec2fz .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-l6zZgEpp1Seec2fz .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-l6zZgEpp1Seec2fz .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-l6zZgEpp1Seec2fz .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-l6zZgEpp1Seec2fz .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-l6zZgEpp1Seec2fz .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-l6zZgEpp1Seec2fz .marker{fill:#333333;stroke:#333333;}#mermaid-svg-l6zZgEpp1Seec2fz .marker.cross{stroke:#333333;}#mermaid-svg-l6zZgEpp1Seec2fz svg{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-l6zZgEpp1Seec2fz p{margin:0;}#mermaid-svg-l6zZgEpp1Seec2fz .actor{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;}#mermaid-svg-l6zZgEpp1Seec2fz text.actor>tspan{fill:black;stroke:none;}#mermaid-svg-l6zZgEpp1Seec2fz .actor-line{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);}#mermaid-svg-l6zZgEpp1Seec2fz .innerArc{stroke-width:1.5;stroke-dasharray:none;}#mermaid-svg-l6zZgEpp1Seec2fz .messageLine0{stroke-width:1.5;stroke-dasharray:none;stroke:#333;}#mermaid-svg-l6zZgEpp1Seec2fz .messageLine1{stroke-width:1.5;stroke-dasharray:2,2;stroke:#333;}#mermaid-svg-l6zZgEpp1Seec2fz #arrowhead path{fill:#333;stroke:#333;}#mermaid-svg-l6zZgEpp1Seec2fz .sequenceNumber{fill:white;}#mermaid-svg-l6zZgEpp1Seec2fz #sequencenumber{fill:#333;}#mermaid-svg-l6zZgEpp1Seec2fz #crosshead path{fill:#333;stroke:#333;}#mermaid-svg-l6zZgEpp1Seec2fz .messageText{fill:#333;stroke:none;}#mermaid-svg-l6zZgEpp1Seec2fz .labelBox{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;}#mermaid-svg-l6zZgEpp1Seec2fz .labelText,#mermaid-svg-l6zZgEpp1Seec2fz .labelText>tspan{fill:black;stroke:none;}#mermaid-svg-l6zZgEpp1Seec2fz .loopText,#mermaid-svg-l6zZgEpp1Seec2fz .loopText>tspan{fill:black;stroke:none;}#mermaid-svg-l6zZgEpp1Seec2fz .loopLine{stroke-width:2px;stroke-dasharray:2,2;stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);}#mermaid-svg-l6zZgEpp1Seec2fz .note{stroke:#aaaa33;fill:#fff5ad;}#mermaid-svg-l6zZgEpp1Seec2fz .noteText,#mermaid-svg-l6zZgEpp1Seec2fz .noteText>tspan{fill:black;stroke:none;}#mermaid-svg-l6zZgEpp1Seec2fz .activation0{fill:#f4f4f4;stroke:#666;}#mermaid-svg-l6zZgEpp1Seec2fz .activation1{fill:#f4f4f4;stroke:#666;}#mermaid-svg-l6zZgEpp1Seec2fz .activation2{fill:#f4f4f4;stroke:#666;}#mermaid-svg-l6zZgEpp1Seec2fz .actorPopupMenu{position:absolute;}#mermaid-svg-l6zZgEpp1Seec2fz .actorPopupMenuPanel{position:absolute;fill:#ECECFF;box-shadow:0px 8px 16px 0px rgba(0,0,0,0.2);filter:drop-shadow(3px 5px 2px rgb(0 0 0 / 0.4));}#mermaid-svg-l6zZgEpp1Seec2fz .actor-man line{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;}#mermaid-svg-l6zZgEpp1Seec2fz .actor-man circle,#mermaid-svg-l6zZgEpp1Seec2fz line{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;stroke-width:2px;}#mermaid-svg-l6zZgEpp1Seec2fz :root{–mermaid-font-family:\”trebuchet ms\”,verdana,arial,sans-serif;}
发送图像数据
原始检测结果
NMS处理
过滤后结果
可视化显示
3.4 关键算法实现
3.4.1 NMS算法伪代码
function apply_nms(boxes, scores, iou_threshold):
# 按置信度排序
indices = argsort(scores)[::-1]
keep = []
while indices not empty:
# 取最高分框
best_idx = indices[0]
keep.append(best_idx)
# 计算IOU
ious = calculate_iou(boxes[best_idx], boxes[indices[1:]])
# 过滤重叠框
indices = indices[1:][ious < iou_threshold]
return keep
3.4.2 模型预测流程
def predict_image(image):
# 预处理
img_tensor = preprocess(image)
# 模型推理
with torch.no_grad():
outputs = model(img_tensor)
# 后处理
boxes = outputs[..., :4]
scores = outputs[..., 4]
classes = outputs[..., 5]
return boxes, scores, classes
3.5 交互系统设计
3.5.1 UI布局结构
MainWindow
├── MenuBar
├── ControlPanel
│ ├── ImageBtn
│ ├── VideoBtn
│ └── CameraBtn
├── DisplayArea
│ ├── ImageLabel
│ ├── DiagnosisText
│ └── LogViewer
└── StatusBar
3.5.2 状态管理逻辑
def set_mode(mode):
# 停止当前检测
stop_detection()
# 更新UI状态
update_buttons(mode)
# 重置显示区域
clear_display()
# 设置新模式
current_mode = mode
3.6 模型训练方案
3.6.1 数据集准备
- 使用LabelImg工具
- 标注边界框和痤疮类型
- 保存为YOLO格式
3.6.2 训练流程
# 训练命令示例
yolo train data=acne.yaml model=yolov11s.pt epochs=100 imgsz=640
3.6.3 数据增强策略
# data.yaml
augmentation:
hsv_h: 0.015 # 色调增强
hsv_s: 0.7 # 饱和度增强
hsv_v: 0.4 # 明度增强
flipud: 0.5 # 垂直翻转概率
fliplr: 0.5 # 水平翻转概率
3.7 结果可视化方案
3.7.1 显示逻辑
def display_image(image):
# 转换颜色空间
rgb_img = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
# 创建QImage
h, w, ch = rgb_img.shape
q_img = QImage(rgb_img.data, w, h, ch*w, QImage.Format_RGB888)
# 缩放并显示
pixmap = QPixmap.fromImage(q_img)
label.setPixmap(pixmap.scaled(...))
3.7.2 诊断报告生成
def generate_report(boxes):
report = []
for box in boxes:
pos = calculate_center(box)
report.append(f"痤疮位置: {pos}")
# 添加治疗建议
if len(report) > 0:
report.append("建议治疗方案: …")
return "\\n".join(report)
3.8 系统流程图
3.8.1 ASCII流程图
+———————+
| 开始 |
+———-+———-+
|
v
+———————+
| 选择输入源 |
+———-+———-+
|
+———-+———-+
| 图片 视频 摄像头|
| | | |
| v v v
| 预处理 帧提取 实时采集
| | | |
+———-+———-+
|
v
+———————+
| YOLO推理 |
+———-+———-+
|
v
+———————+
| NMS处理 |
+———-+———-+
|
v
+———————+
| 结果可视化 |
+———-+———-+
|
v
+———————+
| 生成报告 |
+———-+———-+
|
v
+———————+
| 结束 |
+———————+
3.8.2 详细流程说明
开始阶段
- 系统初始化,加载YOLOv11模型
- 准备用户界面组件
输入选择
- 用户通过UI选择输入模式:
- 图片模式:选择单张图片文件
- 视频模式:选择视频文件
- 摄像头模式:启用默认摄像头
数据处理
- 图片模式:
- 读取图片文件
- 转换为RGB格式
- 调整尺寸适应模型输入
- 视频模式:
- 打开视频文件
- 按30fps提取视频帧
- 摄像头模式:
- 初始化摄像头
- 实时捕获视频流
模型推理
- 将处理后的图像输入YOLOv11模型
- 获取原始检测结果(边界框、置信度、类别)
后处理
- 应用NMS算法过滤重叠检测框
- 设置IOU阈值(默认0.5)
- 设置置信度阈值(默认0.5)
结果展示
- 在UI中显示处理后的图像
- 用矩形框标记痤疮位置
- 显示置信度分数
- 生成诊断报告:
- 统计痤疮数量
- 计算中心位置坐标
- 提供治疗建议
结束流程
- 释放资源
- 关闭文件/摄像头
- 重置UI状态
4 最后
项目包含内容

论文摘要

🧿项目分享:见主页任意置顶文章

