-
积运算与梯度推导本文所涉及的卷积运算是最平凡的卷积运算,不包含stride, padding, dilation, bias等。定义卷积运算Output Input Kernel,其中 为输入, Kernel 为卷积 核, Output Tensor 为输出, 且有 。如何实现卷积?可以先用nn.Unfold将输入的tensor展开,注意Unfold()也是可以指定stride, dilation等参数的,但我们这里不考虑这些,因此只用传入kernel_size,就可以将Input展开为Tensor 的形式。input_unf = nn.Unfold(kernel_size=K)(input)然后通过view将Input转变为Tensor 的形式。input_unf = input_unf.view((B, Cin, -1, M, M))同样通过view将Kernel转变为Tensor 的形式。kernel_view = kernel.view((Cout, Cin, K * K))而输出Output是Tensor 的形式。在这里就可以直接用Einstein求和标记将卷积运算写出来了: 代码为output = torch.einsum("ijklm,njk->inlm", input_unf, kernel_view)如何计算梯度?这部分求导的推导是我自己在草稿纸上完成的,后面经过一些验证应该或许可以保证是正确的。为了能够用Pytorch自带的 gradcheck 来验证backward梯度计算的正确性, 我们有必要对每个输入参数都进行求导, 假设最终的Loss函数结果为 (是一个标量), 我们需要计算对输入Input的导数 以及对卷积核Kernel的导数 。为了方便推导,先不考虑batch和channel,也就是Input, Kernel, Output都是二维的。Kernel的梯度根据链式求导法则我们可以将此导数(偏导)写作式中 已知 (backward过程中会作为参数一直传下去),也就是计算图中当前卷积算子后面的链路所有梯度的累乘,其size与Output一致。那么问题就是求Output对Kernel的偏导, 本文摘自 小白学视觉 公众号
-
前言本文主要有两个目的:推导卷积运算各个变量的梯度公式;学习如何扩展Pytorch算子,自己实现了一个能够forward和backward的卷积算子;首先介绍了计算图的自动求导方法,然后对卷积运算中Kernel和Input的梯度进行了推导,之后基于Pytorch实现了卷积算子并做了正确性检验。本文的代码在这个GitHub仓库:https://github.com/dragonylee/myDL/blob/master/%E6%89%A9%E5%B1%95%E6%B5%8B%E8%AF%95.ipynb。计算图计算图(Computational Graphs)是torch.autograd自动求导的理论基础,描述为一个有向无环图(DAG),箭头的方向是前向传播(forward)的方向,而逆向的反向传播(backward)的过程可以很方便地对任意变量求偏导。为了方便说明,这里举一个简单的例子: 其中 是输入, 是输出。根据链式求导法则我们可得:在Pytorch(Python)里定义上述三个函数:def square(x): return x ** 2def mul3(x): return x * 3def mul_(x, y): return x * y然后用torchviz可视化其复合函数的计算图:x = torch.tensor(3., requires_grad=True, dtype=torch.float)y = torch.tensor(2., requires_grad=True, dtype=torch.float)a = square(x) # a=x^2b = mul3(a) # b=3ac = mul_(b, y) # c=bytorchviz.make_dot(c, {"x": x, "y": y, "c": c}).view()得到如下结果: 忽略“Accumulate”这个操作,在该计算图上的反向求导过程表示如下:这很清晰地展示了计算图的功能,它记录了每一个变量(包括输出、中间变量)的计算函数(可以称之为一个算子,就是图中的方框,入边是输入,出边是输出),从而可以数值计算出相应的导数。实际上,任何变量qqq对ppp求导都可以对两者之间的反向链路进行累乘得到。对输出调用.backward()后,可以查看导数值:c.backward()print(y.grad)print(x.grad)输出结果和上图的计算结果一致。注意在backward过程中非叶子节点可以调用.retain_grad()来记录grad。以前我一直以为自动求导是一个很复杂的操作,没想到一个计算图就非常简洁地实现了,才发现“我以为”的复杂操作其实是形式化的求导…… 本文摘自 小白学视觉 公众号
-
优化一旦确定了数字隔离和预测的两个目标,就需要对算法进行优化,以预测泵的新图像上的数字。在优化的初始阶段,创建了一个简单的Playground应用程序,其中使用了OpenCV提供的一些简单的UI组件。使用这些组件,可以创建一些简单的轨迹栏,以左右滑动并更改不同的值并重新处理图像。围绕该cv2.imshow方法创建了一个小包装程序,该方法可以平铺显示的窗口我们可以加载不同的图像,并在图像处理中尝试变量的不同变化,并确定最佳的组合。自动化在每个图像上测试不同的变量是上手的好方法,但是我们想要一种更好的方法来验证是否更改了一个图像的变量是否会对其他任何图像产生影响。为此,我们想出了针对这些图像进行一些自动化测试的系统。我拍摄了每个测试图像,并将它们放在文件夹中。然后,我用图像中期望的数字来命名每个文件,并用小数点“ A”表示。应用程序可以加载该目录中的每个图像并预测数字,然后将其与文件名中的数字进行比较以确定是否匹配。这使我们可以针对所有不同的图像快速尝试更改。更进一步,我创建了此脚本的不同版本,该脚本将尝试对这组图像进行模糊,阈值等变量的几乎每种组合,并找出最优化的变量集将具有最佳的性能。准确性。该脚本在计算机上花费了相当长的时间才能运行,大约需要7个小时,但是最后提出了一组不同的变量,这些变量在我们手动测试时找不到。结论这是否是任何人实际上都会使用的功能尚待确定,但这在实现某些机器学习概念和使用OpenCV方面是一个有趣的练习。到目前为止,在我们的测试中,应用程序最大的问题是泵显示屏上的眩光。根据泵上的照明和手机的角度,可能会导致某些扫描失效。 本文摘自 小白学视觉 公众号
-
预测有两个等高线轮廓,一个带潜在位数,一个带潜在小数位,我们可以使用这些轮廓边界裁剪图像,并将其输入经过训练的系统中以预测其值。有关此过程的更多信息,请参见“数字培训”部分。查找小数在图像中查找小数点是要解决的另一个问题。由于它很小,有时会连接到它旁边的手指,因此使用我们在手指上使用的方法来确定它似乎有问题。当我们过滤轮廓时,我们收集了可能是十进制的正方形轮廓。从上一步获得经过验证的数字轮廓之后,我们将找到数字的最左x位置和最右x位置,以确定我们期望的小数位数。然后,我们将遍历那些潜在的小数,确定它是否在该空间以及该空间的下半部分,并将其分类为小数。找到小数点后,我们可以将其插入到我们上面预测的数字字符串中。数字培训在机器学习的世界中,解决OCR问题是一个分类问题。我们建立了一组训练有素的数据,例如图像处理中的数字,将它们分类为某种东西,然后使用该数据来匹配任何新图像。一旦基本的图像隔离功能开始工作,我就创建了一个脚本,该脚本可以遍历图像文件夹,运行数字隔离代码,然后将裁剪的数字保存到新文件夹中供我查看。运行完之后,我会有一个未经训练的数字文件夹,然后可以用来训练系统。由于OpenCV已经包含了k近邻(k-NN)实现,因此无需引入任何其他库。为了进行训练,我们浏览了数字作物的文件夹,然后将其放入标有0–9的新文件夹中,因此每个文件夹中都有一个数字的不同版本的集合。我们没有大量的这些图像,但是有足够的证据来证明这是可行的。由于这些数字是相当标准的,我认为我不需要大量训练有素的图像就可以相当准确。k-NN工作原理的基础是,我们将以黑白方式加载每个图像,将该图像存储在每个像素处于打开或关闭状态的数组中,然后将这些打开/关闭像素与特定的数字相关联。然后,当我们要预测一个新图像时,它将找出哪个训练图像与这些像素最匹配,然后向我们返回最接近的值。整理好数字后,将创建一个新的脚本,该脚本将遍历这些文件夹,获取每个图像并将该图像与数字关联。到目前为止,在大多数代码中,一般的图像处理概念在Python和C ++中都应用相同,但是在这里会有细微的差别。在大多数此类应用程序的Python示例中,分类被写入两个文件,一个包含分类,另一个包含该分类的图像内容。通常使用NumPy和标准文本文件完成此操作。但是,由于我想在iOS应用程序上重用该系统,因此我需要想出一种可以拥有跨平台分类文件的方式。当时,我什么都找不到,因此最终编写了一个快速实用程序,该实用程序将从Python中获取分类数据并将其序列化为JSON文件,我可以在OpenCV的FileStorage系统的C ++端使用它。这不漂亮,但是我写了一个简单的MatPython中的序列化方法,它将为OpenCV创建合适的结构以在iOS端读取。
-
轮廓过滤1.现在我们有了许多轮廓,我们需要找出我们关心的轮廓。浏览了一堆气泵的显示和场景后,使用一套适用于轮廓的快速规则。2.收集所有我们将分类为潜在小数的正方形轮廓。3.扔掉任何不是正方形或高矩形的东西。4.使轮廓与某些长宽比匹配。LCD显示屏中的十个数字中有九个数字的长宽比类似于下面的蓝色框高光之一。该规则的例外是数字“ 1”,其长宽比略有不同。通过使用一些样本轮廓,我将0–9!1方面确定为0.6,将1方面确定为0.3。它将使用这些比率和+/-缓冲区来确定轮廓是否是我们想要的东西,并收集这些轮廓。5.对潜在数字应用一组附加规则,在这里我们将确定轮廓边界是否偏离所有其他潜在数字的平均高度或垂直位置。由于数字的大小应相同,并且在相同的Y上对齐,因此我们可以丢弃它认为是数字的任何轮廓,但不能像其他轮廓那样将其对齐和调整大小。 本文摘自 小白学视觉 公众号
-
影像准备在开始图像处理流程之前,我们决定先调整一些图像属性,然后再继续。这有点试验和错误,但注意到,当我们调整图像的曝光度时,可以获得更好的结果。下面是使用Python调整后的图像,相当于曝光(阿尔法)的图像cv::Mat::convertTo这是刚刚在图像垫乘法操作cv2.multiply(some_img, np.array([some_alpha]),灰阶将图像转换为灰度。模糊模糊图像以减少噪点。我们尝试了许多不同的模糊选项,但仅用轻微的模糊就找到了最佳结果。阈值图像转换为黑白图像在下图中,使用cv2.adaptiveThreshold带有cv2.ADAPTIVE_THRES_GAUSSIAN_C选项的方法。此方法采用两个参数,块大小和要调整的常数。确定这两者需要一些试验和错误,更多有关优化部分的内容。填补空白由于大多数燃油泵都使用某种7段LCD显示屏,因此数字中存在一些细微的间隙,无法使用轮廓绘制方法,因此我们需要使这些段看起来相连。在这种情况下,我们将转到erode图像来弥补这些差距。由于大家可能希望使用,所以这似乎向后看,dilate但是这些方法通常适用于图像的白色部分。在我们的案例中,我们正在“侵蚀”白色背景以使数字看起来更大。反转图像在尝试在图像中查找轮廓之前,我们需要反转颜色,因为该findContours方法将找到白色的连接部分,而当前的数字是黑色。在图像上找到轮廓下图显示了我们的原始图像,该图像在上图的每个轮廓上都有包围框。大家可以看到它找到了数字,但也找到了一堆不是数字的东西,因此我们需要将它们过滤掉。 本文摘自 小白学视觉 公众号
-
对于这个项目的我们首先应该编写一个简单的Python应用程序以拍摄汽油泵的图像,然后尝试从中读取数字。OpenCV是用于计算机视觉应用程序的流行的跨平台库。它包括各种图像处理实用程序以及某些机器学习功能。除此之外我们希望可以先使用Python对其进行原型设计,然后将处理代码转换为C ++以在iOS应用程序上运行。目标我们首先要考虑以下两个问题:1.我们可以从图像中分离出数字吗?2.我们可以确定图像代表哪个数字吗?数字分割如何确定图像中的数字有多种方法,但是我提出了使用简单的图像阈值法来尝试查找数字的方法。图像阈值化的基本思想是将图像转换为灰度,然后说灰度值小于某个常数的任何像素,则该像素为一个值,否则为另一个。最后,您得到的二进制图像只有两种颜色,在大多数情况下只是黑白图像。这个概念在OCR应用中非常有效,但是主要问题是决定对该阈值使用什么。我们可以选择一些常量,也可以使用OpenCV选择其他一些选项。我们可以使用自适应阈值而不是使用常数,这将使用图像的较小部分并确定要使用的不同阈值。这在具有不同照明情况的应用中特别有用,特别是在扫描气泵中。将图像设置为阈值后,可以使用OpenCV的findContours方法查找图像中连接了白色像素部分的区域。绘制轮廓后,便可以裁剪出这些区域并确定它们是否可能是数字以及它是什么数字。基本图像处理流程这是我在测试图像处理中使用的原始图像。它有一些眩光点,但是图像相当干净。让我们逐步完成获取此源图像的过程,并尝试将其分解为单个数字。 本文摘自 小白学视觉 公众号
-
3. Empirical Validation我们在ImageNet-1K的训练集上进行预训练,该数据集包含约120万张图像,分布在1000个类别中。默认情况下,Proteus 是从具有相同patch大小的基础模型中蒸馏出来的。按照DINOv2和 SynCLR的设置,我们在分类任务(ImageNet-1K 和12个细粒度分类数据集)以及密集预测任务(语义分割和深度估计)上评估我们的方法。3.1 Accessing DINOv2DINOv2 在私有的大规模数据集 LVD-142M 上进行训练,我们利用预训练的 DINOv2 作为教师模型,在 ImageNet-1K 上训练一个随机初始化的网络。3.1.1 Target Model: ViT-SProteus-S 在不同任务上明显优于其他baseline方法,并且在训练数据远少于 Oracle 方法 DINOv2-S 的情况下,仅略微落后于后者。3.1.2 Target Model: ViT-B and ViT-L当我们扩大模型规模时,Proteus 与 Oracle 方法 DINOv2 之间的性能差距缩小。Proteus-L 在各项任务上的表现几乎与 DINOv2-L 相匹配。3.1.3 Comparison with Distillation in Supervised LearningProteus 在相似的成本下,在多个方面优于传统的监督训练,提供了一种被基础模型强化的新颖训练方案。3.2 Accessing SynCLR and CLIP我们通过使用其他基础模型 SynCLR 和 CLIP 作为教师网络来测试 Proteus 的泛化能力。SynCLR 通过在未公开的 6 亿张合成数据集进行对比学习而训练得到,而 CLIP 是通过在私有数据集 WIT-400M 上对图像和相应的文本描述进行对比学习获得的。3.3 Ablation on Proxy Dataset3.3.1 Dataset diversity如果我们增加Proxy Dataset的多样性,Proteus 的泛化能力可以得到提升。即使在只有单一图像作为Proxy Dataset的极端情况下,Proteus 仍然表现出很强的鲁棒性。3.3.2 Scaling behavior当我们从每个类别中子采样一部分数据或从总共1000个类别中子采样一部分类别时,Proteus 仍然表现出很强的鲁棒性。这表明即使在更小的数据规模下,也有可能训练基础模型。 本文摘自 小白学视觉 公众号
-
2. Method在本节我们将介绍Proteus,这是一种简单且通用的框架,用于在“有限”数据(即ImageNet-1K)上训练视觉基础模型。我们首先介绍了在减轻Dataset Bias方面所做的努力,以便Proteus能够通过模仿预训练基础模型的行为,有效地转移其通用的表征。然后,我们提出了包含多层次学习目标的Proxy Task,以确保模型在各种任务中的应用。2.1 Proxy Dataset在常规知识蒸馏的设置中,通常会引入KL divergence Loss来计算学生网络预测结果和教师网络预测结果的相似度,并辅以Cross-Entropy Loss来计算模型预测的概率分布与数据集One-hot Label的匹配程度,来指导模型的优化。从经验上看,这种设计在监督学习情况下效果良好,因为它在ImageNet-1K上表现出色。然而,我们认为这种设置会在以下两个方面阻碍知识传递:(1) Cross-Entropy Loss利用了One-hot Label的信息,可能导致Dataset Bias,因为模型倾向于记住训练图像和类别。这种记忆使得模型在下游评估中难以对未见过的类别进行泛化。(2) Class logits的生成隐性地引入了Dataset Bias,因为中间特征被投影到一个预定义的维度上,例如ImageNet-1K的1000维,这在下游评估中可能会被丢弃。基于这些考虑,我们在Projection head(全连接层)之前进行知识蒸馏,并利用中间特征进行知识传递[11]。2.2 Proxy Task基础模型如DINOv2 [2]旨在学习通用的视觉特征,不仅在高层次的分类任务中表现出色,而且在语义分割等密集预测任务中也表现优异。为了最大化知识传递能力并保证其在各种任务中的应用,我们在三个不同层次的训练目标(即token-level, patch-level, and feature-level)上进行蒸馏,通过模拟教师模型的行为来传递丰富的知识。Token-level Objective:为了学习用于高层次理解的discriminative的特征,我们最小化L2距离,以对齐教师模型和学生模型之间的classification token。Feature-level Objective:尽管token-level的学习目标作为Proxy Task可以获得discriminative的视觉特征,但它无法保证在语义分割或深度估计等密集预测任务上取得良好表现。为了解决这个问题,我们以类似的方式,即最小化教师模型和学生模型feature的L2距离,进行feature-level的知识传递。Patch-level Objective:为了进一步挖掘基础模型中的隐藏知识,我们借鉴Masked Image Modeling [12, 13, 14] 的思想,构建了一个patch-level的学习目标。给定一个图像,我们会生成一个额外的视图,其中部分patch被随机遮掩,然后将其送到学生网络以生成中间特征,并通过最小化教师模型和学生模型patch的L2距离来恢复被遮掩的区域。 本文摘自 小白学视觉 公众号
-
1. Introduction通过在多样且庞大的数据集上进行广泛的预训练,视觉基础模型[1,2,3,4]在计算机视觉领域取得了显著进展,旨在学习全面且多功能的视觉特征,能够很好地泛化到各种下游任务,如分类、分割等。因此,视觉基础模型正成为计算机视觉研究中的基础组件。尽管这些模型已经发布了其权重供公众使用,但由于两个主要因素,训练基础模型对于大多数研究人员来说仍然难以实现:(1)这些基础模型的训练数据很少公开。尽管已经有尝试使用替代数据集[4]来重现CLIP [1],但由于数据源私密,重现DINOv2 [2]和SynCLR [3]等基础模型的训练仍然鲜有探索。(2)即使训练数据可以获取,使用这些庞大的数据集进行训练需要大量的计算资源,这对于大多数研究人员来说是难以获取的。ImageNet-1K [5],长期以来一直是监督学习领域进步的基石,但在基础模型时代,由于其相对较“小”的规模,现在较少被用作训练集。在这项工作中,我们试图解决以下问题:是否可以在不牺牲泛化能力的情况下,在更小的数据集(如ImageNet-1K)上重现视觉基础模型的成功?直观上,利用这些基础模型的预训练权重对于完成这一任务至关重要, 例如结构化剪枝[6,7]。但结构剪枝需要精细的手工设计,无法轻易泛化到任意架构,使其难以满足现实世界中多样化的需求。为了追求更通用的设计,我们大胆选择知识蒸馏作为实现这一目标的方法,即将基础模型中丰富的知识转移到一个随机初始化的学生网络。但与TinyCLIP[8]等方法不同的是,我们选择在规模更小的数据集——ImageNet-1K上进行训练,而不是采用原基础模型的巨型数据集。在ImageNet-1K上的知识迁移仍然存在两个关键问题:(1) 那些未公开数据集(例如WIT400M [1],LVD-142M [2])的确切分布未知,并且很可能ImageNet-1K和这些大规模数据集之间存在分布偏移。这对目标模型的泛化能力构成了显著挑战,因为网络倾向于以固定模式记忆训练图像,导致Dataset Bias[9,10]。(2) 大多数视觉基础模型[1, 2, 3, 4]是通过自监督学习目标训练的,这需要大量的数据才能有效。因此,直接采用它们的优化策略在我们的环境中可能不会产生最佳结果。为解决上述挑战,我们提出了一个简单通用的蒸馏框架,Proteus,通过模拟视觉基础模型的行为来将其丰富的知识迁移到目标网络中。 本文摘自 小白学视觉 公众号
-
现有视觉基础模型例如CLIP[1], DINOv2[2], SynCLR[3]通常是在巨额数据量(CLIP-400M, DINOv2-142M, SynCLR-600M)下训练得到的,这不仅对训练资源有着非常大的需求,同时这些数据集也处于未公开的状态,让训练视觉基础模型非常困难。我们本次工作就是为了解决这个问题,我们仅在ImageNet-1K的1.2M图像上训练就可以在多项任务上达到跟别人所提供的预训练模型相当的性能。TL, DR:动机: 视觉基础模型因其强大的泛化能力而著称,这得益于其庞大的训练数据。然而,这些模型需要巨大的训练资源,而且训练数据通常是未公开的,例如CLIP和DINOv2。解决: 我们提出了一个非常简单且通用的解决方案,名为Proteus,可以在不访问原始训练数据的情况下,将基础模型在ImageNet-1K上蒸馏成较小的等效模型。优点: (1) 低训练成本(类似于在ImageNet-1K上进行的DeiT蒸馏);(2) 强大的性能(类似于使用大量数据训练的基础模型);(3) 优秀的泛化能力(在DINOv2、CLIP、SynCLR上验证)。 本文摘自 小白学视觉 公众号
-
正负样本匹配方式的实现: 1、分配目标给哪一层预测。 根据目标的尺寸将目标分配到不同的特征层上进行预测。 具体实现:引入了min_size和max_size,具体设置是0, 64, 128, 256, 512和无穷大。例如,对于输出的第一个预测层而言,其stride=8,负责最小尺度的物体,对于该层上面的任何一个点,如果有GT bbox映射到特征图上,满足0 < max(中心点到4条边的距离) < 64,那么该GT bbox就属于第1层负责,其余层也是采用类似原则。 总结来说就是第1层负责预测尺度在0~ 64范围内的GT,第2层负责预测尺度在64~128范围内的GT,以此类推。通过该分配策略就可以将不同大小的GT分配到最合适的预测层进行学习。 2、确定正负样本区域。 对于每一层feature map,设定一个以GT中心为圆心,固定半径的圆,如果像素落在该圆内,则标记为positive样本,否则为negative。 具体实现:通过center_sample_radius**(基于当前stride参数)**参数,确定在半径范围内的样本都属于正样本区域,其余区域作为负样本。默认配置center_sample_radius=1.5。例如,第1层的stride=8,那么在该输出层上,对于任何一个GT,基于GT bbox中心点为起点,在半径为个像素范围内点都属于正样本区域。 3、centerness找到目标的中心点。 为了使靠近GT中心的像素能学到更多的信息,故给予他更高的权重,而离GT中心越远的点,贡献则递减。 具体实现:使得离目标中心越近,输出值越大,反之越小。
-
以下文章来源于GiantPandaCV ,作者刘庆龙 二、为什么要进行正负样本采样?需要处理好正负样本不平衡问题:在ROI、RPN等过程中,整个图像中正样本区域少,大部分是负样本[^2]。提高网络收敛速度和精度:对于目标检测算法,主要需要关注的是对应着真实物体的 正样本 ,在训练时会根据其loss来调整网络参数。相比之下, 负样本对应着图像的背景,如果有大量的负样本参与训练,则会淹没正样本的损失,从而降低网络收敛的效率与检测精度。三、anchor-free和anchor-based二者的区别在于是否利用anchor提取候选框[^2]从anchor回归属于anchor-based类,代表如faster rcnn、retinanet、YOLOv2 v3、ssd等,从point回归属于anchor-free类,代表如cornernet、extremenet、centernet等,二者融合代表如fsaf、sface、ga-rpn等。四、典型算法1、MTCNN论文:Joint Face Detection and Alignment using Multi-task Cascaded Convolutional Networks 1)正负样本的定义训练数据可以通过和GT的 IOU 的计算生成一系列的 bounding box。可以通过滑动窗口或者随机采样的方法获取训练数据,训练数据分为三种正样本,负样本,中间样本[^4]。 正样本:IOU > 0.65 部分样本:0.4 < IOU < 0.65 负样本: IOU < 0.3 如下图所示,为依据图片中人脸框的坐标信息生成正样本和部分样本:由于篇幅原因,下图中IOU的计算过程没有截图,可以参考[^4]的源码。 注意:代码中的 w、h 分别是GT的尺度。 此处生成正样本的脚本,除了对生成的矩形框尺度进行约束,还约束了矩形框的中心点坐标范围。笔者认为,这样做主要是为了提高生成正样本的效率:因为一张图片中正样本的数量是非常有限的,要确保生成的矩形框与GT的IOU大于一定阈值才能成为正样本。
-
以下文章来源于GiantPandaCV ,作者刘庆龙一、正负样本的概念目前,许多人在看相关目标检测的论文时,常常误以为正样本就是我们手动标注的GT(ground truth),这个理解是错误的,正确的理解是这样的: 首先,正样本是想要检测的目标,比如检测人脸时,人脸是正样本,非人脸则是负样本,比如旁边的窗户、红绿灯之类的其他东西。其次,在正负样本选取时,要注意:正样本是与GT的IOU值大于阈值时的取值,负样本是小于阈值的,其他的则把它去除即可。 总之,正负样本都是针对于程序生成的框而言,非GT数据[^1]。
-
DeepSeek在的兴起在论坛也引起了热烈的探讨,我们一起来看下这些帖子1.DeepSeek如何在游戏开发中实现智能NPC行为?2.DeepSeek在机器人控制和人机交互中的应用前景如何?3.DeepSeek在医疗行业如何辅助病历分析、医学文献处理和患者咨询?4. DeepSeek的技术如何在金融行业中应用于智能客服、风险评估和投资建议5.DeepSeek在数据分析领域如何处理长文本摘要和复杂信息提取6.DeepSeek的编程辅助功能如何帮助开发者进行代码生成、调试和注释解释7.DeepSeek如何在内容生成方面提升文案创作和营销内容的效率?8.Deepseek底层技术解析:构建下一代对话式AI的核心架构9.DeepSeek 为什么这么火?它与传统的chatGLM、豆包、文心一言、OpenGPT、Kimi 等AI有什么不同?10.DeepSeek 对人工智能发展的影响这些关于DeepSeek的帖子,各有不同的侧重点,有些坛友的提问直击问题的核心,版友们热心的回答也是百花齐放,通过不同的角度,对问题进行了解答,希望通过这些帖子,大家可以学习到更多关于DeepSeek的知识。也欢迎其他小伙伴到对应的帖子下发表自己的见解,让我们一同探讨,共同进步。
推荐直播
-
华为云码道-玩转OpenClaw,在线养虾2026/03/11 周三 19:00-21:00
刘昱,华为云高级工程师/谈心,华为云技术专家/李海仑,上海圭卓智能科技有限公司CEO
OpenClaw 火爆开发者圈,华为云码道最新推出 Skill ——开发者只需输入一句口令,即可部署一个功能完整的「小龙虾」智能体。直播带你玩转华为云码道,玩转OpenClaw
回顾中 -
华为云码道-AI时代应用开发利器2026/03/18 周三 19:00-20:00
童得力,华为云开发者生态运营总监/姚圣伟,华为云HCDE开发者专家
本次直播由华为专家带你实战应用开发,看华为云码道(CodeArts)代码智能体如何在AI时代让你的创意应用快速落地。更有华为云HCDE开发者专家带你用码道玩转JiuwenClaw,让小艺成为你的AI助理。
回顾中 -
Skill 构建 × 智能创作:基于华为云码道的 AI 内容生产提效方案2026/03/25 周三 19:00-20:00
余伟,华为云软件研发工程师/万邵业(万少),华为云HCDE开发者专家
本次直播带来两大实战:华为云码道 Skill-Creator 手把手搭建专属知识库 Skill;如何用码道提效 OpenClaw 小说文本,打造从大纲到成稿的 AI 原创小说全链路。技术干货 + OPC创作思路,一次讲透!
回顾中
热门标签