「无人机⑦」系统集成:从物理约束建立可解释系统
1. 布局与布线设计:系统稳定性的第一道约束
系统集成并不是从接线或上电开始,而是从空间与结构层面的约束开始。 对于无人机而言,布局与布线并非单纯的机械装配问题,而是决定系统稳定性、电磁环境可控性以及后续调试难度的基础工程环节。本章从系统工程视角出发,讨论布局与布线在无人机系统集成中的核心作用,并阐明其对飞控算法、传感器可靠性以及通信稳定性的深远影响。
在系统生命周期中,布局一旦确定,后续可调整的空间将急剧收缩。因此,合理的布局与布线设计,本质上是在系统早期为稳定性与可维护性预留自由度。更进一步,布局与布线决定了系统中干扰源如何产生、如何传播以及如何被感知,从而决定后续软件配置与参数调节的难度上限。为了使讨论具有工程可复用性,本章在原则陈述之外,将若干关键点表达为可复核的空间与走线约束,使其能够在装配阶段被直接检查与确认。
AI 时代的非虚构阅读策略
从像素预测到可提示分割:UNet、DeepLab、Mask2Former 到 Segment Anything
1. 视觉分割任务回顾:从像素预测到结构理解
视觉分割是计算机视觉体系中一类基础而关键的任务。与图像分类主要回答“图像中包含哪些语义概念”不同,分割进一步要求回答“这些对象在图像中的具体位置、形状与边界是什么”。这意味着分割并非以整幅图像或候选框为单位进行判断,而是直接作用于像素层面,需要对图像中每一个像素给出明确的归属结果。
正因为输出粒度从“区域”细化到“像素”,视觉分割不仅考验模型的语义理解能力,更对其空间表达能力、上下文建模能力以及结构化预测能力提出了更高要求。在进入可提示分割与通用分割模型的讨论之前,有必要首先对分割任务本身的定义、输出形式以及任务类型进行系统回顾,从而为后续模型结构与问题设定的演进奠定清晰而统一的概念基础。
2025 个人年终总结
回看整个 2025 年,感觉这一年很难用具体结果来概括。更多时候,我还是在投入去做一件不太显眼、却有点基础的事情:在 AI 的辅助下,重新整理学习新事物的方式。
1. 逐渐理解“广泛”的价值
这一年,我对“学习”本身的看法有了一些变化。过去,我更习惯把学习理解为获取知识点,但在实际过程中逐渐发现,这样的理解有些片面。真正影响学习效率的,似乎并不是知道了多少信息,而是这些信息在大脑中是否能够形成稳定的连接,并且在适当时候否能被成功调用。
从这个角度看,学习更像是在不断构建的网络。每一次学习,本质上都是在神经元之间建立新的连接,或强化已有的连接。当连接逐渐增多、结构逐渐清晰,新东西带来的认知负荷就会减轻,理解也会变得顺畅一些。
「无人机⑥」地面站体系结构与可视化
从 YOLO 到 DETR:目标检测范式的演化与分工
1. DETR 出现的原因
在目标检测的发展历程中,YOLO 与 DETR 往往被视为两种截然不同的技术路线,其差异不仅体现在网络结构或训练策略上,更反映了对“目标检测这一问题应当如何建模”的根本理解差别。
直观而言,YOLO 系列方法遵循的是一种密集预测思路:模型在图像的各个空间位置上独立判断是否存在目标,并同时回归其类别与边界框位置。这种做法强调局部决策与并行计算,因而具备极高的推理效率,但也不可避免地会对同一目标产生多次冗余预测,必须借助非极大值抑制等后处理机制进行去重。具体可参考: 物体检测评估指标和YOLO-v1实现思路
「无人机⑤」从数据到决策:飞控软件架构与通信体系
Swift 隔离式并发实践:actor、Global Actor 与 Sendable
1. 为什么 async/await 不能解决并发问题
Swift Concurrency 带来的第一个直观变化,是 async/await 让异步调用读起来像同步代码。之前一长串回调嵌套,现在可以按顺序写清楚:先请求网络,再解析,再更新状态。但在真实项目里,异步“写起来舒服”只是表面,很多时候真正的痛点不在于“怎么写异步逻辑”,而在于“多个任务同时访问同一份状态时发生的问题”。线程变多、任务变多、入口变多之后,只要可变状态没有明确的限制,就可能带来问题。
获取服务端配置就是一个非常典型的并发场景:有本地缓存,有后台刷新,有多处调用,有UI依赖结果,还有可能叠加服务端推送。表面上只是“拉一份配置下来”,但内部状态在多个任务之间来回穿插,如果不做隔离,async/await 并不能有效处理这些逻辑。
UIKit 项目异步改造:Combine、async/await、@Published
1. 为什么 UIKit 项目也需要现代异步能力?
现在的应用,无论是前端、Flutter 还是移动端原生,都有一个共同趋势:异步操作越来越多、界面状态变化也越来越频繁。Web 有 async/await + Promise 统一异步流程,用事件流和状态管理驱动 UI;Flutter 用 sync/await + Future/Stream 处理异步,用 BLoC、Provider、Riverpod 聚合状态并更新界面。这些体系之所以能稳定,是因为都遵循了同一种现代异步模型:异步逻辑线性化、事件流可组合、UI 完全由状态驱动。
UIKit 项目同样也面临这些问题,随着 Swift Concurrency、Combine 和 @Published 逐渐成熟,UIKit 也具备了和 Web、Flutter 类似的现代异步能力:async/await 负责逻辑,Combine 管事件流,状态集中在 ViewModel,由 UI 自动响应变化。