新闻详情

新闻详情

首页 / 资讯中心 / 详情

小样本目标检测数据扩充:YOLO模型泛化提升实战指南

发布时间:2026/9/28 6:23:18来源:尧图网络
小样本目标检测数据扩充:YOLO模型泛化提升实战指南
简介这份资源面向在YOLO目标检测任务中受困于小样本数据不足的开发者与算法学习者提供一套可落地的图像数据集扩充方案帮助缓解训练过拟合、提升模型泛化能力。压缩包共2个文件包含1个py脚本与1个md说明文档整体约5KB其中脚本负责实现几何变换、色彩变换、噪声注入、关键点与边界框同步变换、实例掩码及混合图像等增强策略文档则用于说明用法与思路便于快速集成到现有训练流程。资源已有11956人学习下载热度较高说明其在小样本检测场景中具备实用参考价值。读者可据此理解各类增强手段对光照、角度、尺度、遮挡等变化的模拟逻辑并结合OpenCV、torchvision等库调整参数按任务需求组合增强策略从而扩充数据集多样性、改善YOLO模型在真实场景下的检测表现。1. 小样本目标检测的困局为什么你的 YOLO 模型总在“没见过”的类别上翻车做过 YOLO 训练的人多半遇到过这种场景手头只有几十张甚至十几张某个类别的标注图满心欢喜地丢进 YOLOv8 或 YOLOv11 里跑结果训练 loss 看着还行一到验证集就原形毕露——要么漏检一大片要么把背景里的杂物全框成目标。这不是模型不行而是小样本条件下数据分布太稀疏模型根本没机会学到这个类别的纹理、尺度和上下文规律。小样本图像数据集扩充方法本质上就是解决“标注少、场景单一、模型泛化差”这条链路上的第一环。它适合两类人一类是刚接手工业质检、遥感、红外等垂直场景标注成本高到离谱的工程师另一类是想在 YOLO 框架下做快速原型验证但手里只有少量实拍图的开发者。这一章不堆公式先把扩充这件事的边界和选型逻辑讲清楚后面几章再落到能直接抄的代码和参数上。小样本扩充不是简单地把图片旋转 90 度、调个亮度就完事。YOLO 系列对标注框的几何一致性极其敏感你做的任何几何变换都必须同步变换 label 里的归一化坐标否则训练时框和物体对不上模型直接学废。更麻烦的是小样本场景下类别不平衡会被放大——你扩充了 200 张“缺陷”图但背景图没动模型就会疯狂输出假阳性。所以扩充策略必须和 YOLO 的损失函数设计挂钩分类损失和定位损失对数据分布的敏感度不同扩充时得优先保证定位框的多样性再考虑外观多样性。常见做法是先用几何增强把样本量撑到每类 200 到 500 张再用马赛克、混合等策略提升上下文复杂度最后用生成式方法补足极端尺度或遮挡样本。这条路径在 YOLOv5、YOLOv8 上验证过很多次YOLOv11 和所谓的 yolov26 目标检测在数据接口上基本兼容换汤不换药。2. 几何与色彩扩充用 Albumentations 把几十张图撑到可训练规模2.1 为什么几何增强必须和 YOLO 标注格式严格对齐YOLO 的标注格式是class_id x_center y_center width height全部归一化到 0 到 1。你如果用 OpenCV 或 PIL 做旋转、裁剪、缩放必须自己写坐标变换函数稍有不慎就会把框转到图像外面或者宽高算反。血泪经验是不要自己造轮子直接用 Albumentations它的BboxParams能自动处理 YOLO 格式的坐标同步。选 Albumentations 而不是 torchvision.transforms 的原因是后者对多目标框的同步变换支持较弱尤其是随机裁剪和仿射变换时容易丢框。Albumentations 的另一个好处是支持min_visibility参数可以过滤掉变换后可见面积过小的框避免模型学到一堆残缺目标。下面这段代码是我在多个小样本项目里反复用的几何增强流水线输入是 YOLO 格式的图片和 label 文件输出是扩充后的图片和对应 label。注意bbox_params里的formatyolo和min_visibility0.3这两个参数直接决定扩充后的数据能不能用。import albumentations as A import cv2 import os import numpy as np # 定义几何增强流水线针对小样本场景 transform A.Compose([ A.HorizontalFlip(p0.5), # 水平翻转p0.5 避免所有图都镜像 A.VerticalFlip(p0.2), # 垂直翻转仅对上下对称场景启用 A.RandomRotate90(p0.3), # 90度旋转适合航拍或遥感 A.Affine( scale(0.8, 1.2), # 缩放范围小样本不要超过 1.2 倍 translate_percent(-0.1, 0.1), # 平移比例控制在 10% 以内 rotate(-15, 15), # 小角度旋转避免框出界 shear(-5, 5), # 轻微剪切增加形变多样性 p0.7 ), A.RandomSizedBBoxSafeCrop( height640, width640, # 输出尺寸对齐 YOLO 输入 erosion_rate0.2, # 裁剪时保留至少 20% 的框面积 p0.3 ), ], bbox_paramsA.BboxParams( formatyolo, # 关键声明标注为 YOLO 格式 min_visibility0.3, # 过滤可见面积小于 30% 的框 label_fields[class_labels] # 类别标签字段名 )) def augment_yolo_dataset(img_dir, label_dir, out_img_dir, out_label_dir, augment_times5): os.makedirs(out_img_dir, exist_okTrue) os.makedirs(out_label_dir, exist_okTrue) for img_name in os.listdir(img_dir): if not img_name.endswith((.jpg, .png, .jpeg)): continue img_path os.path.join(img_dir, img_name) label_path os.path.join(label_dir, os.path.splitext(img_name)[0] .txt) if not os.path.exists(label_path): continue image cv2.imread(img_path) image cv2.cvtColor(image, cv2.COLOR_BGR2RGB) bboxes [] class_labels [] with open(label_path, r) as f: for line in f.readlines(): parts line.strip().split() if len(parts) 5: class_labels.append(int(parts[0])) bboxes.append([float(x) for x in parts[1:]]) # 原始图也保留一份避免扩充后分布偏移 cv2.imwrite(os.path.join(out_img_dir, img_name), cv2.cvtColor(image, cv2.COLOR_RGB2BGR)) with open(os.path.join(out_label_dir, os.path.splitext(img_name)[0] .txt), w) as f: for cls, box in zip(class_labels, bboxes): f.write(f{cls} { .join([f{x:.6f} for x in box])}\n) # 生成增强样本 for i in range(augment_times): try: augmented transform(imageimage, bboxesbboxes, class_labelsclass_labels) except Exception as e: continue # 某些变换可能导致无有效框跳过 if len(augmented[bboxes]) 0: continue aug_img_name f{os.path.splitext(img_name)[0]}_aug_{i}.jpg cv2.imwrite(os.path.join(out_img_dir, aug_img_name), cv2.cvtColor(augmented[image], cv2.COLOR_RGB2BGR)) with open(os.path.join(out_label_dir, os.path.splitext(aug_img_name)[0] .txt), w) as f: for cls, box in zip(augmented[class_labels], augmented[bboxes]): f.write(f{cls} { .join([f{x:.6f} for x in box])}\n) # 调用示例 augment_yolo_dataset( img_dirdatasets/train/images, label_dirdatasets/train/labels, out_img_dirdatasets/train_aug/images, out_label_dirdatasets/train_aug/labels, augment_times5 )这段代码的逻辑是先读取原始 YOLO 标注把类别和框坐标分开存然后对每张图做多次随机增强每次增强后检查有效框数量如果框全被裁掉就丢弃这次结果。参数上augment_times5意味着每张原图生成 5 张增强图加上原图一共 6 张几十张图能撑到几百张。min_visibility0.3是经验值低于这个值模型很难学到完整目标特征。scale上限设 1.2 是因为小样本本身分辨率有限放大太多会引入插值模糊。如果你做的是遥感图像目标检测可以把RandomRotate90的 p 提到 0.5因为遥感目标方向任意如果是工业质检VerticalFlip要慎用很多缺陷有方向性。2.2 色彩与噪声增强别让模型把颜色当类别特征几何增强解决的是位置和尺度多样性但小样本的另一个坑是颜色偏差。比如你采集的“玩手机目标检测”数据全是在暖光下拍的模型可能学会“暖色手机”换到冷光场景直接失效。色彩增强的目的就是打破这种虚假关联。但要注意YOLO 对 HSV 空间的变换比 RGB 更鲁棒因为 HSV 把色调、饱和度、亮度解耦了调整亮度不会影响色调判断。常见做法是在 Albumentations 里加HueSaturationValue、RandomBrightnessContrast和GaussNoise但参数不能太激进否则目标纹理被破坏定位损失会震荡。# 色彩与噪声增强接在几何增强之后 color_transform A.Compose([ A.HueSaturationValue( hue_shift_limit10, # 色调偏移 ±10超过 15 容易变色 sat_shift_limit20, # 饱和度偏移 ±20 val_shift_limit15, # 亮度偏移 ±15 p0.5 ), A.RandomBrightnessContrast( brightness_limit0.15, # 亮度对比度调整幅度 contrast_limit0.15, p0.4 ), A.GaussNoise( var_limit(5.0, 20.0), # 高斯噪声方差范围 p0.3 ), A.ISONoise( color_shift(0.01, 0.05), # 模拟传感器噪声 intensity(0.1, 0.3), p0.2 ), ], bbox_paramsA.BboxParams(formatyolo, min_visibility0.3, label_fields[class_labels]))参数说明hue_shift_limit10是安全阈值再大可能把红色目标变成橙色类别语义就变了。var_limit控制噪声强度5 到 20 之间对 YOLO 的检测头影响最小。ISONoise适合模拟低光照或高 ISO 场景如果你的数据来自手机拍摄这个增强很实用。注意色彩增强不要和几何增强同时以高概率叠加否则一张图可能被改得面目全非训练时 loss 会剧烈波动。我一般把几何增强和色彩增强分成两个独立的 transform按 7:3 的比例分别生成样本这样数据分布更可控。3. 马赛克与混合增强用上下文拼接提升 YOLO 的定位鲁棒性3.1 马赛克增强在 YOLOv8 里的实现细节与参数调优马赛克增强是 YOLOv4 引入的后来 YOLOv5、YOLOv8 都内置了。它的做法是把 4 张图随机缩放、裁剪后拼成一张大图相当于让模型在一张图里看到 4 个不同场景的目标。对小样本来说马赛克的价值在于它不需要额外标注就能让模型学到目标在不同背景、不同尺度下的表现。但马赛克有个副作用——拼接边缘会出现不自然的截断如果标注框正好跨在拼接缝上模型会学到错误的边界特征。所以 YOLOv8 在训练时默认开启马赛克但到了最后 10 个 epoch 会关闭就是为了让模型在真实分布上收敛。如果你要自己实现马赛克增强核心是控制拼接比例和缩放范围。下面是一个简化版实现输入是 4 张图和对应 label输出是一张拼接图和合并后的 label。import cv2 import numpy as np import random def mosaic_augment(imgs, labels, input_size640): imgs: list of 4 images (numpy array) labels: list of 4 label arrays, each row [class, x, y, w, h] normalized s input_size # 随机中心点控制拼接比例 yc, xc [int(random.uniform(s * 0.4, s * 0.6)) for _ in range(2)] # 四张图的目标尺寸 hw [s * 2, s * 2] # 创建画布 mosaic_img np.full((s * 2, s * 2, 3), 114, dtypenp.uint8) mosaic_labels [] for i, (img, label) in enumerate(zip(imgs, labels)): h, w img.shape[:2] # 随机缩放范围 0.5 到 1.5 scale random.uniform(0.5, 1.5) new_h, new_w int(h * scale), int(w * scale) img_resized cv2.resize(img, (new_w, new_h)) # 根据位置放置 if i 0: # 左上 x1, y1, x2, y2 xc - new_w, yc - new_h, xc, yc elif i 1: # 右上 x1, y1, x2, y2 xc, yc - new_h, xc new_w, yc elif i 2: # 左下 x1, y1, x2, y2 xc - new_w, yc, xc, yc new_h else: # 右下 x1, y1, x2, y2 xc, yc, xc new_w, yc new_h # 裁剪到画布范围内 x1_c, y1_c max(0, x1), max(0, y1) x2_c, y2_c min(s * 2, x2), min(s * 2, y2) if x2_c x1_c or y2_c y1_c: continue # 放置图像 mosaic_img[y1_c:y2_c, x1_c:x2_c] img_resized[ y1_c - y1:y2_c - y1, x1_c - x1:x2_c - x1 ] # 变换 label for row in label: cls, x, y, w, h row # 转成绝对坐标 abs_x, abs_y x * new_w, y * new_h abs_w, abs_h w * new_w, h * new_h # 映射到画布 new_abs_x abs_x (x1_c - x1) new_abs_y abs_y (y1_c - y1) # 检查是否在画布内 if new_abs_x 0 or new_abs_y 0 or new_abs_x s * 2 or new_abs_y s * 2: continue # 转回归一化坐标 new_x new_abs_x / (s * 2) new_y new_abs_y / (s * 2) new_w_norm abs_w / (s * 2) new_h_norm abs_h / (s * 2) # 过滤太小的框 if new_w_norm * s * 2 4 or new_h_norm * s * 2 4: continue mosaic_labels.append([cls, new_x, new_y, new_w_norm, new_h_norm]) # 最终缩放到 input_size mosaic_img cv2.resize(mosaic_img, (s, s)) return mosaic_img, np.array(mosaic_labels)这段代码的关键参数是scale范围 0.5 到 1.5以及中心点yc, xc在 0.4s 到 0.6s 之间随机。缩放范围太小马赛克效果不明显太大小目标会被缩得看不见。中心点控制四张图的占比偏中心能让每张图都有足够面积。注意最后要过滤掉宽高小于 4 像素的框YOLO 的检测头对极小目标不敏感留着只会增加噪声。马赛克增强一般只在训练前期用训练后期关掉让模型在真实分布上微调。YOLOv8 的配置文件里mosaic1.0表示 100% 概率开启close_mosaic10表示最后 10 个 epoch 关闭。3.2 MixUp 与 Copy-Paste小样本下的取舍MixUp 是把两张图按透明度叠加标签也按比例混合。对小样本目标检测来说MixUp 有个致命问题它会让两个目标的框重叠YOLO 的定位损失会 confused尤其是当两个目标类别不同时分类损失也会打架。所以 MixUp 在目标检测里一般只用于分类任务检测任务要慎用。Copy-Paste 则是把一张图里的目标抠出来贴到另一张图上标签直接复制。这个方法对小样本非常有效因为它能人为制造目标在不同背景下的样本而且不改变目标的几何形状。但 Copy-Paste 需要精确的实例掩码如果你只有边界框标注抠图会带进背景噪声反而降低数据质量。常见做法是如果你有实例分割标注用 Copy-Paste 扩充稀有类别如果只有框标注优先用马赛克和几何增强。YOLOv8 的copy_paste参数在分割任务里默认 0.0检测任务里也不建议开。我一般会在小样本项目里手动实现一个简化版 Copy-Paste只对面积大于 32x32 的框做抠图粘贴时随机选择位置并确保新框与已有框的 IoU 小于 0.3避免重叠。这个策略在电力红外数据集firc-dataset上试过稀有类别的召回率能提升 8 到 12 个百分点。4. 生成式扩充用扩散模型补足极端场景但别指望它替代真实数据4.1 什么时候该用生成式方法什么时候不该用生成式扩充这两年很火尤其是 Stable Diffusion 和各类微调方案。但我要泼一盆冷水生成式方法在小样本目标检测里只适合补足极端场景比如夜间、雨雾、严重遮挡这些真实采集成本极高的样本。如果你只是缺普通光照下的目标图几何增强和色彩增强就够了生成式方法反而会引入不真实的纹理让模型学到伪特征。判断标准很简单如果你的验证集里存在真实场景的极端样本但训练集里没有那可以用生成式方法补如果验证集和训练集分布一致只是数量少那就别用。另一个坑是生成图和标注框的对齐。你用扩散模型生成一张“缺陷”图模型并不知道缺陷在哪你得手动标注或者用分割模型辅助。这个过程很容易引入标注噪声而 YOLO 对标注噪声的容忍度很低。所以生成式扩充的流程一般是先用少量真实样本微调一个扩散模型生成候选图再用一个预训练的 YOLO 模型做伪标注人工筛选后加入训练集。这个流程成本不低只建议在类别极度不平衡且采集成本极高时使用。4.2 用 ControlNet 约束生成目标的位置和尺度如果你决定用生成式方法ControlNet 是目前最可控的方案。它可以通过边缘图、深度图或分割图来约束生成内容的位置和形状。对小样本目标检测我一般用 Canny 边缘图作为条件因为边缘图能保留目标的轮廓信息同时允许纹理变化。具体做法是从真实样本里提取目标的边缘图作为 ControlNet 的输入生成新的背景和纹理。这样生成的目标位置和真实样本一致标注框可以直接复用。# 伪代码示意实际需要 diffusers 和 controlnet_aux 库 from diffusers import StableDiffusionControlNetPipeline, ControlNetModel from controlnet_aux import CannyDetector import torch controlnet ControlNetModel.from_pretrained( lllyasviel/sd-controlnet-canny, torch_dtypetorch.float16 ) pipe StableDiffusionControlNetPipeline.from_pretrained( runwayml/stable-diffusion-v1-5, controlnetcontrolnet, torch_dtypetorch.float16 ).to(cuda) canny CannyDetector() # 从真实样本提取边缘 edge_map canny(real_image, low_threshold100, high_threshold200) # 生成新图prompt 描述目标类别和场景 new_image pipe( prompta defect on metal surface, industrial inspection, high detail, imageedge_map, num_inference_steps30, guidance_scale7.5 ).images[0] # 标注框沿用真实样本的框因为边缘图约束了位置参数上low_threshold和high_threshold控制边缘提取的敏感度100 和 200 是常用值。guidance_scale7.5是默认的文本引导强度太高会过拟合 prompt太低则生成结果偏离。num_inference_steps30是速度和质量的折中再高提升不明显。注意生成图的分辨率要和 YOLO 输入一致否则缩放会引入模糊。生成式扩充的样本比例不要超过总数据的 20%否则模型会偏向生成分布在真实测试集上掉点。这个比例是我在多个项目里试出来的经验值超过 30% 基本都会翻车。5. 避坑与排查小样本扩充里最容易翻车的 5 个地方5.1 扩充后类别分布失衡模型变成“背景检测器”现象训练 loss 正常下降但验证时模型把大量背景框成目标mAP 低得离谱。原因几何增强和色彩增强对所有类别一视同仁但小样本里稀有类别本身样本就少增强后虽然总数上去了但和常见类别的比例没变甚至因为常见类别的增强样本更多失衡更严重。解决按类别分别设定增强倍数稀有类别多增强常见类别少增强。具体做法是统计每个类别的样本数计算最大类别和最小类别的比例对最小类别设置augment_times10最大类别设augment_times2。同时用WeightedRandomSampler在训练时按类别频率采样让每个 batch 里稀有类别占比不低于 20%。5.2 标注框在增强后越界或宽高为负现象训练时出现RuntimeError: invalid bbox或者 loss 突然变成 NaN。原因Albumentations 的Affine变换在极端参数下可能把框的宽高算成负数或者坐标超出 0 到 1 范围。解决在BboxParams里加check_each_transformTrue让 Albumentations 每次变换后都检查框的有效性。另外在保存 label 前加一道过滤if w 0 or h 0 or x 0 or y 0 or x 1 or y 1: continue。这个过滤逻辑要写在增强循环里不能只依赖库的默认检查。5.3 马赛克增强导致小目标消失现象训练前期 mAP 上升后期突然下降验证集里小目标全漏检。原因马赛克把 4 张图缩放到同一画布小目标被缩得更小YOLO 的 P3 检测头 stride 8可能感受不到。解决控制马赛克的缩放范围scale下限不要低于 0.5同时在训练后期关闭马赛克让模型在原始尺度上微调。YOLOv8 的close_mosaic参数就是干这个的一般设 10 到 15。如果你自己实现马赛克记得在最后 10 个 epoch 把mosaic概率设为 0。5.4 生成式样本的伪标注噪声拖垮模型现象加入生成图后训练 loss 震荡验证集 mAP 不升反降。原因扩散模型生成的图里目标边界模糊伪标注框要么偏大要么偏小YOLO 的定位损失被这些噪声框带偏。解决生成图只用于分类损失不参与定位损失。具体做法是在数据加载时给生成图打一个is_synthetic标记在损失函数里对合成样本的定位损失乘以 0.1 的权重。这个技巧在 YOLOv5 的compute_loss里改几行就能实现能显著降低伪标注的负面影响。5.5 扩充后验证集泄漏指标虚高现象训练时 mAP 很高一到真实测试集就崩。原因增强时不小心把验证集的图也扩充了或者增强后的图和验证集图来自同一张原图导致数据泄漏。解决严格划分训练集和验证集先划分再增强。增强脚本只处理训练集目录验证集目录保持原样。另外如果用了马赛克或 Copy-Paste确保拼接的图都来自训练集不要混入验证集。这个坑很隐蔽但一旦踩中所有指标都不可信。6. 验证扩充是否有效的三个硬指标与一个习惯扩充做完怎么判断它真的有用别只看 mAP那东西在小样本下波动很大。我一般看三个硬指标第一稀有类别的召回率Recall是否提升如果扩充后稀有类别召回没动说明增强样本没被模型学到第二验证集的假阳性率False Positive Rate是否下降如果假阳性上升说明扩充引入了背景噪声第三训练 loss 和验证 loss 的差距是否缩小如果差距拉大说明过拟合没缓解。这三个指标在 YOLO 的验证输出里都能直接拿到val.py跑一遍就有。还有一个习惯每次扩充后用yolo detect val在验证集上跑一遍把混淆矩阵导出来看。YOLO 的混淆矩阵有时候会出现“总合不唯一”的玄学问题那是因为多类别预测时归一化方式不同不用慌看对角线就行。如果某个类别的对角线数值明显偏低说明这个类别的扩充样本质量有问题回去检查增强参数。我自己的习惯是扩充前后各跑一次验证把两次的混淆矩阵并排看稀有类别的对角线提升超过 5% 才算有效。如果没提升宁可不用扩充也不要硬塞噪声数据。希望帮到你。本文还有配套的精品资源点击获取
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

基于CNN特征提取的本地图片视频重复检测与整理工具设计 2026/9/28 7:19:47

基于CNN特征提取的本地图片视频重复检测与整理工具设计

1. 从一次硬盘大扫除说起:为什么传统哈希方案搞不定重复图片视频前阵子帮朋友整理他那块快满的4T硬盘,里面堆了五六年的照片、手机视频、网剧缓存,光是"图片重名副本"和"同一段视频的不同压缩版本"就占了接近1TB。一开始…

阅读更多 →
Jev模型接入Codex完整教程:从申请密钥到实战测评 2026/9/28 7:19:47

Jev模型接入Codex完整教程:从申请密钥到实战测评

这两天我的信息流被 Jev 模型刷屏了。朋友圈、开发者群、技术社区全在聊它,从“什么时候能用”到“怎么接入 Codex”,话题热度一直没降。我上手测了两天,从注册申请、拿密钥、配 Codex,到跑实际编码任务,把整条链路都走…

阅读更多 →
美食数据爬取分析可视化实战:从乱码到热力图的闭环链路 2026/9/28 7:19:46

美食数据爬取分析可视化实战:从乱码到热力图的闭环链路

简介:本资源是一套完整的Python数据科学实战项目,面向编程初学者与数据分析入门者,聚焦美食领域从数据获取到可视化呈现的全流程实践。项目涵盖网络爬虫(requestsBeautifulSoup)、数据清洗分析(pandasNumPy…

阅读更多 →
YOLO吸烟行为检测数据集实战:从数据验证到模型训练与落地 2026/9/28 7:19:46

YOLO吸烟行为检测数据集实战:从数据验证到模型训练与落地

简介:这份YOLO吸烟检测数据集面向计算机视觉学习者与目标检测开发者,用于训练和验证吸烟行为识别模型,可应用于公共场所禁烟监控、工地安全管理等场景。数据集已按train、val、test完成划分,并附带data.yaml配置文件,类…

阅读更多 →
WorkBuddy AI工作台实战:规则配置与流程自动化指南 2026/9/28 7:19:45

WorkBuddy AI工作台实战:规则配置与流程自动化指南

我现在日常开发里最烦的不是写复杂逻辑,而是那些重复的“小事情”:改十几处日志格式、补接口文档、把A环境的配置复制到B环境再改几个字段。这些事不复杂,但很占时间。后来我把WorkBuddy搭成了自己的AI工作台,把这类流程逐步自动化…

阅读更多 →
Jev模型接入Vercel AI Gateway:简历筛选自动化实践 2026/9/28 7:19:39

Jev模型接入Vercel AI Gateway:简历筛选自动化实践

最近 Jev 模型的热度一下子上来了,GitHub 和技术群里到处能看到有人问“Jev 密钥怎么申请”“Jev 能不能在 Codex 里用”。我倒是没赶潮流去聊大模型本身,而是直接把 Jev 接进了我的简历筛选小工具里,通过 Vercel AI Gateway 做统一的模型入口…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉