• darknet框架 训练分类模型及测试图片


    darknet 框架的Yolo模型大概已经没什么公司使用了,对于老项目的维护可能新手需要了解下,然而 darknet架构并不十分友好,新手入手门槛比较高,特别是做分类任务时,简直了!!! 博主也是走了不少弯路,再次整理记录下,便于需要的小伙伴查看,同时也供自己日后学习

    检测效果

    在这里插入图片描述


    1、darknet 分类模型训练命令

    注意!!!
    训练的时候需要注意一点,数据的路径中,类别名只能在绝对路径中出现一次,不可以出现多次,否则报错!!!

    # 挂起后台训练命令
    nohup ./darknet classifier train ../weather/weather.data ../weather/weather.cfg -gpus 0,1 -dont_show >../weather/train.log 2>&1 &
    
    # 前台训练命令
    nohup ./darknet classifier train ../weather/weather.data ../weather/weather.cfg -gpus 0,1 -dont_show >../weather/train.log 2>&1 &
    
    • 1
    • 2
    • 3
    • 4
    • 5


    2、darknet 分类模型单张图片检测命令

    注意!!!
    图片路径不正确的情况下,依旧会检测出结果!!!

    # 单张图片预测命令
    ./darknet classifier predict /media/viatorsun/weather/weather.data /media/viatorsun/DataYZ/weather/weather.cfg /media/viatorsun/DataYZ/weather/weather.weights /media/viatorsun/weather/weather/7a964.jpg
    
    • 1
    • 2

    检测结果

    正确检测结果

    错误检测结果


    3、darknet 批量测试图片

    通过darknet的 ./darknet classifier predict 命令只能对单张图片的进行测试,并且检测结果

    #  !/usr/bin/env  python
    #  -*- coding:utf-8 -*-
    # @Time   :  2023.08
    # @Author :  绿色羽毛
    # @Email  :  lvseyumao@foxmail.com
    # @Blog   :  https://blog.csdn.net/ViatorSun
    # @Note   :  将代码保存为 predict.py 放置到 /darknetAB3.0/predict.py
    
    
    import os
    
    
    data_path = '/media/viatorsun/DataSet/test'					# 待检测图像路径
    save_dir  = "/media/viatorsun/DataSet/test_out"				# 检测结果保存路径
    
    
    if not os.path.exists(save_dir):
        os.makedirs(save_dir)
    
    score = os.path.basename(data_path)
    
    for img in os.listdir(data_path):
    
        img_path = os.path.join(data_path, img)
    
        cmd = 	'./darknet classifier predict ./myTest/0_AI_model/weather/weather.data ' \ 		
        		'./myTest/0_AI_model/weather/weather_test.cfg ' \
              	'./myTest/0_AI_model/weather/weather_100000.weights ' + img_path
    
        state = "".join(os.popen(cmd).readlines())
        lst = state.replace("\n\n", "\n").split("\n")
    
       
        if float(lst[-3].split(" ")[-1]) >= float(lst[-2].split(" ")[-1]) :
        	label = lst[-3].split(":")[0] + lst[-3].split(" ")[-1][:4]  
        else:
        	lst[-2].split(":")[0]
    
        if not label == score:
            save_path = os.path.join(save_dir, img.split(".")[0] + "_" + label + "." + img.split(".")[-1])		# 将预测标签和对应置信度保存到文件名中
            os.system("cp %s %s"%(img_path, save_path))
    
        # print(state)
    
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
  • 相关阅读:
    数字化时代,数据仓库是什么?有什么用?
    环境扫描/透射电子显微镜气体样品架的真空压力和微小流量控制解决方案
    zabbix自动发现和自动注册
    【蓝桥杯单片机】二、独立按键和矩阵按键
    python编程题——如何求一组数的全排列
    xshell修改字体大小
    视频剪辑完成,应该如何给视频配音?三种配音方法快来学
    vue官方文档(13)组件的局部注册
    Python requests 模块
    创建型设计模式-原型模式
  • 原文地址:https://blog.csdn.net/ViatorSun/article/details/134013785