2026年3月

最近 OpenClaw 很火,我已经帮大家折腾过了。结论就是,方向挺好,但是为时过早,这个玩意虽然能自动化,但是效率很低,配置极其复杂,你需要折腾很久,token 杀死,分分钟扣你的 api 额度没商量。
还有一点,也是最重要的,非常尴尬的是,你根本不知道要用它去自动化点什么比较好。好像没有什么特别有价值的活非得让它才更干好。真有什么自动化需求,好像直接 codex 写个程序也能搞定。
当然 AI 程序员是趋势,先让子弹飞一会吧。

大家好,我是数字游民Hugo

今天简要聊聊AI引发的效率革命与当下火爆的OPC一人公司,希望能对你有所启发。

AI时代的企业效率革命:小团队如何创造千亿市值?

1. 颠覆性案例:极少数人创造巨大价值

  • 10人团队:生物制药公司“脑再生”以10名员工创造440亿市值,跻身胡润中国500强
  • 16人奇迹:能源企业“电能实业”仅16人达成1000亿市值,人效比碾压传统巨头
  • 榜单现象:胡润500强中,10家企业员工总数不足500人,却稳居行业第一梯队

2. 高价值企业的共同特征

  • 技术密集型赛道

    • 生物制药(如脑再生、药捷安康)
    • 芯片技术(东芯股份、信骅科技)
    • 人工智能(稀宇科技、云知声)
  • 核心竞争力:依赖技术壁垒而非规模效应,强调“不可替代的稀缺能力”

3. 传统商业逻辑的崩塌

  • 组织臃肿的代价

    • 管理者陷入“招人-内耗-成本激增”恶性循环
    • 核心业务被稀释,利润被人力成本吞噬
  • AI的规则改写

    • 真实案例1:某CEO的AI员工24小时完成6人三周工作量
    • 真实案例2:一人公司“老板+AI”组合单周创收数百万

4. 未来趋势:极简组织成为常态

  • 经济学家预言:朱嘉明曾预测“未来五年,许多公司仅需1-2人”
  • 现实印证:AI工具已使个人生产力对标传统团队成为可能
  • 终极问题:在AI赋能下,个体创业者能否突破千亿市值天花板?

如果觉得对你有帮助,欢迎点赞、在看并转发给需要的朋友👫。

另外,为助你拥抱驾驭AI,附送你一张国内头部AI社群的免费三天体验卡,可以扫码领取:

本文由mdnice多平台发布

最近重置了我的 surface 电脑,最近发现几乎所有网站的 cloudflare 的验证都过不了了,要么提示验证失败,故障排除,要么无限循环
尝试如下:
代理管理
隐私模式尝试了
换浏览器了
win 网络重置了
路由器重启了~~

还是不行

应用部署和生命周期管理工具Argo CD发布 3.3 版本,达到了一个新的里程碑。此次发布扩展了这个广受欢迎的 GitOps 持续交付工具的能力,同时解决了运维人员长期面临的几个痛点。

 

Argo CD 3.3 是一个实用性版本,主要是填补了 GitOps 日常操作中长期存在的几项空白,架构方面没什么变化。该候选版本的重点是删除操作安全性、认证体验、存储库性能以及对集群和自动扩展资源的更精细化控制。

公告博文中,软件工程师Peter Jiang将 PreDelete 钩子说成是 Argo CD 3.3 中最显著的变化,完善了当前 PreSync 钩子、Sync 钩子和 PostSync 钩子组成的生命周期。在博文中,Jiang 解释说,用户历来依赖外部脚本、手动清理或 Kubernetes 收集器来做应用程序删除准备,但当团队需要可预测的拆除序列时,这些方法往往显得脆弱而不透明。PreDelete 钩子允许团队定义 Kubernetes 资源,如必须成功运行 Argo CD 才能继续删除应用程序其余资源的作业,钩子执行失败便会阻止删除。在实践上,这将删除操作变成了一个明确的生命周期阶段,可以包括数据导出、流量引流或通知依赖系统。

 

该版本的第二个主要功能是 OIDC 后台令牌刷新,解决了用户将 Argo CD 与 Keycloak 等提供商集成时经常遇到的问题。以前,即使工程师正在积极工作,短暂的访问令牌有效期也会导致他们被强制退出用户界面,在长时间的调试或部署过程中,这很容易引发挫败感。新机制会在令牌过期前在后台自动刷新 OIDC 令牌,并支持配置刷新阈值,即剩余有效期达到多少时触发刷新。Deepak Yadav在LinkedIn上发文时将此列为最突出的改进之一,并将其概括为“告别随机注销”,充分体现了该问题曾引发的强烈不满。

 

该版本还增加了 Git 存储库浅克隆选项。启用时,Argo CD 只获取所需的提交历史记录,而不是整个存储库。公告指出,这可以将大型单体存储库或长期项目的获取时间从分钟减少到秒。这个功能是作为存储库配置中的一个标识实现的,如果运维人员经过评估觉得不需要完整的历史记录,就可以选择这项性能优化。社区讨论将浅克隆与 PreDelete 钩子和 OIDC 刷新视为 3.3 版本的三大亮点。

 

公告还提到了对 Source Hydrator 的改进。这是 Argo CD 处理复杂配置工作流程时越来越核心的部分。新版本引入了内联参数支持——团队不再需要为每个配置更改提交单独的参数文件,改进了对单体存储库布局的支持,并通过优化性能避免了不必要的存储库服务器调用。Jiang 将这些变化归功于社区贡献者,并将此说成是持续优化 Argo CD 以适应大规模配置管理的举措。这些更新使 Source Hydrator 与先前开发的 ApplicationSets 机制形成互补,共同应对多应用部署中日益复杂的配置挑战。

 

在 3.3 版本中,对集群资源的细粒度控制也得到了改进。该版本扩展了 AppProjects 中的 clusterResourceWhitelist,使得访问不仅可以通过 API 分组和种类进行限制,还可以通过个别资源的名称进行限制。这使得一个项目只需要管理特定的 CustomResourceDefinitions ,而不是所有的 CRD 。公告指出,这是长期以来用户一直都有的一个需求,尤其是那些在共享集群上维护多个团队和控制器的用户。LinkedIn 上有评论指出,该变更属于 RBAC 控制机制的整体优化,更精确的 CRD 作用域划分能更好地契合组织安全策略与职责分离原则。

 

该版本还提供了对 KEDA(Kubernetes 事件驱动自动扩展项目)的一级支持。现在,Argo CD 可以直接从用户界面暂停和恢复 KEDA ScaledObjects 和 ScaledJobs,并了解 ScaledJob 的健康状态,取代了此前通用的“未知”指示器。社区反馈指出,该功能在维护窗口和调试场景中尤为实用——通过与管理其他应用资源相同的 GitOps 控制面板,运维人员可临时暂停事件驱动型工作负载。

 

除了这些重要特性外,Jiang 还列出了一系列的小改进,包括:使用 Redis 凭据的卷挂载、添加 Ceph CRD 健康检查、改进 ApplicationSet 用户界面、支持 CLI 按 API 分组过滤、可配置的 Kubernetes API 超时以及围绕刷新行为和视图扩展的几项用户界面改进。

 

总体而言,v3.3 给人的感觉是一个由实际运营痛点塑造的版本。向 Argo CD 的维护者和贡献者表示祝贺——他们向前迈出了坚实的一步。

 

—— Deepak Yadav

 

除 Argo CD 之外,Flux是另一个由 CNCF 孵化的重点项目,同样致力于实现 GitOps for Kubernetes,但它侧重于控制器驱动模型,而不是集中式 Web 应用程序。Flux 运行一组控制器,用于协调 Git 、 Helm 存储库、容器注册表与集群。它原生支持 Helm 和 Kustomize,并通过 Weave GitOps 界面提供可选的可视化功能(而非捆绑式仪表盘)。它运用资源修剪和保护性注解等机制实现安全的删除操作,允许运维人员在协调过程中阻止特定的对象被移除,并且可以调整 Flux 如何清理版本控制中消失的资源。

 

通常,Argo CD 和 Flux 被视为互补关系,而非严格的竞争关系。Argo CD 内置的 UI 以及与 Argo Rollouts 的紧密集成,使其对追求可视化控制和一流金丝雀/蓝绿部署的企业极具吸引力。而 Flux 的 GitOps 工具包提供了一个基于命令行界面的可组合架构,能够监控镜像库并自动更新配置文件。在 Reddit 上,有用户说已经将这两款工具一同使用。例如,使用 Flux 来管理核心集群基础设施,而使用 Argo CD 来协调应用程序级别的部署。

 

Argo CD 3.3.2 现已发布

 

声明:本文为 InfoQ 翻译,未经许可禁止转载。

 

原文链接:https://www.infoq.com/news/2026/02/argocd-33/

最近在给马上出生的女儿想名字,想了很久还是没特别满意的,想听听大家的感觉,也欢迎大家随便给点名字或者灵感。

#### 基本情况:

1. 武姓
2. 女孩
3. 预计 5 月出生
4. 倾向单字名

选择住宅代理,核心看指标!只有选对代理服务,才能让业务高效落地。面对市场上琳琅满目的服务商,我们该如何判断高质量住宅代理呢?

指标一:IP纯净度

住宅代理的IP纯净度,是规避平台风控的关键,更是决定你的账号能否运营更稳定的核心前提。所谓IP纯净度,就是指这个IP是否被目标网站、平台标记为异常,或是直接纳入风控黑名单。

如果一个住宅IP曾被用于违规注册、恶意刷单、垃圾营销等违规操作,它早已被各大平台的风控系统记录在案,一旦使用这样的“问题IP”进行账号注册、登录或日常运营,轻则触发平台安全验证,重则直接被平台判定为风险账号而封禁。

指标二:连接成功率

住宅代理的成功率,是支撑业务高效运转的“生命线”!它的核心是指向目标网站发起的每一次请求中,能够成功获得有效回应、顺利完成操作的比率,是衡量住宅代理质量的核心硬指标之一。

对跨境电商、账号维护等专业场景而言,成功率的高低直接关系到业务成败:如果成功率偏低,意味着大量请求被拒绝,频繁出现403(禁止访问)、429(请求过于频繁)等错误提示,从而导致无法正常获取所需数据、完成操作。

指标三:回应与并发

住宅代理的回应速度,直接决定业务操作的效率高低;而并发数,则是支撑批量作业的核心关键。如果盲目追求“毫秒级”回应速度,可能使得结果适得其反——高频请求极易触发风控,从而导致操作失败、IP受限。

尤其对于数据采集这类高频批量操作,建议将并发数控制在合理范围之内,配合IP池轮换,实现效率与安全的双重保障。

指标四:IP池规模

住宅代理的IP池规模,直接决定着业务的容错率与稳定性,IP池越大,业务抗风险能力越强、容错空间越足。

大规模的住宅IP池,能够有效分散请求压力,避免单一IP或少量IP集中访问导致的网络堵塞、请求失败等问题,更能稳定支撑数天甚至数周的长期连续任务周期,无需频繁中断操作、更换代理,大幅提升业务连贯性。

总结

选择高质量住宅代理,依靠道德规范的高性能IP,助力您的跨境业务高效拓展、稳步前行。

不知道有没有人和我一样,被流量不够用、月租虚高的问题困扰了很久😭 尤其是学生党在宿舍、出差党跑外勤、租房党没装宽带,流量就是刚需,但市面上的流量卡五花八门,稍不注意就踩坑——要么宣传的“大流量”全是定向,要么首月便宜次月暴涨,要么限速阈值低到离谱,甚至还有隐形合约,注销要扣钱。

我个人因为经常会买流量卡作为副卡,也被坑过,因此整理出这份避坑+推荐指南,不管你是每月用几十G还是几百G,不管是追求低价还是稳定,都能找到适合自己的,最后也会分享我实测后觉得靠谱的几款。

关注以下任意仓库均可:


更多详见《老卫的流量卡推荐指南》https://github.com/waylau/data-sim-card-recommendation

一、先搞懂3个核心问题,避免90%的坑

很多人买流量卡被坑,本质是没看清这3点,被商家的宣传话术带偏了,先把这几点记牢,再选卡绝对不踩雷:

  • 分清“通用流量”和“定向流量”:这是最容易踩坑的点!很多卡宣传“200G流量”,其实180G都是定向(只能用某几个APP),通用流量只有20G,刷视频、逛网页根本不够用。选卡时一定要看清楚,通用流量占比越高越好,定向流量再多,用不上也等于白搭。
  • 看明白“优惠期”和“合约期”:几乎所有低价流量卡都有优惠期(一般6-12个月),优惠期内月租很便宜,但优惠期结束后会恢复原价(可能从9元涨到29元、39元),一定要提前看清楚优惠期时长和后续原价。另外,部分卡有合约期(比如6个月),合约期内注销要扣违约金,短期用的话一定要选无合约的。
  • 确认“限速规则”:没有真正“不限速”的流量卡(这是行业红线,商家说不限速都是假的),大部分卡是通用流量用满一定额度后限速(比如100G后限速3Mbps,200G后限速1Mbps),限速后能正常聊微信、刷文字,但看视频会卡顿,根据自己的使用量选限速阈值就行。

二、不同人群最优选择(实测靠谱,无套路)

我根据不同使用场景,整理了3类人群的适配卡,每一款都实测过,没有隐形消费,大家可以对号入座:

1. 学生党(预算低、流量需求大)

核心需求:低价、通用流量足、无合约(寒暑假可以注销),适合宿舍没宽带、日常刷视频、玩游戏的学生。

适配类型:月租19元以内,通用流量50-100G,定向流量100-200G,优惠期12个月,无合约,支持线上注销,激活首充50元可享优惠,限速阈值100G(日常用完全够,不怎么卡顿)。

2. 出差党(全国通用、稳定不卡顿)

核心需求:全国通用、信号稳定、不限地区使用,偶尔跨省出差,需要随时联网办公、导航。

适配类型:月租29元以内,通用流量100-150G,定向流量不限,优惠期12个月,支持全国漫游,无地区限速(部分偏远地区除外,以运营商为准),限速阈值200G,适合高频使用。

3. 租房党(短期使用、灵活注销)

核心需求:无合约、可随时注销、流量够用,暂时没装宽带,或者租房时间不确定,不想被绑定。

适配类型:月租9-19元,通用流量30-50G,定向流量100G,优惠期6个月,无合约,激活无强制首充,用完可直接线上注销,适合短期过渡使用。

三、绝对不能碰的“坑卡”(避坑指南)

实测过程中,遇到很多套路卡,大家看到以下几种情况,直接pass,别浪费时间:

  1. 宣传“永久0元”“无限流量”“不限速”的:全是虚假宣传,要么首月免费,次月暴涨,要么流量用一点就限速,甚至直接断网。
  2. 不说明优惠期和原价的:大概率是优惠期3个月,之后月租涨到39元以上,而且可能有隐形合约,注销要扣钱。
  3. 通用流量占比低于30%的:比如200G流量里,通用只有50G,定向150G,看似流量多,实际根本不够用。
  4. 需要线下注销、或者注销要收手续费的:现在正规流量卡都支持线上注销(运营商APP操作),需要线下跑营业厅的,大概率是小众卡,售后没保障。

四、测评记录集合

选流量卡,没有最好的,只有最适合自己的,不用追求“流量越多越好”,够用、稳定、无套路才是关键。另外,一定要通过正规渠道申请,避免买到物联网卡(不能接打电话、信号差、容易被封)。

以下我的流量卡测评记录集合

我把实测后靠谱的流量卡整理成了清单放在最后,包含详细的月租、流量、优惠期、注销规则,避免大家再花时间筛选。

五、线上销户指南

联通、电信、移动、广电、随行WiFi的流量卡,都支持线上销户,但有坑,大家一定要看 carefully:

由于流量卡运营周期不确定,短则几天就下架,因此本仓库也会尽量及时更新,增删上架下架的产品。
大家看中好的流量卡及早下手。

2025 年 8 月,(天津)京东代购 m4 air 10+10 核心 16+512 6165.21 (特定颜色)
小红书大家可以搜到该价格
非特定颜色,特定补贴下 M4 16+512G 的 10+8 核心与 10+10 核心 价格相同

2026 年,我要自己用 M5 air 了
计划是 M5 10+8 核心 16+512G 。天津北京收货地址任选,尚不清楚该产品具体补贴政策
图片标价 6544.15 理论价格是否为 6544.15-750=5794.15 ?
价格依据:国补+教育优惠+京东没收耳机(估值 750 )。去年同期上海的朋友说,国补政策只能补 1 个商品,因此教育优惠(送的耳机)不能叠加国补。
所以未来 M5 air 是否会有一个耳机补贴?或者说线下 Apple 店会补贴一个耳机出来

无奈刀法恶心,我觉得 24G 10+8 核心 才是真正战未来的东西,但这个溢价太贵了。

内核更新到 6.12.71 。
将包管理器从 opkg 切换到 apk, apk 跟 android 那个 apk 没有任何关系。不过 cdn 可能是把 apk 包当做 android 那个,提升优先级。实测安装速度更快。
OpenWrt 视频流默认集成了 Qt5 和 UI 应用,就是图像模式,显卡驱动,目前实测不完善。
历史命令会保存到内存中。方便一些。
增加 wifi7 支持,WiFi 脚本用 ucode 重写了,一致性更好。
新设备的支持:
扩展 Realtek Target ,支持更多交换 SoC ,比如 10G 以太网交换机。
扩展 Qualcommax 目标,支持 ipq50xx 和 ipq60xx SoC 。
新增支持了 Siflower SF21A6826/SF21H8898 芯片
为 Allwinner F1C100/200s SoC 添加了 sunxi/arm926ejs 子目标
新增微芯片/lan969x 目标,支持 Microchip LAN969x 交换机。
追求稳定,高速的可以更新。
https://downloads.openwrt.org/releases/25.12.0/

基于YOLOv8的5种玻璃缺陷识别(破裂/打胶/起霜/污染/未加工)(中英文双版) | 附完整源码与效果演示

引言

随着工业自动化和智能检测技术的快速发展,计算机视觉在工业质检领域的应用越来越广泛。玻璃作为一种重要的工业材料,其质量状况直接影响产品的性能和使用寿命。传统的玻璃检测方法主要依赖人工目检,存在效率低、主观性强、漏检率高等问题。基于深度学习的目标检测技术为玻璃状况自动检测提供了新的解决方案。
在这里插入图片描述

本文介绍了一种基于YOLOv8的玻璃状况识别系统,该系统能够自动识别玻璃的五种常见缺陷:玻璃破裂、玻璃打胶、玻璃起霜、玻璃污染和玻璃未加工。通过采用先进的深度学习算法,实现了对玻璃产品的高精度、高效率检测,为工业生产提供了可靠的质量保障手段。

背景意义

玻璃制品在建筑、汽车、电子、家居等众多领域有着广泛应用,其质量状况直接影响产品的安全性和可靠性。传统的玻璃检测方法存在以下问题:

  1. 效率低下:人工检测速度慢,无法满足大规模生产需求
  2. 主观性强:检测结果受检测人员经验和状态影响,一致性差
  3. 成本高昂:需要大量人力投入,检测成本高
  4. 漏检率高:人工容易疲劳,导致漏检和误检

基于深度学习的自动检测技术具有以下优势:

  • 高精度:通过深度学习模型能够准确识别各种缺陷
  • 高效率:自动化检测速度快,能够满足生产线需求
  • 客观性:检测结果不受主观因素影响,一致性好
  • 成本效益:长期使用可大幅降低检测成本

项目视频展示

https://www.bilibili.com/video/BV1WBPszME7J/
在这里插入图片描述
包含:
📦完整项目源码
📦预训练模型权重
🗂️数据集

项目详细效果展示

在这里插入图片描述
在这里插入图片描述

数据集信息

本项目使用专门构建的玻璃状况数据集,包含五种常见的玻璃缺陷类型:

  1. 玻璃破裂:玻璃表面出现的裂纹、破碎等损伤
  2. 玻璃打胶:玻璃边缘或表面的胶水处理情况
  3. 玻璃起霜:玻璃表面出现的雾状、模糊现象
  4. 玻璃污染:玻璃表面的污渍、指纹、灰尘等污染物
  5. 玻璃未加工:未经处理的原始玻璃状态

数据集采用YOLO格式的标注,每个样本都有对应的边界框标注信息。训练集、验证集和测试集按照合理比例划分,确保模型训练和评估的可靠性。数据集涵盖了不同光照条件、不同角度、不同背景下的玻璃图像,增强了模型的泛化能力。
在这里插入图片描述

本项目主要工作

本项目的主要工作包括以下几个方面:

  1. 数据集构建与预处理

    • 收集和整理玻璃状况图像数据
    • 数据清洗和标注
    • 数据增强和预处理
  2. 模型设计与实现

    • 基于YOLOv8架构的模型设计
    • 模型训练和参数优化
    • 模型评估和调优
  3. 系统开发与部署

    • 开发检测算法和推理引擎
    • 构建用户友好的检测界面
    • 实现实时检测功能
  4. 性能优化与改进

    • 模型轻量化处理
    • 检测速度优化
    • 准确率提升

国内外研究现状

在工业检测领域,基于深度学习的目标检测技术已经得到了广泛应用。国外研究方面,Google、Facebook、Microsoft等科技公司在大规模目标检测算法方面取得了显著成果。YOLO系列算法因其速度快、精度高的特点,在工业检测领域得到了广泛应用。

国内研究方面,众多高校和研究机构在工业质检领域开展了深入研究。清华大学、北京大学、浙江大学等高校在深度学习与工业检测结合方面取得了重要进展。特别是在制造业、电子行业等领域的应用研究较为成熟。
在这里插入图片描述

在玻璃检测领域,国外研究主要集中在高精度检测算法和自动化生产线集成方面。国内研究则更侧重于实际应用和产业化推广,结合国内制造业特点开发适合国情的检测方案。

目前,基于YOLOv8的玻璃状况识别研究还处于发展阶段,具有很大的研究潜力和应用价值。

快速开始-部署指南

环境要求

  • Python 3.8+
  • PyTorch 1.9+
  • CUDA 11.0+
  • Ultralytics YOLOv8

安装步骤

  1. 克隆项目代码

    git clone [项目地址]
    cd 项目目录
  2. 安装依赖包

    pip install -r requirements.txt
  3. 下载预训练模型

    wget [模型下载地址]
  4. 配置数据集路径
    修改data.yaml文件中的路径配置:

    path: main/datasets
    train: train/images
    val: val/images
    test: test/images
    nc: 5
    names:
      - 玻璃破裂
      - 玻璃打胶
      - 玻璃起霜
      - 玻璃污染
      - 玻璃未加工
  5. 开始训练

    python train.py
  6. 模型推理

    python detect.py --source image_path_or_video_path

使用说明

  1. 训练模型:使用训练数据集对模型进行训练
  2. 评估模型:使用验证集评估模型性能
  3. 模型推理:对新的图像或视频进行检测
  4. 结果可视化:查看检测结果和性能指标
    在这里插入图片描述

技术亮点

1. 先进的YOLOv8架构

本项目采用最新的YOLOv8目标检测算法,相比传统算法具有以下优势:

  • 更高的检测精度:采用更先进的网络结构和损失函数
  • 更快的检测速度:优化的网络设计,支持实时检测
  • 更好的泛化能力:通过数据增强和正则化提升模型泛化性能

2. 专业的数据集构建

针对玻璃检测特点,构建了专业的数据集:

  • 多场景覆盖:涵盖不同光照、角度、背景条件
  • 高质量标注:精确的边界框标注
  • 数据增强:旋转、翻转、亮度调整等增强方法

3. 实时检测能力

系统支持实时检测功能:

  • 高帧率处理:支持30fps以上的实时检测
  • 多线程处理:优化的多线程处理架构
  • 内存优化:高效的内存管理机制

4. 易于部署和使用

系统具有良好的可用性:

  • 简洁的API接口:提供简单易用的接口
  • 详细的文档:完整的使用文档和示例
  • 跨平台支持:支持Windows、Linux等操作系统

总结

本项目基于YOLOv8深度学习算法,成功实现了玻璃状况的自动识别。通过构建专业的数据集和优化模型参数,系统在检测精度和速度方面都取得了良好的效果。

主要成果包括:

  1. 实现了五种玻璃缺陷的准确识别
  2. 达到了较高的检测精度和召回率
  3. 支持实时检测功能,满足工业生产需求
  4. 提供了完整的部署和使用方案

未来工作将进一步优化模型性能,扩展检测类别,提高系统的实用性和可靠性。该技术在工业质检领域具有广阔的应用前景,能够为制造业提供高效、可靠的质量检测解决方案。

系统架构图

graph TD
    A[图像输入] --> B[图像预处理]
    B --> C[YOLOv8模型]
    C --> D[特征提取]
    D --> E[目标检测]
    E --> F[结果输出]
    F --> G[可视化展示]
    F --> H[数据统计]
    
    subgraph 模型训练
        I[数据集] --> J[数据增强]
        J --> K[模型训练]
        K --> L[模型评估]
        L --> M[模型优化]
    end
    
    subgraph 系统部署
        N[模型加载] --> O[推理引擎]
        O --> P[结果处理]
        P --> Q[用户界面]
    end
    
    M --> N
    Q --> G
    Q --> H

大家好,我是良许。

作为一名嵌入式程序员,我在工作中经常会接触到图像处理和计算机视觉相关的项目。

特别是在汽车电子领域,像自动驾驶辅助系统(ADAS)、车道偏离预警、行人检测等功能,都离不开图像处理和计算机视觉技术。

今天就和大家聊聊这两个既相关又有区别的技术领域。

1. 图像处理与计算机视觉的区别与联系

1.1 什么是图像处理

图像处理(Image Processing)主要关注的是对图像本身进行操作和变换,目的是改善图像质量、提取图像特征或者为后续处理做准备。

简单来说,图像处理的输入和输出都是图像。

比如我之前做过一个车载摄像头项目,原始图像经常会受到光照、噪声等影响,这时候就需要用到图像处理技术。

我们会对图像进行去噪、增强对比度、边缘检测等操作,让图像变得更清晰,更适合后续的分析处理。

常见的图像处理操作包括:

  • 图像滤波(去噪)
  • 图像增强(调整亮度、对比度)
  • 图像变换(旋转、缩放、裁剪)
  • 边缘检测
  • 形态学操作(膨胀、腐蚀)

1.2 什么是计算机视觉

计算机视觉(Computer Vision)则更进一步,它的目标是让计算机能够"理解"图像中的内容。

计算机视觉不仅仅是处理图像,更重要的是从图像中提取有意义的信息,做出判断和决策。

举个例子,在我参与的车道偏离预警系统中,摄像头拍摄到的道路图像需要经过一系列处理:首先用图像处理技术对图像进行预处理,然后通过计算机视觉算法识别出车道线的位置,判断车辆是否偏离车道,最后给出预警信号。

这整个过程就是计算机视觉的应用。

计算机视觉的典型应用包括:

  • 物体检测与识别
  • 人脸识别
  • 目标跟踪
  • 场景理解
  • 三维重建

1.3 两者的关系

可以这样理解:图像处理是计算机视觉的基础,计算机视觉是图像处理的高级应用。

图像处理提供了各种工具和方法来操作图像,而计算机视觉则利用这些工具来实现更高层次的理解和决策。

在实际项目中,这两者往往是结合使用的。

比如在做行人检测时,我们首先需要对图像进行预处理(图像处理),然后使用深度学习模型来识别行人(计算机视觉),最后可能还需要对检测结果进行后处理优化(图像处理)。

2. 嵌入式系统中的图像处理实践

2.1 硬件平台选择

在嵌入式系统中做图像处理,硬件平台的选择非常关键。

我接触过的平台主要有以下几种:

2.1.1 基于 STM32 的方案

对于一些简单的图像处理任务,STM32 系列 MCU 配合摄像头模块就能胜任。

比如我曾经用 STM32F429 做过一个简单的二维码识别项目,虽然处理速度不快,但对于低成本、低功耗的应用场景来说已经足够了。

下面是一个使用 STM32 HAL 库读取摄像头数据的示例代码:

// 摄像头初始化
void Camera_Init(void)
{
    // 配置DCMI接口
    DCMI_HandleTypeDef hdcmi;
    hdcmi.Instance = DCMI;
    hdcmi.Init.SynchroMode = DCMI_SYNCHRO_HARDWARE;
    hdcmi.Init.PCKPolarity = DCMI_PCKPOLARITY_RISING;
    hdcmi.Init.VSPolarity = DCMI_VSPOLARITY_LOW;
    hdcmi.Init.HSPolarity = DCMI_HSPOLARITY_LOW;
    hdcmi.Init.CaptureRate = DCMI_CR_ALL_FRAME;
    hdcmi.Init.ExtendedDataMode = DCMI_EXTEND_DATA_8B;
    
    if (HAL_DCMI_Init(&hdcmi) != HAL_OK)
    {
        Error_Handler();
    }
}
​
// 启动图像采集
void Camera_Start_Capture(uint32_t *pData, uint32_t Length)
{
    HAL_DCMI_Start_DMA(&hdcmi, DCMI_MODE_CONTINUOUS, 
                       (uint32_t)pData, Length);
}
​
// DMA传输完成回调
void HAL_DCMI_FrameEventCallback(DCMI_HandleTypeDef *hdcmi)
{
    // 图像采集完成,可以进行处理
    Image_Process();
}

2.1.2 基于 Linux 的方案

对于更复杂的图像处理和计算机视觉任务,我通常会选择运行 Linux 的嵌入式平台,比如树莓派、NVIDIA Jetson 系列等。

这些平台性能更强,而且可以方便地使用 OpenCV 等成熟的图像处理库。

在我目前的工作中,我们使用的是基于 ARM Cortex-A 系列处理器的平台,运行嵌入式 Linux 系统。

这样的平台既有足够的计算能力,又能保持相对较低的功耗和成本。

2.2 常用图像处理算法实现

2.2.1 图像滤波

图像滤波是最基础也是最常用的图像处理操作。

在嵌入式系统中,我们经常需要对摄像头采集的图像进行去噪处理。

下面是一个简单的均值滤波实现:

// 3x3均值滤波
void Mean_Filter(uint8_t *src, uint8_t *dst, int width, int height)
{
    int i, j, m, n;
    int sum;
    
    for (i = 1; i < height - 1; i++)
    {
        for (j = 1; j < width - 1; j++)
        {
            sum = 0;
            // 计算3x3邻域的平均值
            for (m = -1; m <= 1; m++)
            {
                for (n = -1; n <= 1; n++)
                {
                    sum += src[(i + m) * width + (j + n)];
                }
            }
            dst[i * width + j] = sum / 9;
        }
    }
}

在实际项目中,为了提高处理速度,我们通常会使用硬件加速或者 SIMD 指令来优化这些算法。

2.2.2 边缘检测

边缘检测在很多应用中都非常重要,比如车道线检测、物体轮廓提取等。

Sobel 算子是一种常用的边缘检测方法:

// Sobel边缘检测
void Sobel_Edge_Detection(uint8_t *src, uint8_t *dst, 
                          int width, int height)
{
    int i, j;
    int gx, gy, gradient;
    
    // Sobel算子
    int sobel_x[3][3] = {{-1, 0, 1}, {-2, 0, 2}, {-1, 0, 1}};
    int sobel_y[3][3] = {{-1, -2, -1}, {0, 0, 0}, {1, 2, 1}};
    
    for (i = 1; i < height - 1; i++)
    {
        for (j = 1; j < width - 1; j++)
        {
            gx = 0;
            gy = 0;
            
            // 计算x方向和y方向的梯度
            for (int m = -1; m <= 1; m++)
            {
                for (int n = -1; n <= 1; n++)
                {
                    int pixel = src[(i + m) * width + (j + n)];
                    gx += pixel * sobel_x[m + 1][n + 1];
                    gy += pixel * sobel_y[m + 1][n + 1];
                }
            }
            
            // 计算梯度幅值
            gradient = (int)sqrt(gx * gx + gy * gy);
            
            // 限制在0-255范围内
            if (gradient > 255) gradient = 255;
            if (gradient < 0) gradient = 0;
            
            dst[i * width + j] = (uint8_t)gradient;
        }
    }
}

2.3 使用 OpenCV 库

在嵌入式 Linux 平台上,OpenCV 是最常用的图像处理库。

它提供了丰富的图像处理和计算机视觉算法,而且经过了充分的优化。

下面是一个使用 OpenCV 进行图像处理的示例:

#include <opencv2/opencv.hpp>
#include <iostream>
​
using namespace cv;
using namespace std;
​
int main()
{
    // 打开摄像头
    VideoCapture cap(0);
    if (!cap.isOpened())
    {
        cout << "无法打开摄像头" << endl;
        return -1;
    }
    
    Mat frame, gray, edges;
    
    while (true)
    {
        // 读取一帧图像
        cap >> frame;
        if (frame.empty())
            break;
        
        // 转换为灰度图
        cvtColor(frame, gray, COLOR_BGR2GRAY);
        
        // 高斯滤波去噪
        GaussianBlur(gray, gray, Size(5, 5), 1.5);
        
        // Canny边缘检测
        Canny(gray, edges, 50, 150);
        
        // 显示结果
        imshow("原始图像", frame);
        imshow("边缘检测", edges);
        
        // 按ESC键退出
        if (waitKey(30) == 27)
            break;
    }
    
    return 0;
}

3. 计算机视觉在嵌入式系统中的应用

3.1 目标检测

目标检测是计算机视觉中最重要的应用之一。

在汽车电子领域,我们需要检测行人、车辆、交通标志等各种目标。

3.1.1 传统方法

在深度学习普及之前,我们主要使用传统的目标检测方法,比如 HOG(方向梯度直方图)+ SVM(支持向量机)。

这种方法的优点是计算量相对较小,适合在资源受限的嵌入式系统上运行。

3.1.2 深度学习方法

现在,深度学习已经成为目标检测的主流方法。

YOLO、SSD、Faster R-CNN 等算法在准确率和速度上都有很大优势。

但是,这些算法通常需要较强的计算能力,所以在嵌入式系统上部署时需要进行模型优化。

我们在项目中使用的是 YOLOv5 的轻量级版本,通过模型量化和剪枝,可以在嵌入式平台上实现实时检测。下面是一个简化的推理代码示例:

#include <opencv2/opencv.hpp>
#include <opencv2/dnn.hpp>
​
using namespace cv;
using namespace cv::dnn;
​
// 加载YOLO模型
Net net = readNetFromONNX("yolov5s.onnx");
​
// 目标检测函数
void Detect_Objects(Mat &frame)
{
    Mat blob;
    // 预处理:调整大小并归一化
    blobFromImage(frame, blob, 1/255.0, Size(640, 640), 
                  Scalar(0,0,0), true, false);
    
    // 设置输入
    net.setInput(blob);
    
    // 前向推理
    vector<Mat> outputs;
    net.forward(outputs, net.getUnconnectedOutLayersNames());
    
    // 后处理:解析检测结果
    float conf_threshold = 0.5;
    float nms_threshold = 0.4;
    
    vector<Rect> boxes;
    vector<float> confidences;
    vector<int> class_ids;
    
    for (size_t i = 0; i < outputs.size(); i++)
    {
        float* data = (float*)outputs[i].data;
        for (int j = 0; j < outputs[i].rows; j++, data += outputs[i].cols)
        {
            float confidence = data[4];
            if (confidence >= conf_threshold)
            {
                // 提取边界框和类别信息
                int center_x = (int)(data[0] * frame.cols);
                int center_y = (int)(data[1] * frame.rows);
                int width = (int)(data[2] * frame.cols);
                int height = (int)(data[3] * frame.rows);
                int left = center_x - width / 2;
                int top = center_y - height / 2;
                
                boxes.push_back(Rect(left, top, width, height));
                confidences.push_back(confidence);
                
                // 获取类别ID
                Mat scores = outputs[i].row(j).colRange(5, outputs[i].cols);
                Point class_id_point;
                double max_class_score;
                minMaxLoc(scores, 0, &max_class_score, 0, &class_id_point);
                class_ids.push_back(class_id_point.x);
            }
        }
    }
    
    // 非极大值抑制
    vector<int> indices;
    NMSBoxes(boxes, confidences, conf_threshold, nms_threshold, indices);
    
    // 绘制检测结果
    for (size_t i = 0; i < indices.size(); i++)
    {
        int idx = indices[i];
        Rect box = boxes[idx];
        rectangle(frame, box, Scalar(0, 255, 0), 2);
    }
}

3.2 图像分类

图像分类是判断图像属于哪个类别的任务。

在嵌入式系统中,我们可能需要识别交通标志、判断道路类型等。

对于嵌入式平台,我们通常会使用 MobileNet、SqueezeNet 等轻量级网络模型。

这些模型在保持较高准确率的同时,大大减少了计算量和模型大小。

3.3 目标跟踪

在很多应用场景中,我们不仅需要检测目标,还需要跟踪目标的运动轨迹。

比如在车辆防碰撞系统中,需要持续跟踪前方车辆的位置和速度。

常用的跟踪算法包括 KCF(核相关滤波)、SORT(简单在线实时跟踪)等。

OpenCV 提供了多种跟踪器的实现:

#include <opencv2/tracking.hpp>
​
// 创建跟踪器
Ptr<Tracker> tracker = TrackerKCF::create();
​
// 初始化跟踪器
Rect2d bbox = selectROI(frame);  // 选择要跟踪的目标
tracker->init(frame, bbox);
​
// 在后续帧中更新跟踪
while (true)
{
    cap >> frame;
    
    // 更新跟踪器
    bool ok = tracker->update(frame, bbox);
    
    if (ok)
    {
        // 绘制跟踪框
        rectangle(frame, bbox, Scalar(255, 0, 0), 2);
    }
    
    imshow("跟踪", frame);
    if (waitKey(1) == 27) break;
}

4. 性能优化技巧

4.1 算法优化

在嵌入式系统中,性能优化至关重要。

以下是我在实际项目中总结的一些优化技巧:

4.1.1 降低图像分辨率

很多时候,我们不需要处理全分辨率的图像。

通过降低分辨率,可以大幅减少计算量。

比如原本 1920x1080 的图像,降采样到 640x480 后,计算量减少到原来的 1/9 左右。

4.1.2 感兴趣区域(ROI)处理

只处理图像中感兴趣的区域,而不是整幅图像。

比如在车道线检测中,我们只需要处理图像下半部分的道路区域。

4.1.3 多级处理策略

先用简单快速的算法进行粗检测,再对可疑区域进行精细处理。

这样可以在保证准确率的同时提高处理速度。

4.2 硬件加速

4.2.1 使用 GPU

如果平台支持 GPU,可以利用 CUDA、OpenCL 等技术进行加速。

OpenCV 的很多函数都支持 GPU 加速,只需要简单修改代码即可。

4.2.2 使用 DSP 或 NPU

一些嵌入式平台集成了 DSP(数字信号处理器)或 NPU(神经网络处理单元),专门用于加速图像处理和深度学习推理。

充分利用这些硬件资源可以大幅提升性能。

4.2.3 使用 DMA

在数据传输过程中使用 DMA(直接内存访问),可以减少 CPU 的负担,提高数据传输效率。

前面 STM32 的示例代码中就使用了 DMA 来传输摄像头数据。

4.3 代码优化

4.3.1 使用定点运算代替浮点运算

在资源受限的嵌入式系统中,定点运算通常比浮点运算快得多。

可以将浮点数转换为定点数进行计算。

4.3.2 循环展开

对于一些关键的循环,可以进行循环展开优化,减少循环控制的开销。

4.3.3 使用查找表

对于一些复杂的数学运算,可以预先计算好结果存储在查找表中,使用时直接查表,避免重复计算。

5. 实际项目经验分享

在我参与的汽车电子项目中,有一个车道偏离预警系统的案例,可以很好地展示图像处理和计算机视觉的综合应用。

整个系统的处理流程如下:

5.1 图像采集

使用前置摄像头采集道路图像,帧率为 30fps,分辨率为 1280x720。

5.2 图像预处理

首先对图像进行灰度化处理,然后使用高斯滤波去噪。

接着提取图像下半部分作为感兴趣区域,因为车道线主要出现在这个区域。

5.3 边缘检测

使用 Canny 算子检测图像中的边缘,车道线通常表现为强边缘。

5.4 车道线检测

使用霍夫变换检测直线,筛选出符合车道线特征的直线。

对于弯道情况,我们使用多项式拟合来检测曲线车道线。

5.5 车道偏离判断

根据检测到的车道线位置,计算车辆在车道中的位置。

如果车辆偏离车道中心超过阈值,就发出预警信号。

5.6 结果输出

将检测结果通过 CAN 总线发送给其他控制单元,同时在显示屏上绘制车道线和预警信息。

这个项目的难点在于如何在有限的计算资源下实现实时处理,同时保证足够的准确率。

我们通过算法优化、硬件加速、多线程并行等手段,最终实现了稳定可靠的系统性能。

6. 未来发展趋势

图像处理和计算机视觉技术还在不断发展,特别是在嵌入式领域,有以下几个值得关注的趋势:

6.1 边缘计算

越来越多的计算任务从云端转移到边缘设备,这对嵌入式系统的计算能力提出了更高要求。

同时也推动了专用 AI 芯片的发展。

6.2 轻量化模型

为了在嵌入式设备上部署深度学习模型,研究人员开发了各种轻量化技术,如模型压缩、知识蒸馏、神经网络架构搜索等。

6.3 多模态融合

单一的视觉信息有时不够准确,未来会更多地融合雷达、激光雷达等多种传感器数据,提高系统的鲁棒性。

6.4 实时性要求提升

随着自动驾驶等应用的发展,对实时性的要求越来越高。

这需要我们在算法和硬件两方面都进行优化。

作为嵌入式程序员,我们需要不断学习新技术,同时也要深入理解底层原理,才能在这个快速发展的领域中保持竞争力。

图像处理和计算机视觉技术正在改变我们的生活,而嵌入式系统则是这些技术落地的重要载体。

希望这篇文章能够帮助大家更好地理解和应用这些技术。

更多编程学习资源

从「AI For What」到「Value From AI」,100+可落地实践案例打通 AI 实战最后一公里!

4 月 16 日-4 月 18 日,QCon 全球软件开发大会将在北京举办。本届大会锚定 Agentic AI 时代的软件工程重塑,聚焦 Agentic AI、多智能体协作、算力优化、技术债治理、多模态和 AI 原生基础设施等前沿话题,邀请来自腾讯、阿里、百度、华为、蚂蚁、小米、网易等企业技术专家,带来百余项真实落地案例,系统性分享前沿洞察与实战干货,以技术共创探索 AI 落地新路径。

汽车之家算法平台部负责人马宝昌已确认出席 “Agentic Engineering” 专题,并发表题为汽车之家 AI 助手多 Agent 设计与多阶段优化策略的主题分享。随着汽车之家 AI 助手的快速发展,多 Agent 架构成为提升系统智能化水平的关键技术。然而,多 Agent 系统面临协同效率低、训练复杂度高、优化策略单一等挑战,限制了 AI 助手的规模化应用。本次演讲将重点介绍汽车之家 AI 助手的多 Agent 设计架构及多阶段优化策略,通过真实业务数据和可复现的技术方案,展示如何通过多 Agent 协同和分阶段优化提升 AI 助手的决策能力和用户体验,推动汽车之家 AI 助手从单一功能向智能生态演进。

马宝昌,目前作为汽车之家大模型负责人,主要负责汽车行业大模型落地方面的工作。北京大学智能系硕士,10 余年 NLP 算法研究和落地经验。他在本次会议的详细演讲内容如下:

演讲提纲

  1. 汽车之家 AI 助手 Agent 架构设计

  • 智能体平台与生态建设:面向汽车行业的智能体生态平台,包括 SOP 编排、行业 MCP 工具、生态子 Agent 等

  • RAG 与 KAG 结合的知识检索架构:多源数据处理与质量判别流程,满足深度逻辑推理和业务准召要求

  • 汽车之家 AI 助手多 Agent 设计:记忆、看选、买车、用车等子 Agent 设计方案

2. 层次评测体系建设

  • 多层次评测架构设计:应用层、组件层、模型层、知识层四层评测架构

  • 评测指标体系:分层评测指标与业务价值指标

  • 从标注到自动化的评测流程:从主观评测到客观评测再到持续优化的完整流程演进

3. 基于多阶段强化学习的优化流程

  • 非参数优化策略:提示词优化、记忆机制设计和工具描述优化等策略

  • 单 Agent 强化学习策略:从产品定义回复的标准答案到业务真实反馈的多阶段优化流程

  • 多 Agent 协同训练方法:Reward 设计与多 Agent 强化学习训练框架性能优化

4. 智能体性能与成本优化

  • 模型推理性能优化:模型蒸馏、量化、投机采样、MTP 等方法

  • Agent 端到端相应速度:工具合并、工具/Agent 并行以及思考长度优化

这样的技术在实践过程中有哪些痛点?

  1. 数据需求:高质量多 Agent 协同反馈数据获取成本高

  2. 计算成本:多 Agent 并行训练的成本高

  3. 系统复杂度:多模块(比价 Agent、推荐 Agent、服务 Agent)协同训练的工程复杂度高

演讲亮点

  1. RAG+KAG 结合技术:多 Agent 知识检索架构,应对复杂场景检索

  2. 多阶段多 Agent 强化学习策略:基于多阶段 Reward 设计的强化学习训练流程

听众收益

  1. 掌握多阶段强化学习训练方法:学习从产品定义到在线优化的完整训练流程

  2. 了解多层次评测体系建设:应用-组件-模型-知识的全方位评测方法论

除此之外,本次大会还策划了Agentic Engineering多模态理解与生成的突破记忆觉醒:智能体记忆系统的范式重塑与产业落地具身智能与物理世界交互Agent Infra 架构设计AI 重塑数据生产与消费AI 原生基础设施AI 驱动的技术债治理小模型与领域适配模型大模型算力优化Agent 可观测性与评估工程AI for SRE等 20 多个专题论坛,届时将有来自不同行业、不同领域、不同企业的 100+资深专家在 QCon 北京站现场带来前沿技术洞察和一线实践经验。

更多详情可扫码或联系票务经理 18514549229 进行咨询。

最近有了老二要从月子中心回家了,准备前两个月请个住家的保姆。于是又想把放柜子里吃灰(主要是 24 小时对着家里,怕隐私问题)的小米摄像头装回去,但还是心有不惬。闲来无事顺道去小米商城逛了逛最新的摄像头,看了看最新的 4 代系列好像都标配了可以智能联动控制的物理遮挡板。

果断入手,几天后看看好用不好用.

楼主 21 年 985 计算机本科毕业,之后进入了一家国企工作,一年多前离职,工作期间相关代码的工作经验只有简单的 c 语言 crud ,现在存款即将见底,有半年时间来学一学软件开发相关内容,我这样的情况如今有机会在下半年找个中小厂的岗位吗,如果机会不大转测试如何呢,请各位大佬帮我支支招,让我这个废物不至于回家啃老