您好,欢迎来到12图资源库!分享精神,快乐你我!我们只是素材的搬运工!!
  • 首 页
  • 当前位置:首页 > 开发 > WEB开发 >
    几行代码构建全功用的对象检测模型,他是如何做到的?
    时间:2020-03-01 21:11 来源:网络整理 作者:网络 浏览:收藏 挑错 推荐 打印

    如今,机器学习和计算机视觉已成为一种热潮。我们都看过关于自动驾驶汽车和面部辨认的旧事,能够会想象树立本人的计算机视觉模型有多酷。但是,进入这个范围并不总是那幺容易,尤其是在没有很强的数学背景的状况下。假设你只想做一些小的实验,像PyTorch和TensorFlow这样的库能够会很单调。

    在本教程中,作者提供了一种复杂的办法,任何人都可以运用几行代码构建全功用的对象检测模型。更详细地说,我们将运用Detecto,这是一个在PyTorch之上构建的Python软件包,可简化该进程并向一切级别的顺序员开放。

    快速复杂的例子

    为了演示如何复杂地使Detecto,让我们加载一个预先训练的模型,并对以下图像停止推断:

    几行代码构建全功用的对象检测模型,他是如何做到的?

    首先,运用pip下载Detecto软件包:

    pip3 install detecto

    然后,将下面的图像另存为“fruit.jpg”,并在与图像相反的文件夹中创立一个Python文件。在Python文件中,编写以下5行代码:

    from detectoimport core, utils, visualize 

    image = utils.read_image('fruit.jpg'

    model = core.Model() 

    labels, boxes, scores = model.predict_top(image) 

    visualize.show_labeled_image(image, boxes, labels) 

    运转此文件后(假设你的计算机上没有启用CUDA的GPU,能够会破费几秒钟;稍后再停止引见),你应该会看到相似下面的图:

    几行代码构建全功用的对象检测模型,他是如何做到的?

    作者仅用了5行代码就完成了一切任务,真的是太棒了。下面是我们每步中辨别做的:

    1)导入Detecto模块 2)读入图像 3)初始化预训练模型 4)在图像上生成最高预测 5)为预测绘图 绘制我们的预测

    Detecto运用来自PyTorch模型植物园中的Faster R-CNN ResNet-50 FPN,它可以检测大约80种不同的物体,例如植物,车辆,厨房用具等。但是,假设你想要检测自定义对象,例如可口可乐与百事可乐罐,斑马与长颈鹿,该怎幺办呢?

    这时你会发现,在自定义数据集上训练探测器模型异样复杂; 异样,你只需求5行代码,以及现有的数据集或花一些时间标记图像。

    构建自定义数据集

    在本教程中,作者将从头末尾构建本人的数据集。建议你也这样做,但是假设你想跳过这一步,你可以在这里下载一个示例数据集(从斯坦福的Dog数据集修正)。

    关于我们的数据集,我们将训练我们的模型来检测来自RoboSub竞赛的水下外星人,蝙蝠和女巫,如下所示:

    几行代码构建全功用的对象检测模型,他是如何做到的?

    理想状况下,每个类至少需求100张图像。好在每张图像中可以有多个对象,所以实际上,假设每张图像包含你想要检测的每类对象,那幺你可以总共取得100张图像。另外,假设你有视频素材,Detico可以轻松地将这些视频素材联系成可用于数据集的图像:

    from detecto.utilsimport split_video 

    split_video('video.mp4','frames/', step_size=4

    下面的代码在“video.mp4”中每第4帧拍摄一次,并将其另存为JPEG文件存在“frames”文件夹中。

    生成训练数据集后,应该具有一个相似于以下内容的文件夹:

    images/ 

    |   image0.jpg 

    |   image1.jpg 

    |   image2.jpg 

    |   ... 

    假设需求的话,你还可以运用另一个文件夹,其中包含一组验证图像。

    如今是耗时的部分:标记。Detecto支持PASCAL VOC格式,其中具有XML文件,其中包含图像中每个对象的标签和位置数据。要创立这些XML文件,可以运用开源LabelImg工具,如下所示:

    pip3 install labelImg   # Download LabelImg using pip 

    labelImg                # Launch the application 

    如今,你应该会看到一个弹出窗口。单击左侧“翻开目录”按钮,然后选择想要标记的图像文件夹。假设一切正常,你应该会看到相似以下内容:

    几行代码构建全功用的对象检测模型,他是如何做到的?

    要绘制边界框,请单击左侧菜单栏中的图标(或运用键盘快捷键“w”)。然后,你可以在对象周围拖动一个框并编写/选择标签:

    几行代码构建全功用的对象检测模型,他是如何做到的?

    标记完图像后,请运用CTRL+S或CMD+S保存XML文件(为简便起见,你可以运用自动填充的默许文件位置和称号)。要标记下一张图像,请单击“下一张图像”(或运用键盘快捷键“d”)。

    整个数据集处置终了之后,你的文件夹应如下所示:

    images/ 

    |   image0.jpg 

    |   image0.xml 

    |   image1.jpg 

    |   image1.xml 

    |   ... 

    我们曾经预备好末尾训练我们的对象检测模型了!

    拜访GPU (责任编辑:admin)