• 《深度学习之kaggle》:五、字符分类-基于yolo5s权重的训练【是否过拟合?】


          经过5天5夜的训练,终于在昨晚训练完毕,以下是训练结果:

    python train.py  --batch 16 --epochs 300 --data ../Dataset/Digitls/data.yaml  --cfg models/yolov5s.yaml --weights yolov5s.pt   --workers 0    

        

         这下,咱们可以去国内竞技场“拳打南山敬老院,脚踩北海幼儿园!”哈哈哈

          下次训练,为充分利用GPU资源,请教显示器DP线插入主板后面,使用CPU集显显示win10图形界面,让GPU专注于CUDA加速。

    结果测试:

    我们在detect.py主函数前面设置命令行参数

    1 opt.source = '../Kaggle1/mchar_test_a/mchar_test_a'
    2 # opt.source = '1'
    3 opt.weights = 'best.pt'
    4 opt.output = 'Result'  # 效果图保存文件夹

    测试的结果保存到了工程目录下的Result文件夹

           这个文件夹中,其实只有39898个文件,而测试文件有40000个,表明有些样本图被漏检了。但是提交结果要求你给出这40000张图的测试结果,

    所以对于漏检的,需要表示出来。这里使用GetFileList.bat脚本生成结果文件路径,方便批量读取每一张图测试结果。

    fileList.txt:

     1 F:yolov5-0826Result00000.txt
     2 F:yolov5-0826Result00001.txt
     3 F:yolov5-0826Result00002.txt
     4 F:yolov5-0826Result00003.txt
     5 F:yolov5-0826Result00004.txt
     6 F:yolov5-0826Result00005.txt
     7 F:yolov5-0826Result00006.txt
     8 F:yolov5-0826Result00007.txt
     9 F:yolov5-0826Result00008.txt
    10 F:yolov5-0826Result00009.txt
    11 F:yolov5-0826Result00010.txt
    ......

           下面编写生成40000张图测试结果的csv文件,csv文件大概内容如图:

     1 import pandas as pd
     2 
     3 # 构建一个 size = 40000的list,每个元素是文件名
     4 # 下面遍历文件名,如果找到漏检那就写入"0123"
     5 
     6 total_file_name_list = []
     7 
     8 for i in range(40000):
     9     six_zeros = "000000"
    10     six_zeros += str(i)
    11     total_file_name_list.append(six_zeros[-6:])
    12     # print(six_zeros[-6:])
    13 
    14 file = open("F:yolov5-0826\Result\fileList.txt", "r")
    15 file_lines = file.readlines()
    16 
    17 test_label_pred = []  # list 所有预测值
    18 
    19 j = 0
    20 
    21 for file_line in file_lines:
    22     # 获取每一个标签的路径
    23     file_line_ = file_line.replace('
    ', '')
    24     # print("file_line_ = ", file_line_)
    25 
    26     # 读取标签信息
    27     file_label = open(file_line_, "r")
    28     file_label_lines = file_label.readlines()
    29 
    30     # sample
    31     img_name = file_line_[22:28]  # get name of file index, eg:000000
    32 
    33     # 死循环,循环结束条件:找到与img_name相等的文件名
    34     while total_file_name_list[j] != img_name:
    35         test_label_pred.append("0123")
    36         j = j + 1
    37 
    38     # 安矩形框顶点x坐标进行排序
    39     # ['1 0.95625 0.510204 0.1375 0.612245 
    ',
    40     #  '5 0.375   0.479592 0.175  0.632653 
    ',
    41     #  '9 0.54375 0.469388 0.1875 0.653061 
    ']
    42     file_label_lines.sort(key=lambda file_label_lines: file_label_lines[2:9])
    43     print(file_label_lines)
    44 
    45     # label
    46     predict_val = ""
    47     for file_label_line in file_label_lines:
    48         predict_val += file_label_line[0]  # 0 - 9
    49 
    50     test_label_pred.append(predict_val)
    51     j = j + 1
    52     print('-----------------')
    53 
    54 file.close()
    55 
    56 # save to csv
    57 # note:需要提前准备好文件,这里保存操作其实就是修改其中内容
    58 df_submit = pd.read_csv('mchar_sample_submit_A.csv')
    59 df_submit['file_code'] = test_label_pred
    60 df_submit.to_csv('submit.csv', index=None)
    61 
    62 print("over")

     阿里天池提交文件问题:例如一张图中,从左到右出现字符顺序是 “019”,那么你提交的顺序也必须是019,不能是诸如910,901,091之类的,否则断定你预测为错误的。

    当前排名13名,好了,稍后使用AI加速卡训练yolo5x模型试一试。

    CV&DL
  • 相关阅读:
    https://jwt.io/一个可以解析token的神奇网站
    .net core 发布IIS 出现Http 500错误
    C# Session 操作类
    大话IdentityServer4之使用 IdentityServer4 保护 ASP.NET Core 应用
    c# FTP操作类
    将字符串写入记事本
    记录一下自己在MVC项目中如何防CSRF攻击,直接上代码
    Asp.Net Core 开发之旅之NLog日志
    Asp.Net Core 开发之旅之.net core 连接数据库
    css为图片添加一层蒙版并在上层显示文字等
  • 原文地址:https://www.cnblogs.com/winslam/p/13599915.html
Copyright © 2020-2023  润新知