训练yolo安装darknet,想绘制loss曲线,但opencv安装失败

darknet

yolo的训练需要darknet框架。darknet有两个比较大的版本:

1官方提供的darknent连接是 https://github.com/pjreddie/darknet。这个只能在linux上使用

2可以在win上使用的库 https://github.com/AlexeyAB/darknet。同时这个在原库的基础上增加了很多计算map,验证等等功能。还可以支持opencv ,训练时画出map和loss曲线。但是命令和官方的darknet会有差别。

AlexeyAB的darknet使用的opencv要低于3.4.1现在很难找到低版本opencv

在ubuntu18.04上安装过cuda9,cudnn的基础上,安装opencv

从零开始安装Ubuntu和NVIDIA 1080Ti驱动、CUDA、cuDNN是使用conda安装tensorflow时安装的cuda9和cudnn

1pip安装

ubuntu上默认python 2x的版本,可能对应的是pip命令

python 3x,对应的应该是pip3

可以用命令查看一下

pip list #查询python2安装的软件
pip3 list #查询python3安装的软件
conda list

pip -V#查询pip版本和指向的路径
pip3 -V

可以参考Ubuntu中一些操作笔记更改默认python

pip安装默认opencv

pip安装opencv默认是安装最新版本的opencv,现在安装的是opencv4

安装默认opencv
sudo pip3 install opencv-python -i https://pypi.douban.com/simplesu/

也可以指定版本,如果找不到指定的版本可能要更新pip

安装指定opencv
sudo pip3 install opencv-python==3.3.0.9 -i https://pypi.douban.com/simplesu/

pip更新

sudo pip3 install --upgrade -i https://pypi.tuna.tsinghua.edu.cn/simple 
#这个是使用的清华的库,发现豆瓣的库比清华的快,资源多

豆瓣库https://pypi.douban.com/simple/

如果有,pip3._internal报错
https://blog.csdn.net/layswift/article/details/80390318

2使用资源包安装

参考:

UBUNTU18.04下,python3.6安装OPENCV3.2.0
Ubuntu18.04下安装OpenCv依赖包libjasper-dev无法安装的问题
in-source builds are not allowed错误
Ubuntu加入opencv库的环境变量

opencv安装包可以从官网下载:opencv官网
使用这几个实验过可以在没安装cuda情况下安装成功opencv。然后安装darknet教程可以配置成功

但在有cuda环境下暂未实验成功,编译opencv时,遇到找不到cudnn里面文件的问题。

所以想用darknet绘制loss还没成功,就用脚本绘制了

YOLO-V3可视化训练过程中的参数,绘制loss、IOU、avg Recall等的曲线图

【YOLO】记录训练输出并对结果评估

import inspect
import os
import random
import sys
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline

def extract_log(log_file,new_log_file,key_word):
    with open(log_file, 'r') as f:
        with open(new_log_file, 'w') as train_log:
            for line in f:
                if 'Syncing' in line:
                    continue
                if 'nan' in line:
                    continue
                if key_word in line:
                    train_log.write(line)
    f.close()
    train_log.close()
extract_log('voc2018train3.log','train_log_loss3.txt','images')
extract_log('voc2018train3.log','train_log_iou3.txt','IOU')
lines =64648    #改为自己生成的train_log_loss.txt中的行数
result = pd.read_csv('train_log_loss3.txt', skiprows=[x for x in range(lines) if ((x%10!=9) |(x<1000))] ,error_bad_lines=False, names=['loss', 'avg', 'rate', 'seconds', 'images'])
result['loss']=result['loss'].str.split(' ').str.get(2)
result['avg']=result['avg'].str.split(' ').str.get(1)
result['rate']=result['rate'].str.split(' ').str.get(1)
result['seconds']=result['seconds'].str.split(' ').str.get(1)
result['images']=result['images'].str.split(' ').str.get(1)
result['loss']=pd.to_numeric(result['loss'])
result['avg']=pd.to_numeric(result['avg'])
result['rate']=pd.to_numeric(result['rate'])
result['seconds']=pd.to_numeric(result['seconds'])
result['images']=pd.to_numeric(result['images'])
fig = plt.figure()
ax = fig.add_subplot(1, 1, 1)
ax.plot(result['avg'].values,label='avg_loss')
# ax.plot(result['loss'].values,label='loss')
ax.legend(loc='best')  #图列自适应位置
ax.set_title('The loss curves')
ax.set_xlabel('batches')
fig.savefig('avg_loss3')

 

你可能感兴趣的:(笔记)