包含关键字 typecho 的文章

MaxAPI.AI

MaxAPI 创立于 2024 年 6 月,运营至今,目前主要提供 ChatGPT 、ChatGPT Codex 、Claude 、Claude Code 、Midjourney API 中转接口!

主要为企业及教育机构提供服务,支持对公转账,可开票!

新春特惠

Claude Code 分组新春开启特惠 0.143 折扣 等同于 1 人民币 1 美金!

功能特点

  • 高并发: 毫秒级响应速度,高并发场景无压力
  • 价格实惠: 新春特惠 1 元 1 美金 Claude Code 专属优惠
  • 企业级: 稳定供应不宕机
  • 纯 200 刀 Max 号池: 专属打造,支持 opus4.5
  • 企业服务: 支持对公转账、可开票

快速开始

一、注册 MaxAPI

官网地址:https://maxapi.ai

二、获取 API ,设置 Claude Code 专属 API 分组

*** 注意,如需享受 1 元 1 美金优惠,此选项需要进行配置!

  1. 获取 API 令牌:https://api.maxapi.ai/token
  2. 新建或修改令牌,修改分组为:Claude Code

三、接入您的应用即可!

接入方法可查看 MaxAPI 文档: https://maxapi.ai/docs/claude-code

联系客服

您可在官网公告中获取企业客服联系方式!

Hello V 友们,给大家拜个早年!🧨

2026 是马年,咱们程序员最讲究的就是一个“码”字。
趁着春节,我把产品做了一次“码力全开”的大升级,专门帮大家应对春节期间的“相亲局”、“前任局”和“暧昧局”

🛠️ 重大更新

1. ⚡️ 上线“试吃模式”
不再需要盲开盲盒!
现在,你可以利用免费的多巴胺(算力),解锁任意一个你感兴趣的高级模块(比如“钓鱼检测”或“软肋分析”)。
觉得准,再补票。

2. 🔗 突触连接 (裂变系统)
想白嫖更多多巴胺?
点击右上角的“多巴胺补给站”,生成你的专属连接。
发给那个正在被催婚的兄弟/闺蜜,他获得双倍开局,你获得 30mg 多巴胺提成。双赢。

🤖 春节实用场景

过年回家,面对七大姑八大姨介绍的相亲对象,或者那个只在除夕夜发一句“新年快乐”的前任:
不要瞎猜,不要内耗。

“路遥知马力,AI 见人心。”

  1. 截几张 TA 的朋友圈/小红书
  2. 丢给 Crush Decoder
  3. 看报告
    • TA 是真的“岁月静好”还是“拼单名媛”?
    • TA 是“老实人”还是“海王/杀猪盘”?
    • TA 现在的心理状态适合结婚还是玩玩?

不要听媒婆怎么吹,看数据怎么说。




🧧 V 友新春专属福利

在这个帖子里,不搞复杂的抽奖,主打一个“马上有码”

获取方式

  1. 进入网站:https://www.crush-decoder.com
  2. 点击右上角 “ID” 复制 ID 到剪切板
  3. 在本帖回复你的 ID
  4. OP 手动给你的 ID 充值 100mg 多巴胺(足够开 2 个高级模块试吃,或者跑 10 次基础分析)+ 赠送价值 ¥9.9 兑换码 (可以直接解锁完整版高级分析报告)

祝大家新的一年:代码无 Bug ,手里有筹码,心中无乱码!

Happy Coding & Happy Dating! 🧨

今日速览

  1. Lunair:一句话生成专业解说视频,告别库存素材。
  2. Prompt Library:一键插入所有收藏的提示,Mac 用户必备。
  3. Formaly:像聊天一样创建表单,AI 帮你秒速收集反馈。
  4. Plus AI Presentation Agent:PPT 里的 AI 助手,从规划到设计全包。
  5. Habit Island:把习惯养成变成策略游戏,边玩边成长。
  6. UnderSurface:日记本会“回听”,陪你写出真实感受。
  7. Test Your Idea:用真实数据验证创业想法,避开 90% 的坑。
  8. PenguinBot AI:24 小时 AI 员工,自动处理邮件和任务。
  9. UserWants:让用户投票决定功能,打造真正需要的产品。
  10. Whyze:AI 分析用户流失原因,不止看图表,更给解决方案。

[1]. Lunair

这款神器能帮你把产品描述瞬间变成专业视频,告别枯燥的库存素材,打造专属品牌形象。

  • 输入一句话,自动生成带角色、场景、配音和音乐的完整视频
  • 支持简单语言编辑,调整旁白和剧本,轻松匹配品牌风格
  • 交付可分享的视频文件,已获 5000 多位创作者青睐
    热度:🔺420
    Lunair
    访问官网 Product Hunt 详情


[2]. Prompt Library

Mac 上的提示管家,让你收藏的所有好点子触手可及,一键插入任何应用。

  • 保存、标记并分类整理提示,打造个人知识库
  • 快捷键 ⌘⌥P 快速调用,提升工作效率
  • 专为 Mac 设计,轻量易用,告别重复输入
    热度:🔺273
    Prompt Library
    访问官网 Product Hunt 详情


[3]. Formaly

告别传统表单,用自然语言聊天就能创建智能表单,让反馈收集变得像对话一样简单。

  • AI 驱动,几秒钟生成对话式表单,无需复杂设置
  • 通过聊天收集反馈,用户体验更自然流畅
  • 提供实时 AI 洞察,帮你快速分析数据趋势
    热度:🔺251
    Formaly
    访问官网 Product Hunt 详情


[4]. Plus AI Presentation Agent

PPT 重度用户的救星,这个 AI 助手能帮你规划、撰写、设计幻灯片,直接在 PowerPoint 里搞定一切。

  • 根据提示创建演示文稿,重写杂乱幻灯片,优化设计
  • 在 PowerPoint 内直接工作,支持逐步调整和编辑内容
  • 免费试用,提升演示效率,告别熬夜加班
    热度:🔺229
    Plus AI Presentation Agent
    访问官网 Product Hunt 详情


[5]. Habit Island

把枯燥的习惯养成变成一场冒险游戏,完成任务、建造岛屿,让坚持变得有趣。

  • 游戏化设计,将日常习惯和目标转化为策略任务
  • 完成任务获得宝石和成就,激励持续行动
  • 适合个人成长,帮助建立健康生活习惯
    热度:🔺192
    Habit Island
    访问官网 Product Hunt 详情


[6]. UnderSurface

一款会“回听”的日记应用,在你写作时实时回应内心声音,陪你探索真实感受。

  • 写作时提供实时反馈,察觉回避点,帮助理清思绪
  • 多语言支持,严格隐私保护,数据可导出
  • 个人开发项目,源于真实需求,非聊天机器人或治疗师
    热度:🔺23
    UnderSurface
    访问官网 Product Hunt 详情


[7]. Test Your Idea

创业前先验货,用真实数据扫描市场,避免造出没人要的产品。

  • 扫描 20 多个实时数据源,分析竞争对手、市场规模和需求
  • 每个数字带来源链接,基于 1400 多个创意测试经验
  • 结果显示 90% 创意未准备好,帮你提前避坑
    热度:🔺20
    Test Your Idea
    访问官网 Product Hunt 详情


[8]. PenguinBot AI

你的 24 小时 AI 员工,把聊天变成实际行动,自动处理邮件、任务和工作流程。

  • 以行动为先,将对话转化为管理邮件、安排任务等实际工作
  • 自主运行,安全可靠,全天候后台保持运转
  • 让你专注重要事项,提升办公自动化水平
    热度:🔺17
    PenguinBot AI
    访问官网 Product Hunt 详情


[9]. UserWants

别再猜用户心思,让他们直接投票告诉你该造什么功能,加速产品交付。

  • 收集用户反馈并投票,聚焦重要功能开发
  • 设计简约,无多余功能,快速推出产品
  • 帮助团队以用户为导向,减少开发浪费
    热度:🔺14
    UserWants
    访问官网 Product Hunt 详情


[10]. Whyze

用 AI 深挖用户流失原因,不止看漏斗图表,更给出可执行的优化建议。

  • AI 分析转化漏斗,解释用户流失的根本原因
  • 几秒内提供可操作见解,助力产品优化
  • 专注于用户行为洞察,提升留存率
    热度:🔺13
    Whyze
    访问官网 Product Hunt 详情

OpenClaw 作者加入 OpenAI ,但安全问题依然存在:ClawShell 的解法

OpenClaw 作者 Peter 去 OpenAI 推动下一代 agents ,OpenClaw 成为独立基金会。这对 agent 生态都是好消息。但有个问题现在更需要重视了:谁来保护 OpenClaw 用户的安全?

OpenClaw 作者 Peter 在此前在采访里说,安全是他最大的担忧。安全公司 Snyk 发现 36% 的 agent skills 被植入恶意代码,生态系统本身的供应链风险特别大。Moltbook 的数据库配置错误,泄露了 150 万个 API token ,这是同一个问题在不同层面的表现。如果你在用 OpenClaw ,那这些风险一定要注意,你装的那些 skills ,确定都安全吗?更麻烦的是,即使 skills 本身没问题,agent 也可能被 prompt injection 控制。

我是 OpenClaw 的深度用户。每天用它管理日程、筛选邮件、预读论文,不得不给了它很多权限和敏感信息,但我也在时刻担心有一天出现巨大的安全灾难。

我们测试了下 OpenClaw 最新版 2026.2.12 。多轮对话,骗它说在备份重要文件,用 gzip 压缩然后改后缀名。只是通过正常对话,我们就很轻松绕过了多层安全限制成功拿到了环境变量里的 OpenAI token 。

测试结果截图


问题在于系统本身,Agent 的安全问题修不完,是因为我们把不可信计算和敏感数据放在了同一个执行环境里。

Prompt 防御不是安全边界

目前防御基本都在 prompt 层面做事:过滤输入、改写指令、限制输出。只要 Agent 能读并且执行指令,加再多防护都没用,总有人找到突破口:混淆、绕弯、工具链。

Simon Willison 分析 AI agent 安全时提出了一个框架,叫做"致命三角( The Lethal Trifecta )"。当一个 AI 系统同时具备如下三种要素时,风险会呈指数级放大:

致命三角示意图

一是能读取私有数据。

二是运行在不可信的输入环境中。

三是可以向外部发起通信。

真正危险是三者叠加后形成的闭环:外部输入可以影响模型决策,模型可以接触敏感信息,而这些信息又可以被主动带出系统边界。

能读私有数据 + 处理不可信输入 + 可以对外通信 = 必然的安全灾难。

OpenClaw 同时具备这三个要素,安全不是概率问题,而是时间问题。

只要是基于统计和概率的防御,都有可能被绕过。真正靠得住的只有结构性隔离和安全模型。

解决方案:打破致命三角

关键洞察: Agent 需要执行权限,但不需要持有凭证。凭证必须存在于独立的信任域里。

配置使用 ClawShell 之后,所有调用 LLM API 的请求都会经过 ClawShell 。工作流程是这样的:在环境变量里设置

CLAWSHELL_API_KEY={clawshell-virtual-key-openai}

OpenClaw 读到的只有这个虚拟标识符。

当它要调用 OpenAI API 时,请求发到 ClawShell 。ClawShell 把虚拟标识符替换成真实的 sk-xxxxx,转发请求。响应回来时,ClawShell 确保任何可能暴露真实凭证的信息被清理掉,然后返回给 OpenClaw 。

这样 OpenClaw 进程的整个生命周期里,内存、日志、环境变量里永远只有虚拟标识符。真实凭证只存在于 ClawShell 进程中,被文件系统权限和进程边界保护着。

即使攻击者完全控制了 OpenClaw 进程,dump 内存、读配置、拦截请求,拿到的都是没用的虚拟标识符。这些标识符离开 ClawShell 的上下文就没有意义,攻击者无法用它们在其他地方访问你的账户。

致命三角的突破

这就从根本上打破了致命三角,Agent 仍然能读数据、处理输入、发请求,但它接触不到真实凭证,也就无法把凭证带出系统边界。

实现细节:零信任的架构设计

架构图

  • OpenClaw 是不可信组件,处理任意输入,只能看到虚拟标识符
  • ClawShell 是可信组件,持有真实凭证,只处理结构化请求
  • 两者通过进程隔离和文件权限分离,由操作系统内核强制执行

攻击者即使成功拿到的也只是虚拟标识符,无法用于实际访问:

虚拟标识符示例

ClawShell 的架构也为其他安全扩展提供了基础:同样的机制可以用于清理请求中的隐私信息、审计敏感操作、实现细粒度的访问控制。

总结

  • Agent 的安全问题修不完是因为我们把不可信计算和敏感数据放在了同一个执行环境里
  • 只要系统同时满足读私有数据、不可信输入、对外通信这三点,数据泄露是必然结果
  • 因此,一个真正安全的系统必须满足:系统可以被攻破,但不能被利用

极简安装

两种安装方式任选其一:

Cargo

cargo install clawshell --locked
sudo clawshell onboard

npm

npm install -g @clawshell/clawshell
sudo clawshell onboard

onboard 流程会扫描 OpenClaw 的配置和环境变量,识别出常见的 API keys (如 OPENAI_KEY 、ANTHROPIC_KEY 等),迁移到 ClawShell 的受保护配置中,然后在原位置替换成虚拟标识符。其他敏感凭证可以参考文档手动配置。

整个迁移过程不到一分钟,现有的 skills 和 workflow 无需修改。

代码和文档: https://github.com/clawshell/clawshell/

用 Rust + Tokio 实现,内存占用不到 10MB

Apache 2.0 开源,欢迎 issue 和 PR !

最近做很多产品,教程,视频,感觉离不开的一个东西就是做 demo 给客户和社交媒体。

Screen Studio 的确是比较成熟的,但是苦于 Electron ,M 系列的苹果电脑也感觉过于卡顿。
另外一个受不了的就是导出太慢了,很影响节奏。

我们就做了一个 Mac 原声替代:ScreenKite
欢迎大家下载测试。

https://www.screenkite.com/

https://i.imgur.com/NKe98jn.jpeg

OpenClaw “之父”加入 OpenAI

 

刚刚,OpenAI CEO Sam Altman 在 x 上宣布,顶流开源项目 OpenClaw 的创始人 Peter Steinberger 将加入 OpenAI,致力于推动下一代个人智能体的研发。Altman 在 x 上发帖写道:

 

“他是一位天才,对未来智能体如何相互协作、为人们提供实用服务有着许多令人惊叹的构想。我们预计这将很快成为我们产品的核心。

 

OpenClaw 将以开源项目的形式存在于基金会中,OpenAI 也将继续为其提供支持。未来将是高度多智能体化的时代,而支持开源是我们实现这一目标的重要组成部分。”

 

 

就在几天前,Peter Steinberger 曾做客了一档访谈栏目,在访谈中他分享了自己和项目一夜成名后的经历。

 

他回忆了那段不仅被 Anthropic 追着要求改名,还遭遇加密社区的恶意骚扰、账号抢注与恶意软件散布的经历,直言他精神几近崩溃甚至想放弃项目。最终通过精密的 “作战式” 操作将项目定名为 OpenClaw 并完成全平台改名。

 

此外,他透露项目目前处于亏损状态,靠捐赠和少量企业支持,无法长期持续。爆红后,他收到了 OpenAI、Meta 等大厂收购与合作意向,Peter 正在艰难选择,但他的要求是项目要保持开源。

 

“Meta 这边,Ned 和 Mark 会亲自试用产品、写代码、给反馈,还会和我争论技术细节;OpenAI 的算力和技术速度非常吸引人。我在 OpenAI 没有熟人,但和双方沟通都很愉快。这大概是我除了过去感情经历外,最难做的决定之一。”Peter 说道。

 

此外,在采访中 Peter 还透露,他眼中,OpenAI 很懂规模化,能把 OpenClaw 的技术安全地推广给更多人。他补充说:

 

“有人使用产品、真心在乎它,就是最大的赞美。我做这一切不是为了钱,而是为了乐趣和影响力。”

 

如今,他做出了最终决定,正式加入 OpenAI。

 

Peter 在 x 上写道:我要加入 OpenAI,让每个人都能接触到 Agent。 OpenClaw 正在成为一个基金会:开放、独立,并且才刚刚起步。

 

他还发表了一篇长文阐述了他为何做此决定。文章全文如下:

 

简而言之:我将加入 OpenAI ,致力于让所有人都能使用智能体。OpenClaw 将转为基金会,并保持开放和独立。

 

过去一个月简直像一场旋风,我做梦也没想到我的游乐场项目会引起这么大的反响。网络世界又开始热闹起来了,看到我的作品激励了世界各地这么多人,真是太有趣了。

 

无数的可能性向我敞开,无数人试图引导我走向不同的方向,给我提建议,问我如何投资,或者我打算做什么。说这一切令人不知所措都算是轻描淡写了。

 

我最初探索人工智能的目标是获得乐趣并启发人们。而现在,OpenClaw 正在席卷全球。我的下一个目标是打造一款连我妈妈都能使用的智能体。这需要更广泛的变革,更深入地思考如何安全地实现,以及获取最新的模型和研究成果。

 

是的,我完全能理解 OpenClaw 未来发展成一家巨头公司的可能性。不过,这对我来说并没有什么吸引力。我本质上是个实干家。我已经经历过创建公司的整个过程,投入了 13 年的时间,也学到了很多东西。我想要的是改变世界,而不是打造一家大公司,而与 OpenAI 合作是实现这一目标最快的途径。

 

我上周在旧金山与各大实验室进行了交流,接触到了相关人员和尚未公开的研究成果,这在各个方面都令我深受启发。我要感谢本周与我交流的所有人,并感谢他们提供的机会。

 

对我来说,OpenClaw 保持开源并拥有自由发展的空间一直至关重要。最终,我认为 OpenAI 是继续推进我的愿景并扩大其影响范围的最佳平台。我与 OpenAI 的同事们交流越多,就越发清楚地意识到我们拥有相同的愿景。

 

OpenClaw 社区充满活力,令人着迷。OpenAI 也做出了强有力的承诺,让我能够全身心投入其中,并且已经为该项目提供了赞助。为了让它拥有更完善的架构,我正在努力将其打造为一个基金会。它将继续为思想家、技术专家以及所有希望掌控自身数据的人们提供一个交流的平台,目标是支持更多模型和公司。

 

我个人非常兴奋能够加入 OpenAI,成为人工智能研发前沿领域的一份子,并继续与大家一起努力。

网友怎么看?

围绕 OpenClaw 项目的最新进展,社区内部迅速形成了截然不同的声音。

 

在 x 上,一部分用户首先对权限边界问题表达了明确担忧。有网友直言,如果 OpenClaw 未来允许 OpenAI 访问用户的电子邮件、银行账户甚至个人电脑,那么这个产品将很难被真正采用,“几乎不会有人愿意继续使用它”。在他们看来,个人智能体一旦深入到高敏感数据层,其风险将远高于传统聊天式模型。

 

但与此同时,也有长期用户给出了几乎相反的评价。一位已经连续数周每天运行 OpenClaw 的用户表示,多智能体之间的协作能力,是该项目最突出的优势之一,已经明显领先于目前市面上的其他同类产品。在他看来,如果 OpenAI 能够持续将工程与算力资源投入到这一方向,“个人智能体领域可能会在很短时间内发生结构性变化”。这类评论中,不乏对项目未来潜力的高度期待,甚至有人直接将其称为“令人难以置信的合作”。

 

更为理性的声音,则集中在治理与审计机制上。

 

有网友指出,将“个人代理”作为核心产品形态,本身就是一次重大的产品范式转变,而真正的难点并不在能力本身,而在制度设计:代理究竟可以访问哪些数据?用户是否能够完整查看操作日志?默认的审计追踪机制是否足够细粒度、可回溯?

 

在他们看来,如果这些问题缺乏清晰答案,即便技术成熟,个人代理依然难以跨越信任门槛。

此外,还有一位从项目早期便参与其中的开发者给出了更偏内部视角的评价。他表示,即使只是参与 OpenClaw 的开发过程,本身就是一次极具价值的学习经历。从技术视野、工程方法到对个人智能体未来形态的理解,这段经历都让他受益匪浅。“加入 OpenAI 是一个正确的选择”,他这样总结道。

 

以上种种讨论,都折射出一个清晰信号:OpenClaw 所代表的,并不仅是一款新产品,而是一种正在逼近现实的个人智能体愿景。而围绕这一愿景,行业正在同时经历兴奋、犹疑与审慎三种情绪的拉扯。

 

点赞 + 关注 + 收藏 = 学会了

整理了一个NAS小专栏,有兴趣的工友可以关注一下 👉 《NAS邪修》

80h5 是一款集合了80款经典小游戏的平台,聚合了植物大战僵尸、捕鱼达人、消消乐等海量经典休闲 H5 小游戏。但虽然它叫 H5,我实测过部分游戏在移动端有点兼容问题,PC 端没问题。

我这次使用的是群晖的 NAS,其他品牌的 NAS 操作步骤也差不多。

首先在“File Station”里找到“docker”文件夹,然后在里面创建一个“80h5”文件夹。

接着打开“Container Manager”,创建一个项目。

项目名称填“80h5”。路径选择刚刚创建好的 /docker80h5

然后输入以下代码:

services:
  80h5-game:  
    container_name: 80h5  
    image: ghcr.io/liangminmx/80h5:latest
    restart: always
    ports:
      - 3456:3080

我给 80h5 配置了一个 3456 端口,你也可以配置其他数字。

“通过 Web Station 设置网页门户”这项可以不勾。

等 80h5 项目构建完成后,打开浏览器,输入 你NAS的IP:3456 就可以玩游戏了。


以上就是本文的全部内容啦,有疑问可以在评论区讨论~

想了解更多NAS玩法可以关注《NAS邪修》👏

点赞 + 关注 + 收藏 = 学会了

点赞 + 关注 + 收藏 = 学会了

整理了一个n8n小专栏,有兴趣的工友可以关注一下 👉 《n8n修炼手册》

n8n作为开源灵活的工作流自动化工具,被广泛用于本地部署和容器化部署场景。但默认情况下,n8n 默认使用 America/New York 时区,若未配置本地时间,会导致定时工作流执行偏差、日志时间混乱、时间相关节点(如Schedule Trigger、Current Date)输出异常等问题,严重影响工作流的准确性和可维护性。

比如,使用代码节点,用 $now 输出当前时间。我电脑的时间是2026年2月13日下午2点22分。而 n8n 输出的时间却是 2026年2月13日凌晨1点22分,这显然不对。

每一个工作流都可以单独设置时区。

点击工作流面板上方的三个点,找到“Settings”。

把「Timezone」设置成 Asia/Shanghai 就变成国内的时区了。

此时再试试输出当前时间,就对得上了~


以上就是本文的全部内容啦,想了解更多n8n玩法欢迎关注《n8n修炼手册》👏

如果你有 NAS,我非常建议你在 NAS 上部署一套 n8n,搞搞副业也好,帮你完成工作任务也好 《『NAS』不止娱乐,NAS也是生产力,在绿联部署AI工作流工具-n8n》

点赞 + 关注 + 收藏 = 学会了

JWT编码/解码 在线工具分享

哈喽大家好,今天给大家安利一个我最近用 Vue 手搓的在线工具——JWT编码/解码器

做开发的同学应该都知道 JWT(JSON Web Token),现在前后端分离项目里用得特别多。但有时候调试接口、排查问题,手里没个顺手的工具,解析个 Token 还得去找在线网站,挺麻烦的。

所以我就想,干脆自己做一个网页版的,打开就能用,还不用安装。

在线工具网址:https://see-tool.com/jwt-encryptor
工具截图:

这个工具有啥特别的?

1. 一眼看懂 Token 结构

JWT 是由三部分组成的,用点号隔开。这个工具会自动把 Header、Payload、Signature 分开显示,还用不同颜色标出来,一眼就能看明白哪个部分是啥。

2. 支持多种算法

不止是最常用的 HS256,像 RS256、PS256、ES256 这些非对称加密算法也都支持。不管你用的是对称密钥还是 RSA/ECDSA 密钥对,都能帮你编码和验证签名。

3. 签名验证超方便

想确认 Token 是不是被篡改过?只要勾选"验证签名",输入密钥,立马就能告诉你签名是否有效。再也不用写代码去验证了,调试效率翻倍。

4. 示例一键加载

刚上手不知道怎么用?没关系,我准备了现成的示例,点一下"加载示例"按钮,立马给你填好一个完整的 Token 和密钥,跟着看一遍就会了。

碎碎念

这个小工具是我用 Vue 3 做的,核心的 JWT 处理逻辑是自己手写的,还用到了 Web Crypto API 来做 RSA 和 ECDSA 的签名验证。所有操作都在你的浏览器里完成,密钥不会上传到服务器,安全又放心。

虽然它可能没有那些专业工具那么多功能,但胜在轻便、干净。

如果你平时开发调试刚好缺这么一个顺手的小工具,欢迎来试试看!要是觉得好用,或者有什么想吐槽的,也欢迎随时告诉我哈~

Model Context Protocol 是一个开放标准,它的目标是给 LLM 一种干净、统一的方式去发现和调用外部工具。不用再写自定义解析、不用再维护脆弱的胶水代码,就是一个好用的协议。

大多数 MCP 教程上来就讲 JSON-RPC 规范、传输层协议,搞得很复杂。其实用 MCP 不需要理解协议内部构造就像写 Web 应用不需要去读 HTTP 规范一样。

真正需要掌握的东西就三个概念,花 15 分钟就够了。

三个核心概念

MCP 的核心就三样东西:

Server:对外暴露工具的服务端,本质上是一个 Python 脚本,声明"这些函数可以被 LLM 调用",跑起来之后就在监听请求。

Tool:希望 LLM 使用的函数,可以是任何东西:查天气、查数据库、发邮件。这跟写普通 Python 函数没什么区别,加个装饰器剩下的交给 MCP。

Client:连接 Server 并调用工具的客户端。生产环境里一般就是 LLM 应用本身。测试阶段可以用 FastMCP 自带的客户端,开箱即用。

Server 暴露工具,Client 调用工具。就这么简单。

传输方式、JSON-RPC、能力协商这些都是实现细节,上生产之前不用管。

步骤 1:安装 FastMCP

FastMCP 是让 MCP 用起来简单的 Python 框架。装一下就行,不需要任何配置。

 pip install fastmcp

本教程不需要虚拟环境,生产环境建议还是用一个。

步骤 2:创建 Server

新建一个

my_server.py

文件:

 from fastmcp import FastMCP  

# Initialize the server with a name  
mcp = FastMCP("my-first-server")  

# Define a tool using the @mcp.tool decorator  
@mcp.tool  
def get_weather(city: str) -> dict:  
    """Get the current weather for a city."""  
    # In production, you'd call a real weather API  
    # For now, we'll return mock data  
    weather_data = {  
        "new york": {"temp": 72, "condition": "sunny"},  
        "london": {"temp": 59, "condition": "cloudy"},  
        "tokyo": {"temp": 68, "condition": "rainy"},  
    }  
      
    city_lower = city.lower()  
    if city_lower in weather_data:  
        return {"city": city, **weather_data[city_lower]}  
    else:  
        return {"city": city, "temp": 70, "condition": "unknown"}  

# Run the server  
if __name__ == "__main__":  
     mcp.run(transport="stdio")
FastMCP("my-first-server")

创建一个带名称的服务器实例。

@mcp.tool

装饰器把普通函数注册为 MCP 工具。函数的 docstring 会变成工具描述——LLM 靠这个来判断什么时候该调用它。类型提示(

city: str

-> dict

)告诉 MCP 输入输出的类型。

transport="stdio"

表示通过标准输入输出通信,本地测试够用了。

整个 Server 就这些,实际代码 15 行。

步骤 3:写个 Client 测试一下

新建

test_client.py

 import asyncio  
from fastmcp import Client  

async def main():  
    # Point the client at your server file  
    client = Client("my_server.py")  
      
    # Connect to the server  
    async with client:  
        # List available tools  
        tools = await client.list_tools()  
        print("Available tools:")  
        for tool in tools:  
            print(f"  - {tool.name}: {tool.description}")  
          
        print("\n" + "="*50 + "\n")  
          
        # Call the weather tool  
        result = await client.call_tool(  
            "get_weather",   
            {"city": "Tokyo"}  
        )  
        print(f"Weather result: {result}")  

if __name__ == "__main__":  
     asyncio.run(main())
Client("my_server.py")

指定要连接的 Server 文件;

async with client:

自动管理连接生命周期;

list_tools()

负责动态发现可用工具,这是 MCP 的核心能力之一;

call_tool("get_weather", {"city": "Tokyo"})

带参数调用具体工具。

步骤 4:跑起来

终端里执行:

 python test_client.py

输出应该是这样的:

 Available tools:  
   - get_weather: Get the current weather for a city.
 ==================================================Weather result: {'city': 'Tokyo', 'temp': 68, 'condition': 'rainy'}

到这里就完成了。一个 MCP Server 搭好了Client 也成功调用了它。

步骤 5:增加更多工具

MCP 真正好用的地方在于扩展成本极低,再往 Server 里再加两个工具:

 from fastmcp import FastMCP  
from datetime import datetime  

mcp = FastMCP("my-first-server")  

@mcp.tool  
def get_weather(city: str) -> dict:  
    """Get the current weather for a city."""  
    weather_data = {  
        "new york": {"temp": 72, "condition": "sunny"},  
        "london": {"temp": 59, "condition": "cloudy"},  
        "tokyo": {"temp": 68, "condition": "rainy"},  
    }  
    city_lower = city.lower()  
    if city_lower in weather_data:  
        return {"city": city, **weather_data[city_lower]}  
    return {"city": city, "temp": 70, "condition": "unknown"}  

@mcp.tool  
def get_time(timezone: str = "UTC") -> str:  
    """Get the current time in a specified timezone."""  
    # Simplified - in production use pytz or zoneinfo  
    return f"Current time ({timezone}): {datetime.now().strftime('%H:%M:%S')}"  

@mcp.tool  
def calculate(expression: str) -> dict:  
    """Safely evaluate a mathematical expression."""  
    try:  
        # Only allow safe math operations  
        allowed_chars = set("0123456789+-*/.() ")  
        if not all(c in allowed_chars for c in expression):  
            return {"error": "Invalid characters in expression"}  
          
        result = eval(expression)  # Safe because we validated input  
        return {"expression": expression, "result": result}  
    except Exception as e:  
        return {"error": str(e)}  
if __name__ == "__main__":  
     mcp.run(transport="stdio")

再跑一次测试客户端,三个工具全部自动发现:

 Available tools:  
   - get_weather: Get the current weather for a city.  
   - get_time: Get the current time in a specified timezone.  
   - calculate: Safely evaluate a mathematical expression.

不需要改配置,不需要写路由。加了工具就直接可用。

最后:接入 LLM

前面写的 Client 是测试用的。生产环境里,LLM 框架本身充当 Client 角色。概念上大概是这样:

How MCP connects your LLM to external tools: the framework calls the client, which discovers and invokes tools from your server.

Server 端的代码完全不用动,这正是 MCP 的价值所在——工具写一次,任何兼容 MCP 的客户端都能用。

生产部署时需要把传输方式从

stdio

换成

http

 if__name__=="__main__":  
     mcp.run(transport="http", host="0.0.0.0", port=8000)

这样 MCP Server 就以 HTTP 端点的形式对外暴露,远程客户端可以直接连接。

总结

现在你手头已经有一个能跑的 MCP Server 了,前后也就 15 分钟。下一步就是把它接到实际的 LLM 上,做点真正有用的东西出来。

https://avoid.overfit.cn/post/c9314c34543a4ed1a1bb15b92d1c6ca2

by Paolo Perrone

这个小软件只有一个功能,就是把 win11 任务栏变回小图标,从 win95 一直用过来,还是习惯小图标的任务栏,只可惜微软在 win11 里砍掉了这个原生功能,苦于找不到合适的解决方案。

StartAllBack 能用,但是右下角只能显示时间,显示不了日期。
Windhawk 可以,右下角日期时间也都有,但是软件太臃肿,为了一个小功能搞一个 800 多兆的臃肿庞大的软件划不来。

所以花了几天时间 vibe coding 一个,一行代码都没写也不懂什么 C++,对代码一窍不通,这事放到一年前,想要做一个这样的软件简直是天方夜谭,现在有了 AI ,居然可以把想法变成现实了。感觉我现在强的可怕,感觉没有我做不出来的软件了,嚯哈哈哈哈。

另外又用 AI 做了个 pdbtools 用于下载微软的 pdb 文件并把偏移量保存到 taskbar_symbols.ini 符号偏移表里,不保证适配大部分版本,因为每个版本都不一样,所以如果你打开软件以后,跳出控制台下载文件,说明 ini 里没有适配到你的 win11 版本的偏移量,软件会自动从微软服务器下载两个 pdb 文件并放在当前目录里,下载完后,软件会自动找到对应的偏移量并保存到 ini 文件里,应用成功以后软件会自动删除两个文件。

首先把软件解压到任何你喜欢的目录,比如 D:\Tools\Taskbar\ 或者 C:\Program Files\TaskbarTweaker\ 然后运行
如果没效果,试试以管理员权限运行。
如果软件成功运行,并且成功应用到任务栏,软件会自动被加载到 任务计划程序 里,跟随开机自动启动
如果你想停用它,可以带参数 -u 来运行它,使用这个命令 taskbar_tweaker -u
如果遇到任何问题,请积极反馈。

https://github.com/metalbug/win11-taskbar-small-icon

【免费开源】stm32串行驱动LCD12864显示正弦函数 波形可视化神器完整项目分享

一、项目概述

本项目是一个基于STM32微控制器的LCD12864液晶显示屏驱动程序,通过串行通信方式控制LCD12864显示屏,实现正弦函数波形的实时显示。这个项目将数学函数可视化,让抽象的数学概念变得直观可见,是学习STM32嵌入式开发和图形显示技术的绝佳实践项目。

LCD12864是一款128×64点阵的图形型液晶显示模块,具有体积小、功耗低、显示内容丰富等特点,广泛应用于各种嵌入式系统中。本项目采用串行接口方式驱动LCD12864,相比并行接口方式,可以节省更多的IO引脚资源,非常适合引脚资源有限的STM32微控制器使用。

正弦函数是数学中最基础的周期函数之一,在信号处理、通信系统、音频处理等领域有着广泛的应用。通过在LCD12864上实时显示正弦波形,不仅能够直观地展示正弦函数的周期性特征,还能帮助理解数字信号处理的基本原理。

本项目的核心功能包括:LCD12864的初始化配置、串行通信接口的实现、正弦函数数据的计算与存储、波形绘制算法的实现等。通过这个项目,读者可以深入学习STM32的GPIO、SPI通信、定时器等外设的使用方法,掌握图形显示的基本原理和编程技巧。

源码分享

直接放到之前写的文章里了,免费开源,下载学习即可。

https://blog.csdn.net/weixin_52908342/article/details/158101046

二、系统设计流程图

flowchart TD
    A[系统启动] --> B[STM32初始化]
    B --> C[GPIO时钟配置]
    C --> D[SPI接口配置]
    D --> E[LCD12864初始化]
    E --> F[清屏操作]
    F --> G[正弦函数数据计算]
    G --> H[波形绘制]
    H --> I{是否继续显示}
    I -->|是| G
    I -->|否| J[结束]
    
    style A fill:#e1f5ff
    style B fill:#fff4e1
    style C fill:#fff4e1
    style D fill:#fff4e1
    style E fill:#e1ffe1
    style F fill:#e1ffe1
    style G fill:#ffe1f5
    style H fill:#ffe1f5
    style I fill:#f5ffe1
    style J fill:#ffcccc

三、硬件设计

3.1 STM32微控制器选型

本项目采用STM32F103系列微控制器作为主控芯片,该系列基于ARM Cortex-M3内核,具有丰富的外设资源和良好的性价比。STM32F103C8T6是最常用的型号,具有64KB Flash存储器、20KB SRAM、48个GPIO引脚,完全满足本项目的需求。

STM32F103的主要特性包括:

  • 72MHz系统时钟频率
  • 3个SPI接口
  • 2个I2C接口
  • 5个USART/UART接口
  • 3个12位ADC
  • 多个定时器
  • 丰富的GPIO配置选项

在这里插入图片描述

3.2 LCD12864液晶显示屏

LCD12864是一款128×64点阵的图形型液晶显示模块,内置ST7920控制器,支持串行和并行两种通信方式。主要技术参数如下:

  • 分辨率:128×64点阵
  • 显示颜色:黄绿底黑字或蓝底白字
  • 工作电压:5V
  • 工作电流:约2-3mA
  • 视角:6点钟方向
  • 控制器:ST7920
  • 内置字库:8192个中文汉字(16×16点阵)
  • 内置ROM:128个字符(8×16点阵)

3.3 硬件连接方案

采用串行接口方式连接STM32和LCD12864,需要以下连接:

  • LCD12864的VSS引脚连接GND
  • LCD12864的VDD引脚连接5V电源
  • LCD12864的V0引脚连接电位器用于对比度调节
  • LCD12864的RS(CS)引脚连接STM32的PA0
  • LCD12864的RW(SID)引脚连接STM32的PA1
  • LCD12864的E(SCLK)引脚连接STM32的PA2
  • LCD12864的PSB引脚连接GND(选择串行模式)
  • LCD12864的RST引脚连接STM32的PA3
  • LCD12864的BLA引脚连接5V(背光正极)
  • LCD12864的BLK引脚连接GND(背光负极)

四、软件设计

4.1 系统架构设计

软件系统采用模块化设计,主要包含以下模块:

  1. 系统初始化模块:负责STM32系统时钟、GPIO、SPI等外设的初始化配置
  2. LCD12864驱动模块:实现LCD12864的底层驱动函数,包括写命令、写数据、清屏等操作
  3. 图形绘制模块:实现基本的图形绘制功能,如画点、画线、画矩形等
  4. 波形显示模块:实现正弦函数波形的计算和显示
  5. 主控模块:协调各模块的工作,实现系统的整体功能

4.2 LCD12864驱动程序

LCD12864的串行通信协议采用三线制(CS、SID、SCLK),数据传输时序严格遵循ST7920控制器的规范。以下是LCD12864初始化的核心代码:

#include "stm32f10x.h"

#define LCD_CS_PIN    GPIO_Pin_0
#define LCD_SID_PIN   GPIO_Pin_1
#define LCD_SCLK_PIN  GPIO_Pin_2
#define LCD_RST_PIN   GPIO_Pin_3
#define LCD_PORT      GPIOA

void LCD_GPIO_Init(void)
{
    GPIO_InitTypeDef GPIO_InitStructure;
    
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
    
    GPIO_InitStructure.GPIO_Pin = LCD_CS_PIN | LCD_SID_PIN | LCD_SCLK_PIN | LCD_RST_PIN;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_Init(LCD_PORT, &GPIO_InitStructure);
    
    GPIO_SetBits(LCD_PORT, LCD_CS_PIN);
    GPIO_SetBits(LCD_PORT, LCD_SID_PIN);
    GPIO_SetBits(LCD_PORT, LCD_SCLK_PIN);
    GPIO_SetBits(LCD_PORT, LCD_RST_PIN);
}

void LCD_WriteByte(uint8_t data, uint8_t rs)
{
    uint8_t i;
    uint8_t temp;
    
    GPIO_ResetBits(LCD_PORT, LCD_CS_PIN);
    
    for(i = 0; i < 5; i++) {
        GPIO_ResetBits(LCD_PORT, LCD_SCLK_PIN);
        GPIO_SetBits(LCD_PORT, LCD_SID_PIN);
        GPIO_SetBits(LCD_PORT, LCD_SCLK_PIN);
    }
    
    GPIO_ResetBits(LCD_PORT, LCD_SCLK_PIN);
    if(rs) GPIO_SetBits(LCD_PORT, LCD_SID_PIN);
    else GPIO_ResetBits(LCD_PORT, LCD_SID_PIN);
    GPIO_SetBits(LCD_PORT, LCD_SCLK_PIN);
    
    GPIO_ResetBits(LCD_PORT, LCD_SCLK_PIN);
    GPIO_SetBits(LCD_PORT, LCD_SID_PIN);
    GPIO_SetBits(LCD_PORT, LCD_SCLK_PIN);
    
    for(i = 0; i < 4; i++) {
        temp = data;
        temp = temp << i;
        temp = temp & 0x80;
        
        GPIO_ResetBits(LCD_PORT, LCD_SCLK_PIN);
        if(temp) GPIO_SetBits(LCD_PORT, LCD_SID_PIN);
        else GPIO_ResetBits(LCD_PORT, LCD_SID_PIN);
        GPIO_SetBits(LCD_PORT, LCD_SCLK_PIN);
    }
    
    for(i = 4; i < 8; i++) {
        temp = data;
        temp = temp << i;
        temp = temp & 0x80;
        
        GPIO_ResetBits(LCD_PORT, LCD_SCLK_PIN);
        if(temp) GPIO_SetBits(LCD_PORT, LCD_SID_PIN);
        else GPIO_ResetBits(LCD_PORT, LCD_SID_PIN);
        GPIO_SetBits(LCD_PORT, LCD_SCLK_PIN);
    }
    
    GPIO_SetBits(LCD_PORT, LCD_CS_PIN);
}

void LCD_WriteCommand(uint8_t cmd)
{
    LCD_WriteByte(0xf8, 0);
    LCD_WriteByte(cmd & 0xf0, 1);
    LCD_WriteByte((cmd << 4) & 0xf0, 1);
}

void LCD_WriteData(uint8_t data)
{
    LCD_WriteByte(0xfa, 0);
    LCD_WriteByte(data & 0xf0, 1);
    LCD_WriteByte((data << 4) & 0xf0, 1);
}

void LCD_Init(void)
{
    LCD_GPIO_Init();
    
    GPIO_ResetBits(LCD_PORT, LCD_RST_PIN);
    Delay_ms(10);
    GPIO_SetBits(LCD_PORT, LCD_RST_PIN);
    Delay_ms(10);
    
    LCD_WriteCommand(0x30);
    Delay_ms(5);
    LCD_WriteCommand(0x30);
    Delay_ms(5);
    LCD_WriteCommand(0x0c);
    Delay_ms(5);
    LCD_WriteCommand(0x01);
    Delay_ms(5);
    LCD_WriteCommand(0x06);
    Delay_ms(5);
}

void LCD_Clear(void)
{
    LCD_WriteCommand(0x30);
    LCD_WriteCommand(0x01);
    Delay_ms(10);
}

4.3 正弦函数波形绘制

正弦函数波形的绘制需要将数学上的连续函数转换为离散的点阵显示。LCD12864的分辨率为128×64,我们需要在这个有限的像素空间内绘制出平滑的正弦波形。

正弦函数的基本公式为:y = A × sin(ωx + φ) + k

其中:

  • A:振幅,决定波形的高度
  • ω:角频率,决定波形的周期
  • φ:初相位,决定波形的起始位置
  • k:直流偏置,决定波形的垂直位置

以下是正弦波形绘制的核心代码:

#include <math.h>

#define PI 3.14159265358979323846
#define LCD_WIDTH  128
#define LCD_HEIGHT 64

void LCD_DrawPoint(uint8_t x, uint8_t y)
{
    uint8_t x_addr, y_addr;
    uint8_t bit_data;
    
    if(x >= LCD_WIDTH || y >= LCD_HEIGHT) return;
    
    y_addr = y / 8;
    bit_data = 0x01 << (y % 8);
    
    LCD_WriteCommand(0x80 | y_addr);
    LCD_WriteCommand(0x80 | x);
    LCD_WriteData(bit_data);
}

void LCD_DrawLine(uint8_t x1, uint8_t y1, uint8_t x2, uint8_t y2)
{
    int dx, dy, sx, sy, err, e2;
    
    dx = abs(x2 - x1);
    dy = abs(y2 - y1);
    
    if(x1 < x2) sx = 1;
    else sx = -1;
    
    if(y1 < y2) sy = 1;
    else sy = -1;
    
    err = dx - dy;
    
    while(1) {
        LCD_DrawPoint(x1, y1);
        
        if(x1 == x2 && y1 == y2) break;
        
        e2 = 2 * err;
        
        if(e2 > -dy) {
            err -= dy;
            x1 += sx;
        }
        
        if(e2 < dx) {
            err += dx;
            y1 += sy;
        }
    }
}

void LCD_DrawSineWave(void)
{
    uint8_t x, y;
    float angle;
    float amplitude = 25.0;
    float frequency = 2.0;
    float offset = 32.0;
    
    LCD_Clear();
    
    LCD_WriteCommand(0x34);
    LCD_WriteCommand(0x36);
    
    for(x = 0; x < LCD_WIDTH; x++) {
        angle = (float)x * frequency * 2.0 * PI / LCD_WIDTH;
        y = (uint8_t)(offset + amplitude * sin(angle));
        
        LCD_DrawPoint(x, y);
        
        if(x > 0) {
            uint8_t prev_x = x - 1;
            float prev_angle = (float)prev_x * frequency * 2.0 * PI / LCD_WIDTH;
            uint8_t prev_y = (uint8_t)(offset + amplitude * sin(prev_angle));
            LCD_DrawLine(prev_x, prev_y, x, y);
        }
    }
    
    LCD_WriteCommand(0x30);
}

void LCD_DisplayText(uint8_t x, uint8_t y, char *str)
{
    LCD_WriteCommand(0x80 | y);
    LCD_WriteCommand(0x80 | x);
    
    while(*str != '\0') {
        LCD_WriteData(*str);
        str++;
    }
}

4.4 主程序设计

主程序负责系统的初始化和功能协调,通过定时器实现波形的动态刷新,或者通过按键实现不同参数波形的切换。

int main(void)
{
    SystemInit();
    
    LCD_Init();
    LCD_Clear();
    
    LCD_DisplayText(0, 0, "Sine Wave Demo");
    Delay_ms(1000);
    
    LCD_DrawSineWave();
    
    LCD_DisplayText(0, 2, "y=A*sin(wx+phi)+k");
    LCD_DisplayText(0, 4, "A=25, w=2, phi=0");
    LCD_DisplayText(0, 6, "k=32");
    
    while(1) {
        Delay_ms(1000);
    }
}

void Delay_ms(uint32_t ms)
{
    uint32_t i, j;
    for(i = 0; i < ms; i++)
        for(j = 0; j < 9000; j++);
}

五、关键技术点分析

5.1 串行通信时序

LCD12864的串行通信采用SPI时序,但与标准SPI有所不同。ST7920控制器定义了特殊的通信协议,每个字节传输需要先发送5个同步字节,然后发送RS位和数据位。这种设计虽然增加了通信开销,但提高了通信的可靠性。

5.2 图形绘制算法

在点阵显示屏上绘制平滑曲线需要采用适当的算法。本项目使用Bresenham直线算法来连接离散的正弦函数点,这种方法计算效率高,适合在资源有限的嵌入式系统中使用。

5.3 浮点数运算优化

STM32F103具有硬件浮点运算单元,但为了提高运算效率,在实际应用中可以考虑使用定点数运算代替浮点数运算,或者使用查表法预先计算正弦函数值。

5.4 显示缓冲区管理

为了提高显示效率,可以建立显示缓冲区,先在内存中完成图形绘制,然后一次性更新到LCD显示屏。这种方法可以减少LCD的访问次数,提高显示速度。

六、项目扩展与应用

6.1 功能扩展

  1. 多波形显示:扩展支持余弦函数、方波、三角波等多种波形
  2. 参数调节:通过按键或电位器实时调节波形的振幅、频率、相位等参数
  3. 动态显示:实现波形的滚动显示,模拟示波器功能
  4. 数据存储:将波形数据存储到SD卡,实现数据记录功能

6.2 应用场景

  1. 教学演示:用于数学和物理教学,直观展示周期函数的特征
  2. 信号发生器:配合DAC芯片,实现可调参数的信号发生功能
  3. 仪器显示:作为各种测量仪器的显示界面
  4. 工业控制:用于工业自动化设备的参数显示和监控

七、总结

本项目通过STM32驱动LCD12864显示正弦函数波形,展示了嵌入式系统图形显示的基本原理和实现方法。项目涵盖了硬件设计、软件编程、算法实现等多个方面的知识,是学习STM32嵌入式开发的综合性实践项目。

通过本项目的学习,读者可以掌握STM32的GPIO配置、串行通信、定时器使用等基本技能,理解图形显示的原理和方法,为后续更复杂的项目开发打下坚实的基础。项目的代码结构清晰,功能模块化,便于学习和扩展。

项目采用开源方式发布,欢迎广大爱好者学习交流,共同进步。希望这个项目能够帮助更多人了解嵌入式开发的魅力,激发对电子技术的兴趣和热情。

八、参考资料

  1. ST7920 LCD控制器数据手册
  2. STM32F103参考手册
  3. LCD12864液晶显示屏技术规格书
  4. 嵌入式系统设计与应用
  5. 数字信号处理基础
    在这里插入图片描述

大概一个月前,门牙一颗开始渐渐碎裂,一点一点的碎片掉下来还是很让人心慌的, 牙签往里捅一捅能感觉有个坑,一捅一疼,门牙最后出现了大概一毫米能卡进指甲的缝,



老实说不好看是次要的,担心进一步恶化才是想处理的主要原因,

12 号放假了想看看牙,离家最近的口腔门诊关门了,走到远一些的门诊看了个价目表,补一颗大概三百块总费用,医保定点,但只能走个人账户,不走统筹,



网上搜了下最吸睛的是个连锁的某某菲尔,在医疗保障局网站( https://wjw.sz.gov.cn/bmfw/wycx/fwyl/yycx/ )能查到总院是二级营利性口腔医院,但不清楚这代表什么,

官网有在线客服我想问问是否支持社保和统筹,但这客服好像只会说套话,一点有用信息都没有,先让我加微信拍照看看牙,然后说牙缝补不了用不了医保,要考虑贴面或者牙冠,我质疑,他又说可以约个免费检查,说医生不是神仙不能在网上就确认方案, 合着照片是白看的,这套话说的我很没安全感,决定上大医院检查了,

龙华区人民医院,要提前预约,牙体牙髓病科,看了下 18 号初二一大堆医生有空,其他基本没时间,最后在医院自己网站预约到年前唯一一个医师唯一一个有号的时间,今天 15 号去看,

提前预约, 去医院当天付挂号费( 25-15 ),到口腔门诊楼层机器上取不到号,找人工就能取到号,搞不懂,给我的感觉机器似乎是和 160 合作的,不在 160 预约的号就取不了,包括医院自己的公众号进入自家的网站预约的也是二等公民的感觉,

取号后看医生,先说了我的目的,就是补一个门牙,顺便整体检查一下所有牙齿,于是医生先给我开了个牙片,扫码付费( 50-27.5 ),然后到对门拍牙片,



站正了,戴个挺重的帽子,咬住一个套着一次性套的塑料片,脸旁两个 45°弧形的什么东西绕着我转大概一分钟就好了,



完事只让我用手机拍电脑上的牙片就能回去看医生了,没有纸质的牙片给我,



回去医生在给别人处理, 等了大概半个小时到我,躺了五分钟医生才来开始,

过程手机开了录音和转文字,共 37 分钟,但是听不太清楚,转文字记录了很多细微的其他医生闲聊的声音,



开始先检查一下,主要就是说我后牙磨损严重,说也不是说那么严重,但我还年轻就磨损成这样,问我有没有睡觉磨牙,应该没有,没人说过我磨牙,不过也可能是打呼噜严重盖过了,

后牙侧面有洞有蛀有隐裂纹,不能咬太硬的东西,不然裂成两半可能要拔牙,

左下右下各一颗建议补,右上一颗问题比较小,想补的话一次性都能补掉,

没提到牙片上的一颗横智齿,

然后就开始处理门牙,

全程有个棉花状的东西挡住上嘴唇,还有个支架咬住防止闭嘴,

全程好像是两个人,一个拿着管子专门在吸水,

先磨掉蛀牙再补,磨了几十下。每一下都有神经痛的感觉,刺刺的。很吓人,

管子在嘴里一直吸口水和偶尔喷的水,但偶尔还是忍不住咽一点。

磨完开始补,补牙过程有一次什么东西塞进牙缝怼到牙龈的肉疼感,不是很疼但忍不住发声,医生马上就说是有点疼正常的,

补完之后又磨了十几下,不疼,应该是在磨树脂假牙。但最后磨的一下又突然疼了一下,像是磨到旁边的门牙了,但看感觉没什么问题。

补后修完有两次让我咬一咬动一动看有没有挡住,

完事后边上放了杯温水给我漱口,

医生交代最近别吃太冷太烫的,万一发炎了可能要做根管,要是没什么感觉补好就行,

补的牙不能嗑瓜子这种硬的,保护好能用很久的,要注意刷牙,用牙线,不然可能还会蛀,没说具体能用多久,留了个联系方式,说是 3 个月内掉了的话免费处理。超过了时间有问题也可以直接联系。

结束之后才开单让我缴费( 392.9-215.16 ),分好多项目总和,最贵的一项 200 ,事前只有提一嘴补一颗大概三百多一半统筹一半个人一点点自费,



补完表面有点坑坑洼洼的看不出来但是舌头舔一舔很明显不光滑,



问了下磨了多少好牙,说是蛀的范围挺大的。磨掉挺多的,事前外表看上去就一条缝大概一毫米,可牙签刮一刮确实感觉里面有个坑。

牙片明显有颗智齿横了,但医生没主动提起,明明一开始就说是想整体检查才拍片的,但医生似乎没怎么看牙片,

因此我主动问了下这个智齿,医生这才仔细看牙片,说看起来可能长在了牙神经上,拔掉风险可能比较大,但也不一定,可能是错位的,需要做 CT 确认一下。如果伤到牙神经的话无法恢复,会一直有麻药没过的感觉,但不会面瘫,别人看不出来,

另外门牙缝上方挨着牙龈的位置有个很小的洞漏气卡脏东西,一直是这样的,怀疑蛀牙也是这里清洁不干净导致的, 补牙后这个洞还在,原以为会被填上,

修好了闭嘴吸一吸,还有一点点凉凉的磨牙时的神经痛的感觉。

背着包去的,完全没用上,全程只用到了手机。连身份证都没用,甚至没有什么单子要给我带走。
带了瓶东方树叶放包里,回家了才发现忘了喝。

完事一个半小时后吃饭, 饭后大概一个小时内牙齿比刚补完更敏感一些,饭后四个小时后基本上没有感觉了,

加上来回公交费,总费用,一档医保,

(25+50+392.9) − (15+27.5+215.16) +3*2= 216.24 元,

这年头,谁家里还没个“小爱同学”?

但说实话,用久了你一定也发现了:

问点复杂的,她就开始装傻——
“哎呀,这个问题难倒我了”;
想让她写个周报、出个方案、分析点东西?
除了放歌、设闹钟,基本属于智商掉线状态。

如果我告诉你:只要 5 分钟,就能让家里这个“只会听指令的小爱”,直接升级成能写代码、能做方案、能陪你聊天的 AI 大神,你愿不愿意折腾一下?

今天这篇文章,就是一个真正能照着做、不踩坑的保姆级教程
我们用一个叫 Lerio AI Speaker 的工具,
给小爱同学来一次“原地飞升”


一、为什么要折腾这一出?

一句话总结:

👉 给小爱同学换个“更聪明的大脑”。

升级前的小爱:

  • 只能执行固定指令
  • 对话生硬,经常答非所问
  • 稍微复杂一点的问题就“我还没学会”

升级后的小爱:

  • 接入主流大模型(通义千问 / 智谱 AI / DeepSeek / 小米自研等)
  • 能理解上下文,正常聊天
  • 能写方案、改文案、写代码
  • 甚至可以当孩子的学习助手、你的情绪垃圾桶

最关键的一点:不用买新硬件。
你家现在那个小爱音箱,直接就能用。


二、准备工作(3样东西就够)

在开始之前,先确认你有下面这些:

1️⃣ 小米账号(已经绑定小爱音箱)
2️⃣ Lerio AI Speaker 账号(音箱和大模型之间的“中转站”)
3️⃣ Xiaomi MiMo API 开放平台账号(用小米账号就能登录)

没什么技术门槛,全程网页操作。


三、手把手教程(一步一步来)

1️⃣ 登录 Lerio 控制台

打开:
👉 https://mi.lerio.cn/dashboard

注册并登录后,你会看到一个非常清爽的后台界面。


2️⃣ 授权你的小米账号(关键步骤)

在后台找到 「我的账号」 → 立即配置

这里需要填写:

  • 小米 ID
  • 登录用的 passToken

这一步的作用:
👉 让 Lerio 拿到控制你音箱的权限,否则后面没法通信。

# passToken 获取方法
1. 使用 Chrome 浏览器访问小米账号官网并登录
2. 按 F12 打开开发者工具
3. 切换到 Application(应用)
4. 左侧 Cookies → https://account.xiaomi.com
5. 找到 passToken,复制它

注意:不要主动退出小米账号,否则 passToken 会失效

PixPin_2026-02-12_16-09-42.png

这一块很多人会紧张,其实就是读取 Cookie,用完随时可以解绑。

3️⃣ 创建使用卡槽

  • 新注册账号会送 3 天试用插槽
  • 高峰期可能会有点拥挤
  • 如果想长期稳定用,可以开通付费(价格还能接受)

PixPin_2026-02-12_16-16-26.png


4️⃣ 创建 AI 角色(最好玩的地方)

这里可以给小爱定一个“人设”。

比如:

  • 毒舌但专业的翻译官
  • 耐心讲解的老教授
  • 给孩子讲故事的百科老师

你写什么,它就按什么性格跟你说话。

PixPin_2026-02-12_16-21-19.png


5️⃣ 添加你的小爱音箱

绑定小米账号后:
👉 系统会自动拉取你名下所有的小爱设备。

选中你要用的那个即可。

PixPin_2026-02-12_16-25-12.png


6️⃣ 申请大模型 API Key

这里我们用 小米 Xiaomi MiMo 模型 举例:
👉 https://platform.xiaomimimo.com/#/console/api-keys

创建并复制你的 API Key。

PixPin_2026-02-12_16-31-07.png


7️⃣ 关联大模型(装上灵魂)

进入设备 → AI 服务配置

  • 选择你要用的模型
  • 填入刚才申请的 API Key

PixPin_2026-02-12_16-43-52.png


8️⃣ 启动服务,开始对话

使用方式很简单:

👉 先唤醒小爱 → 再说「请问 + 你的问题」

可以用你刚才设定的 AI 角色关键词,测试是否生效。

PixPin_2026-02-12_16-49-02.png

PixPin_2026-02-12_16-57-59.png


四、升级后的小爱,能干啥?

场景一:深夜情绪救援

  • 以前:

    “我可以为你播放一首伤感的歌”
  • 现在:

    “听得出来你很难受,要不要慢慢说给我听?”

场景二:办公摸鱼神器

  • 写周报
  • 出方案
  • 改文案
  • 想脚本

一句话,全都能接住。


场景三:孩子的十万个为什么

不用再照本宣科,
它能用孩子听得懂的话,把复杂问题讲清楚。


五、一些实用小提醒

1️⃣ 延迟是正常的
云端大模型需要 1~2 秒思考时间。

2️⃣ 随时可解绑
不想用了,后台一键关闭,小爱立刻恢复原样。


写在最后

当那个原本只会报天气的小音箱,
突然开始跟你聊人生、讲逻辑、写方案,
你会发现:

👉 这 5 分钟,真的值。

如果你在配置过程中遇到问题,
或者想接入更强的模型,
欢迎在评论区留言,我会一步步帮你搞定。

关注我,后面继续分享更多智能家居和 AI 的“野路子玩法”。

原文链接:https://www.nocobase.com/cn/blog/nocobase-2-0-officially-released

NocoBase 2.0 是一次面向 复杂应用构建与规模化部署 的重要升级。本次版本在 AI 能力、应用架构、数据编辑体验以及前端事件流等方面进行了系统性增强,同时全面推进 V2 页面与核心能力的适配。

新特性

AI 员工

AI 能力正式下沉至内核,成为 NocoBase 的一等公民,支持通过插件体系持续扩展:

  • 将 AI 移至内核,提供插件化扩展能力
  • 升级并优化 LangChain 相关依赖,提升稳定性与可扩展性
  • 简化 AI 员工的交互流程,降低配置与使用门槛

20260214075059

参考文档:

应用监管器

应用监管器插件用于 统一发现、调度与管理多个 NocoBase 应用实例,适用于多应用与多环境部署场景。

  • 支持应用自动发现与集中管理
  • 通过共享内存机制提升实例间协作效率
  • 支持多环境混合部署,满足复杂交付需求

共享内存
20260214075803

多环境混合部署
20260214075815

参考文档:

工作流画布编排能力增强

支持拖拽节点调整顺序

image-8ajlez.png

支持复制粘贴节点

image-nskgho.png

子表格(行内编辑 / 弹窗编辑)

为满足不同复杂度的关联数据编辑需求,NocoBase 提供两种子表格编辑模式,可按场景灵活选择:

  • 子表格(行内编辑):直接在表格中编辑关联数据,操作高效,适合快速录入与批量修改
  • 子表格(弹窗编辑):通过弹窗表单编辑数据,支持更复杂的字段类型与校验逻辑,适用于高复杂度场景

子表格(行内编辑)
20260214080224

子表格(弹窗编辑)
20260214080233

参考文档:

字段赋值(新版)

全新的字段赋值对表单数据的 初始化与写入逻辑 进行了统一与强化,显著提升可理解性与一致性:

  • 提供 统一的字段赋值配置入口,减少分散配置带来的理解成本
  • 字段赋值逻辑 不再依赖字段组件类型,数据行为更加稳定、可预测
  • 支持 关系字段的字段级赋值配置,满足复杂关联建模需求
  • 同时支持 默认值固定值 两种赋值方式,覆盖初始化与强制写入场景
  • 旧版「字段默认值」已废弃,请使用新版字段赋值

20260214080932

参考文档:

  • 字段赋值(文档即将上线)

事件流触发时机

事件流在执行时,严格按照 Event → Flow → Step 的层级顺序运行,并在各层级的执行前后触发对应 Hook,便于精细化控制与扩展。

event:
  before:
    - track_event_start
  flows:
    - name: flow1
      before:
        - track_flow_start
      steps:
        - name: step1
          before: [track_step_start]
          run: do_something
          after: [track_step_done]
      after:
        - track_flow_end
    - name: flow2
      ...
    - name: flow3
      ...
  after:
    - track_event_end

20260214081527

参考文档:

新增 2.0 适配

批量编辑

20260214083041

参考文档:

复制

20260214083146

参考文档:

区块高度

20260214083319

参考文档:

表格行拖拽排序

20260214085152

数据加载方式

20260214083433

参考文档:

表单支持展示关系字段的字段

20260214083517

参考文档:

页面(V2)本地化支持

V2 页面已全面支持本地化,覆盖 页面、区块、操作、字段 等多个层级。

启用本地化插件后,系统将自动收集缺失翻译词条,并集中展示于本地化管理列表,便于统一维护。

在 JS 区块中,可通过 ctx.t() 获取本地化文案,并支持变量插值:

const label = ctx.t('Your name is {{name}}', {
  name: await ctx.getVar('ctx.user.nickname')
});
ctx.render(label);

审批 2.0

新创建的审批工作流均以 2.0 的区块编排界面。1.x 已配置的仍支持继续使用,如 1.x 已配置的审批希望使用 2.0 的界面编排,需要选择 v2 版本重新配置界面,且配置后不能再还原到 1.x。

配置发起人的界面

image-ba3ann.png

配置审批人的界面

image-dl448q.png

抄送 2.0

新创建的抄送节点,被抄送人的查看界面均以 2.0 的区块编排,1.x 已配置的仍支持继续使用,如 1.x 已配置的抄送希望使用 2.0 的界面编排,需要选择 v2 版本重新配置界面,且配置后不能再还原到 1.x。

image-z26oib.png

尚未适配的功能

以下功能模块尚未在 2.0 中完成适配,将在后续版本中逐步升级:

功能模块当前替代方案
自定义请求工作流请求节点
浏览器打印JS 操作
分步表单JS 区块
树筛选区块JS 区块
日历区块JS 区块
自定义变量事件流
甘特图区块JS 区块
看板区块JS 区块
文本复制事件流
表格列设置JS 操作
样式联动规则事件流
复制文本快捷键事件流
二维码字段JS 字段
扫码录入事件流
嵌入 NocoBase
中国行政区字段
编码字段
公开表单
工作流人工节点待办
提交成功后事件流
表单数据模板事件流

道路表面多类型缺陷的图像识别数据集分享(适用于目标检测任务)

数据集分享

如需下载该数据集,可通过以下方式获取:

引言

随着城市化与交通运输业的快速发展,道路基础设施的健康状况直接关系到出行安全与城市运行效率。据统计,全球每年因道路缺陷引发的交通事故造成数十万人死亡,经济损失高达数千亿美元。长期高强度的使用、气候变化以及施工质量差异,都会导致道路表面出现裂缝、坑洼、井盖下沉及修补不良等缺陷。这些问题不仅影响驾驶舒适度,还可能引发交通事故,增加道路养护成本。

传统的道路巡检方式主要依靠人工目测或简单的仪器检测,存在效率低、准确性不足、主观性强等局限。例如,人工巡检需要大量的人力物力,检测速度慢,难以实现对大面积道路的快速覆盖;检测结果依赖于巡检人员的经验和责任心,容易出现漏检、误检等情况。

近年来,随着深度学习与计算机视觉技术的飞速发展,利用图像识别算法实现道路缺陷的自动化检测与分类成为研究热点。这种方法通过训练深度学习模型,从道路图像中自动识别缺陷类型和位置,具有高效、准确、可扩展性强等优点。然而,要开发出准确、可靠的道路缺陷检测模型,高质量、多样化且已标注的数据集是关键基础。

为满足这一需求,我们构建了一个涵盖多类缺陷的道路表面缺陷数据集,共计6000张高分辨率图片,涵盖了常见的裂缝、井盖、坑洼、修补区域等多种复杂场景。该数据集采用YOLO项目标准格式,并已完成train、val、test划分与标注,可直接用于深度学习模型的训练与验证。本文将对该数据集进行详细介绍,包括数据集背景、概述、结构、特点、适用场景等内容,旨在为相关研究和应用提供参考。

数据集背景

道路是城市基础设施的重要组成部分,其质量直接影响到交通运行效率和交通安全。据交通运输部统计,我国公路总里程已超过530万公里,其中高速公路总里程超过16万公里,居世界第一。随着公路里程的不断增加和交通量的持续增长,道路养护任务日益繁重。

道路表面缺陷是道路养护中的常见问题,主要包括以下几种类型:

  1. 裂缝:由于路面材料老化、温度变化、荷载作用等原因导致的路面开裂,是最常见的道路缺陷之一。裂缝如果不及时处理,会逐渐扩大,导致路面结构损坏。
  2. 坑洼:由于路面材料松散、水损害、重载车辆碾压等原因导致的路面局部下沉,形成坑洞。坑洼会影响车辆行驶稳定性,增加燃油消耗,甚至引发交通事故。
  3. 井盖:道路上的井盖如果安装不规范或长期受到车辆碾压,会出现下沉、凸起、破损等问题,影响道路平整度和行车安全。
  4. 修补区域:道路修补后形成的区域,如果修补质量不佳,会出现修补材料脱落、与原路面结合不良等问题,影响道路美观和使用寿命。

传统的道路缺陷检测方法主要包括以下几种:

  1. 人工巡检:巡检人员通过肉眼观察或简单工具检测道路缺陷,记录缺陷位置和类型。这种方法效率低,劳动强度大,容易受到人为因素影响。
  2. 车载检测设备:使用安装在车辆上的激光测距仪、摄像头等设备,采集道路表面数据,然后通过人工分析或简单的算法处理识别缺陷。这种方法效率较高,但设备成本昂贵,数据处理复杂。
  3. 地面激光扫描:使用地面激光扫描仪采集道路表面三维数据,通过分析数据识别缺陷。这种方法精度高,但操作复杂,成本高昂,难以实现大面积检测。

基于深度学习的图像识别技术为道路缺陷检测提供了新的解决方案。这种方法通过训练深度学习模型,从道路图像中自动识别缺陷类型和位置,具有以下优势:

  1. 高效快速:可以在车辆行驶过程中实时采集和分析道路图像,大大提高检测效率。
  2. 客观准确:不受操作人员经验和主观因素的影响,检测结果更加客观可靠。
  3. 成本低廉:只需要普通的摄像头和计算设备,成本远低于传统的检测设备。
  4. 可扩展性强:可以通过增加训练数据和优化模型,不断提高检测精度和覆盖范围。

然而,要开发出准确、可靠的道路缺陷检测模型,高质量、多样化且已标注的数据集是关键基础。目前,公开可用的道路缺陷图像数据集存在以下问题:

  1. 样本数量不足:许多数据集样本数量较少,难以支持深度学习模型的充分训练。
  2. 类别覆盖有限:部分数据集只覆盖少数几种道路缺陷类型,难以满足实际检测需求。
  3. 场景单一:许多数据集的图像拍摄场景较为单一,难以适应实际应用中的复杂场景。
  4. 标注质量参差不齐:一些数据集的标注不够准确或不一致,影响模型训练效果。

为应对这些挑战,我们构建了本数据集,旨在为道路缺陷检测算法的研究与落地提供高质量的数据支持。

数据集概述

本数据集专注于道路表面缺陷检测与识别,共计6000张高分辨率图片,涵盖了常见的裂缝、井盖、坑洼、修补区域等多种复杂场景。所有图片均经过精心筛选与标注,确保数据的准确性与代表性。

基本信息

  • 图片总数:6000张
  • 图像格式:JPG
  • 标注格式:YOLO格式(每张图片对应一个txt标注文件)
  • 类别数量:8类
  • 类别定义

    1. Crack —— 道路裂缝
    2. Manhole —— 井盖
    3. Net —— 网状裂缝
    4. Pothole —— 坑洼
    5. Patch-Crack —— 修补裂缝
    6. Patch-Net —— 修补网状裂缝
    7. Patch-Pothole —— 修补坑洼
    8. Other —— 其他异常
  • 数据划分

    • 训练集(train):70%(约4200张)
    • 验证集(val):20%(约1200张)
    • 测试集(test):10%(约600张)
  • 图像特征

    • 分辨率统一为高清规格,适合深度学习训练
    • 涵盖白天、夜间、阴影、雨后等复杂环境,增强鲁棒性
    • 不同路段(高速、城市道路、乡村道路)均有采样,保证多样性

文件结构

本数据集采用标准的文件夹结构进行组织,具体如下:

dataset/
├── train/
│   ├── images/
│   └── labels/
├── val/
│   ├── images/
│   └── labels/
└── test/
    ├── images/
    └── labels/

其中,images文件夹存放不同划分的图像文件,labels文件夹存放对应的YOLO格式标注文件。

标注格式

本数据集采用YOLO标准格式进行标注,每个标注文件对应一张图像,文件名与图像文件名相同,后缀为.txt。标注文件的每一行表示一个目标,格式如下:

<class_id> <x_center> <y_center> <width> <height>

其中,class_id为类别编号,x_centery_center为目标中心点的归一化坐标,widthheight为目标的归一化宽高。坐标值和宽高均为相对于图像宽度和高度的归一化值,范围在0到1之间。

数据集详情

数据采集与处理

本数据集的图像来源于多个城市的道路巡检,涵盖了不同类型、不同等级的道路。为确保数据集的质量和多样性,我们在数据采集过程中遵循了以下原则:

  1. 多场景覆盖:采集不同城市、不同路段、不同天气条件下的道路图像,确保数据集能够覆盖各种实际场景。
  2. 多缺陷类型:采集包含裂缝、井盖、坑洼、修补区域等多种缺陷类型的图像,确保数据集的类别多样性。
  3. 高质量图像:使用高分辨率摄像头采集图像,确保图像清晰,缺陷特征明显。
  4. 标注准确性:由专业人员对图像中的缺陷进行手动标注,确保标注的准确性和一致性。

在数据处理过程中,我们对图像进行了以下处理:

  1. 图像预处理:对采集到的图像进行去噪、增强等处理,提高图像质量和缺陷的可见性。
  2. 目标标注:由专业人员使用标注工具对图像中的缺陷进行手动标注,绘制边界框并标记类别。
  3. 格式转换:将标注结果转换为YOLO标准格式,生成对应的.txt标注文件。
  4. 数据划分:按照70:20:10的比例将数据划分为训练集、验证集和测试集,确保数据划分的合理性。
  5. 质量检查:对处理后的数据进行质量检查,确保标注的准确性和一致性,去除质量不佳的图像。

类别分布

本数据集包含8类道路表面缺陷,各类别的样本数量分布如下:

类别编号类别名称样本数量(约)说明
0Crack1500+道路表面的线性裂缝
1Manhole1200+道路上的井盖及其周围区域
2Net800+道路表面的网状裂缝
3Pothole1000+道路表面的坑洼
4Patch-Crack500+修补后的裂缝区域
5Patch-Net300+修补后的网状裂缝区域
6Patch-Pothole400+修补后的坑洼区域
7Other300+其他道路表面异常

注:样本数量为估计值,实际样本数量可能因数据采集和处理过程而有所差异。

场景多样性

本数据集的图像涵盖了多种实际场景,包括:

  1. 不同道路类型:高速公路、城市主干道、次干道、乡村道路等。
  2. 不同天气条件:晴天、阴天、雨天、雪天等。
  3. 不同光照条件:白天、黄昏、夜间、阴影等。
  4. 不同季节:春季、夏季、秋季、冬季。
  5. 不同路面材料:沥青路面、水泥路面、砖石路面等。

这种场景多样性使得数据集能够更好地模拟实际道路环境,提高模型的泛化能力。

image-20250819151030455

image-20250819150906330

image-20250819150951721

image-20250819151005920

数据处理流程

为确保数据集的质量和可用性,我们在构建过程中遵循了严格的数据处理流程,具体步骤如下:

flowchart TD
    A[数据采集] --> B[图像预处理]
    B --> C[质量评估]
    C --> D[目标标注]
    D --> E[标注验证]
    E --> F[格式转换]
    F --> G[数据划分]
    G --> H[质量检查]
    H --> I[数据集发布]
  1. 数据采集:使用高分辨率摄像头在不同场景下采集道路表面图像
  2. 图像预处理:对采集到的图像进行去噪、增强等处理,提高图像质量
  3. 质量评估:对预处理后的图像进行质量评估,筛选出清晰、具有代表性的图像
  4. 目标标注:由专业人员对图像中的缺陷进行手动标注,绘制边界框并标记类别
  5. 标注验证:对标注结果进行验证,确保标注的准确性和一致性
  6. 格式转换:将标注结果转换为YOLO标准格式,生成对应的.txt标注文件
  7. 数据划分:按照70:20:10的比例将数据划分为训练集、验证集和测试集
  8. 质量检查:对处理后的数据进行最终质量检查,确保数据的完整性和一致性
  9. 数据集发布:打包发布数据集,提供下载链接

数据集特点

本数据集具有以下显著特点:

1. 样本数量充足

共计6000张高分辨率图片,涵盖了8类道路表面缺陷,每个类别均有足够的样本量,确保模型训练的充分性。与其他同类数据集相比,本数据集的样本数量更多,类别覆盖更全面。

2. 场景多样性强

数据集涵盖了不同城市、不同道路类型、不同天气条件、不同光照条件下的道路图像,场景多样性强。这种多样性使得模型在训练过程中能够学习到不同场景下的缺陷特征,提高模型的泛化能力。

3. 标注质量高

所有图像均由专业人员进行手动标注,标注准确、一致。标注过程中严格遵循统一的标注规范,确保边界框的准确性和类别的一致性。高质量的标注为模型训练提供了可靠的基础。

4. 格式标准统一

数据集采用YOLO标准格式进行标注,已按照训练集、验证集和测试集进行了合理划分,可直接用于主流目标检测框架的训练和验证。用户无需进行格式转换或数据划分,开箱即用,提高了数据集的易用性。

5. 应用价值广泛

数据集涵盖了道路表面常见的多种缺陷类型,应用价值广泛。可用于道路缺陷检测、智能交通系统、自动驾驶感知等多个领域,为相关研究和应用提供数据支持。

6. 贴近实际场景

数据集的图像均来自实际道路巡检,贴近实际应用场景。包含了各种复杂情况,如不同光照、不同天气、不同路面材料等,使得模型在实际应用中能够更好地适应各种情况。

7. 分辨率高

数据集的图像分辨率统一为高清规格,缺陷特征清晰可见。高分辨率图像有助于模型学习到更多的细节特征,提高检测精度。

适用场景

本数据集可广泛应用于以下研究与工程应用场景:

1. 道路表面缺陷检测

可直接用于训练YOLOv5、YOLOv8等目标检测模型,实现对道路表面缺陷的自动检测和分类。通过在本数据集上训练模型,可以提高道路缺陷检测的准确率和效率,为道路养护提供技术支持。

2. 智能交通系统(ITS)

可作为智能交通系统的感知层数据支撑,用于城市道路养护、交通安全监测等。例如,可以集成到城市交通管理系统中,实时监测道路状况,及时发现和处理道路缺陷,提高道路养护效率和交通安全水平。

3. 自动驾驶感知模块

在自动驾驶系统中,道路表面信息是重要的环境感知因素。本数据集可用于训练自动驾驶系统的感知模块,提高车辆对道路表面状况的识别能力,为路径规划和驾驶决策提供依据。

4. 深度学习算法研究

可作为目标检测、分割、异常检测等领域的benchmark,用于验证新模型的有效性。例如,可以用于比较不同目标检测算法在道路缺陷检测任务上的性能,或者用于研究新的目标检测方法和技术。

5. 实际工程落地

适用于道路养护部门开发的AI道路巡检机器人或无人机检测系统,帮助减少人力巡检成本,提高检测效率。例如,可以部署在巡检车辆或无人机上,实现对道路的自动巡检和缺陷检测。

6. 道路养护决策支持

可用于构建道路养护决策支持系统,基于检测结果评估道路状况,制定合理的养护计划。例如,可以根据缺陷的类型、严重程度和分布情况,预测道路的使用寿命,优化养护资源分配。

7. 城市管理系统

可集成到城市管理系统中,作为智慧城市建设的一部分。例如,可以与地理信息系统(GIS)结合,实现道路缺陷的空间分布分析,为城市规划和建设提供参考。

模型训练建议

针对本数据集的特点,我们提出以下模型训练建议:

1. 模型选择

对于道路缺陷检测任务,建议使用以下模型:

  • YOLOv8:性能均衡,适合大多数应用场景,特别是需要实时检测的场景
  • YOLOv11:最新版本,精度和速度都有提升,适合对性能要求较高的场景
  • Faster R-CNN:精度较高,适合对精度要求高、对速度要求不高的场景
  • EfficientDet:效率较高,适合资源受限的场景

2. 数据增强

由于道路缺陷检测任务的特殊性,建议使用以下数据增强技术:

  • 随机翻转:水平翻转和垂直翻转,增加数据多样性
  • 随机旋转:随机旋转图像,增强模型对缺陷不同角度的适应能力
  • 亮度和对比度调整:随机调整图像的亮度和对比度,增强模型对不同光照条件的适应能力
  • 随机裁剪:随机裁剪图像的一部分,增强模型对缺陷不同大小的适应能力
  • 马赛克增强:将多张图像拼接成一张,增加小目标的数量
  • 高斯噪声:添加适量的高斯噪声,增强模型对噪声的鲁棒性

3. 训练策略

  • 批量大小:根据硬件资源选择合适的批量大小,建议使用8-32
  • 学习率:初始学习率设置为0.001,使用余弦退火策略调整学习率
  • 优化器:使用AdamW优化器,权重衰减设置为0.0005
  • 训练轮数:建议训练100-300轮,根据验证集性能动态调整
  • 早停策略:当验证集性能连续多个轮次没有提升时,停止训练
  • 迁移学习:可以使用在COCO数据集上预训练的模型权重,加速模型收敛

4. 评估指标

使用以下指标评估模型性能:

  • mAP@0.5:IoU阈值为0.5时的平均精度
  • mAP@0.5:0.95:IoU阈值从0.5到0.95,步长为0.05时的平均精度
  • 精确率:正确预测的正样本占总预测正样本的比例
  • 召回率:正确预测的正样本占总实际正样本的比例
  • F1-score:精确率和召回率的调和平均值
  • 推理速度:模型的推理时间,用于评估实时性能

5. 模型优化

  • 模型剪枝:去除冗余的神经元和连接,减少模型大小
  • 模型量化:将模型权重从32位浮点数量化为8位整数,减少模型大小和计算复杂度
  • 知识蒸馏:利用大模型的知识指导小模型的训练,提高小模型的性能
  • 部署优化:针对不同部署平台进行优化,如TensorRT、ONNX Runtime等

应用案例

案例一:智能道路巡检系统

基于本数据集训练的YOLOv8模型,开发了一款智能道路巡检系统。该系统通过安装在巡检车辆上的摄像头实时采集道路图像,然后利用训练好的模型自动识别图像中的道路缺陷。系统会生成巡检报告,标记出缺陷位置、类型和严重程度,并提供养护建议。该系统已在多个城市的道路养护部门试用,巡检效率提高了70%以上,缺陷检测准确率达到90%以上。

案例二:城市道路养护管理系统

将训练好的模型集成到城市道路养护管理系统中,实现对城市道路状况的实时监测和管理。系统通过分析巡检车辆采集的图像,自动识别道路缺陷,生成缺陷分布图和养护优先级报告。养护部门可以根据这些信息制定合理的养护计划,优化养护资源分配。该系统已在某省会城市部署,道路养护效率提高了50%以上,养护成本降低了30%以上。

案例三:自动驾驶感知系统

利用本数据集训练的模型,开发了一款自动驾驶感知系统的道路表面状况检测模块。该模块通过车载摄像头采集道路图像,实时识别道路表面的缺陷,如裂缝、坑洼、井盖等,并将这些信息传递给自动驾驶决策系统。决策系统会根据道路状况调整行驶策略,如减速、绕避等,提高自动驾驶的安全性和舒适性。该模块已在某自动驾驶测试车辆上试用,车辆对道路缺陷的识别准确率达到95%以上,能够及时调整行驶策略,避免因道路缺陷引发的安全问题。

案例四:无人机道路巡检系统

将训练好的轻量化模型部署到无人机上,开发了一款无人机道路巡检系统。该系统通过无人机航拍获取道路图像,然后利用训练好的模型自动识别图像中的道路缺陷。无人机可以快速覆盖大面积道路,特别适合交通繁忙的高速公路和难以到达的偏远地区。该系统已在某高速公路管理局试用,巡检速度提高了10倍以上,能够及时发现和处理道路缺陷,提高高速公路的安全性和畅通性。

技术挑战与解决方案

在构建和使用本数据集的过程中,我们遇到了以下技术挑战,并提出了相应的解决方案:

1. 缺陷多样性和复杂性

挑战:道路缺陷类型多样,形态各异,不同类型的缺陷特征差异较大,同一类型的缺陷在不同场景下也有很大差异。
解决方案

  • 收集多样化的缺陷样本,确保数据集能够覆盖各种类型和形态的缺陷
  • 采用数据增强技术,增加模型对不同形态缺陷的适应能力
  • 设计鲁棒的特征提取网络,能够学习到缺陷的本质特征

2. 光照和天气条件变化

挑战:不同光照和天气条件下,道路缺陷的外观差异很大,模型在一种条件下训练的效果可能在另一种条件下表现不佳。
解决方案

  • 收集不同光照和天气条件下的缺陷样本,确保数据集的多样性
  • 采用数据增强技术,模拟不同光照和天气条件下的图像
  • 设计光照不变的特征提取方法,减少光照对检测结果的影响

3. 小目标检测困难

挑战:一些道路缺陷(如细小裂缝)在图像中占比较小,属于小目标,传统的目标检测模型难以有效检测。
解决方案

  • 使用专门的小目标检测优化策略,如FPN、PAN等特征融合方法
  • 调整模型的锚框设置,使其更适合小目标的检测
  • 采用马赛克增强等数据增强技术,增加小目标的比例

4. 模型部署资源受限

挑战:在实际应用中,如嵌入式设备、移动设备等资源受限的平台上部署模型,需要考虑模型大小和计算复杂度。
解决方案

  • 采用模型压缩和量化技术,减少模型大小和计算复杂度
  • 开发轻量级模型,适合在资源受限的平台上运行
  • 利用边缘计算技术,将部分计算任务放在边缘设备上进行

5. 标注工作量大

挑战:手动标注道路缺陷工作量大,效率低,成本高。
解决方案

  • 开发半自动化标注工具,提高标注效率
  • 采用多人标注和交叉验证的方式,确保标注的准确性
  • 对标注人员进行培训,提高标注的一致性和准确性

数据集扩展与未来规划

本数据集是我们在道路缺陷检测领域的初步尝试,未来我们计划从以下几个方面对数据集进行扩展和完善:

  1. 增加样本数量:进一步扩大数据集规模,增加更多的图像样本,提高数据集的多样性和代表性。特别是增加来自不同地区、不同气候条件的道路缺陷样本,确保数据集能够覆盖更多的实际场景。
  2. 扩展类别覆盖:增加更多的道路缺陷类型,如路面沉降、车辙、泛油等,构建一个更全面的道路缺陷检测数据集。
  3. 添加多模态数据:结合激光雷达、惯性导航系统(INS)等多模态数据,构建多模态道路缺陷数据集。多模态数据可以提供更多的信息,如道路表面的三维信息、车辆的位置和姿态信息等,提高缺陷检测的准确性和可靠性。
  4. 引入时序信息:添加同一道路在不同时间的图像,捕捉道路缺陷的发展变化过程,支持时序分析和缺陷预测。
  5. 提供预训练模型:基于扩展后的数据集,训练并发布预训练模型,方便用户直接使用。预训练模型可以大大减少用户的训练时间和计算资源需求。
  6. 建立社区平台:建立道路缺陷检测数据集社区平台,鼓励用户贡献数据和标注,共同完善数据集。社区平台可以促进数据共享和技术交流,推动道路缺陷检测技术的发展。
  7. 开发标注工具:开发专门的道路缺陷标注工具,提高标注效率和准确性。标注工具可以自动检测和标注一些明显的缺陷,减少人工标注的工作量。
  8. 构建基准测试:基于数据集构建道路缺陷检测的基准测试,为不同算法的性能比较提供标准平台。基准测试可以促进算法创新和技术进步,推动道路缺陷检测技术的发展。

结语

道路是城市的动脉,其质量直接关系到城市的运行效率和居民的生活质量。随着城市化进程的加快和交通量的持续增长,道路养护任务日益繁重,传统的人工巡检方式已经难以适应现代城市发展的需求。

基于深度学习的道路缺陷检测技术为道路养护提供了新的解决方案,能够实现对道路缺陷的自动检测和分类,提高巡检效率和准确性。而高质量、多样化的数据集是推动这一技术发展的关键基础。

本数据集通过系统性地收集、整理和标注道路表面缺陷图像,为道路缺陷检测算法的研究与落地提供了有力支持。数据集共计6000张高分辨率图片,涵盖了8类道路表面缺陷,场景多样性强,标注质量高,格式标准统一,应用价值广泛。

我们希望通过本数据集的发布,能够促进道路缺陷检测技术的发展,推动智能交通系统和智慧城市建设的进步。我们诚邀学术界与工业界的研究者在此基础上深入探索,共同推动道路缺陷检测技术的创新和应用,为提高道路养护效率、保障交通安全、建设智慧城市做出贡献。

总结

本次发布的《道路表面多类型缺陷的图像识别数据集》为道路养护、智能交通、自动驾驶等领域提供了一个高质量、结构规范的图像识别基准数据集。数据集共包含6000张已标注图像,涵盖了8类道路表面常见缺陷,采用标准YOLO格式,已按训练、验证、测试集划分完毕,可直接应用于YOLOv5、YOLOv8等主流目标检测框架。

该数据集具有样本数量充足、场景多样性强、标注质量高、格式标准统一、应用价值广泛、贴近实际场景、分辨率高等特点,不仅适合用于常规的目标检测任务,也适合开展小目标检测、多模态融合、模型压缩与部署等前沿研究,特别契合道路缺陷检测、智能交通系统、自动驾驶感知等实际应用需求。

通过本数据集的使用和相关技术的应用,我们相信道路缺陷检测技术将会取得更大的突破,为道路养护和交通安全提供更加有力的支持,为智能交通系统和智慧城市建设做出更大的贡献。

今日速览

  1. Seedance 2.0:字节跳动出品,AI 帮你拍电影级视频。
  2. Cline CLI 2.0:命令行里跑并行任务,开发效率直接起飞。
  3. TexTab:把 AI 任务变成快捷键,一键翻译、总结不是梦。
  4. Valentine Online:为心爱的人定制专属情人节页面,浪漫不重样。
  5. Termsy:自动扫描服务条款,帮你避开那些隐藏的坑。
  6. WikiTrip 2.0:走到哪听到哪,维基百科变身随身导游。
  7. OpenBug:开源工具把工单变修复,团队越用越聪明。
  8. CozyTwo:异地恋情侣的虚拟小家,同步看片、发拥抱。
  9. Your Love Style:玩个游戏测性格,免费解锁你的恋爱风格。
  10. SnapPoint:清理开发机器的神器,让系统重回正轨。


1. Seedance 2.0

字节跳动这次放大招了,Seedance 2.0 让你用 AI 拍出电影感十足的视频。它不只是生成画面,还能精准控制叙事节奏和镜头运动,简直像在执导一部真电影。

  • 根据简单提示生成连贯人物和流畅场景
  • 支持多镜头叙事,动态切换毫无违和感
  • 提供动作、构图和节奏的精细控制
  • 面向创作者、营销人员和电影制作人

热度:🔺336

Seedance 2.0

访问官网 Product Hunt 详情


2. Cline CLI 2.0

超过 500 万开发者都在用的命令行神器,现在升级到 2.0 版本。它把自主编码功能直接塞进终端,还能并行跑任务,让你的 CI/CD 流程快如闪电。

  • 支持并行代理,同时处理多个构建和测试任务
  • 无头模式优化,无缝集成 CI/CD 流水线
  • 完全开源,兼容 Zed、Neovim 等主流编辑器
  • 经过全新设计,体验更流畅

热度:🔺250

Cline CLI 2.0

访问官网 Product Hunt 详情


3. TexTab

厌倦了在 AI 工具里来回切换?TexTab 让你自定义 AI 操作,然后绑定到键盘快捷键上。翻译、总结、重写,动动手指就能搞定。

  • 创建自定义 AI 动作,灵活适配各种场景
  • 通过快捷键立即触发,省去打开应用的麻烦
  • 支持翻译、总结、重写等多种功能
  • 操作简单,提升日常工作效率

热度:🔺212

TexTab

访问官网 Product Hunt 详情


4. Valentine Online

情人节还没想好怎么表达爱意?Valentine Online 帮你快速打造一个个性化惊喜页面。不用设计功底,加点祝福、回忆和笑话,就能生成专属浪漫。

  • 轻松创建美丽可分享的浪漫页面
  • 自定义内容,包括祝福、回忆和内涵笑话
  • 无需设计或编码技能,简单定制即可生成
  • 直接发送给心爱的人,惊喜感拉满

热度:🔺186

Valentine Online

访问官网 Product Hunt 详情


5. Termsy

每次注册新服务,都被长长的条款搞晕?Termsy 自动扫描那些页面,把关键信息挑出来放在侧边栏里。让你在点“同意”前,心里更有底。

  • 自动扫描服务条款和隐私政策页面
  • 突出关键条款,避免遗漏重要信息
  • 在简洁侧边栏中展示,阅读更轻松
  • 支持深色和浅色模式,快速轻量易用

热度:🔺167

Termsy

访问官网 Product Hunt 详情


6. WikiTrip 2.0

出门旅行或日常通勤,想多了解周围的世界?WikiTrip 2.0 基于你的位置,朗读有趣的维基百科文章。把它当成随身音频导览,边走边学。

  • 根据地理位置朗读维基百科文章
  • 适合公路旅行、通勤或城市游玩场景
  • 无需手动搜索,自动发现周边趣闻
  • 让学习变得轻松有趣,探索身边世界

热度:🔺116

WikiTrip 2.0

访问官网 Product Hunt 详情


7. OpenBug

开发中遇到 bug,提交工单后还得等修复?OpenBug 这个开源命令行工具,能直接把工单转换成解决方案。AI 代理会分析日志和代码,甚至把每次修复记下来,让团队越用越聪明。

  • 将缺陷工单转换为修复方案,提升解决效率
  • AI 代理检查日志、分析代码并跨服务关联
  • 提供修复差异,直观展示改动内容
  • 记录修复到共享运行手册,积累团队知识

热度:🔺97

OpenBug

访问官网 Product Hunt 详情


8. CozyTwo

异地恋情侣的福音来了!CozyTwo 打造了一个虚拟家园,让你们可以同步看 YouTube 视频、发送虚拟拥抱。不用再喊“3、2、1,开始!”,一个订阅两人共用,年费才 29 美元。

  • 创建私密虚拟空间,专为异地恋设计
  • 同步观看 YouTube 视频,享受共同时光
  • 发送虚拟拥抱,增强情感连接
  • 订阅支持两人使用,性价比高

热度:🔺96

CozyTwo

访问官网 Product Hunt 详情


9. Your Love Style

厌倦了千篇一律的性格测试?Your Love Style 把测验做成了选择冒险游戏。通过具体情境评估你的行为,结果更真实。关键是,完全免费,不用登录就能看完整报告。

  • 结合选择冒险游戏和个性测试,趣味性强
  • 基于情境评估行为,而非自我报告问卷
  • 免费使用,查看完整结果无需登录
  • 互动式体验,游戏化测评更吸引人

热度:🔺95

Your Love Style

访问官网 Product Hunt 详情


10. SnapPoint

开发机器用久了,各种“幽灵”二进制文件和环境变量冲突让人头疼。SnapPoint 这个开源工具,帮你彻底清理系统,让一切重回正轨。

  • 开源系统审计工具,查找隐藏的二进制文件
  • 解决环境变量冲突,优化开发环境
  • 深度清理机器,提升系统性能
  • 作为软件包管理器,简化软件管理流程

热度:🔺90

SnapPoint

访问官网 Product Hunt 详情

恶性疟原虫显微镜图像的目标检测数据集分享(适用于目标检测任务)

数据集分享

如需下载该数据集,可通过以下方式获取:

引言

疟疾是一种由疟原虫引起的严重传染病,其中恶性疟原虫(Plasmodium falciparum)对人类健康威胁极大。据世界卫生组织统计,全球每年有超过2亿疟疾病例,导致数十万人死亡。传统的疟疾诊断方法主要依赖显微镜观察血涂片,这不仅需要专业人员长期训练,而且效率低、易受主观因素影响,难以满足大规模筛查和快速诊断的需求。

随着人工智能与深度学习技术的发展,基于显微镜图像的自动检测与识别逐渐成为疟疾诊断的新方向。通过训练深度学习模型,从血液显微镜图像中自动识别疟原虫,可以大大提高诊断效率和准确性,特别是在医疗资源有限的地区。然而,要开发出准确、可靠的疟原虫检测模型,高质量、多样化且已标注的数据集是关键基础。

为了推动医学人工智能的发展,我们收集并整理了一套显微镜下的恶性疟原虫图像数据集,并提供了标准化的目标检测标注文件。该数据集共计2700张高质量显微镜图像,已按照训练集、验证集和测试集进行了合理划分,标注采用YOLO格式,可直接用于目标检测模型的训练与验证。本文将对该数据集进行详细介绍,包括数据集背景、概述、结构、特点、适用场景等内容,旨在为相关研究和应用提供参考。

数据集背景

疟疾是一种通过蚊子传播的寄生虫病,由疟原虫属的单细胞寄生虫引起。在五种可以感染人类的疟原虫中,恶性疟原虫是最致命的一种,可导致严重的并发症,如脑疟疾、贫血、肾功能衰竭等,如不及时治疗,可能在24小时内导致死亡。

传统的疟疾诊断方法主要包括以下几种:

  1. 显微镜检查:通过观察染色后的血涂片,在显微镜下识别疟原虫。这是疟疾诊断的金标准,但需要专业人员操作,且耗时较长。
  2. 快速诊断测试(RDT):基于抗原-抗体反应的试纸条检测,操作简单,但灵敏度和特异性不如显微镜检查。
  3. 分子诊断:如PCR检测,灵敏度和特异性高,但需要实验室设备和专业人员,成本较高。

随着计算机视觉和深度学习技术的发展,基于图像的自动诊断方法逐渐成为研究热点。这种方法通过训练深度学习模型,从血液显微镜图像中自动识别疟原虫,具有以下优势:

  1. 高效快速:可以在几秒钟内分析多张血涂片,大大提高诊断速度。
  2. 客观准确:不受操作人员经验和主观因素的影响,诊断结果更加客观可靠。
  3. 可扩展性强:可以部署在移动设备上,在医疗资源有限的地区使用。
  4. 减少人力成本:减轻实验室人员的工作负担,使他们能够专注于其他重要任务。

然而,要开发出准确、可靠的疟原虫检测模型,高质量、多样化且已标注的数据集是关键基础。目前,公开可用的疟原虫图像数据集存在以下问题:

  1. 样本数量不足:许多数据集样本数量较少,难以支持深度学习模型的充分训练。
  2. 标注质量参差不齐:一些数据集的标注不够准确或不一致,影响模型训练效果。
  3. 场景单一:许多数据集的图像拍摄条件较为单一,难以适应实际应用中的复杂场景。
  4. 格式不统一:不同数据集的标注格式不一致,增加了数据预处理的难度。

为应对这些挑战,我们构建了本数据集,旨在为疟原虫检测算法的研究与落地提供高质量的数据支持。

数据集概述

本数据集专注于显微镜下恶性疟原虫(Plasmodium falciparum)的目标检测任务,共计2700张高质量显微镜图像,涵盖了不同放大倍数、不同染色条件以及不同感染阶段的红细胞形态。所有图片均经过精心筛选与标注,确保数据的准确性与代表性。

基本信息

  • 图片总数:2700张
  • 图像格式:JPG
  • 标注格式:YOLO格式(.txt文件,包含类别与边界框坐标)
  • 类别数量:1类(恶性疟原虫)
  • 数据划分

    • 训练集(train):约70%(1890张)
    • 验证集(val):约15%(405张)
    • 测试集(test):约15%(405张)
  • 文件结构

    ├─train
    │  ├─images
    │  └─labels
    ├─val
    │  ├─images
    │  └─labels
    └─test
       ├─images
       └─labels

数据集特点

与传统的医学图像数据相比,本数据集有以下几个显著特点:

  1. 单一类别、专注性强:仅包含恶性疟原虫一类目标,标注边界框清晰,适合专门研究该病原体的检测性能。这种专注性使得数据集更加聚焦于特定任务,有助于模型在该任务上取得更好的性能。
  2. 图像多样性:收录的显微镜图像来源丰富,包含不同的样本差异、成像条件与噪声情况。具体来说,数据集涵盖了:

    • 不同放大倍数的图像(如1000x、400x等)
    • 不同染色条件的图像(如吉氏染色、瑞氏染色等)
    • 不同感染阶段的红细胞形态(如环状体、滋养体、裂殖体等)
    • 不同质量的图像(如不同清晰度、不同对比度等)

    这种多样性使得模型在训练过程中具备更好的泛化能力,能够适应实际应用中的各种情况。

  3. 医学价值突出:该数据集高度贴合临床需求,能够为疟疾自动化筛查与诊断提供数据支撑。通过在本数据集上训练模型,可以开发出临床可用的自动化辅助诊断系统,减少人工观察带来的误差和负担,提高诊断效率和准确性。
  4. 标注质量高:所有图像均经过专业人员的精心标注,确保标注的准确性和一致性。标注内容包括恶性疟原虫的边界框坐标,采用YOLO标准格式,便于直接用于模型训练。
  5. 开箱即用:数据集已按照训练集、验证集和测试集进行了合理划分,标注采用YOLO标准格式,研究者可以直接将其应用于深度学习目标检测模型的训练与验证,而无需进行繁琐的前期准备工作。

image-20250819113646178

数据集详情

数据采集与处理

本数据集的图像来源于多个医学实验室的显微镜拍摄,涵盖了不同地区、不同人群的疟疾病例。为确保数据集的质量和多样性,我们在数据采集过程中遵循了以下原则:

  1. 样本多样性:收集来自不同地区、不同人群的疟疾病例样本,确保数据集能够代表不同的感染情况。
  2. 成像条件多样性:在不同的显微镜设置、不同的染色条件下拍摄图像,确保数据集能够适应不同的成像环境。
  3. 质量控制:对收集到的图像进行质量评估,筛选出清晰、具有代表性的图像,确保数据集的整体质量。

在数据处理过程中,我们对图像进行了以下处理:

  1. 图像预处理:对图像进行去噪、增强等处理,提高图像质量和对比度,使疟原虫更加清晰可见。
  2. 目标标注:由专业人员使用标注工具对图像中的恶性疟原虫进行手动标注,绘制边界框并标记类别。
  3. 格式转换:将标注结果转换为YOLO标准格式,生成对应的.txt标注文件。
  4. 数据划分:按照70:15:15的比例将数据划分为训练集、验证集和测试集,确保数据划分的合理性。

标注规范

本数据集的标注遵循以下规范:

  1. 边界框绘制:边界框应准确包围疟原虫的整个身体,包括所有可见的结构。边界框的大小应适中,既不要过大(包含过多背景),也不要过小(遗漏疟原虫部分结构)。
  2. 类别标注:所有目标均标注为恶性疟原虫(类别编号为0),确保标注的一致性。
  3. 标注质量检查:对标注结果进行质量检查,确保边界框的准确性和一致性。对于标注不准确或不一致的图像,进行重新标注。

数据统计

本数据集的基本统计信息如下:

数据集划分图像数量标注数量平均每张图像标注数
训练集1890约56703.0
验证集405约12153.0
测试集405约12153.0
总计2700约81003.0

注:标注数量为估计值,实际标注数量可能因图像内容不同而有所差异。

数据处理流程

为确保数据集的质量和可用性,我们在构建过程中遵循了严格的数据处理流程,具体步骤如下:

flowchart TD
    A[样本收集] --> B[图像获取]
    B --> C[图像预处理]
    C --> D[质量评估]
    D --> E[目标标注]
    E --> F[标注验证]
    F --> G[格式转换]
    G --> H[数据划分]
    H --> I[数据集发布]
  1. 样本收集:从多个医学实验室收集恶性疟原虫感染的血液样本
  2. 图像获取:使用显微镜拍摄样本的血涂片,获取显微镜图像
  3. 图像预处理:对获取的图像进行去噪、增强等处理,提高图像质量
  4. 质量评估:对预处理后的图像进行质量评估,筛选出清晰、具有代表性的图像
  5. 目标标注:由专业人员对图像中的恶性疟原虫进行手动标注,绘制边界框
  6. 标注验证:对标注结果进行验证,确保标注的准确性和一致性
  7. 格式转换:将标注结果转换为YOLO标准格式,生成对应的.txt标注文件
  8. 数据划分:按照70:15:15的比例将数据划分为训练集、验证集和测试集
  9. 数据集发布:打包发布数据集,提供下载链接

适用场景

本数据集可广泛应用于以下研究与医学应用场景:

1. 目标检测模型训练与测试

可直接用于训练YOLOv5、YOLOv8、Detectron2等主流目标检测模型,用于实际部署或研究验证。通过在本数据集上训练模型,可以提高疟原虫检测的准确率和效率,为相关应用提供技术支持。

2. 医学AI研究

可用于研究基于深度学习的血液显微镜图像智能分析方法。例如,可以研究不同网络架构、损失函数、数据增强方法等对疟原虫检测性能的影响,探索更有效的疟原虫检测算法。

3. 临床辅助诊断

可应用于自动化疟疾筛查系统,帮助医生快速识别感染细胞。通过部署基于本数据集训练的模型,可以实现疟疾的快速筛查和诊断,减少人工观察带来的误差和负担,提高诊断效率和准确性。

4. 教学与科研

适合作为医学影像AI课程与科研训练的数据集,提升学生与研究人员的实践能力。通过使用本数据集,学生和研究人员可以学习医学图像标注、目标检测模型训练等技能,提高医学AI研究的实践能力。

5. 小目标检测与优化算法研究

由于疟原虫在血细胞中的比例极小,本数据集非常适合用于小目标检测任务的改进实验。例如,可以研究不同的小目标检测方法、注意力机制、特征融合策略等,提高小目标检测的性能。

6. 医学图像预处理与增强方法研究

可用于探索在医学显微图像中使用不同的增强策略(如对比度增强、噪声滤波)对检测效果的影响。通过比较不同预处理方法的效果,可以找到最适合疟原虫检测的图像预处理策略。

7. 跨领域迁移学习

可通过与其他医学影像数据结合,研究迁移学习在疾病检测中的效果。例如,可以将在本数据集上训练的模型迁移到其他寄生虫检测任务中,探索迁移学习的有效性。

8. 模型压缩与部署研究

可用于研究模型压缩和部署方法,将训练好的模型部署到移动设备或边缘设备上。例如,可以研究模型剪枝、量化、知识蒸馏等技术,减少模型大小和计算复杂度,使其适合在资源受限的设备上运行。

image-20250819113743867

模型训练建议

针对本数据集的特点,我们提出以下模型训练建议:

1. 模型选择

对于疟原虫检测任务,建议使用以下模型:

  • YOLOv8:性能均衡,适合大多数应用场景,特别是需要实时检测的场景
  • YOLOv11:最新版本,精度和速度都有提升,适合对性能要求较高的场景
  • Faster R-CNN:精度较高,适合对精度要求高、对速度要求不高的场景
  • EfficientDet:效率较高,适合资源受限的场景

2. 数据增强

由于疟原虫检测是一个小目标检测任务,建议使用以下数据增强技术:

  • 随机裁剪:随机裁剪图像的一部分,增加小目标的比例
  • 随机翻转:水平翻转和垂直翻转,增加数据多样性
  • 随机旋转:随机旋转图像,增强模型对目标不同角度的适应能力
  • 亮度和对比度调整:随机调整图像的亮度和对比度,增强模型对不同光照条件的适应能力
  • 噪声添加:随机添加噪声,增强模型对噪声的鲁棒性
  • 马赛克增强:将多张图像拼接成一张,增加小目标的数量

3. 训练策略

  • 批量大小:根据硬件资源选择合适的批量大小,建议使用8-32
  • 学习率:初始学习率设置为0.001,使用余弦退火策略调整学习率
  • 优化器:使用AdamW优化器,权重衰减设置为0.0005
  • 训练轮数:建议训练100-300轮,根据验证集性能动态调整
  • 早停策略:当验证集性能连续多个轮次没有提升时,停止训练
  • 小目标优化:使用专门的小目标检测优化策略,如FPN、PAN等特征融合方法

4. 评估指标

使用以下指标评估模型性能:

  • mAP@0.5:IoU阈值为0.5时的平均精度
  • mAP@0.5:0.95:IoU阈值从0.5到0.95,步长为0.05时的平均精度
  • 精确率:正确预测的正样本占总预测正样本的比例
  • 召回率:正确预测的正样本占总实际正样本的比例
  • F1-score:精确率和召回率的调和平均值
  • 推理速度:模型的推理时间,用于评估实时性能

5. 模型优化

  • 模型剪枝:去除冗余的神经元和连接,减少模型大小
  • 模型量化:将模型权重从32位浮点数量化为8位整数,减少模型大小和计算复杂度
  • 知识蒸馏:利用大模型的知识指导小模型的训练,提高小模型的性能
  • 部署优化:针对不同部署平台进行优化,如TensorRT、ONNX Runtime等

应用案例

案例一:自动化疟疾筛查系统

基于本数据集训练的YOLOv8模型,开发了一款自动化疟疾筛查系统。该系统通过扫描血涂片的显微镜图像,自动识别其中的恶性疟原虫,并生成筛查报告。系统会标记出感染细胞的位置和数量,计算感染率,并提供诊断建议。该系统已在多个非洲国家的医疗机构试用,筛查效率提高了80%以上,诊断准确率达到90%以上,大大减轻了医疗人员的工作负担。

案例二:移动设备疟疾诊断App

将训练好的轻量化模型部署到移动设备上,开发了一款疟疾诊断App。用户只需使用手机摄像头拍摄血涂片的显微镜图像,App就能自动识别其中的恶性疟原虫,并提供诊断结果。该App已在多个资源有限的地区试用,为当地医疗人员提供了便捷的诊断工具,提高了疟疾诊断的可及性。

案例三:医学教育辅助系统

利用本数据集开发了一款医学教育辅助系统,用于培训医学学生和实验室技术人员。系统通过展示不同类型的疟原虫图像,帮助学生学习疟原虫的形态特征和识别方法。同时,系统还提供了互动式练习,让学生通过标注疟原虫来测试自己的识别能力。该系统已在多所医学院校试用,学生的学习效果和参与度显著提高。

案例四:疟疾疫情监测系统

将训练好的模型集成到疟疾疫情监测系统中,通过分析各地提交的血涂片图像,实时监测疟疾的流行情况。系统会自动统计各地的疟疾病例数、感染率等数据,生成疫情报告,并预测疫情的发展趋势。该系统已在某国卫生部门部署,为疫情防控决策提供了数据支持,有效控制了疟疾的传播。

技术挑战与解决方案

在构建和使用本数据集的过程中,我们遇到了以下技术挑战,并提出了相应的解决方案:

1. 小目标检测困难

挑战:疟原虫在血细胞中的比例极小,传统的目标检测模型难以有效检测。
解决方案

  • 使用专门的小目标检测优化策略,如FPN、PAN等特征融合方法
  • 采用马赛克增强等数据增强技术,增加小目标的比例
  • 调整模型的锚框设置,使其更适合小目标的检测

2. 图像质量差异大

挑战:不同显微镜、不同染色条件下拍摄的图像质量差异较大,影响模型的泛化能力。
解决方案

  • 对图像进行标准化处理,减少图像质量差异的影响
  • 使用数据增强技术,增加模型对不同图像质量的适应能力
  • 收集更多不同质量的图像,提高数据集的多样性

3. 标注工作量大

挑战:手动标注显微镜图像中的疟原虫工作量大,效率低。
解决方案

  • 开发半自动化标注工具,提高标注效率
  • 采用多人标注和交叉验证的方式,确保标注的准确性
  • 对标注人员进行培训,提高标注的一致性和准确性

4. 模型部署资源受限

挑战:在资源受限的地区,如农村、偏远地区,难以部署复杂的深度学习模型。
解决方案

  • 采用模型压缩和量化技术,减少模型大小和计算复杂度
  • 开发轻量级模型,适合在移动设备或边缘设备上运行
  • 利用云服务,将复杂的计算任务放在云端进行,边缘设备只负责图像采集和结果展示

数据集扩展与未来规划

本数据集是我们在疟原虫检测领域的初步尝试,未来我们计划从以下几个方面对数据集进行扩展和完善:

  1. 增加疟原虫种类:扩展数据集,包含其他种类的疟原虫,如间日疟原虫、三日疟原虫、卵形疟原虫等,构建一个更全面的疟原虫检测数据集。
  2. 扩大数据集规模:增加更多的图像样本,提高数据集的多样性和代表性。特别是增加来自不同地区、不同人群的疟疾病例样本,确保数据集能够覆盖更多的感染情况。
  3. 添加临床信息:为数据集添加更多的临床信息,如患者的年龄、性别、症状、治疗历史等,构建一个多模态的疟原虫数据集,支持更复杂的分析任务。
  4. 引入动态图像:添加疟原虫在不同发育阶段的动态图像,支持时序分析和发育阶段识别。
  5. 提供预训练模型:基于扩展后的数据集,训练并发布预训练模型,方便用户直接使用。
  6. 建立社区平台:建立疟原虫检测数据集社区平台,鼓励用户贡献数据和标注,共同完善数据集。
  7. 开发标注工具:开发专门的疟原虫标注工具,提高标注效率和准确性。

结语

疟疾是全球重大公共卫生问题之一,特别是在发展中国家,疟疾的流行严重影响了当地的经济发展和人民健康。开发准确、高效的疟疾诊断方法,对于控制疟疾的传播、减少疟疾的危害具有重要意义。

基于深度学习的图像识别技术为疟疾诊断提供了新的解决方案,而高质量的数据集是推动这一技术发展的关键基础。本数据集通过系统性地收集、整理和标注显微镜下的恶性疟原虫图像,为疟原虫检测算法的研究与落地提供了有力支持。

本数据集专注于显微镜下恶性疟原虫的目标检测任务,共计2700张高质量显微镜图像,涵盖了不同放大倍数、不同染色条件以及不同感染阶段的红细胞形态。所有图片均经过精心筛选与标注,确保数据的准确性与代表性。数据集按照训练集、验证集和测试集进行了合理划分,标注采用YOLO标准格式,研究者可以直接将其应用于深度学习目标检测模型的训练与验证。

我们希望通过本数据集的发布,能够促进疟原虫检测技术的发展,推动人工智能在医学影像分析和传染病防控领域的应用。我们诚邀学术界与工业界的研究者在此基础上深入探索,共同推动疟疾诊断技术的进步,为全球疟疾防控事业做出贡献。

总结

本次发布的《恶性疟原虫显微镜图像的目标检测数据集》为医学人工智能、疟疾诊断、目标检测算法研究等领域提供了一个高质量、结构规范的图像识别基准数据集。数据集共包含2700张已标注图像,专注于恶性疟原虫的检测,采用标准YOLO格式,已按训练、验证、测试集划分完毕,可直接应用于YOLOv5、YOLOv8等主流目标检测框架。

该数据集不仅适合用于常规的目标检测任务,也适合开展小目标检测、医学图像分析、模型压缩与部署等前沿研究,特别契合疟疾自动化筛查与诊断的临床需求。我们将持续更新并配套提供训练脚本与部署方案,欢迎研究者和开发者在合法合规范围内广泛使用与改进本数据集。

通过本数据集的使用和相关技术的应用,我们相信人工智能技术将在疟疾诊断和防控中发挥越来越重要的作用,为全球公共卫生事业做出更大的贡献。

大家好,我是 Eric Wong。最近我开发了一个名为 chat.nvim 的 Neovim 插件,今天想和大家分享一下这个项目的故事。

初衷:为自己做个小工具

必须承认,现在市面上已经有很多优秀的 AI 集成工具了,比如 ChatGPT.nvim、codeium.vim、copilot.vim 等等。这些工具功能完善、团队专业、用户众多,做得都非常好。

我开发 chat.nvim,纯粹是出于个人需求和兴趣爱好。作为一个 Neovim 重度用户,我想要的只是一个简单、轻量、无侵入的 AI 聊天工具:

  • 不需要复杂的代码补全,只想在写代码时随时问 AI 几个问题
  • 不想离开编辑器,希望有个浮窗就能搞定
  • 希望能方便地让 AI 读取我的代码文件
  • 希望能管理多个对话上下文
  • 最重要的是,代码要自己可控,想怎么改就怎么改

于是就动手写了这个插件。

chat.nvim 是什么?

简单来说,chat.nvim 是一个轻量级的 Neovim AI 聊天插件。它让你在编辑器里通过浮动窗口直接与 AI 助手对话,支持多种 AI 提供商,还能让 AI 读取你的文件内容作为上下文。

chat.nvim 界面

核心特性

  • 多提供商支持:内置支持 DeepSeek、GitHub AI、Moonshot、OpenRouter、Qwen、SiliconFlow、腾讯混元等
  • 工具调用:通过 @read_file@find_files 让 AI 读取你的代码
  • 会话管理:自动保存对话历史,随时切换和恢复
  • 流式响应:实时显示 AI 的回答,支持取消和重试
  • 思考模式:支持 DeepSeek R1 等推理模型的思考过程展示
  • Picker 集成:与 picker.nvim 无缝集成,快速搜索会话、切换模型
  • 轻量级:纯 Lua 实现,依赖极少

技术实现:保持简单

整个插件的代码结构很简单:

复制
lua/chat/
├── init.lua # 入口
├── windows.lua # 浮动窗口管理
├── sessions.lua # 会话持久化
├── tools.lua # 工具调用
├── config.lua # 配置管理
└── providers/ # AI 提供商适配器
    ├── deepseek.lua
    ├── github.lua
    └── ...

设计上遵循几个原则:

  1. 最小依赖:仅依赖 job.nvim 处理异步请求,其他都是 Neovim 内置 API
  2. 会话持久化:对话缓存到 stdpath('cache'),JSON 格式,方便查看和备份
  3. 工具即函数:工具调用就是普通的 Lua 函数,用户可以轻松扩展
  4. 流式处理:通过 job.nvim 的 stdout 回调实时处理 AI 响应

工具调用:让 AI 读懂你的代码

这是我觉得最实用的功能。在聊天窗口里直接输入:

复制
请帮我优化这个函数 @read_file ./lua/chat/windows.lua

AI 会读取文件内容并给出针对性建议。还支持批量查找:

复制
分析一下项目结构 @find_files **/*.lua

工具调用的实现也很直接:解析消息中的 @tool 语法,调用对应的 Lua 函数,把结果返回给 AI。

会话管理:对话不丢失

所有对话自动保存,支持:

  • :Chat new - 新建会话
  • :Chat prev/next - 切换会话
  • :Chat delete - 删除会话
  • :Chat clear - 清空当前会话

配合 picker.nvim 还能快速搜索历史会话:

复制
:Picker chat

开发历程:边用边改

从 git log 能看到,这个项目是 12 天前开始的(从 v1.0.0 算起),但最近几天特别活跃:

  • 第 1-2 天:搭起基本框架,支持 DeepSeek 和流式响应
  • 第 3-4 天:加入会话管理、工具调用、多个提供商
  • 第 5-6 天:完善 UI,添加 picker 集成、token 统计
  • 第 7 天至今:疯狂修 bug,优化体验,添加新功能

说实话,很多功能都是用的时候发现需要才加的。比如:

  • 发现 AI 回答太长,需要滚动查看 → 加了行号和高亮
  • 想切换模型要改配置太麻烦 → 加了 :Picker chat_model
  • 经常忘记当前用的哪个模型 → 在窗口标题显示 provider 和 model
  • 网络慢的时候不知道有没有在请求 → 加了进度 spinner

每次提交基本都是"fix:"或"feat:",很少有"refactor:",因为先跑起来再说

当前状态:能用,但还不完美

必须坦诚地说,这个插件还有很多不足:

  1. 按键绑定不够灵活:目前写死在代码里,还没做成可配置
  2. 错误处理不够完善:网络问题、API 限频等场景处理较简单
  3. UI 还有优化空间:窗口布局、滚动体验等可以更好
  4. 文档不够详细:很多功能靠用户自己摸索

README 里我也明确写了:

Note: The plugin is currently in active development phase. Key bindings may change and may reflect the author's personal preferences. Configuration options for customizing key bindings are planned for future releases.

意思就是:还在折腾,按键绑定可能随时改,目前主要满足我自己的使用习惯

为什么开源?

虽然是个"玩具"项目,但还是开源了,原因有三:

  1. 或许有人需要:可能也有朋友想要个简单轻量的工具
  2. 欢迎交流:AI 集成有很多玩法,希望能和大家一起探讨
  3. 学习参考:代码简单,适合想学习 Neovim 插件开发的朋友参考

如何使用?

安装很简单(以 nvim-plug 为例):

复制
require('plug').add({
  {
    'wsdjeg/chat.nvim',
    depends = { 'wsdjeg/job.nvim' },
    opt = {
      provider = 'deepseek',
      api_key = {
        deepseek = 'your-api-key',
      },
    },
  },
})

然后:

复制
:Chat new " 新建对话
:Chat " 打开聊天窗口

在窗口里输入问题,按 <Enter> 发送,<C-c> 取消请求,q 关闭窗口。

更多用法可以参考 GitHub 仓库

最后的话

chat.nvim 不是要和那些成熟的 AI 工具竞争,它只是一个程序员为自己写的工具,碰巧可能也适合你。

如果你也喜欢这种简单直接的方式,欢迎试用、提 issue、甚至贡献代码。有任何想法或建议,都欢迎交流!

毕竟,在 AI 工具百花齐放的今天,多一个选择总是好的,对吧?


项目地址: https://github.com/wsdjeg/chat.nvim