欢迎访问 生活随笔!

凯发k8官方网

当前位置: 凯发k8官方网 > 人工智能 > 目标检测 >内容正文

目标检测

深度学习和目标检测系列教程 14-凯发k8官方网

发布时间:2024/10/8 目标检测 0 豆豆
凯发k8官方网 收集整理的这篇文章主要介绍了 深度学习和目标检测系列教程 14-300:训练第一个 yolov3 检测器 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

@author:runsen

本次博客参考github项目:

  • https://github.com/qqwweee/keras-yolo3.git

在开始之前,请在以下位置克隆!git clone https://github.com/qqwweee/keras-yolo3.git
到您的本地机器。确保设置虚拟环境并安装要求

  • keras 2.1.5
  • tensorflow 1.6.0

本次教程分为以下步骤:

  • 从 yolo 网站下载 yolov3 权重。
  • 将 darknet yolo 模型转换为 keras 模型。
  • 运行yolo检测。

代码环境:colab

在https://pjreddie.com/darknet/yolo//下载yolo 模型的权重。通过运行以下命令下载 yolo3 模型的权重:

%tensorflow_version 1.x !pip3 uninstall keras !pip3 install keras==2.1.5 cd keras-yolo3 !wget https://pjreddie.com/media/files/yolov3.weights

使用convert.py脚本将模型转换为 keras 兼容文件。

!python convert.py yolov3.cfg yolov3.weights model_data/yolo.h5

在 model_data 目录中有一个名为 yolo.h5 的文件。该模型现在可用于通过 yolo_video.py 文件进行测试。

wget https://raw.githubusercontent.com/tensorflow/models/master/research/object_detection/test_images/image1.jpgpython yolo_video.py --model model_data/yolo.h5 --classes model_data/coco_classes.txt --image

如果未指定 --image 标志,则需要指定视频的路径以及将输出保存到的路径。

keras-yolo3 训练自己的自定义 yolo 模型。需要按照以下步骤操作(来源官方 readme):


下面尝试使用一个数据集进行训练;

  • https://www.kaggle.com/tannergi/microcontroller-detection

我们需要将csv 变成 yolo的txt

可以通过执行voc_annotation.py脚本将 csv 文件转换为 txt 。

文件 model_data/yolo_weights.h5 用于加载预训练权重。

对于微控制器数据集,训练命令如下所示:

import xml.etree.elementtree as et import argparse import os import globdef voc_to_yolo(input_path, output_path, output_filename, image_folder, classes):# save classesclasses_file = open(os.path.join(output_path, 'classes.txt'), 'w')for c in classes:classes_file.write(c '\n')classes_file.close() # create txt fileoutput_file = open(os.path.join(output_path, output_filename), 'w')for xml_file in glob.glob(input_path '/*.xml'):tree = et.parse(xml_file)root = tree.getroot()image_path = os.path.join(image_folder,root.find("filename").text).replace("\\", "/")output_file.write(f'{image_path} ')for member in root.findall('object'):output_file.write(f'{int(member[4][0].text)},{int(member[4][1].text)},{int(member[4][2].text)},{int(member[4][3].text)},{classes.index(member[0].text)} ')output_file.write('\n')output_file.close()if __name__ == '__main__':parser = argparse.argumentparser(description='voc to yolo')parser.add_argument('-i', '--input', type=str, required=true, help='path to input folder')parser.add_argument('-f', '--folder', type=str, default='', help='image folder (if filenames are relativ)')parser.add_argument('-c', '--classes', nargs=' ', required=true, help='classes')parser.add_argument('-o', '--output', type=str, default='./', help='output path')parser.add_argument('-of', '--output_filename', type=str, default='train.txt', help='output filename')args = parser.parse_args()voc_to_yolo(args.input, args.output, args.output_filename, args.folder, args.classes)python voc_annotation.py -i train/ -f train/ -c arduino_nano heltec_esp32_lora esp8266 raspberry_pi_3 -o ./

修改train.py,开始训练。
在该train.py文件中,必须更改annotation_path和classes_path以匹配步骤 1 中创建的文件的路径。可能还需要更改第 57 行和第 76 行中的 batch_size,具体取决于显卡具有多少vram。

更改 train.py 文件后,您可以通过调用开始训练:python train.py

train.py一共训练50个epoch

将开始训练过程并将所有文件保存在指定的日志目录中。

测试

python yolo_video.py --model logs/000/trained_weights_final.h5 --classes classes.txt --image

使用yolo_video.py记得修改类路径或锚路径。

总结

以上是凯发k8官方网为你收集整理的深度学习和目标检测系列教程 14-300:训练第一个 yolov3 检测器的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得凯发k8官方网网站内容还不错,欢迎将凯发k8官方网推荐给好友。

  • 上一篇:
  • 下一篇:
网站地图