ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

机器视觉引导机械臂0.1mm定位:从标定到补偿全解析

机器视觉引导机械臂0.1mm定位:从标定到补偿全解析 简介这份38页的PDF文档聚焦工业机器人视觉与机械臂抓取中的高精度定位问题面向智能制造、机器人视觉或目标检测领域的工程师与研究人员。文档以YOLOv11单阶段检测算法为主线系统梳理YOLO系列演进、模型结构改进策略并结合相机标定、运动学模型优化、先进控制算法、传感器融合与在线监测等技术解析将定位误差控制到0.1mm的关键路径。内容覆盖工业视觉与抓取概述、误差来源分类、YOLOv11误差控制算法实现、实验验证及行业应用案例支持目录章节跳转与大纲快速定位文字图表显示完整。全篇共1个PDF文件包体约1.96MB已有108人学习下载。适合需要提升机械臂抓取精度、理解YOLOv11工程化应用并快速构建系统知识框架的读者参考。1. 0.1mm秘诀不是调模型而是把整条定位链磨到能闭环看到这个标题时我猜你多半已经在产线上被某个抓取点卡过YOLOv11检得飞快框也很准机械臂却每次歪那么零点几毫米。先说结论——0.1mm定位误差不是单靠一个检测模型能解决的它是一条从相机内参、镜头畸变、标定板、手眼矩阵、TCP标定、平面深度约束到机器人本体重复精度的系统工程指标。YOLOv11在这条链里的角色只是“看清工件”真正决定0.1mm的是它前后那些矩阵和补偿表。这篇文章把这套链路拆开讲从畸变校正、手眼标定、像素坐标转换讲到网格误差补偿和现场排错最后给出一个可执行的验证方法。适合做3C装配、电池模组、注塑件分拣的视觉工程师和集成调试人员。读完你能判断自己的误差到底卡在哪一环以及要不要为此上视觉伺服。2. 相机标定与手眼标定先把0.1mm的物理基准钉死在机械臂基座上2.1 畸变参数为什么不能拿出厂值将就标定板、亚像素角点与重投影误差抓取定位的前提是相机算出的那个像素点真的对应物理平面上那个点。工业镜头出厂给的内参只能保证画面“能看”不能保证亚像素级的几何映射。尤其500万像素以上的相机配普通C接口镜头画面边角的径向畸变可以让边缘点偏移几十个像素。折算到工作距离上这就是几个毫米的物理误差。我一般用OpenCV的棋盘格标定先把内参矩阵和畸变系数固定下来。采集标定板图像时有几个硬性要求控制在20到30张标定板要分别出现在画面的中心、四角、上下左右边缘姿态要倾斜、旋转都覆盖到。只拍平放在桌上的十几张标定出来的模型对边缘畸变几乎没约束力。import cv2 import numpy as np import glob # 棋盘格内角点数量例如(11, 8)不要填成棋盘格块数 pattern (11, 8) criteria (cv2.TERM_CRITERIA_MAX_ITER | cv2.TERM_CRITERIA_EPS, 30, 1e-6) # 世界坐标系中的角点坐标单位用mm之后可换算方便 objp np.zeros((pattern[0] * pattern[1], 3), dtypenp.float32) objp[:, :2] np.mgrid[0:pattern[0], 0:pattern[1]].T.reshape(-1, 2) obj_points, img_points [], [] images glob.glob(camera_calib/*.bmp) for fname in images: img cv2.imread(fname) gray cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) ret, corners cv2.findChessboardCorners(gray, pattern, None) if ret: # 亚像素角点精化这是后续精度的关键一步 corners_sub cv2.cornerSubPix(gray, corners, (5, 5), (-1, -1), criteria) obj_points.append(objp) img_points.append(corners_sub) ret, mtx, dist, rvecs, tvecs cv2.calibrateCamera( obj_points, img_points, gray.shape[::-1], None, None) print(重投影误差RMS:, ret) print(内参矩阵:\n, mtx) print(畸变系数:, dist.ravel())ret就是重投影误差单位是像素。标定完后务必看一眼如果RMS超过0.1像素说明标定板照片质量不够或张数不够建议删掉模糊、反光、角点不全的图重标。mtx是内参矩阵包含焦距与光心dist是畸变系数一般取前五项k1、k2、p1、p2、k3。这里有个容易踩的点后续在像素坐标转换时一定先用cv2.undistortPoints做去畸变不能拿着原始像素坐标直接套相似三角形公式算空间点否则边缘误差会原封不动带进抓取坐标。2.2 眼在手外与眼在手上选错方案后期补偿都是白费手眼关系分两种相机固定在机械臂外部叫Eye-to-Hand相机装在机械臂末端叫Eye-in-Hand。对这个标题的场景我通常优先推荐Eye-to-Hand原因是基准稳定。相机固定后标定一次手眼矩阵只要支架不被撞、温度不剧烈变化长时间内坐标关系都稳定。抓取时延迟也低——相机拍照算出目标位置机器人直接开过去不用等运动到位再拍第二轮。Eye-in-Hand的优势是灵活相机跟着机械臂走近处看得细还能规避遮挡。但它的代价是每移动一次标定矩阵的有效性取决于机器人关节角读数精度和TCP标定精度抓取时如果采用“先视觉后开环”的方式误差链比Eye-to-Hand多一环末端运动学误差。对0.1mm这种量级我见过太多Eye-in-Hand在低速和停机时标得很好一跑起来就回不到那个精度。对比项眼在手外 Eye-to-Hand眼在手上 Eye-in-Hand标定对象相机到机械臂基座相机到机械臂末端法兰基准稳定性高相机固定中受法兰运动学与振动影响遮挡处理差需保证视野无遮挡好可贴近目标避开遮挡典型残差0.3~1mm0.5~1.5mm适用场景固定工位分拣、装配大范围移动、车床上下料固定工位抓取、工作平面不变、节拍紧凑这三种特征都指向Eye-to-Hand。如果你已经买了Eye-in-Hand的机械臂也不是不能用但后续做0.1mm补偿时要把TCP偏差当作主要误差源去处理。2.3 用calibrateHandEye求解手眼矩阵姿态数量、旋转幅度与验证方法Eye-to-Hand的做法是标定板固定在机械臂末端法兰上机械臂带着标定板走十几个不同姿态每个姿态下记录两样东西——机器人控制器给出的法兰相对基座的位姿以及相机识别标定板得到的标定板相对相机的位姿。这两组数据满足AXXB用OpenCV的calibrateHandEye可以直接解出相机相对机械臂基座的变换矩阵。import cv2 import numpy as np # 假设已经同步采集了N个姿态 # R_gripper2base: 每个姿态下机器人法兰系相对基座系的旋转矩阵, shape (N,3,3) # t_gripper2base: 对应平移向量, shape (N,3) # R_target2cam: 每个姿态下标定板相对相机的旋转 # t_target2cam: 对应平移 # 这些数据可以从机器人示教器导出也可以从标定板的solvePnP结果得到 R_cam2base, t_cam2base cv2.calibrateHandEye( R_gripper2base, t_gripper2base, R_target2cam, t_target2cam, methodcv2.CALIB_HAND_EYE_TSAI ) # 验证对某一姿态用标定板在相机中的位姿推回机械臂基座 # 标定板中心在法兰系中的坐标是固定的推回基座后应与机器人示数值一致 for i in range(len(R_gripper2base)): P_board_in_base R_gripper2base[i].dot(t_board2gripper) t_gripper2base[i] P_board_in_cam R_target2cam[i].dot(t_board2gripper) t_target2cam[i] P_check R_cam2base.dot(P_board_in_cam) t_cam2base.reshape(3) print(残差mm:, np.linalg.norm(P_board_in_base - P_check))标定后残差如果普遍在1mm以上不要急着往下走。常见原因是姿态采集不够少于15个姿态、姿态间旋转角度太小、标定板总在视野中间打转。正确做法是让机械臂在可动范围内绕三个轴都有30度以上的转角变化标定板覆盖相机视野的各个区域。要检测采集的姿势差异是否足够可以用“看标定板覆盖位置热力图”的直观方法把你采的十几张图的角点位置全部画在一张空白画布上如果集中成一小团就回到第2.1的采集阶段重拍。这一步有个多年经验手眼标定残差做到0.3mm以内才有资格谈0.1mm抓取。很多系统跑到这里残差就是0.8mm靠后面网格补偿硬拉回来一部分但补偿表对视野边角效果差最终还是兜不住。3. 用YOLOv11识别工件检测框、掩码与机械臂抓取点的差距3.1 训练一个自己的YOLOv11模型环境配置、数据集与最小训练命令先交代环境。YOLOv11属于Ultralytics系列用pip install ultralytics即可拉起基础依赖需要Python 3.8以上以及对应版本的PyTorch。权重文件首次调用时会自动下载也可以手动下载后放到工程目录里离线环境不会卡在这一步。模型名字按规模排列为yolo11n.pt、yolo11s.pt、yolo11m.pt到yolo11x.pt抓取场景中一般从s或m起步因为n的参数量小对纹理少的小工件容易过拟合。# train.yaml 内容示例 path: ./datasets/ train: images/train val: images/val names: 0: connector 1: screw 2: cover # 训练命令 yolo detect train datatrain.yaml modelyolo11s.pt \ epochs200 imgsz640 batch16 patience30参数说明imgsz是输入分辨率抓取场景里我强烈建议用1024甚至1280去训练而不是默认的640。工件在画面中的像素尺寸越小低分辨率下特征越弱检测框的边缘越抖后期换算成抓取中心就会多出不可控的像素误差。epochs200是给数据量在几百张这个档次的项目用的如果你的数据集只有一两百张调高epoch配好增强比换成更大的模型更有效。数据标注阶段要注意标注框不要贴工件贴得太紧留2到3个像素的裕度。虽然YOLOv11在推理时会自己回归边界但如果标注边框本身就是“镶嵌式”地紧贴边缘轮廓抖动和旋转工件的长宽比变化都会放大中心点的波动。数据集构成上至少包含不同光照、不同摆放角度、不同遮挡程度的图片否则现场换一条产线灯管检测框就飘了。训练完成后用yolo predict跑一遍验证集把推理结果保存下来肉眼看一下注意检查检测框的置信度阈值不要设太高抓取场景中漏检的代价比误检大得多。对工件的边缘纹理还可以打开模型的输出热力图分析一下看模型是依赖工件外形还是背景噪声做判断——这一步虽玄学但能省下很多现场调试时间。3.2 别直接拿包围盒中心当抓取点掩码轮廓、minAreaRect与角度归一化很多初学者直接用YOLOv11目标检测输出的xywh中心当作抓取中心这在规则矩形、且相机光轴垂直于工件表面时勉强能用。一旦工件是圆形之外的异形件、或者画面中有多个工件重叠边缘、或者工件存在旋转矩形框中心就会偏离真实重心角度更是完全没着落。我的做法是改用YOLOv11的分割模型用分割掩码跑轮廓拟合一步到位拿到抓取中心与姿态角。import cv2 import numpy as np from ultralytics import YOLO model YOLO(runs/segment/train/weights/best.pt) results model.predict(frame.png, imgsz1280, conf0.5) # 取第一个目标的掩码转成二值图 mask results[0].masks.data[0].cpu().numpy() mask (mask * 255).astype(np.uint8) # 轮廓分析 contours, _ cv2.findContours(mask, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE) if len(contours) 0: raise RuntimeError(未检测到目标轮廓抓取中止) # 最小外接矩形中心、宽高、旋转角 rect cv2.minAreaRect(contours[0]) (cx, cy), (w, h), angle rect # 统一旋转角到[0,180)把长边作为主方向 if w h: w, h h, w angle 90 angle angle % 180 # 统一方向后输出抓取位姿(cx, cy, angle) print(f抓取点像素: ({cx:.2f}, {cy:.2f}), 旋转角: {angle:.1f}°)包围盒中心丢掉的正是工件长轴方向的信息。cv2.minAreaRect返回的旋转角范围是[-90, 0)它会对长宽差不明显的对称工件产生角度跳跃。这里统一到[0,180)并约束长边为主方向是为了让后面的机器人路径规划不会在同一几何位置收到两个跳变的姿态指令。如果你的夹爪是两指平行夹爪且工件无方向要求这一步可以简化为只输出中心点角度交给机器人示教固定。掩码轮廓方案需要注意掩码边界质量分割模型给出的掩码边缘一般有1到2像素的锯齿如果工件尺寸小锯齿相对误差就比较明显。后续的定位精度要求越高越应该把这一环交给专门的亚像素轮廓算法去处理或至少在离线时对掩码做一次闭运算和椭圆拟合滤掉孤立噪声点。3.3 0.1mm目标对视觉传感器的像素当量约束从imgsz到FOV的取舍这一节聊一个容易被忽略的物理约束像素当量。假设相机是500万像素横向分辨率2560视野宽度200mm那么一个像素对应约0.078mm。检测中心点若波动1.5个像素只是视觉环节就已经贡献0.12mm误差还没算手眼标定和机器人重复精度。可见0.1mm这个指标不是“算法调到多稳”的问题而是相机选型和视野规划要先达标。把视野缩到120mm同样500万像素像素当量约0.047mm。这时1.5像素的抖动折合0.07mm给后续留出了余量。这也是为什么我总建议在项目方案阶段就计算像素当量而不是等现场调完再说。更激进的做法是上更高分辨率的工业相机比如1200万像素配短焦镜头或者把两个工位拆成两台相机各拍一半保证视野里只有检测目标与最小背景。小目标与imgsz的关系也在这里体现。YOLOv11的小目标优化常见思路是提高训练与推理时的输入分辨率让工件在特征图上占据更多像素。网络上常讨论的类似HCANet这类加注意力结构的变体本质上也是在缓解高层特征图下采样导致的小目标信息丢失。但工程上先保证相机成像端给足像素比在模型结构上做文章要稳定得多。模型再强也补不回来原图里一个工件只有十几个像素的先天不足。推理时imgsz1280比imgsz640慢一些但对单工位抓取来说用几十毫秒换0.1mm级定位是划算的。4. 像素到机械臂基座坐标的误差链拆出每一处损失再谈0.1mm补偿4.1 坐标转换公式从去畸变像素点推导机器人的XY平面坐标拿到像素平面上的抓取中心后要经过两次变换才到机器人坐标系。第一次是把像素坐标结合相机内参转为相机坐标系下的空间点第二次是用手眼标定得到的R_cam2base与t_cam2base把该点转到机械臂基座坐标系。这里最关键的是深度Z的取值相机是单目时单个像素对应一条空间射线必须有Z约束才能变成一个三维点。最常见也是最稳妥的做法是平面约束——已知工件在一个固定高度的平面上Z是常数。import cv2 import numpy as np def pixel_to_robot(u, v, z_plane, mtx, dist, R_cam2base, t_cam2base): # 1. 去除镜头畸变得到归一化坐标 pts cv2.undistortPoints( np.array([[[u, v]]], dtypenp.float32), mtx, dist, Pmtx) x_norm, y_norm pts[0][0] # 2. 利用固定平面高度反推相机坐标系下的三维坐标 # z_plane 是工件表面在相机坐标系中的Z值由标定时确定 P_cam np.array([x_norm * z_plane, y_norm * z_plane, z_plane]) # 3. 转到机械臂基座坐标系 P_base R_cam2base.dot(P_cam) t_cam2base.reshape(3) return P_base[0], P_base[1] # 通常基座平面坐标 x_robot, y_robot pixel_to_robot(cx, cy, z_plane, mtx, dist, R_cam2base, t_cam2base)z_plane不是想当然的相机到工作面的距离要用手眼标定时标定板实际所在平面的坐标来计算。如果工件厚度不一致这个值会产生偏差XY方向的误差会按比例放大。相机光轴越倾斜Z误差对XY的影响越大这也是我在不少项目里坚持把相机光轴调到尽量垂直工作面的原因。还有一种更严谨的标定方法把标定板放在工件平面上分别用cv2.solvePnP求标定板相对相机位姿取其Z值作为z_plane。每换一次工件高度或者相机微调都需要重测这个值不能懒。4.2 误差预算把0.1mm目标拆到每一个技术环节的极限上面这些环节全部叠加以后系统的理论误差是多少以下是我在一个典型Eye-to-Hand、500万像素、FOV 200mm项目里做的预算表你可以直接套用这个思路重新估算自己的项目误差环节典型值范围说明畸变校正残差0.02~0.05mm标定RMS小于0.1像素时检测中心重复性0.08~0.16mm1~2像素抖动换算手眼标定残差0.3~1.0mm姿态数不足时会更大机器人重复精度0.03~0.1mm工业机器人本体规格TCP偏差0.1~0.5mm工具坐标系未精密标定平面Z误差0.05~0.3mm工件厚度与基准不一致这张表说明了两个残酷事实一是即使每个环节都取小值总误差也可能接近0.5mm二是手眼标定残差和TCP偏差往往占了误差的大头。所以只调YOLOv11的模型参数对最终误差的影响可能不到20%。真正的工地在相机标定、手眼标定与TCP标定这三大件上。要做预算时把所有环节按平方和开根号的方式估算综合误差而不是代数相加因为各环节误差方向不一定同号。预算下来若超过0.5mm就不要指望靠“再调调置信度”能到0.1mm得回到硬件的机械安装精度或者换更高分辨率的相机。4.3 网格误差补偿与在线修正把系统性残差压进0.1mm理论标定做完系统可能还剩下0.3~0.8mm的系统性偏差。这个偏差主要来自手眼标定的残余旋转误差、机器人运动学模型误差和机械臂基座安装倾斜。解决它最有效的笨办法是做一个网格标定让机器人带着一个精密针尖在工作平面上按固定间隔走网格点相机同时识别针尖位置把“机器人指令位置”与“视觉计算位置”的偏差记录成一张误差表。import numpy as np # 采样网格X方向7个点Y方向5个点间距25mm gx np.linspace(-75, 75, 7) gy np.linspace(-50, 50, 5) err_x np.zeros((len(gy), len(gx))) err_y np.zeros((len(gy), len(gx))) for j, y in enumerate(gy): for i, x in enumerate(gx): # 机器人移动到指令位置(x, y)并读取当前关节角 robot.move_to(x, y, z0) # 相机拍摄针尖用上一节pixel_to_robot计算视觉坐标(u_v, v_v) vx, vy pixel_to_robot(u_measured, v_measured, z_plane, ...) # 偏差 指令坐标 - 视觉坐标 err_x[j][i] x - vx err_y[j][i] y - vy def bilinear_compensate(x, y): # 在网格中找所在的四个点做双线性插值 i np.clip(np.searchsorted(gx, x) - 1, 0, len(gx) - 2) j np.clip(np.searchsorted(gy, y) - 1, 0, len(gy) - 2) tx (x - gx[i]) / (gx[i 1] - gx[i]) ty (y - gy[j]) / (gy[j 1] - gy[j]) ex (err_x[j][i] * (1 - tx) err_x[j][i 1] * tx) * (1 - ty) \ (err_x[j 1][i] * (1 - tx) err_x[j 1][i 1] * tx) * ty ey (err_y[j][i] * (1 - tx) err_y[j][i 1] * tx) * (1 - ty) \ (err_y[j 1][i] * (1 - tx) err_y[j 1][i 1] * tx) * ty return x ex, y ey这个误差表的工作机制是视觉先算出目标在该平面的像素坐标转换得到“机器人坐标估算值”再用误差表修正最后才把修正后的坐标发给机器人运动控制器。网格步长25mm是经验值如果工作范围大可以先把网格拉疏到50mm做第一轮等补偿后残差趋势变缓再局部加密。网格点越多现场标定耗时越长通常7至9个点一排、排距25到40mm已经够用。在线修正则是另一种思路抓取前先拍一次机器人走到视觉给出的位置后相机再拍一次利用偏差做微量修正再抓取。这种方法本质上已经接近视觉伺服能把精度推高到系统可重复性的极限但会增加单次抓取的节拍。对0.1mm目标来说如果节拍允许这是最稳的兜底措施。5. 避坑与排查同一条流程为什么现场总是差口气5.1 现象视觉坐标很稳定机械臂抓取位置却系统性偏出2mm原因大概率不是视觉算法而是TCP标定不对。机器人的TCP工具中心点是后续所有坐标理解的原点如果标定板或夹爪中心相对法兰的偏移量标错了视觉给出的点越准机器人偏得越稳定。排查手段把机械臂末端装一根尖锐测试针手动移动机器人让针尖对准相机画面里的固定标记点在示教器上对比法兰位置与视觉反推的位置。如果两者在所有姿态下都差一个固定常数基本就是TCP的平移偏差如果差的方向随姿态变化则可能是旋转偏差。解决办法是重新做TCP四点标定并在标定后重复上面的验证直到残差小于0.1mm再继续。5.2 现象视野中心准、边缘越偏越大网格补偿也救不回来这种情况优先怀疑畸变校正不充分。标定板拍摄时若只放在画面中央镜头边缘的非线性畸变根本没被约束边缘区域的重投影误差自然大。另一个原因是镜头自身在边缘的像质崩得太厉害任何多项式畸变模型都难以拟合。解决重新拍摄畸变标定板时让标定板在画面的四角各占约四分之一面积拍几组斜置姿态如果重投影RMS还是大于0.2像素就换更高品质的低畸变镜头不要在这颗镜头上继续浪费时间。5.3 现象上午还行下午就偏0.3mm晚上又自己恢复正常这是温度漂移的经典战况。相机支架如果是铝型材加长臂太阳一晒或车间加热后型材热胀冷缩会改变相机光轴指向机械臂自身的关节减速器发热后运动学参数也会微变。解决相机支架用钢制或者铸铁件避免大悬臂结构机械臂开机后至少空跑15分钟等热平衡再进行标定与精度验证。更稳妥的是每个班次开始时用一个固定在工位上的参考标记点复核坐标漂移超了就触发自动复标。5.4 现象小工件漏检和边框抖动导致抓取中心忽大忽小YOLOv11在imgsz640下对直径3mm的销钉类工件大概率会漏检或检测框边缘不干净。这不是模型垃圾是输入分辨率没跟上目标尺寸。解决训练和推理统一提高到imgsz1280数据增强里开启mosaic和随机裁剪同时检查标注时是否把背景包进框内。现场如果推理速度受限可以先用小模型检测出目标区域再对这个区域做局部放大推理相当于两阶段把分辨率用在小窗口上。别想着用后处理滤波把边框抖动糊过去每幅图的真实位置可能在边框边缘随机变化滤波只会降低响应速度不会提高物理定位精度。5.5 现象minAreaRect输出的角度在0度和-90度之间来回跳机械臂姿态跟着抽搐这本质上是矩形长宽在对称位姿下互换导致的。工件越接近正方形minAreaRect在某个角度附近越不稳定可能上一帧把横向当长边下一帧把纵向当长边角度输出就从-1度跳到-89度。解决在3.2的代码里已做了长边归一化还有一种更彻底的做法是输出矩形四个角点让机器人把矩形转换为一个局部坐标系用该坐标系的长边方向做位姿不再依赖单角标量。若工件本身没有方向要求就在算法里固定角度为0避免机械臂白白旋转。6. 验证与进阶把0.1mm从口号变成一组可重复的测量数据验证精度这件事不能靠相机自己说自己准。我平时用的验证方案是在工件平面放一个带精密圆孔或圆锥坑的标定块机械臂末端安装一支与TCP重合的针尖让视觉引导机械臂去对针。每次对针后用外部量具如百分表或激光位移传感器读取实际落点与孔心的偏差重复20到30次。最终输出两组统计量平均偏差和多组数据的3σ范围。只有平均偏差小于0.05mm且3σ小于0.1mm才算真正达到0.1mm定位水平。如果只看单次误差碰到一次运气好就下结论多半在批量生产时会翻车。进阶手段是视觉伺服微调。第一次视觉引导后机械臂停在目标上方相机再拍一次当前抓具与工件的相对位置把残差反馈给控制器做第二轮微调。残差通常每轮缩小一半以上两轮之后就能进0.05mm以内。代价是节拍变慢所以我会把它做成可配置项在粗抓场景关闭在高精度装配场景打开。另一种进阶是产线定期自动校验在视野边缘固定三个已知坐标的基准点每次换班时机器人带相机或针尖对这三个点复核一遍偏差超阈值就直接报警。精度不是标定一次就永久拥有的它是靠日常维护守住的。我做过的3C小件抓取项目里第一版静态标定实测只能到0.4mm左右后来把手眼标定姿态集从12组加到25组TCP重新标定再叠了一层5×7的网格补偿才把3σ压到0.08mm左右。整个过程花在标定和验证上的时间是模型训练的三倍多。如果你想在一两周内交付0.1mm的抓取项目我的经验是把工位刚性、相机支架材质、TCP标定这几件基建的事排在前面不要一头扎进模型调参里。希望帮到你。本文还有配套的精品资源点击获取
返回列表