2023年11月29日发(作者:)

旋转⽬标检测训练⾃⼰数据集+问题汇总

⽬录

本⽂复现的代码来⾃知乎⼤佬junjieliang.

1.制作⾃⼰的数据集

from cmath import pi

import os

import tTree as ET

import pickle

import math

'''

旋转⽬标检测的xml转换为对应的txt

'''

def convert(input_path, classes, output_path):

for m_xml in r(input_path):

m_txt = m_('.xml')+'.txt'

if not (output_path + m_txt):

('touch ' + output_path + m_txt)

解决⽅案:

原因在预训练模型,我是使⽤的之前下好的yolov5-5.0的预训练模型,但是⼤佬使⽤的是3.0的,下载对应版本的预训练模型即可。

⼀种⽅式是执⾏weights/download_,也可以直接在命令⾏终端输⼊:

python -c "

from _utils import *;

attempt_download('weights/');

解决⽅案:删除

3.部署

3.1使⽤项⽬中的

python --source ./mydata/images/ --weights="runs/exp5/weights/"

也可以将图⽚换成视频进⾏检测:

python --source ./mydata/ --weights="runs/exp8/weights/"

3.2 使⽤时遇到的问题

1)没有任何检测框或漏检率很⾼

解决⽅案:

·可能是训练代数不够,继续训练或降低置信度阈值测试。

·可能是同类物体之间相距太近了,可以将脚本中的nms阈值提⾼。

2TypeError: can't convert cuda:0 device type tensor to numpy. Use () to copy the tensor to host

6RuntimeError: cuda runtime error (999) : unknown error at /pytorch/aten/src/THC/:47

解决⽅案:

sudo rmmod nvidia_uvm

sudo modprobe nvidia_uvm

3.3⾃⼰的部署代码

参考⼤佬的⼤概可以改出⼀份在⾃⼰所需功能的环境下可以运⾏的代码,不过猜测库版本的匹配会是⼀个坑,之后写出来会进⾏

分享。