目标检测——yoloV3案例

这篇具有很好参考价值的文章主要介绍了目标检测——yoloV3案例。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

数据获取

目标检测——yoloV3案例,tensorflow解决cv,目标检测,YOLO,人工智能
labellmage使用方法
目标检测——yoloV3案例,tensorflow解决cv,目标检测,YOLO,人工智能
目标检测——yoloV3案例,tensorflow解决cv,目标检测,YOLO,人工智能

TFrecord文件

目标检测——yoloV3案例,tensorflow解决cv,目标检测,YOLO,人工智能

什么是TFrecord文件

目标检测——yoloV3案例,tensorflow解决cv,目标检测,YOLO,人工智能
目标检测——yoloV3案例,tensorflow解决cv,目标检测,YOLO,人工智能

将数据转换成TFrecord文件

目标检测——yoloV3案例,tensorflow解决cv,目标检测,YOLO,人工智能

from dataset.vocdata_tfrecord import load_labels,write_to_tfrecord
#1
datapath='./VOCdevkit/VOC2007/'
#2
all_xml=load_labels(datapath,'train')
#3
tfrecord_path='./yolov3/dataset/voc_train.tfrecords'
#4
img_path=os.path.join(datapath,'JPEGImages')
#5
write_to_tfrecord(all_xml,tfrecord_path,img_path)

读取TFrecord文件

from dataset.get_tfdata import getdata
dataset=getdata('./dataset/voc_val.tfrecords')
import matplotlib.pyplot as plt
from matplotlib.patches import Rectangle

#数据展示
#1获取类别信息
from utils.config_utils import read_class_names
classes=read_class_names('config/classname')
#2创建画布
plt.figure(15,10)
#3获取数据遍历
i=0
for image,width,height,boxes,boxes_category in datasets.take(3):
    #4划分不同的坐标轴
    plt.subplot(1,3,i+1)
    #5显示图像:plt.imshow()
    plt.imshow(image)
    #6显示box,遍历所有的bbox,rectange进行绘制
    ax=plt.gca()
    for j in range(boxes.shape[0]):
        rect=Rectangle((boxes[j,0],boxes[j,1]),boxes[j,2] -boxes[j,0],boxes[j,3]-boxes[j,1],color='r',fill=False)
        ax.add_patch(rect)
        #7显示类别
        label_id=boxes_category[j]
        label=classes.get(label_id.numpy())
        ax.text(boxes[j,0],boxes[j,1]+8,label,color='w',size=11,backgroundcolor='none')
    i+=1
plt.show()

目标检测——yoloV3案例,tensorflow解决cv,目标检测,YOLO,人工智能

数据处理

目标检测——yoloV3案例,tensorflow解决cv,目标检测,YOLO,人工智能

from dataset.preprocess import preprocess
#2创建画布
plt.figure(15,10)
#3获取数据遍历
i=0
for image,width,height,boxes,boxes_category in datasets.take(3):
    #进行数据处理
    image,boxes=preprocess(image,boxes)
    #4划分不同的坐标轴
    plt.subplot(1,3,i+1)
    #5显示图像:plt.imshow()
    plt.imshow(image)
    #6显示box,遍历所有的bbox,rectange进行绘制
    ax=plt.gca()
    for j in range(boxes.shape[0]):
        rect=Rectangle((boxes[j,0],boxes[j,1]),boxes[j,2] -boxes[j,0],boxes[j,3]-boxes[j,1],color='r',fill=False)
        ax.add_patch(rect)
        #7显示类别
        label_id=boxes_category[j]
        label=classes.get(label_id.numpy())
        ax.text(boxes[j,0],boxes[j,1]+8,label,color='w',size=11,backgroundcolor='none')
    i+=1
plt.show()

目标检测——yoloV3案例,tensorflow解决cv,目标检测,YOLO,人工智能

模型构建

目标检测——yoloV3案例,tensorflow解决cv,目标检测,YOLO,人工智能

模型训练

from model.yolov3 import YOLOv3 
yolov3=YOLOv3((416,416,3),80)
yolov3.summary()

损失函数的计算

目标检测——yoloV3案例,tensorflow解决cv,目标检测,YOLO,人工智能

from core.loss import Loss
yolov3_loss=Loss((416,416,3),80)

正负样本的设定

目标检测——yoloV3案例,tensorflow解决cv,目标检测,YOLO,人工智能
目标检测——yoloV3案例,tensorflow解决cv,目标检测,YOLO,人工智能

from core.bbox_target import bbox_to_target
#获取数据进行目标值设置
for image,width,height,boxes,labels in dataset.take[1]:
    #获取目标值
    label1,label2,label3=bbox_to_target(boxes,label,num_classes=20)
import tensorflow as tf
#获取正样本索引
tf.where(tf.equal(label[...,4],1))
#坐标值
label1[12,12,0,0:4]
label1[12,12,0,5:]

模型训练

目标检测——yoloV3案例,tensorflow解决cv,目标检测,YOLO,人工智能

获取数据集

from dataset.preprocess import dataset
batch_size=1
trainset=dataset('dataset/voc_train.tfrecords',batch_size)

加载模型

from model.yoloV3 import YOLOv3
yolov3=YOLOv3((416,416,3),20)

from core.loss import Loss
yoloV3_loss=Loss((416,416,3),20)

模型训练

目标检测——yoloV3案例,tensorflow解决cv,目标检测,YOLO,人工智能
目标检测——yoloV3案例,tensorflow解决cv,目标检测,YOLO,人工智能

#1定义优化器
optimizer=tf.keras.optimizers.SGD(learning_rate=0.1,momentum=0.9)
#2设置epoch
for epoch in range(2):
    for (batch,inputs) in enumerate(trainset):
        images,labels=inputs
        #3计算损失函数进行参数更新
        #3.1定义上下文缓解
        with tf.GradientTape() as Tape:
            #3.2将图像送入网络中
            outputs=yoloV3(image)
            #3.3计算损失函数
            loss=yoloV3_loss([*outputs,*labels])
            #3.4计算梯度
            grads=Tape.gradient(loss,yolov3.trainable_variables)
            #3.5梯度更新
            optimizer.apply_gradients(zip(grads,yolov3.trainable_variables))
            print(loss)
yolov3.save('yolov3.h5')

模型预测

目标检测——yoloV3案例,tensorflow解决cv,目标检测,YOLO,人工智能
目标检测——yoloV3案例,tensorflow解决cv,目标检测,YOLO,人工智能

#1
img=cv2.imread('image.jpg')
#2
predicter=Predict(class_num=80,yolov3='weights/yolov3.h5')
#3
boundings=predicter(img)
#4
plt.imshow(img[:,:,::-1])

目标检测——yoloV3案例,tensorflow解决cv,目标检测,YOLO,人工智能
目标检测——yoloV3案例,tensorflow解决cv,目标检测,YOLO,人工智能文章来源地址https://www.toymoban.com/news/detail-602281.html

到了这里,关于目标检测——yoloV3案例的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 目标检测算法(R-CNN,fast R-CNN,faster R-CNN,yolo,SSD,yoloV2,yoloV3,yoloV4,yoloV5,yoloV6,yoloV7)

    深度学习目前已经应用到了各个领域,应用场景大体分为三类:物体识别,目标检测,自然语言处理。 目标检测可以理解为是物体识别和物体定位的综合 ,不仅仅要识别出物体属于哪个分类,更重要的是得到物体在图片中的具体位置。 为了完成这两个任务,目标检测模型分

    2024年02月02日
    浏览(36)
  • 目标检测YOLO实战应用案例100讲-基于深度学习的航拍图像YOLOv5目标检测(论文篇)(续)

    目录 基础理论及相关技术  2.1 深度学习基础理论 

    2024年04月16日
    浏览(34)
  • YOLO物体检测系列3:YOLOV3改进解读

    上篇内容: YOLOV2整体解读 YOLOV3提出论文:《Yolov3: An incremental improvement》 这张图讲道理真的过分了!!!我不是针对谁,在座的各位都是** 故意将yolov3画到了第二象限 终于到V3了,最大的改进就是网络结构,使其更适合小目标检测 特征做的更细致,融入多持续特征图信息来

    2024年02月08日
    浏览(31)
  • YOLOv3目标检测算法——通俗易懂的解析

    前两篇文章我们讲了下关于 YOLOv1 和 YOLOv2 的原理,有不懂的小伙伴可以回到前面再看看: YOLOv1目标检测算法——通俗易懂的解析 YOLOv2目标检测算法——通俗易懂的解析   作者出于道德问题从 YOLOv3 开始将不再更新 YOLO 系列算法,俄罗斯的一位大佬Alexey Bochkovskiy接过了 YO

    2024年02月08日
    浏览(31)
  • 目标检测YOLOv3基于DarkNet53模型测试-笔记

    目标检测YOLOv3基于DarkNet53模型测试-笔记 预测和试测结果: YOLOv3和DarkNet53网络示意图: DarkNet-53网络中Residual Block列差块(基本单元)结构和代码BasicBlock类实现 YOLOv3网络图中基本图的描述 (1)Res Unit即为上图的BasicBlock残差块 (2)CBL即为Conv2D+BatchNorm+LeakReLU组合的卷积基本层 (

    2024年02月14日
    浏览(33)
  • C# OpenCvSharp DNN 部署yolov3目标检测

    目录 效果 yolov3.cfg 项目 代码 下载 C# OpenCvSharp DNN 部署yolov3目标检测 using OpenCvSharp; using OpenCvSharp.Dnn; using System; using System.Collections.Generic; using System.Drawing; using System.IO; using System.Linq; using System.Windows.Forms; namespace OpenCvSharp_DNN_Demo {     public partial class frmMain : Form     {        

    2024年01月19日
    浏览(32)
  • C# PaddleDetection 目标检测 ( yolov3_darknet)

    目录 效果 项目 代码 infer_cfg.yml label_list中为可识别的目标 下载  VS2022+.net4.8+OpenCvSharp4+Sdcb.PaddleDetection using OpenCvSharp; using OpenCvSharp.Extensions; using Sdcb.PaddleDetection; using Sdcb.PaddleInference; using System; using System.Drawing; using System.Windows.Forms; using YamlDotNet; namespace PaddleDetection目标检测

    2024年02月15日
    浏览(33)
  • 基于opencv的YOLOV3对摄像头、视频的目标检测

    目录 1. 介绍 2. 代码实现 2.1 处理单帧函数 2.2 非极大值抑制 2.3 绘制边界框

    2024年02月14日
    浏览(37)
  • 实时目标检测:基于YOLOv3和OpenCV的摄像头应用

    随着人工智能和计算机视觉技术的不断发展,目标检测成为了智能监控、自动驾驶、机器人等领域的关键技术之一。实时目标检测更是对系统的反应速度和准确度提出了更高的要求。本文介绍使用OpenCV和YOLOv3实现实时目标检测的方法,演示如何使用OpenCV调用YOLOv3模型进行实时

    2024年02月08日
    浏览(31)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包