Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Opencv Yolo使用自己的数据集训练Yolo_Opencv_Image Processing_Deep Learning_Yolo - Fatal编程技术网

Opencv Yolo使用自己的数据集训练Yolo

Opencv Yolo使用自己的数据集训练Yolo,opencv,image-processing,deep-learning,yolo,Opencv,Image Processing,Deep Learning,Yolo,我想与Yolo建立一个数据库,这是我第一次从事深度学习 我如何为Yolo建立数据库并对其进行培训 如何获得分类的权重 对于一个刚开始深入学习的人来说,这太难了吗 使用这个流行的分叉暗色存储库。作者描述了许多步骤,这些步骤将帮助您构建和使用自己的Yolo检测器模型 如何构建自己的自定义数据集并对其进行训练?跟着这个。他建议使用Yolo Mark标记工具来构建数据集,但您也可以尝试和中所述的其他工具 如何获得重量?每1000次迭代后,权重将存储在darknet/backup/目录中(您可以稍后调整此

我想与Yolo建立一个数据库,这是我第一次从事深度学习

  • 我如何为Yolo建立数据库并对其进行培训
  • 如何获得分类的权重
  • 对于一个刚开始深入学习的人来说,这太难了吗

  • 使用这个流行的分叉暗色存储库。作者描述了许多步骤,这些步骤将帮助您构建和使用自己的Yolo检测器模型

  • 如何构建自己的自定义数据集并对其进行训练?跟着这个。他建议使用Yolo Mark标记工具来构建数据集,但您也可以尝试和中所述的其他工具
  • 如何获得重量?每1000次迭代后,权重将存储在
    darknet/backup/
    目录中(您可以稍后调整此值)。上面的链接解释了有关如何制作和使用权重文件的所有内容
  • 如果你已经懂得数学、统计学和编程,我想这不会那么难。学习基本的神经网络如感知器、MLP然后转向现代机器学习是一个良好的开端。然后,您可能想将您的知识扩展到计算机视觉相关或NLP相关领域

  • 取决于你有什么类型的操作系统。您可以点击[尤其是Windows]或坚持使用。 为此采取的步骤:

    • 1) 设置暗色,详见帖子
    • 2) 我用LabelIMG来标记我的图像。确保格式正确 您保存的图像是在YOLO中。如果使用PascalVOC格式或其他格式保存,则可以编写脚本将其更改为darknet期望的格式。[YOLO]。此外,请确保不更改标签文件。如果要添加新标签,请将其放在文件末尾,而不是中间。YOLO格式完全不同,因此如果在类之间进行更改,您以前标记的图像可能会弄乱
    • 3) 权重将在您在darknet的特定文件夹中训练模型时生成。[如果您需要更多详细信息,我很乐意帮助回答]。您可以在YOLO中下载.74文件并开始培训。培训的输入需要一个内置的darknet.exe、一个cfg文件、一个.74文件和您的培训数据位置/访问权限

    设置是严格的,过程本身并非如此。

    是的,您可以轻松完成!!欢迎来到深度学习社区。不客气

    首先从下载darknet文件夹

    进入文件夹并在命令提示符下键入make

    git clone https://github.com/pjreddie/darknet
    cd darknet
    make
    
    定义这些文件-

    data/custom.names
    data/images
    data/train.txt
    data/test.txt
    
    现在是时候用YLO格式标记图像并将其保存,该格式将为图像数据集生成相应的label.txt文件

    对象的标签应保存在data/custom.names中

    使用该脚本,您可以将数据集拆分为训练和测试-

    import glob, os
    
    dataset_path = '/media/subham/Data1/deep_learning/usecase/yolov3/images'
    
    # Percentage of images to be used for the test set
    percentage_test = 20
    
    # Create and/or truncate train.txt and test.txt
    file_train = open('train.txt', 'w')  
    file_test = open('test.txt', 'w')
    
    # Populate train.txt and test.txt
    counter = 1  
    index_test = round(100 / percentage_test)  
    for pathAndFilename in glob.iglob(os.path.join(dataset_path, "*.jpg")):  
        title, ext = os.path.splitext(os.path.basename(pathAndFilename))
    
        if counter == index_test+1:
            counter = 1
            file_test.write(dataset_path + "/" + title + '.jpg' + "\n")
        else:
            file_train.write(dataset_path + "/" + title + '.jpg' + "\n")
            counter = counter + 1
    
    为了训练我们的目标检测器,我们可以使用已经在庞大数据集上训练过的现有预训练权重。从中,我们可以将预先训练的权重下载到根目录

    在custom_data目录中创建一个yolo-custom.data文件,该文件应包含有关列车和测试数据集的信息

    classes=2
    train=custom_data/train.txt
    valid=custom_data/test.txt
    names=custom_data/custom.names
    backup=backup/
    
    现在我们必须在yolov3.cfg中进行更改,以训练我们的模型。两节课。根据所需的性能,我们可以选择YOLOv3配置文件。在本例中,我们将使用yolov3.cfg。我们可以将文件从cfg/yolov3.cfg复制到custom_data/cfg/yolov3-custom.cfg

    我们的网络应该训练的最大迭代次数设置为param max_batches=4000。同时更新步骤=32003600,这是最大批次的80%,90%。 我们需要更新[yolo]层和[convolutional]层的类和过滤器参数,这些类和过滤器参数正好位于[yolo]层之前。 在本例中,由于我们只有一个类(特斯拉),我们将在行号610696783处将[yolo]层中的类参数更新为1 同样,我们需要根据类计数filters=(类+5)*3更新filters参数。对于两个类,我们应该在行号603689776处设置filters=21 所有配置更改都是对custom_data/cfg/yolov3-custom.cfg进行的

    现在,我们已经定义了培训YOLOv3模型所需的所有项目。训练-

    ./darknet detector train custom_data/detector.data custom_data/cfg/yolov3-custom.cfg darknet53.conv.74
    

    此外,您还可以在图像中标记有边界的对象框,以便对Yolo进行培训,只需打开url即可。此工具已部署到GitHub页面


    要构建自己的数据集,您应该使用LabelImg。这是一个免费且非常简单的软件,它将为您生成构建数据集所需的所有文件。事实上,因为您使用的是yolo,所以每个图像都需要一个txt文件,该文件将包含诸如bbox坐标、标签名称等重要信息。所有这些txt文件都是由LabelImg自动生成的,因此您所要做的就是用LabelImg打开包含所有图像的目录,然后启动labelisation。然后,您将拥有所有txt文件,您还需要创建一些其他文件以开始培训(请参阅)。

    尝试使用。在您的模型开始运行之前,可能需要几天时间。谢谢,在Yolo中,像mlp一样,我们需要手动指定神经网络层吗?或者图层是自动设置的?@diegokabir你不必这么做。Yolo有许多不同类型的架构,有Yolo、yolov2、yolov3、yolov3 tiny、yolov3 spp等。所有预先训练的模型和定义都由作者提供,因此您不必修改图层,除非您真的想进行一些修改。我有任何数据集中都不存在的图像,因此,我必须首先创建数据集,然后对其进行训练,因此我必须自己指定层吗?@diegokabir否,但您必须更改cfg文件中的
    过滤器
    参数,如中所述。您可能希望为自己的数据集计算自己的锚定框值,只需按照链接上的指南操作即可。您是否可以仅识别预先训练过的对象?我的意思是,你可以用