yolo相关记录
一、jetson tx2的刷机教程以及yolo环境配置
根据大佬们的教程,主要参考了以下链接:
刷机教程安装V5版本
主机环境:vm虚拟机ubuntu16.04
主要注意点:
刷机时主机安装cuda十分漫长,给板子刷系统时间比较久,剩下的一个半小时差不多。可能是我电脑配置烂吧。
yolo的环境配置
在tx2上本人的环境是:
Ubuntu 18.04
TensorRT 7.1.0
CUDA 10.2
cuDNN 8.0.0
onnx 1.4.1
OpenCV 4.1.1
CMake 3.10.2
大部分是jetpack4.2以上刷机就匹配的,除了onnx需要安装
这是因为我参考了该博主的文章想实现v4的加速。
yolov3、v4的仓库拷贝的是以下的版本
git clone https://github.com/AlexeyAB/darknet.git
yolov5参考的是该博主的资料:
csdn资料下载
同样的v5需要的环境在G果博主推文中已经显示,主要就是requestment.txt中需要的环境配置。
刷机完后的准备
1.换源: ubuntu手动换源.
2.安装pip:参考链接.
sudo apt install python-pip
sudo apt install python3-pip
查看版本pip --version
pip3 --version
3.安装jetson_stat
1.安装环境
sudo apt-get install git cmake
sudo apt-get install python3-dev
sudo apt-get install libhdf5-serial-dev hdf5-tools
sudo apt-get install libatlas-base-dev gfortran
2.安装命令
sudo -H pip install jetson-stats
3.更新命令
sudo -H pip install -U jetson-stats
4.使用命令
jtop
二、windows下yolo环境配置
相对来说,windows下yolo的环境配置开始会感觉麻烦一点。
主要是用vs2015/2017实现v3-v4。
参考安装链接:
win10+v4(1).
win10+v4(2).
但是自己用到的并没有vs2019那么高,只是17的版本 编译生成后也可以跑通。
主要是各种添加依赖项、添加环境变量以及vs中release还是x86的小细节方面可能会出问题。
曾经出现过的问题
win10下编译使用yolo检测视频以及实时摄像头时,曾经出现过
video stream stopped!
的问题,后来的解决方案是把opencv中的ffmepg相关文件放入darknet文件的x64文件夹下,然后报错消失。
三、训练无人机视角下的数据集
主要是任务所需,所以寻找处理无人机相关的数据集。
参考了两位博主的文章
1.沙皮狗大佬v3+visdrone2019数据集.
2.虎娃大佬v3+visdrone.
3.V4+visdrone注意点.
主要任务点在于将标注文件改成yolo需要的文件格式。
直接转化的开源代码如下:(脚本参考来源于github,若有侵权,将及时删除!感恩大神!)
import os
from pathlib import Path
from PIL import Image
import csv
def convert(size, box):
dw = 1. / size[0]
dh = 1. / size[1]
x = (box[0] + box[2] / 2) * dw
y = (box[1] + box[3] / 2) * dh
w = box[2] * dw
h = box[3] * dh
return (x, y, w, h)
wd = os.getcwd()
if not os.path.exists(‘labels’):
os.makedirs(‘labels’)
train_file = ‘images.txt’
train_file_txt = ‘’
anns = os.listdir(‘annotations’)
for ann in anns:
ans = ‘’
outpath = wd + ‘/labels/’ + ann
if ann[-3:] != ‘txt’:
continue
with Image.open(wd + ‘/images/’ + ann[:-3] + ‘jpg’) as Img:
img_size = Img.size
with open(wd + ‘/annotations/’ + ann, newline=’’) as csvfile:
spamreader = csv.reader(csvfile)
for row in spamreader:
if row[4] == ‘0’:
continue
bb = convert(img_size, tuple(map(int, row[:4])))
ans = ans + str(int(row[5])-1) + ’ ’ + ’ '.join(str(a) for a in bb) + ‘\n’
with open(outpath, ‘w’) as outfile:
outfile.write(ans)
train_file_txt = train_file_txt + wd + ‘/images/’ + ann[:-3] + ‘jpg\n’
with open(train_file, ‘w’) as outfile:
outfile.write(train_file_txt)
创建相关文件
需要的是.data文件,里面是你训练的类型种类,训练数据的位置等信息
classes= 10
train = /path/to/visdrone_train_dataset/images.txt
valid = /path/to/visdrone_val_dataset/images.txt
names = data/visdrone.names
backup = backup
train和valid的位置路径是你自己保存的路径。
修改yolov3-voc文件:
主要是修改classes和fliters
由于visdrone数据集训练类型是10(除去了others和ignored region)
所以fliters改为45(fliters=3*(classes+5))
增加.names文件
pedestrian
people
bicycle
car
van
truck
tricycle
awning-tricycle
bus
motor
最后下载预训练权重
yolov3-voc.cfg -> darknet53.conv.74
yolov4.cfg -> yolov4.conv.137
yolov4-tiny.cfg --> yolov4-tiny.conv.29
链接如下:
darknet53.conv.74:
https://pan.baidu.com/s/17yywRWP-IaGXT6es1u5_-A
提取码:fggd
yolov4.conv.137:
https://github.com/AlexeyAB/darknet/releases/download/darknet_yolo_v3_optimal/yolov4.conv.137
https://pan.baidu.com/s/1XrcPHdp2_4c-dKge2Guw4w
提取码:xsxb
yolov4-tiny.conv.29:
https://github.com/AlexeyAB/darknet/releases/download/darknet_yolo_v4_pre/yolov4-tiny.conv.29
https://pan.baidu.com/s/16b7GpOU50B2YkjriVQl1UQ
提取码:xbqc
训练指令
开始训练
./darknet detector train cfg/visdrone.data cfg/yolov3-voc-visdrone.cfg darknet53.conv.74
恢复训练
./darknet detector train cfg/visdrone.data cfg/yolov3-voc-visdrone.cfg backup/yolov3-voc-visdrone_last.weights
多cpu训练或者指定cpu训练
./darknet detector train data\voc.data cfg\yolov4.cfg yolov4.conv.137 -gpus 0,1
./darknet detector train data\voc.data cfg\yolov4.cfg yolov4.conv.137 -gpus 0
mAP可视化
./darknet detector train cfg/voc.data cfg/yolov4-tiny.cfg backup/yolov4-tiny_99000.weights -gpus 0,1 -map