## EyesOff:构建偷窥检测模型
为了保护用户免受偷窥,我为我的应用EyesOff开发了一个定制的深度学习模型,因为合适的预训练模型由于许可或任务特异性而不可用。核心挑战是缺乏用于检测有人是否正在看屏幕的标记数据集。
我通过手动标记超过20,000张图像来构建数据集,最初使用FFHQ和自拍数据集,然后专注于视频会议数据集(VCD)。一个关键步骤是使用OpenVino的注视估计模型生成合成注视标签。
最终模型基于EfficientNetB0,并采用两阶段方法进行预训练(注视回归然后屏幕接触分类),在近距离和中距离上实现了大约**71%的准确率**。通过使用更多图像扩展数据集,显著提高了中距离检测能力,这对于识别潜在的偷窥者至关重要。
未来的工作包括进一步的数据收集、模型尺寸减小,以及探索像YuNet这样的架构以提高效率。该项目强调了定制数据集和数据扩展对于深度学习成功的的重要性。
## 重新思考 Rust 的借用检查器:启用自借用与安全的异步
这篇文章探讨了 Rust 如何支持自借用——同时持有值和对其的引用——并改进异步函数处理,目前受借用检查器的限制。作者认为这并非借用检查的固有局限性,而是 Rust 特定设计选择的结果。
核心问题在于 Rust 无法命名局部变量的类型,这对于将异步函数反糖成安全、零成本的 Rust 代码至关重要。 提出的解决方案涉及几个关键变化:允许显式命名所有类型(包括生命周期),引入“绑定生命周期”来跟踪生命周期所有权,以及承认“难以想象的类型”——在实践中存在但未正式存在于 Rust 类型系统中的类型。
重要的是,作者指出了 Rust 处理 `Drop` 和初始化方面的不足,这与所有值都是可移动的假设有关。他们提出了一种“所有者引用” (`&own T`),以允许安全地销毁和初始化不可移动的类型。 进一步的改进包括一种机制,用于跟踪枚举中的“自性”,并允许容器声明借用不会妨碍它们自身的可移动性。
虽然承认重大的向后兼容性挑战以及在当前 Rust 中实现的可能性不大,但作者旨在证明自借用在具有不同设计选择的健全借用检查系统中*是*理论上可实现的。
## LibrePods:释放 AirPods 的全部潜力
LibrePods 是一款免费开源应用程序,它将苹果 AirPods 的专属功能带到非苹果设备,主要是在 Linux 和 Android(需要 root 权限和 Xposed 框架)上。它允许用户访问诸如可定制的降噪控制、佩戴检测、准确的电池状态,甚至头部手势控制等功能——这些功能通常仅限于苹果生态系统。
目前完全支持 AirPods Pro(第 2 代和第 3 代),其他型号提供基本功能,LibrePods 提供诸如对话感知、定制通透模式和多设备连接等高级选项。用户还可以重命名他们的 AirPods 并自定义长按操作。
通过启用“充当 Apple 设备”模式,可以使用包括通过听力图输入进行助听器定制在内的先进功能。虽然仍在开发中,但核心功能已经稳定。Android 用户需要一台安装了 Xposed 的 root 设备,因为 Android 蓝牙协议栈存在限制。
请在项目的 README 中查找安装说明和完整的特性列表。
## IDEmacs:连接Emacs的桥梁
IDEmacs是一个Emacs配置,旨在提供类似IDE的熟悉体验,特别是对于从VSCode等图形化编辑器过渡或刚开始编程的用户。它面向程序员、初学者Lisp/Scheme开发者,甚至寻求用于Org、Markdown或LaTeX等强大编辑器的用户。
该项目承认Emacs的优势(尤其是在Lisp/Scheme方面与Sly/Geiser配合使用),但也解决了其陡峭的学习曲线。它优先考虑对流行的IDE习惯的“足够好”的模仿——包括按键绑定(目前专注于VSCode模拟)、鼠标支持以及免配置的设置——而不是完美复制。
目前,提供了一个VSCode配置,具有深色主题、文件浏览器(Treemacs)、标签管理以及用于编辑、版本控制和代码补全的综合软件包。虽然仍在开发中(存在“FIXME”区域),IDEmacs旨在降低Emacs的入门门槛,鼓励新用户探索其全部潜力。该项目欢迎用户反馈和开发者贡献,以进一步完善体验。
`fastknn` 包提供了一个名为 `knnExtract` 的函数,用于使用 K 最近邻进行特征提取。该技术基于数据点与其*k*个最近邻(*在每个类别内*)之间的距离生成新特征。具体来说,它计算每个类别到第 1、第 2、第 3…第 *k* 个最近邻的距离,从而产生 *k* * *c* 个新特征(其中 *c* 是类别的数量)。
为了防止过拟合,训练特征是使用交叉验证生成的。该过程还可以通过 `nthread` 参数进行并行化。这种方法受到 Kaggle Otto Group 产品分类挑战赛获胜方案的启发,有效地将非线性数据映射到线性空间,从而提高可分性。
通过 Ionosphere、chess 和 spirals 数据集进行演示,使用 KNN 提取的特征可以显著提高模型准确性(例如,在 Ionosphere 数据上使用 GLM 时,从 83.81% 提高到 95.24%),与仅使用原始特征相比,尤其是在具有复杂关系的数据集上。`knnDecision` 函数可视化了 KNN 特征如何创建更清晰的决策边界。