日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人工智能 > 目标检测 >内容正文

目标检测

深度学习和目标检测系列教程 14-300:训练第一个 YOLOv3 检测器

發布時間:2024/10/8 目标检测 150 豆豆
生活随笔 收集整理的這篇文章主要介紹了 深度学习和目标检测系列教程 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記得修改類路徑或錨路徑。

總結

以上是生活随笔為你收集整理的深度学习和目标检测系列教程 14-300:训练第一个 YOLOv3 检测器的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。