对象检测问题的基础是数据的外观。现在,本文将介绍可用于解决对象检测问题的不同深度学习架构。让我们首先讨论我们将要处理的问题陈述。
目录
了解问题陈述:血细胞检测
数据集链接
解决对象检测问题的简单方法
实施简单方法的步骤
加载数据集
数据探索
为简单方法准备数据集
创建训练和验证集
定义分类模型架构
训练模型
作出预测
结论
了解问题陈述血细胞检测
问题陈述
对于一组给定的血细胞图像,我们必须检测图像中的白细胞。
现在,这是来自数据集的示例图像。如你所见,你可以看到有一些红色阴影区域和蓝色或紫色区域。
在上图中,红色阴影区域是红细胞(RBC),紫色阴影区域是白细胞(WBC),还有一些小的黑色突出部分是血小板。
正如你在此图像中看到的那样,我们有多个对象和多个类。
为简单起见,我们将其转换为单类单对象问题。这意味着我们将只考虑白细胞。
因此,只有一个类,即白细胞,而忽略其余的类。此外,我们将只保留具有单个白细胞的图像。
因此,具有多个白细胞的图像将从该数据集中删除。
以下是我们将从该数据集中选择图像的方法。
因此,我们删除了图像 2 和图像 5,因为图像 5 没有白细胞,而图像 2 有 2 个白细胞,其他图像保留在数据集中。同样,测试集也将只有一个白细胞。
现在,对于每个图像,我们在白细胞周围都有一个边界框。正如你在这张图片中看到的,我们的文件名为 1.jpg,这些是白细胞周围边界框的边界框坐标。
在下一节中,我们将介绍解决此对象检测问题的简单方法。
数据集链接
数据集链接:
https://courses.analyticsvidhya.com/courses/take/Applied-Computer-Vision-using-Deep-Learning/downloads/14005079-dataset-blood-cell-detection
解决对象检测问题的简单方法
在本节中,我们将讨论一种解决对象检测问题的简单方法。所以让我们首先了解任务,我们必须在血细胞图像中检测白细胞,可以看到下图。
现在,最简单的方法是将图像划分为多个块,因此对于此图像,将图像划分为四个块。
我们对这些块中的每一个进行分类,因此第一个块没有白细胞,第二个块有一个白细胞,同样第三个和第四个没有任何白细胞。
我们已经熟悉分类过程以及如何构建分类算法。因此,我们可以轻松地将这些单独的块中的每一个分类为 yes 和 no,以表示白细胞。
现在,在下图中,具有白细胞的块(绿色框)可以表示为边界框,因此在这种情况下,我们将取这个块的坐标值,并将其返回为白细胞的边界框。
现在为了实施这种方法,我们首先需要准备我们的训练数据。
现在可能有一个问题,为什么我们需要准备训练数据?我们已经有了这些图像和边界框。
我们的训练数据采用以下格式,其中我们有白细胞边界框和边界框坐标。
现在,请注意我们有完整图像的这些边界框坐标,但我们将把这个图像分成四个块。我们需要所有这四个块的边界框坐标。下一个问题是我们如何做到这一点?
我们必须定义一个新的训练数据,我们有文件名,如下图所示。
我们有不同的块,对于每个块,我们有 Xmin、Xmax、Ymin 和 Ymax 值,它们表示这些块的坐标,最后,我们的目标变量是白细胞。图像中是否存在白细胞?
现在在这种情况下,它将成为一个简单的分类问题。因此,对于每个图像,我们将其划分为四个不同的块,并为每个块创建边界框坐标。
现在下一个问题是我们如何创建这些边界框坐标?这真的很简单。
考虑到我们有一个大小为 (640*480) 的图像。所以原点是(0,0)。上图有 x 轴和 y 轴,这里我们的坐标值为 (640, 480)。
现在,我们找出中点,它是 (320,240)。一旦我们有了这些值,我们就可以很容易地找出每个块的坐标。所以对于第一个块,我们的 Xmin 和 Ymin 将是 (0,0) ,而 Xmax, Ymax 将是 (320,240)。
同样,我们可以在第二个、第三个和第四个块中找到它。一旦我们有了这些块中的每一个的坐标值或边界框值。下一个任务是确定此块中是否存在白细胞。