跑yolov4

2024-03-17 04:59
文章标签 yolov4

本文主要是介绍跑yolov4,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

https://github.com/ultralytics/yolov3
跑这个网络

对于自己的数据 可以先复制到data这个文件夹中,为了后续制作数据做准备
1 先克隆这个仓库到服务器上
2 cd yolov3/data
3 mv /home/dell/下载/trainval4/trainval/VOC2007/JPEGImages/ .
4 查看数据量的多少
ls -lR | grep "^-" | wc -l
5

`mv JPEGImages/ images``
//  改名字 将JPEGImages 改为images

6

sudo mv /home/dell/下载/trainval4/trainval/VOC2007/Annotations/ .
// 移动Annotations

7 因为我这里的数据的xml进行了修改

sudo cp /home/wanliu/annotations-finished/*xml .
// 所以我这里进行了复制 

在这里插入图片描述
8

mkidr ImageSet

在yolov3的文件夹中 新建make.py文件 代码内容如下

mport os
import randomrandom.seed(42)val_percent = 0.1
train_percent = 0.9
xmlfilepath = 'data/Annotations'
txtsavepath = 'data/ImageSets'
total_xml = os.listdir(xmlfilepath)num = len(total_xml)
list = range(num)
tv = int(num * val_percent)
val = random.sample(list, tv)  # 从list中选10%作为验证集大小ftrain = open('data/ImageSets/train.txt', 'w')
fval = open('data/ImageSets/val.txt', 'w')for i in list:name = total_xml[i][:-4] + '\n'if i in val:fval.write(name)else:ftrain.write(name)ftrain.close()
fval.close()

运行nake.py文件 在ImageSet文件中得到train.txt val.txt
在这里插入图片描述
9 制作lable文件 在yolov3的文件夹中 新建voc_label.py文件 代码内容如下

import xml.etree.ElementTree as ET
import pickle
import os
from os import listdir, getcwd
from os.path import joinsets = ['train', 'val']#classes = ["RBC"]#我们只是检测细胞,因此只有一个类别
classes = ["一次性快餐盒", "书籍纸张", "充电宝", "剩饭剩菜", "包", "垃圾桶", "塑料器皿","塑料玩具", "塑料衣架", "大骨头", "干电池", "快递纸袋", "插头电线", "旧衣服", "易拉罐","枕头", "果皮果肉", "毛绒玩具", "污损塑料", "污损用纸", "洗护用品", "烟蒂", "牙签","玻璃器皿", "砧板", "筷子", "纸盒纸箱", "花盆", "茶叶渣", "菜帮菜叶", "蛋壳","调料瓶", "软膏", "过期药物", "酒瓶", "金属厨具", "金属器皿", "金属食品罐", "锅","陶瓷器皿", "鞋", "食用油桶", "饮料瓶", "鱼骨"]def convert(size, box):dw = 1. / size[0]dh = 1. / size[1]x = (box[0] + box[1]) / 2.0y = (box[2] + box[3]) / 2.0w = box[1] - box[0]h = box[3] - box[2]x = x * dww = w * dwy = y * dhh = h * dhreturn (x, y, w, h)def convert_annotation(image_id):in_file = open('data/Annotations/%s.xml' % (image_id))out_file = open('data/labels/%s.txt' % (image_id), 'w')tree = ET.parse(in_file)root = tree.getroot()size = root.find('size')w = int(size.find('width').text)h = int(size.find('height').text)if w == 0 or h == 0:print(image_id)for obj in root.iter('object'):difficult = obj.find('difficult').textcls = obj.find('name').textif cls not in classes or int(difficult) == 1:continuecls_id = classes.index(cls)xmlbox = obj.find('bndbox')b = (float(xmlbox.find('xmin').text), float(xmlbox.find('xmax').text), float(xmlbox.find('ymin').text),float(xmlbox.find('ymax').text))bb = convert((w, h), b)if bb[0] > 1 or bb[1] > 1 or bb[2] > 1 or bb[3] > 1:print('oh no')continueout_file.write(str(cls_id) + " " + " ".join([str(a) for a in bb]) + '\n')wd = getcwd()
print(wd)
for image_set in sets:if not os.path.exists('data/labels/'):os.makedirs('data/labels/')image_ids = open('data/ImageSets/%s.txt' % (image_set)).read().strip().split()list_file = open('data/%s.txt' % (image_set), 'w')for image_id in image_ids:if image_id == '':continue  list_file.write('data/images/%s.jpg\n' % (image_id))convert_annotation(image_id)list_file.close()

这样在data文件夹中会得到train.txt val.txt 和label文件夹
在这里插入图片描述

10 查看仓库的一些要求

cat requirements.txt 
pip install -r requirements.txt
进行下载

11 创建 my.data my.names

vi my.data
内容如下
classes=44
train=data/train.txt
valid=data/val.txt
names=data/my.names
backup=backup/
eval=coco
vi my.names
内容如下
一次性快餐盒
书籍纸张
充电宝
剩饭剩菜
包
垃圾桶
塑料器皿
塑料玩具
塑料衣架
大骨头
干电池
快递纸袋
插头电线
旧衣服
易拉罐
枕头
果皮果肉
毛绒玩具
污损塑料
污损用纸
洗护用品
烟蒂
牙签
玻璃器皿
砧板
筷子
纸盒纸箱
花盆
茶叶渣
菜帮菜叶
蛋壳
调料瓶
软膏
过期药物
酒瓶
金属厨具
金属食品罐
锅
陶瓷器皿
鞋
食用油桶
饮料瓶
鱼骨

12 再去修改 yolov4-relu.cfg里面的内容

[convolutional]
size=1
stride=1
pad=1
filters=147  // 修改后 3 * (5 + len(classes))
activation=linear
[yolo]
mask = 3,4,5
anchors = 10,13, 16,30, 33,23, 30,61, 62,45, 59,119, 116,90, 156,198, 373,326 // 修改后
classes=44 // 修改后
num=9
jitter=.3
ignore_thresh = .7
truth_thresh = 1
scale_x_y = 1.1
iou_thresh=0.213
cls_normalizer=1.0
iou_normalizer=0.07
iou_loss=ciou
nms_kind=greedynms
beta_nms=0.6

这里修改的内容 是 含有yolo的里面的一些修改及只有这个yolo上面的convolutional的修改。
13 这里我使用的weight是自己找的 因为在这个仓库中 没有yolov4的预训练模型 所以 我们重新找了个
https://github.com/AlexeyAB/darknet
在这个里面 然后下载yolov4的预训练模型

14 进行训练

python train.py --data my.data --weights weights/yolov4-relu.pt --batch-size 12 --cfg yolov4-relu.cfg --device 0,1,2,3

15 进行测试 在跑迭代的时候 会生成last.pt和best.pt两个文件 可以进行测试

python test.py --cfg yolov4-relu.cfg --weights weights/best.pt --img 544 --augment --data my.data 

这篇关于跑yolov4的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/817874

相关文章

darknet/YOLOV4 预训练时冻结参数,停止反向传播

目录 1.首先获取预训练模型 2.修改cfg文件 3.训练 平时我们在训练模型时,会利用预训练模型做迁移学习,但是有时候我们想前面的几层直接复用预训练模型的参数,然后只训练后面的几个网络层,这时候需要冻结前面几层的参数,停止反向传播。 1.首先获取预训练模型 darknet partial cfg/cspdarknet53.cfg cspdarknet53.weights cspd

yolov4训练自己的数据集,基于darknet框架

目录 一:安装darknet 二:首先以VOC的数据格式准备好自己的数据 三:制作darknet需要的label以及txt文件。 四:准备data文件 五:准备names文件 六:修改cfg文件 七:开始训练 八:单张图片测试 一:安装darknet git clone https://github.com/AlexeyAB/darknet/ 修改makefile里面的值

【YOLOV4】FPN+PAN结构

yolo4的neck结构采用该模式,我们将Neck部分用立体图画出来,更直观的看下两部分之间是如何通过FPN结构融合的。 如图所示,FPN是自顶向下的,将高层特征通过上采样和低层特征做融合得到进行预测的特征图。Neck部分的立体图像,看下两部分是如何通过FPN+PAN结构进行融合的。 和Yolov3的FPN层不同,Yolov4在FPN层的后面还添加了一个自底向上的特征金字塔。这样结合操

c++项目中使用YOLOv4模型简单案例

主要是使用yolo_v2_class.hpp文件 1、hpp文件 #ifndef DEMO_HPP#define DEMO_HPP#ifndef OPENCV#define OPENCV#endif#include<yolo_v2_class.hpp>#include<darknet.h>using namespace cv;using namespace std;class

基于YoloV4汽车多目标跟踪计数

欢迎大家点赞、收藏、关注、评论啦 ,由于篇幅有限,只展示了部分核心代码。 文章目录 一项目简介 二、功能三、系统四. 总结 一项目简介    一、项目背景与意义 随着城市交通的快速发展,交通流量和车辆密度的不断增加,对交通管理和控制提出了更高的要求。传统的交通流量计数方法通常依赖于人工统计或者简单的传感器设备,这些方法不仅效率低下,而且容易出错。因此,开发一个能够自动、准确地

使用YoloV4深度学习对图像上的车辆进行检测计数

欢迎大家点赞、收藏、关注、评论啦 ,由于篇幅有限,只展示了部分核心代码。 文章目录 一项目简介 三、系统四. 总结 一项目简介    一、项目背景与意义 随着智能交通系统(ITS)的快速发展,对道路监控视频中车辆进行准确、实时的检测与计数已成为一项重要的技术需求。传统的车辆检测方法往往依赖于人工或简单的图像处理技术,这些方法不仅效率低下,而且容易受到环境、光照、遮挡等因素的影

YOLOv4重磅发布,五大改进,二十多项技巧实验,堪称最强目标检测万花筒

点击上方蓝色字体,关注我们 今年2月22日,知名的 DarkNet 和 YOLO 系列作者 Joseph Redmon 宣布退出 CV 界面,这也就意味着 YOLOv3 不会再有官方更新了。但是,CV 领域进步的浪潮仍在滚滚向前,仍然有人在继续优化 YOLOv3。今日,著名的AlexeyAB版本发布了 YOLOv4的论文。该论文提出了五大改进,二十多个技巧的实验,可以说 YOLOv4是一项非

YOLOV4目标检测--计数方法draw_detections_v3

YOLOv4检测图片添加置信度和计数 YOLOv4检测图片添加置信度和计数   本文章向大家介绍 YOLOv4检测图片添加置信度和计数 ,主要包括 YOLOv4检测图片添加置信度和计数 使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。   主要修改的image.c文件,在darknet目录下直接ctrl+f搜即可,然后打开,找到draw_d

【万字长文】看完这篇yolov4详解,那算是真会了

前言 目标检测作为计算机视觉领域的一个核心任务,其目的是识别出图像中所有感兴趣的目标,并给出它们的类别和位置。YOLO(You Only Look Once)系列模型因其检测速度快、性能优异而成为该领域的明星。随着YOLOv4的推出,目标检测的性能得到了进一步的提升。本文将详细介绍YOLOv4相对于前代YOLO模型的改进点,以及它在目标检测领域的新贡献。 YOLO系列概述 YOLO系列自20

Ubuntu18.04 搭建YOLOV4环境

Darknet是一个轻型的深度学习和训练框架,从这一点上,它和tensorflow以及pytorch这种没有什么不同,特点在轻型二字,它主要对卷集神经网络进行了底层实现,并且主要用于YOLO的目标检测,特点主要有: C语言实现没有依赖项,除了opencv进行视频和UVC摄像头处理容易安装,可移植性好支持CPU于GPU(CUDA)两种计算方式 下面开始实验。 下载代码,编译 git clo