- 博客(331)
- 资源 (44)
- 收藏
- 关注
原创 编程实践:static_cast 和 reinterpret_cast
本文介绍了C++中static_cast和reinterpret_cast两种类型转换操作符的区别。static_cast用于安全的类型转换,如基础类型转换、类继承关系转换等,编译器会进行类型检查。reinterpret_cast则执行低级别的位模式重新解释,不进行类型检查,风险较高,仅适用于指针与整数转换等特殊场景。文章建议优先使用static_cast以确保安全性,仅在必要时谨慎使用reinterpret_cast,并提醒开发者可能需要重新考虑设计。
2025-07-18 10:46:23
16
原创 编程实践:一个warning引发的编译探索
摘要: CMake与Makefile编译差异在于依赖链处理方式不同。CMake严格检查间接依赖(如.so文件间的引用),通过find_library()等机制自动补全依赖链,因此会提示libxxx.so not found警告;而Makefile通常手动指定直接依赖,易忽略间接库。若需Makefile显式警告,可在链接参数添加-Wl,--no-as-needed强制检查。对比结论:CMake自动处理依赖链更严谨,Makefile需手动完善依赖配置才能达到同等效果。
2025-07-15 09:33:48
18
原创 编程实践:单例模式(懒汉模式+饿汉模式)
【C++单例模式实现方案】单例模式确保类仅有一个实例,并提供全局访问点。文章介绍了三种实现方式: 基础方案:通过私有构造函数和静态实例指针实现,但存在线程安全问题 线程安全方案(饿汉模式):加入互斥锁解决多线程竞争问题 最优方案(懒汉模式):利用C++11的局部静态变量特性,自动实现线程安全且无需手动管理指针 对比了三种方案的优缺点,推荐使用基于局部静态变量的懒汉模式,既简洁又安全。文章还详细解析了static关键字和引用符号(&)在实现中的关键作用。
2025-07-10 14:54:46
126
原创 编程实践:opencv支持freetype
【OpenCV源码编译支持FreeType指南】本文教程详细介绍了如何编译OpenCV 4.6.0源码以支持FreeType字体渲染功能,包括:下载匹配的OpenCV及contrib源码、安装freetype和harfbuzz依赖库、配置CMake编译参数(重点启用freetype模块并指定路径)、以及完整的编译命令。通过精简非必要模块的编译选项,优化编译过程。最后使用make -j8命令进行多线程编译。
2025-06-30 11:31:39
70
原创 编程实践:RV1109 矩阵运算
【摘要】本文介绍了RV1109芯片的NPU矩阵乘法实现方案,以rknn_utils工具为例说明编译部署流程,并分析了NPU运算的维度、数据类型和速度限制。作者通过实际测试发现,512维人脸特征在20万底库的比对中,纯NPU方案仍需522ms,优化后采用粗筛+精排+双线程策略可将时间缩短至120ms,实现10倍加速效果。该优化方案已满足实际应用需求,证明了混合计算策略在边缘设备上的可行性。
2025-06-27 16:02:36
42
原创 经验分享:国内支付大厂-活体经验分享
《大厂活体检测实战经验精要》摘要:数据方面建议百万级样本(正负比3:1),新攻击样本占比约1%即可;模型推荐ResNet/MobileNetV2二分类,输入尺寸建议256以上。技术要点包括:1)结合质量模型但不过度依赖分辨率;2)静默活体需控制拍摄距离;3)采用多尺度输入(原图+人脸区域);4)3D攻击通过关键点定位人造数据优化;5)红外单模态已足够,结合RGB更佳。阈值优化建议对输出做平滑处理。需持续通过线上回流增强数据多样性,支付宝每日2-3k攻击样本的自动上传机制值得借鉴。特别注意保持真假样本的多样性
2025-06-24 17:19:22
50
原创 编程实践:sigmastar330 调用IVE图像处理加速
本文介绍了利用Sigmastar的IVE硬件加速进行YUV到RGB图像格式转换的方法。
2025-06-23 17:32:53
189
原创 编程实践:sigmastar330 刷固件
摘要:本文详细记录了基于Sigmastar330人脸考勤机的刷机救砖全过程。主要内容包括:1)搭建TFTP服务器环境(Ubuntu22.04系统),配置tftpd-hpa服务并设置固件目录权限;2)设备进入uboot模式后的网络参数设置;3)通过TFTP协议下载并烧录固件的具体操作步骤。
2025-06-23 11:36:26
37
原创 编程实践:void* 赋值给函数指针
最后两行代码的作用是从动态库(.so文件)中获取一个名为的函数指针,该函数返回一个指向结构体的指针。这是一个get_intf使用 static 修饰的局部变量会在第一次进入函数时初始化,并且在整个程序运行期间都存在。这意味着你每次调用 get_algo_interface() 都会返回同一个接口对象的地址,不会重复创建。这会导致返回一个指向栈内存的指针,未定义行为,非常危险!虽然合法,但需要外部调用者记得 delete 掉,容易造成内存泄漏。
2025-06-16 14:35:52
31
原创 Huggingface Transformer 使用指南2-开发自定义模型
可以在 src/transformers/models 文件下,找到对应的处理实现代码。1:将 configuration_llama.py, modeling_llama.py, tokenizaiton_llama.py 拷贝到模型所在目录下。这些模型的处理实现代码,可以在 src/transformers/models 目录下找到。利用 transformers 提供的 auto_map 的功能,可以方便的制作&分享自定义模型。如果是我们开发好的自定义模型,如何让 transformers 支持呢?
2025-06-12 17:01:54
730
原创 Huggingface Transformer 使用指南1
建立在 Transformers’ configuration 和 modeling classes 基础上的自定义模型,如果以from_pretrained()方式加载权重的化,是支持 AutoClass API。当以不同的数据类型加载模型,如torch.float16,需要额外的内存,因为模型以所需的数据类型再次加载。要获得预训练模型,您需要将权重加载到模型中。模型权重在所有可用设备上分配,从最快的设备(通常是GPU)开始,然后将任何剩余的权重卸载到较慢的设备(CPU和硬盘)。
2025-06-12 10:51:52
721
原创 Transformers KV Caching 图解
推理速度的差异很大,而GPU VRAM的使用可以忽略不计,如此处所述,因此请确保在transformer 模型中使用KV缓存!通过缓存之前的密钥和值,我们可以专注于只计算新token的关注度。让我们使用transformer🤗来比较GPT-2在有和没有KV缓存的情况下的生成速度。KV-Cache已经存在了一段时间,但也许您需要了解它到底是什么,以及如何推理加速。有和没有KV缓存的缩放点积注意力的比较。即,在GPT等仅解码器模型中,或在T5等编码器-解码器模型的解码器部分中。为什么这种优化很重要?
2025-06-11 16:25:19
610
原创 Docker:修改已有容器的端口映射
可以看到:cudnn8_cuda118 的 完整 CONTAINER ID 是 5d0b0001d482....可以看到:cudnn8_cuda118 的 CONTAINER ID 是 5d0b0001d482。找到"PortBindings",添加自己需要的端口。找到"ExposedPorts",添加自己需要的端口。可以看到:cudnn8_cuda118 已经多了9000和9001两个端口了。2:查看完整Container ID。5:修改config.v2.json。7:重新启动自己的容器即可。
2025-06-11 10:50:08
652
原创 VLLM : RuntimeError: NCCL error: invalid usage
如果不添加该字段,默认会编译支持所有架构;为了加速编译以及降低二进制文件大小,添加该字段,具体comute_?需要和自己显卡算力相匹配。表示编译后,一些文件的存储路径;默认是nccl/build;当然如果是root用户可以指定到/usr/local/ncc/;表示CUDA的目录,默认就是/usr/local/cuda(自己ls看一下);根据提示,打开NCCL_DEBUG=WARN。表示使用12个核心,可根据自己情况进行调整;一致,其中也给出了方案。查看当前虚拟环境路径后。替换头文件 和 库文件。
2025-06-09 17:04:19
605
原创 label-studio 标注实体识别
左侧边栏选择NLP,右侧选中NER(根据自己需求选择)我的任务只要一个就足够,所以其他删掉了。切换到项目,点击右上角导出 Export。上传本地文件,我自己的是json。编辑好后,点击右上角的save。点击Code,按需配置模板。先勾选类别,再鼠标选择实体。
2025-06-04 18:25:31
272
原创 Linux 串口连接乱码
摘要:本文介绍了解决串口通信乱码问题的排查步骤。首先检查硬件连接情况,通过命令查看串口设备状态;其次确认RX、TX接线是否正确;重点检查串口参数配置(波特率、数据位、校验位等),提供stty命令查看和修改参数的方法。若调整后仍出现乱码,建议多次插拔设备并确保参数与设备要求一致。文章提供两种阅读方式:付费订阅或扫码获取免费链接。(148字)
2025-05-29 11:20:42
492
原创 Ubuntu 22.04 将可执行文件创建桌面图标
其中Name是应用名称,Exec是可执行文件的路径,Icon是图标类路径,请根据实际内容自定义。以 SecureCRT-8.7.3 为例,在桌面打开终端,创建 SecureCRT.desktop 文件。鼠标右键 SecureCRT.desktop 文件,选择属性。神奇的一幕发生了,SecureCRT.desktop 文件,再次鼠标右键 SecureCRT.desktop 文件,3:设置 *.desktop 文件权限。1:创建 *.desktop 文件。2:编辑 *.desktop 文件。
2025-05-29 09:40:35
269
原创 Linux系统 串口无响应
本文介绍了在Ubuntu系统中解决串口无响应问题。主要内容包括:1)检查串口设备文件是否存在;2)验证当前用户是否属于dialout组;3)将用户加入dialout组的命令;4)重启系统使更改生效。这些操作确保了用户能够访问串口设备进行开发。
2025-05-28 16:17:34
530
原创 Linux 安装 Remmina
Remmina 是一款功能强大的开源远程桌面客户端,适用于 Linux 和其他类 Unix 系统,也支持 Windows 平台。欢迎关注公号:每日早参,第一时间获取AI资讯!其他平台,参考上面的安装指南。
2025-05-27 09:57:35
282
原创 年龄估计数据集
与其他数据集的标签为真实年龄不同,LAP数据集的标签是外观显示年龄(apparent age),标签制定平均了至少10个人的标注结果,所以每张图片的年龄标签都是一个正态分布。该数据集可用于各种任务,例如,面部检测,年龄估计,年龄进展/回归,地标定位等。该数据集可用于年龄预测和性别分类,为了公平比较,我们将图像随机分成两组,一组用于训练,另一组用于验证,文件夹图像集中的注释文件具有以下格式:"%05dA%02d%d\n",person_id,年龄,性别,其中对于性别,0代表女性,1代表男性。
2025-05-08 18:03:35
803
原创 解决方案:Dify 卡在管理员界面
调整并重启后,再看一下容器状态,都正常。再稍微等一会再刷新,就可以看到登录页面了。可以看到有个容器异常:docker_db_1 的状态是。查看日志,根据日志对症下药。Restarting(表示一直在重启)
2025-04-15 17:13:37
456
原创 解决方案:Dify 手把手安装
文件中的所有配置项,确保它们与你的实际运行环境相匹配。文件中的环境变量值。在这个输出中,可以看到包括 3 个业务服务。文件有更新,请务必同步修改你本地的。文件中,并更新已更改的任何值。完整的环境变量集合可以在。,以及 6 个基础组件。
2025-04-15 09:48:21
230
原创 解决方案:使用代理解决docker-https://registry-1.docker.io/v2/ 错误
IP:鼠标移动到(允许局域网连接)-就可以看到自己的IP了。如果出错了:可以通过下面命令查看日志。
2025-04-14 16:09:45
414
原创 解决方案:离线安装docker、docker compose
默认情况下,Docker 的守护进程(daemon)运行在 root 用户下,而普通用户需要额外的权限才能与 Docker 守护进程通信。下载:containerd.io、docker-ce、docker-ce-cli (我选择同一个日期发布的)确认版本:Ubuntu 18.04 LTS - bionic。选择安装方法(因为我的是老版本Ubuntu了,所以选择手动)因为我的是bionic版本,选择就选择这个。2:将用户加入 docker 用户组。确认架构:X86_64。确认docker状态。
2025-04-14 10:47:11
326
原创 基础知识:冷启动数据
是指在模型训练初期,利用少量手工设计的高质量数据来训练。这些数据不依赖于大规模的标签数据,而是通过精心设计,提供对模型有指导性的推理信息,帮助模型在早期获得较好的表现。冷启动数据的作用直接使用 RL 训练,由于缺乏有效的指导信息(监督式微调SFT可以做到),会产生不符合用户需求的推理结果,比如推理链条不清晰、语言混合等问题。为了改善这一情况,引入冷启动数据,帮助模型在最初阶段进行微调,使得其能够生成更加规范和易于理解的推理过程。
2025-04-09 14:57:24
158
原创 论文阅读:Visual-RFT:Visual Reinforcement Fine-Tuning
在对每个输出的奖励进行组计算之后,评估每个响应的质量并用于更新策略模型。为了确保策略模型训练的稳定性,Visual-RFT使用KL散度来限制策略模型与参考模型之间的差异。通过直接比较同一问题的不同响应之间的奖励差异,GRPO不仅简化了训练流程,还提高了效率,尤其是在处理那些可以通过明确规则定义奖励的任务时。与需要评价模型来评估策略表现的强化学习算法(如PPO)不同,GRPO直接比较候选响应组,从而不需要额外的评价模型。直接模仿高质量、精心策划的数据中提供的“正确答案”,因此依赖于大量的训练数据。
2025-04-08 17:06:39
218
1
原创 基础知识:PPO & GRPO
1. PPO(近端策略优化)比喻:就像用零食+绳子训练小狗:绳子(Clipped Objective):防止小狗跑太远(限制策略更新幅度)零食奖励(Critic模型):每次动作后,主人评估"坐得好不好"再给零食特点:边做边教,每步都微调(单样本更新)人话版:PPO像严格的教练,要求你每做一步就立刻打分(Critic),但限制你改进的幅度不能太大(防止翻车)。2. GRPO(广义强化策略优化)比喻:就像让小狗先试三种动作,再选最好的:
2025-04-08 16:19:21
167
原创 论文阅读:VisMin:视觉最小变化理解
这个数据有点意思,注重视觉最小变化。当前的VLM用下来,幻觉还是挺多,微调的时候搭配点这个数据,感觉能一定程度减轻幻觉。文章:VisMin: Visual Minimal-Change Understanding。
2025-04-03 11:19:38
59
原创 论文阅读:为什么LoRA在目标检测方向不奏效?
LoRA是在某些场景中进行微调的绝佳工具,特别是对于目标更直接的分类任务。但是在目标检测方面,由于需要精确的空间关系、多任务学习和相互关联的组件,LoRA很难跟上。
2025-04-03 10:48:08
208
1
原创 基础知识:RMSNorm
这种方法简化了归一化过程,降低了计算复杂度,并且在某些情况下可以提供更稳定的训练过程和更好的性能。虽然两者都可以应用于各种神经网络架构中,但是因为 RMSNorm 简化的特性,在某些情况下,例如 Transformer 架构中,RMSNorm 可能提供更稳定的训练过程,并且在某些任务上可能表现出更好的性能。总结来说,RMSNorm 通过简化计算流程提供了效率上的优势,而 LayerNorm 则通过更全面的数据分布调整提供了广泛的适用性。选择哪种方法取决于具体的模型需求和应用场景。
2025-03-13 13:54:12
241
原创 代码分享:OpenCV mat对象与base64互转
可以通过设置IMWRITE_JPEG_QUALITY标志来更改JPEG压缩质量。编码: img -> jpg -> base64。解码:base64 -> jpg -> img。
2025-03-10 09:50:45
337
原创 解决方案:linux系统DNS解析卡顿5秒的bug
发送A类型(ipv4 )请求和AAAA类型(ipv6)请求使用不同的源端口。这样两个请求在conntrack表中不占用同一个表项,从而避免冲突。发送A类型(ipv4 )请求和AAAA类型(ipv6)请求同样会使用同源端口发送,知识发送方式改为了串行,从而也避免了冲突。更详细的分析可以参考Weave works工程师。1:人脸离线识别记录可以正常上传云端。2:人脸在线识别请求却一直超时。3:客户使用在线网络。
2025-03-10 09:34:16
273
原创 基础知识:训练自己的分词器-Tokenizer 2
分词器的配置信息,定义了分词器的版本、额外添加的标记(tokens)、结构/代码和模型参数等信息,比如tokenizer_class指定使用的分词器类名以及model_max_length指定模型能够处理的最大序列长度 和 bos_token指定句首的标记等内容。最终的分词器模型文件,包含了分词器的版本号、分词器的截断、填充策略、特殊标记、文本归一化的函数、预分词的策略或方法、分词器模型的类型、词汇表(vocab)和合并规则(merges)等信息。拥有一个手动配置的文件使得这样的修改更加容易执行和管理。
2025-03-05 09:30:05
112
原创 基础知识:训练自己的分词器-Tokenizer
说明:文本搬运以下文章,略微调整,有需求可参考原文。paper :code :本文选择使用tokenizers来训练自己的分词器。首先需要初始化一个tokenizers基类它们是tokenizer的唯一强制性组件这对于允许一些复杂的算法在标准化之前需要进行分割是必要的(例如 ByteLevel)
2025-03-04 18:21:55
83
原创 编程实践:Java入门一二
之前没接触过java,所以遇到后有点不知所措,好在有大模型,不会就问,不会就记。JDK 和 NDK 是两个不同的开发工具包,主要用于不同类型的软件开发。:这是用于开发 Java 应用程序的软件开发环境。它包含了 Java 运行时环境(JRE)、编译器(javac)和其他工具和库,这些对于开发、编译和运行 Java 应用程序是必需的。
2025-02-28 15:23:30
97
原创 编程实践: aarch64平台交叉编译log4cpp
问题出在 config.sub 文件无法识别 aarch64-linux-gnu 这个配置。需要更新 log4cpp 源码中的 config.sub 和 config.guess 文件到最新版本。基于 gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu 编译 log4cpp-1.1.3。2:替换 log4cpp/config 目录下的 config.sub 和 config.guess 文件。1:更新 config.sub 和 config.guess。
2025-02-27 10:59:19
98
原创 编程实践:ZLKMedia 推流
文档里面提供了各个系统的详细安装步骤,可以参考我这边是寒武纪MLU370-S4硬件,先确定一下系统name是ubuntu34.1、编译器版本要求linux 系统通过以下命令确认版本是否符合。不满足就需要参考4.24.2、安装编译器如果你是macOS用户,你直接安装xcode即可。如果你是windows用户,推荐安装vs2017或以上。5:cmake。
2025-02-25 09:57:34
172
LSH(局部敏感哈希)
2015-07-03
Deep Hashing for Compact Binary Codes Learning
2015-10-21
IsoHash 各向同性哈希
2015-07-21
Supervised Hashing with Kernels(KSH)
2015-07-03
IsoHash code
2015-07-21
Jointly Learning Binary Code for Large-scale Face Image Retrieval and Attributes
2016-04-13
Visual Studio Community 2017 (version 15.9)
2020-06-16
numpy-1.16.4+mkl-cp37-cp37m-win_amd64.zip
2020-06-11
Feature Learning based Deep Supervised Hashing with Pairwise Labels
2016-04-13
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人