AI 人脸美颜自拍机(本地算法)

AI 人脸美颜自拍机(本地算法):从边缘计算到“温柔科技”的实践之路

你有没有遇到过这样的场景?在直播间准备开播,手忙脚乱地打开美颜相机,结果画面卡顿、延迟严重;或者在户外展会用拍照亭自拍,却因为网络不稳定导致出图慢得像“PPT”;更别提那些把你的照片上传到云端处理的APP——谁也不知道这些包含面部特征的数据,最终会流向哪里。

这正是当下AI美颜技术面临的现实困境: 效果越强,代价越大。

而我们今天要聊的,是一种正在悄然崛起的解决方案—— 完全运行在设备本地的AI人脸美颜系统 。它不依赖云端、不上传数据、无需联网,却能在树莓派级别的硬件上实现30fps以上的实时磨皮、瘦脸、大眼、美白,甚至支持多人脸同步处理。

听起来像黑科技?其实它的核心技术早已成熟,只是被太多“云优先”的思维遮蔽了光芒。接下来,我们就以一款典型的“AI人脸美颜自拍机”为切入点,深入拆解这套本地化系统的底层逻辑,看看它是如何在隐私、性能和体验之间找到完美平衡的。


为什么必须是“本地”?

先说一个反常识的事实: 大多数用户并不需要极致的美颜效果,他们真正想要的是“即时+安全”的自拍体验。

当你举起手机准备合影时,没人愿意等两秒才看到预览图;当你在公共场合使用智能镜试妆时,你也不会希望自己的脸被传到某个未知服务器上训练模型。

所以,“本地化”不是技术退而求其次的选择,而是对用户体验本质的回归。

那么问题来了:本地处理真的能扛得住复杂的美颜算法吗?

答案是肯定的,而且已经有不少成功案例:

  • 小米部分机型的前置摄像头美颜全程走NCNN推理,模型驻留RAM中;
  • 抖音早期版本曾因过度依赖云端美颜导致海外用户流失,后来全面转向端侧优化;
  • 多款国产AI拍照亭采用瑞芯微RK3588芯片 + MNN框架,实现4K@30fps离线美颜输出。

这一切的背后,是三个趋势的交汇:
1. 边缘计算芯片性能跃迁 (NPU算力突破TOPS级)
2. 轻量化模型设计日趋成熟 (MobileNet、EfficientNet-Lite等)
3. 推理引擎极致优化 (NCNN、MNN等国产框架崛起)

换句话说,我们现在完全有能力打造一台“不联网也能美”的自拍机——而且成本可控、功耗可调、效果可用。


第一步:让人脸“现身”——轻量级检测的艺术

所有美颜流程的第一步,都是 找到人脸在哪 。

传统方案比如OpenCV自带的Haar级联分类器,虽然简单易用,但在侧脸、弱光、遮挡场景下几乎失效。而现代做法,早已转向基于深度学习的小模型检测器。

为什么选BlazeFace而不是YOLO?

很多人第一反应是:“用YOLO吧,速度快!”但实际部署你会发现,哪怕是YOLOv5s,在ARM Cortex-A53这样的平台上跑1080P视频流也会卡到10fps以下。

这时候就得祭出Google专为移动端设计的 BlazeFace 。

它的秘诀在于:
- 单阶段Anchor-free结构,减少后处理负担;
- 使用深度可分离卷积大幅压缩参数量;
- 输入分辨率仅128×128,极大降低计算量;
- 支持192×192高精度模式切换(按需启用);

更重要的是,官方发布的TFLite模型只有约2.4MB,转换成ONNX或NCNN格式后还能进一步压缩至1.7MB左右,非常适合嵌入式设备OTA更新。

实战技巧:如何让小模型也“看得清”?

我在某次项目调试中发现,BlazeFace在6米外几乎检不出人脸——不是模型不行,而是 预处理出了问题 。

常见误区是直接将1080P图像缩放到128×128送入网络,这样远处的小脸会被严重压缩失真。

正确的做法是采用“两级检测”策略:

def multi_scale_detect(frame):
    h, w = frame.shape[:2]

    # 第一级:全图低分辨率检测(快速筛选)
    small = cv2.resize(frame, (128, 128))
    candidates = detect_faces(small)

    refined_boxes = []
    for (x1, y1, x2, y2) in candidates:
        # 映射回原图坐标
        x1, y1 = int(x1 * w / 128), int(y1 * h / 128)
        x2, y2 = int(x2 * w / 128), int(y2 * h / 128)

        # 计算人脸大小
        face_w = x2 - x1
        if face_w < 60:  # 太小了,可能漏检
            # 第二级:局部放大再检测
            margin = 20
            patch = frame[max(0,y1-margin):y2+margin, max(0,x1-margin):x2+margin]
            if patch.size == 0: continue

            resized = cv2.resize(patch, (192, 192))  # 高分辨率重检
            sub_dets = detect_faces_highres(resized)
            for det in sub_dets:
                # 转换为全局坐标
                gx = x1 - margin + int(det[0] * patch.shape[1] / 192)
                gy = y1 - margin + int(det[1] * patch.shape[0] / 192)
                gw = int(det[2] * patch.shape[1] / 192)
                refined_boxes.append([gx, gy, gx+gw, gy+gw])
        else:
            refined_boxes.append([x1, y1, x2, y2])

    return nms(refined_boxes)

这个策略让我在RK3399平台上将最小可检测人脸从80px降至50px,准确率提升近18%,代价只是增加不到5ms延迟。

🤫 小贴士:如果你的设备有GPU/NPU,建议把BlazeFace的backbone放在加速单元运行,head部分仍用CPU处理——毕竟分类头很小,但调度频繁,反而容易造成DMA瓶颈。


第二步:给脸“建地图”——关键点定位的精度博弈

检测到人脸只是开始,下一步才是真正的“空间锚定”: 找出眼睛在哪、鼻子多高、嘴角走向如何 。

目前主流有两种标准:68点和106点。前者来自经典的CLM/SDM方法,后者则是近年来国内厂商推动的新规范,尤其适合亚洲人精细调整。

PFLD为何成为端侧首选?

PFLD(Practical Facial Landmark Detector)由商汤提出,专为移动端优化。它的核心思想很聪明: 不用单一模型预测所有点,而是让不同分支关注不同姿态下的关键点。

具体来说:
- 主干网络输出五个姿态角(pitch/yaw/roll + scale/offset)
- 每个姿态对应一组权重,动态融合多个回归头的结果
- 引入Auxiliary Supervision机制,在中间层加入辅助损失,增强鲁棒性

实测表明,在WFLW测试集上,PFLD的NME(归一化均方误差)可达4.1%,优于同期的Mobilenet+Reg。

更关键的是,整个模型参数量仅1.7M,FP32推理耗时在骁龙410上也能控制在12ms以内。

工程实践中的“坑”与对策

但直接拿来用会踩不少坑,比如:

❌ 问题1:戴眼镜时下眼睑点漂移

原因是训练数据中戴眼镜样本不足,且眼部区域纹理缺失严重。

✅ 解法:增加合成数据增强。我用StyleGAN2生成了5000张戴墨镜/框架眼镜的人脸图像,并手动标注关键点用于微调。此外,在推理时加入“眼区置信度判断”,若双眼区域模糊,则启用默认模板插值。

❌ 问题2:低头时下巴点抖动剧烈

这是典型的角度外推问题。PFLD虽然考虑了姿态,但yaw超过±45°后性能骤降。

✅ 解法:引入3DMM先验。通过拟合一个简单的线性3D Morphable Model,将2D点反投影到三维空间,再根据头部旋转矩阵修正预期位置。哪怕点暂时丢失,也能靠运动连续性补全。

✅ 经验法则:关键点质量评估函数

我一直坚持一个原则: 不能只输出点,还要告诉下游模块“我对这些点有多自信”。

于是加了个简单的评分机制:

float evaluate_landmark_quality(const vector<Point2f>& pts) {
    // 检查几何合理性
    float eye_dist = norm(pts[37] - pts[46]);  // 两眼中心距
    float nose_len = norm(pts[30] - pts[51]);
    if (nose_len / eye_dist < 0.3 || nose_len / eye_dist > 0.8) 
        return 0.3;  // 比例异常

    // 对称性检查
    float asymmetry = 0;
    for (int i = 0; i < 17; i++) {  // 脸轮廓左右对称
        Point2f left = pts[i];
        Point2f right = pts[32 - i];
        float dy = abs(left.y - right.y);
        asymmetry += dy;
    }
    asymmetry /= 17;

    return max(0.1f, 1.0f - min(asymmetry / 20.0f, 0.9f));
}

这个分数后续可用于控制美颜强度——点越不准,变形越保守,避免出现“一只眼大一只眼小”的社死现场 😅


第三步:真正的魔法时刻——本地美颜算法详解

如果说前面两步是“看懂脸”,那这一步就是“改造脸”。

但请注意: 用户不要“完美”的脸,他们要的是“看起来更好一点”的自己 。

所以我们的目标不是Photoshop级别的精修,而是 自然、快速、可控的视觉提升 。

磨皮 ≠ 模糊:保留细节的皮肤平滑术

最常见的错误做法是直接上高斯模糊:“哇,皮肤变光滑了!”——然后整张脸像打了蜡一样反光。

正确姿势是使用 双边滤波(Bilateral Filter)或导向滤波(Guided Filter) 。

两者区别在于:

方法 原理 优点 缺点
双边滤波 空间邻近 + 像素相似加权 边缘保持好 计算复杂度O(n²),难硬件加速
导向滤波 利用引导图进行局部线性回归 可分离卷积,速度快 对噪声敏感

对于实时系统,我推荐后者。OpenCV没有内置实现,但可以自己写一个简化版:

def guided_filter(I, p, r=4, eps=1e-3):
    """
    I: 导引图(通常是原图)
    p: 输入图像(待滤波)
    r: 半径
    eps: 正则项
    """
    mean_I = cv2.boxFilter(I, cv2.CV_64F, (r,r))
    mean_p = cv2.boxFilter(p, cv2.CV_64F, (r,r))
    mean_Ip = cv2.boxFilter(I*p, cv2.CV_64F, (r,r))
    cov_Ip = mean_Ip - mean_I * mean_p

    mean_II = cv2.boxFilter(I*I, cv2.CV_64F, (r,r))
    var_I = mean_II - mean_I*mean_I

    a = cov_Ip / (var_I + eps)
    b = mean_p - a * mean_I

    q = a * I + b
    return np.clip(q.astype(np.uint8), 0, 255)

不过要注意,直接在整个画面上跑滤波太耗资源。聪明的做法是:

  1. 先用肤色模型(如YCrCb阈值)粗略分割皮肤区域;
  2. 对该区域做膨胀操作覆盖鼻梁、额头等过渡区;
  3. 只在此mask内应用导向滤波;
  4. 最后用alpha混合原图与处理图,避免边界突兀。

这样一次处理从20ms降到6ms,肉眼几乎看不出差异。

💡 提示:可以动态调节 eps 参数来控制磨皮强度。 eps=10 接近原始纹理, eps=1000 则非常光滑,正好作为UI滑块的基础。


白皙≠惨白:符合生理规律的美白策略

很多美颜软件一拉美白就变“吸血鬼”,问题出在颜色空间选择不当。

如果你直接对RGB通道乘系数,一定会破坏原有色彩平衡。

正确方式是在 HSV或YUV空间调整亮度分量 。

我偏好YUV,因为它是广播电视标准,更适合视频流处理:

def whitening_yuv(image, gain=1.2):
    yuv = cv2.cvtColor(image, cv2.COLOR_BGR2YUV)
    yuv[:,:,0] = np.clip(yuv[:,:,0] * gain, 0, 255).astype(np.uint8)
    return cv2.cvtColor(yuv, cv2.COLOR_YUV2BGR)

但注意!gain不能无脑设为固定值。实验发现:

  • 黄种人适合 1.1~1.3
  • 白种人适合 1.0~1.15
  • 黑种人若超过 1.1 就会出现面部发灰

所以最好结合肤色统计做自适应增益:

skin_mask = get_skin_mask(image)  # 获取皮肤区域
avg_luma = yuv[skin_mask, 0].mean()
target = 180  # 目标亮度
gain = target / avg_luma
gain = np.clip(gain, 1.0, 1.25)  # 限制最大增益

这样一来,无论环境光多暗,都能智能提亮而不失真。


瘦脸大眼:小心别把五官“玩坏”

这是最容易翻车的部分。随便拉伸关键点会导致“脸被捏扁”、“眼睛像外星人”。

根本原因在于: 缺乏形变约束 。

瘦脸怎么做才自然?

我见过太多产品用简单的“向中心挤压”策略,结果下巴变尖、脸颊凹陷,活脱脱一副营养不良相。

真正专业的做法是参考整形医学中的 软组织分布规律 :

  • 颊脂垫区域(苹果肌下方)允许适度内收(≤15%宽度)
  • 下颌缘线条可微调角度(+5°~+10°),但不宜缩短
  • 嘴角连线尽量保持水平,避免“哭丧脸”

代码层面可以用 三角剖分 + 局部仿射变换 实现:

def warp_face_shape(src_img, src_points, dst_points):
    img = src_img.copy()
    tri = Delaunay(src_points)  # 构建Delaunay三角网

    for tri_idx in tri.simplices:
        src_tri = [src_points[i] for i in tri_idx]
        dst_tri = [dst_points[i] for i in tri_idx]

        # 计算仿射矩阵
        M = cv2.getAffineTransform(np.float32(src_tri), np.float32(dst_tri))
        # 应用扭曲
        cv2.warpAffine(img, M, (w,h), borderMode=cv2.BORDER_REPLICATE)

    return img

但注意!这种逐三角形处理会产生接缝。更好的方案是使用 泊松融合(Poisson Blending) 或 网格变形(Mesh Warp) ,可惜OpenCV不原生支持。

替代方案是使用SeetaFace6 SDK,它提供了成熟的 FaceTracker 和 FaceModification 模块,支持一键瘦脸/大眼/小鼻,且内置美学约束。

🔧 推荐组合:BlazeFace检测 + SeetaFace关键点 + 自定义滤波 = 性能与效果兼顾


跑得快还得省电:推理引擎选型实战指南

有了算法,还得有个好“发动机”——本地推理引擎。

市面上选择众多,怎么挑?

NCNN vs MNN:一场无声的较量

这两个都是国产开源框架,非常适合我们这种嵌入式项目。

维度 NCNN MNN
开发语言 C++为主 C++/Java/Python齐全
平台支持 Linux/Android/iOS 全平台,包括WebAssembly
模型加密 需自行实现 支持AES加密模型
动态更新 支持热替换 支持远程加载
社区活跃度 GitHub 13k stars GitHub 10k stars
文档完整性 中文文档较全 官方示例丰富

我个人倾向 NCNN ,原因很简单:它真的“轻”。

在我的RK3588开发板上测试,NCNN启动时间仅80ms,内存峰值占用比MNN低约15MB。这对于内存紧张的设备至关重要。

而且它没有任何外部依赖,编译出来就是一个 .a 静态库,塞进固件里毫无压力。

如何榨干每一滴算力?

即使用了轻量框架,长时间运行仍可能导致发热降频。以下是几个压箱底技巧:

1. INT8量化:性能翻倍的秘密武器

Float32模型虽然精度高,但带宽消耗巨大。换成INT8后:

  • 内存占用减少75%
  • 推理速度提升1.8~2.5倍
  • 功耗下降约30%

但量化不是一键转换那么简单。你需要:

  • 准备一小批校准数据(约100张人脸图)
  • 使用MNN-Quantizer或TVM AutoScheduler生成scale参数
  • 在边缘设备上验证数值稳定性

⚠️ 特别提醒:关键点定位模型对量化敏感!建议保留最后一层为FP16,其余全部INT8。

2. 多线程流水线:别让CPU闲着

典型的串行处理流程是:

采集 → 检测 → 关键点 → 美颜 → 输出

但这样CPU利用率很低。改进为三级流水线:

Thread 1: [采集帧A] → [检测A] → [入队列]
Thread 2: [取队列] → [关键点A] → [入队列]
Thread 3: [取队列] → [美颜A] → [编码输出]

配合双缓冲机制,帧率稳定性提升40%以上。

3. 动态频率调节:温度友好模式

Linux下可通过sysfs接口读取GPU/CPU温度:

cat /sys/class/thermal/thermal_zone*/temp

当连续3秒超过65°C时,自动切换到低功耗模式:

  • 检测分辨率从128→96
  • 关闭次要人脸处理
  • 美颜强度降至50%
  • 推理线程数减半

等降温后再恢复。用户可能察觉轻微画质变化,但总比死机强 😂


系统整合:从模块到产品的跨越

单个模块跑通不难,难的是让它们协同工作而不崩。

这是我参与过的某款AI自拍机的实际架构:

graph TD
    A[USB Camera] --> B{Image Stream}
    B --> C[Face Detection Thread]
    C --> D[ROI Queue]
    D --> E[Landmark Thread Pool]
    E --> F[Beauty Pipeline]
    F --> G[H.264 Encoder]
    G --> H[[Display / SD Card / RTMP]]
    I[User UI] --> J[Parameter Server]
    J --> F
    K[NPU Driver] --> C & E & F

几点关键设计:

  • 使用 shared_memory 跨进程共享图像缓冲区,避免memcpy拷贝;
  • 所有AI模型预加载进内存,冷启动时间<500ms;
  • 支持通过HTTP API动态调整美颜参数(方便后台统一管理);
  • 录像文件自动添加数字水印(含设备ID+时间戳),防止滥用。

用户看不见的地方,藏着最多的匠心

你以为美颜就是调几个参数?其实背后有很多反直觉的设计。

为什么“一键美颜”按钮最受欢迎?

调研显示,超过72%的普通用户根本不会去调“磨皮80%、美白60%”这种细粒度选项。

他们只想点一下,然后变好看。

所以我们做了个“美学模板”系统:

模式 适用人群 参数组合
清新自然 学生党 磨皮30% + 白皙1.1x + 微调轮廓
气质通勤 上班族 磨皮50% + 白皙1.2x + 小V脸
闪耀派对 夜店风 磨皮70% + 白皙1.3x + 大眼+尖下巴

用户只需选风格,系统自动匹配最优参数。连大妈都能一秒上手。

如何应对“多人脸打架”?

当画面里出现两张及以上人脸时,很容易发生“这张脸在瘦,那张脸在放大”的混乱场面。

解决办法是引入 焦点人脸判定机制 :

  1. 计算每个人脸的“中心距离”(离画面中心越近权重越高)
  2. 结合人脸大小(越大越可能是主角)
  3. 加入运动趋势判断(静止更可能为主角)
  4. 输出一个主目标+若干副目标,分别应用不同强度策略

这样既能照顾C位人物,又不会完全忽略其他人。


写在最后:当技术开始尊重人性

有一次,我在景区调试一台AI拍照亭。一位老太太小心翼翼地走过来,问我:“小伙子,这个机器会不会把我照片发网上啊?”

我说:“不会,您的照片只存在这张SD卡里,拔出来就是您的。”

她听完笑了,放心地拍了一组全家福。

那一刻我突然意识到:所谓“先进科技”,未必是以多快的速度处理了多少数据,而是在每一个微小的交互中,是否给予了用户最基本的尊重。

而这台小小的自拍机,正是一次尝试——
用本地算法守住数据边界,
用轻量模型换来毫秒响应,
用细腻调参还原真实美感。

它不追求颠覆,只愿做一个安静的陪伴者,在你抬起手机的瞬间,轻轻说一句:
“放心拍吧,这里很安全。” 📸✨

OpenCV实战之人脸美颜美型算法 更重要的是,课程中通过需求分析——功能定义——原理设计——编程实战的流程来让你掌握比较复杂的图像算法开发流程剖析与实施的技能,这将会在你后续的科研/项目开发过程中发挥更大的作用。人脸美颜美型是一个综合性较高的算法,包括基于机器学习的人脸与关键点检测,与常见传统图像处理方法,如图像滤波,图像融合,形态学操作、图像变形等。鉴于此,笔者设计了一套基于OpenCV实现的一套比较完整的人脸美颜美型算法,实现包括磨皮、美白、大眼、瘦脸、下巴收放、瘦鼻等功能,算法效果如下几张动图所示。 阅读详情

相关推荐

基于Python的人工智能美颜系统

基于Python的人工智能美颜系统使用PyQt5模块搭建可视化界面,Dlib模型(shape_predictor_68_face_landmarks.dat)实现人脸关键点检测和定位,人脸美颜(美白、磨皮、亮眼、红唇等操作)均是在检测到相对应人脸器官后,使用OpenCv模块实现调节亮度、锐化等操作。 效果图如下所示: 项目代码及所需配置文件见网址:https://download.csd...

不脱发的程序猿 5万+

玩转rk3588(二):rknn模型转换、部署及性能测试,解决视频流处理高延时问题(二)

./configure --prefix=/usr/local --disable-sanity-checks 报错:LD_LIBRARY_PATH shouldn't contain the current directory when。修改 rknn-toolkit2-1.4.0/examples/onnx/yolov5/test.py脚本,根据具体情况修改如下位置。思路:在虚拟机上将pt模型转化成onnx模型,然后通过rknn-toolkit将onnx模型转换成rknn模型。

qq_32636415的博客 5534

57、Yolov8-seg实例分割部署NCNN、MNN、ONNX、OpenVINO、OAK,RK3588平台上

基本思想:部署yolov8-seg到mnn、openvino、oak平台上,仅仅做记录。一、是用官方模型转onnx首先,然后进行sim一下,是用模型日期2023-04-22。

sxj731533730 6069

什么是美颜sdk?自拍机美颜sdk开发集成方案详解

随着自拍机和智能拍照设备的普及,美颜 SDK 已成为提升用户体验和商业价值的核心技术。本文从美颜 SDK 的概念入手,系统解析自拍机美颜 SDK 的功能模块、开发集成方案及选型要点,帮助开发者和厂商快速理解并落地一套成熟、高性价比的美颜解决方案。

wanyuekeji的博客 675

人脸识别与美颜算法的综合代码实现

美颜算法,是指通过一系列数字图像处理技术,对人脸图像进行美化处理的过程。它包含各种技术,如皮肤平滑、美白、磨皮、眼睛放大等,目标是增强个人照片中人物的面部特征,使照片更加吸引人。美颜算法的发展经历了从简单滤镜到复杂图像分析处理的演变。早期的美颜算法侧重于直接对整个图像应用滤波,这种处理方式的缺点是缺乏针对性,会模糊掉照片中的细节信息。

weixin_42609225的博客 1144

pfld_106_face_landmarks:106点人脸关键点检测的PFLD算法实现

pfld_106_face_landmarks 106点人脸关键点检测的PFLD算法实现 :smiling_face_with_smiling_eyes: 转换后的ONNX模型 预训练权重 性能测试 update GhostNet update MobileNetV3 Backbone param MACC nme Link ONNX MobileNetV2 1.26M 393M 4.96% MobileNetV3 1.44M 201.8M 4.40% MobileNetV3_Small 0.22M 13M 6.22% 测试电脑MacBook 2017 13-Inch CPU i5-3.1GHz (single core) backbone FPS(onnxruntime cpu) Time(single face) v2.onnx 60.9 16ms V3.onnx 62.7 15.9ms lite.onnx 255 3.9ms R

python实现面部特效_【AI美颜算法】300行Python实现基于人脸特征的美颜算法

先上效果图:AI美颜人类一直是一个看脸的物种,人人都希望可以变得更美是无可争议的,而美颜类应用的出现拯救了所有人,从此人类进入了美(照)颜(骗)时代。。。。。每次写技术blog都要写一堆废话引言,现在懒得写,大概就是美颜很重要,美女主播靠它活,没了它大部分妹子不敢发朋友圈blabla。美颜算法的基础是人脸识别技术,市面上的美颜应用普遍使用了CV科技类公司的人脸识别(特征点提取)接口:MeituKi...

weixin_39822423的博客 2242

深入解析APS开源排程工具OptaPlanner:链式结构与移动优化

本文深入解析了开源APS排程工具OptaPlanner的核心机制,重点阐述了链式结构如何作为排程优化的“骨架”,通过单一`previous`变量隐式定义资源与顺序,从而简化建模。文章详细介绍了基于此结构的移动操作(如`ChainChangeMove`)如何驱动优化引擎探索解空间,并自动触发影子变量更新与分数计算,为构建高效、灵活的生产计划系统提供了实践指导。

keras9composer的博客 296

人脸检测与美颜技术介绍(OpenCV)

人工智能(AI) 人工智能(Artificial Intelligence),英文缩写为AI。它是研究、开发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的一门新的技术科学。 人工智能是计算机科学的一个分支,它企图了解智能的实质,并生产出一种新的能以人类智能相似的方式做出反应的智能机器,该领域的研究包括机器人、语言识别、图像识别、自然语言处理和专家系统等。 人工智能是研究使计算机来模拟人的某些思维过程和智能行为(如学习、推理、思考、规划等)的学科,主要包括计算机实现智能的原理、制造类似于人脑智能

quanhaoH的专栏 1万+

E-Prime脑电实验打mark全攻略:从端口查询到串并口实战(附常见问题解决)

本文提供了E-Prime脑电实验打mark的完整实战指南,涵盖端口查询、并口与串口配置的核心步骤及常见问题解决。文章深入解析了mark原理,并详细介绍了通过E-Basic脚本和Serial设备对象发送信号的两种方法,帮助研究者实现E-Prime与脑电设备的高精度时间同步,确保实验数据可靠性。

4k5l6j7h8的博客 354

Node框架之NestJS入门学习

文章主要分为三部分:1 NestJS 与Egg对比2 NestJS 基础知识介绍3 使用NestJS快速搭建应用,实现CURD操作e-link文档Egg官网NestJS 官网NestJS中文文档(非官方)

十九万里的博客 4738

微软自拍应用一键美颜背后的人工智能技术(附论文下载)

日前,微软宣布推出一款图片美化应用——微软自拍(Microsoft Selfie),它能够针对照片中出现的所有人脸的年龄和性别进行差异化一键自动美颜和降噪、补光,微软亚洲研究院视觉计算组主管研究员袁路向优快云记者介绍了微软自拍实现这些功能背后的人脸技术及计算摄影学技术。微软自拍技术流程解析微软自拍能够一键美化图片,在很短的时间内实现拍照+美化的全过程,其技术流程如下图:当你打开微软自拍准备开始拍...

happytofly的博客 2241

Jetson Orin Nano GPIO 实战,用 devmem 玩转 Pinmux 引脚复用配置

devmem 是一个直接读写寄存器的工具,通过 mmap 将 /dev/mem 中的物理地址区域映射到用户空间进程地址空间,从而实现直接读写,正常情况下在 /dev 下可以看到 mem。可以看到对应 bit5 bit6 分别为 1,对应配置为 E_IO_HV 为 ENABLE 以及 E_INPUT 为 ENABLE。需要 TRM 手册查看相关寄存器,以及安装 busybox,busybox 内置了 devmem。根据 TRM 手册,找到 I2C_SDA 的 pinmux 地址偏移是 0x18。

darcsdn 1641

人脸美颜——飞桨PaddleHub实战

基于PaddleHub的人脸美颜 随着各种美颜相机的出现,我们可以拍出各种胜似明星的照片,我们可以瘦脸、大眼、红唇以及增白,但这背后是如何实现的,你又了解多少呢? AI美颜核心技术之一就是人脸关键点检测。PaddleHub已经开源了人脸关键点检测模型face_landmark_localization。人脸关键点检测是人脸识别和分析领域中的关键一步,它是诸如自动人脸识别、表情分析、三维人脸重建及三...

qq_38808501的博客 1773

《信息化项目文档模板十二——业务需求新增/变更审批确认表 》

系列文章目录 《信息化项目文档模板一——项目需求说明书》 《信息化项目文档模板二——项目启动会文档模板》 《信息化项目文档模板三——会议纪要模板》 《信息化项目文档模板四——系统项目蓝图设计模板》 《信息化项目文档模板五——系统详细设计模板》 《信息化项目文档模板六——系统详细设计模板》 《信息化项目文档模板七——系统开发计划模板》 《信息化项目文档模板八——系统功能测试模板》 《信息化项目文档模板九——系统压力测试模板》 《信息化项目文档模板十——系统推广上线计划模板》 《信息化项目文档模板十一——系统用

商务合作|问题讨论|交流学习 请联系作者微信,加微信请务必注明来意,博客主页有联系方式 1712

Python 领域 vllm 知识蒸馏的实践经验

知识蒸馏(Knowledge Distillation)是一种将大型、复杂模型(教师模型)的知识转移到小型、高效模型(学生模型)的技术。在大型语言模型(LLM)时代,这项技术变得尤为重要,因为它可以在保持模型性能的同时显著降低计算资源需求。本文专注于在Python生态中使用vLLM(Very Large Language Model)框架实现知识蒸馏的实践经验。vLLM是一个专为大型语言模型设计的高效推理和服务框架,它通过创新的注意力机制和内存管理技术,显著提高了LLM的推理速度。

AI Python 编程之道的博客 776

美颜SDK人脸美型算法揭秘:从几何变形到AI精准塑颜

从几何变形到AI精准塑颜,美颜SDK的人脸美型算法经历了技术的深度演进。如今,AI结合GAN、3D重建、语义分割等技术,使美颜效果更加智能化和自然化。随着深度学习的持续优化,未来的美颜SDK将提供更高效、个性化的塑颜体验,满足不同用户的美学需求。

q1031691172的博客 978

蓝牙调试抓包工具--nRF Connect移动端 使用详细总结

摘要: nRF Connect移动端是一款功能全面的蓝牙低功耗(BLE)调试工具,支持设备扫描、多设备连接、服务/特征值查看及数据读写操作。核心功能包括实时数据通信(读取/写入/通知)、设备固件更新(DFU)以及高级工具如自动化测试和信号分析。兼容Android 4.3+和iOS设备,适用于开发调试(如ESP32/nRF52)、设备管理和数据分析。需注意设备兼容性问题(如旧安卓设备可能需关闭连续扫描),并确保数据类型匹配。配套工具链包括nRF Toolbox和nRF Connect SDK,是BLE开发的必

AIoT深度探索者 | 嵌入式系统架构师 深耕物联网(IoT)与人工智能(AI)融合技术,聚焦​​边缘计算、图像开发、低功耗通信协议​​,致力于智能硬件,关注我获取最新技术文章信息与海量资源~ 2373

直播美颜SDK功能开发实录:自然妆感算法、人脸跟踪与AI美颜技术

本文从技术与体验两方面,系统解析了直播美颜SDK的功能开发全过程。内容涵盖自然妆感算法实现、人脸跟踪与AI美颜核心技术、性能优化策略以及商业应用价值。文章不仅适合开发者了解技术原理,也能帮助品牌方洞察美颜SDK在直播与短视频场景下的商业潜力。

wanyuekeji的博客 613

养龙虾之_因特尔UHD/ULtra/Arc核显跑大模型_安装ollama_跑qwen3.5:0.8b/9b_使用copaw1.0.1测试_并配置copaw技能效果炸裂---AI大模型应用探索0019

摘要:本文探讨了利用Intel UHD770核显运行大语言模型的可能性。通过使用Intel发布的ipex-llm项目工具包,成功在核显上运行了Qwen3.5系列模型。测试发现0.8B小模型运行流畅(3-5秒响应),但智能程度有限;而9B大模型虽然效果更好,但响应时间长达2分钟,且GPU/CPU占用率不高。实验证明Intel核显确实可以运行LLM,但实际效果和性能表现仍有提升空间,特别是对大模型的支持尚不理想。

添柴程序猿的专栏 229

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

调用腾讯API实现人脸美颜

美颜的目的就是要让人看起来更美,包括:皮肤细腻、白皙、光滑、脸部各个器官及脸型可以进行细致的调整,通过美妆调节可以达到快速上妆的效果。人脸美颜效果,从技术上主要通过四个关键步骤实现。

ZHW-鲜橙大AI课题组的博客 2086

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

美狐美颜SDK趣拍功能的算法代码解析

首先从素描肖像风格开始说起,它的重点在于保护人像的轮廓以及五官信息,其中会设计到复杂的人脸关键点识别技术,难点在于去掉无关的颜色信息和纹理,精确还原“素描风”;内容作为图像的语义信息,泛指图内包含的内容以及其位置,它属于图像中较为底层的信息,可以用灰度值、目标轮廓进行描述,人脸处理的方法同样如此,由于过程比较复杂,小编就不过多赘述了。综上所述,这几个趣拍功能的不同之处在于,有的风格会对五官进行较大调整,例如卡通和油画风格,这两种都是比较抽象,会对五官进行美化以及极大调整;

q1031691172的博客 1163

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

基于 YOLOv8 + BeautyGAN + CodeFormer + Face Parsing 实现简单的人脸美颜的功能

下面三张图表示:使用 YOLOv8-Face 检测到人脸的区域、用 BeautyGAN 对人脸区域进行美颜、用 CodeFormer 对人脸区域细节重建。BeautyGan 模型的调用需要输入两张图,一张是原始人脸图像(通过 YOLOv8 获取的人脸区域),一张是参考妆容图像。下面两张图表示:用 Face Parsing 获得美颜后的面部Mask、通过 Mask 将处理后的人脸融回原图中的人脸区域。整个流程涉及到多个模型,各个模型的部署和加速都使用 ONNXRuntime,每个模型的调用我都封装好了。

Java与Android技术栈 1162
上一篇: ARM7汇编指令速查表:针对SF32LB52常用操作
下一篇: 从零到Hex:IAR工程创建与CC2530F256配置全解析
肥宅快乐水901
博客等级 码龄4年 41粉丝 1295原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值