使用Kaggle免费GPU训练自己的数据集 | 您所在的位置:网站首页 › 如何使用kaggle上的代码 › 使用Kaggle免费GPU训练自己的数据集 |
Kaggle每周可以免费使用30个小时的GPU,并且GPU是16G起步的,还可以选用多个GPU进行训练,相比自己的电脑和一些付费的云GPU速度非常快,并且省去了很多配置深度学习环境的步骤,因为用的是国外的服务器,下载库和工具的速度也非常的快。 一 注册Kaggle在国内如果不用梯子注册kaggle是不能通过人机验证的,但是可以通过Microsoft Edge浏览器安装一个插件解决,不用梯子。 下载安装Microsoft Edge,一般电脑都自带的有 打开Microsoft Edge,点击右上角的…-——扩展——管理扩展 点击获取Miscrosoft Edge扩展 搜索Header Editor,获取第二个 获取成果后,点击搜索框右边的插件图标,再点击Header Editor,管理 点击导入和导出,在下载规则处输入 https://azurezeng.github.io/static/HE-GoogleRedirect.json ,点击URL右边的下载图标按钮,最后单击保存,就可以完美解决人机验证问题了。![]() YOLO即You Only Look Once,YOLOv5最初是著名的目标检测算法,但是从2022年8月更新的YOLOv5 v6.2版本开始支持分类功能,分类用到的代码主要在classify文件夹下。 YOLOv5代码下载地址https://github.com/ultralytics/yolov5,直接全部下载下来,不需要修改代码配置,上传到Kaggle中. 当然也可以直接在Kaggle中使用命令行下载代码。先初始化!git init,再clone 项目!git clone https://github.com/ultralytics/yolov5.git 使用kaggle的notebook可以自己写代码,也可以把写好的代码压缩上传到kaggle中,缺点是上传的代码不方便修改,因此建议自己在编译器上修改好后再上传。 选择左侧导航栏的Datasets——New Dataset,在title中输入一个自己命名的名字,文件路径会自动生成,然后可以选择拖拽文件压缩包或者选择点击Browse Files浏览电脑文件选择,最后选择creat,等上传完成,文件越大上传速度越长。代码和数据集可以放在一个文件一起上传,或者分两次上传,建议分两次上传,方便管理代码和数据集。![]() ![]() ![]() ![]() ![]() ![]() notebook执行第一句代码需要启动服务器,所以执行这行代码耗费时间长一点,执行后代码文件就已经被复制到output文件中了,我这里是因为在代码文件里面放了训练图片所以整个文件有点大 好了。接下来就可以训练了,执行下面代码, !python /kaggle/working/yolov5-yuan/classify/train.py --model yolov5s-cls.pt --data /kaggle/input/f1-msr/f1_msr --epochs 10 --project runs model表示用的预训练模型,可以自己选;data表示训练的数据集;epochs表示训练次数project表示训练结果保存的地址,这里因为用了wandb,所以不能用默认的地址,否则wandb会报错 训练过程如图,top1-acc代表排名第一的类别与实际结果相符的准确率,即模型预测的正确率,top5-acc是指排名前五的类别包含实际结果的准确率,这里一共有四个类别,所以top5一直都是1![]() 在测试集上验证 !python /kaggle/working/yolov5-yuan/classify/predict.py --weights runs/exp/weights/best.pt --source /kaggle/input/f1-msr/f1_msr/test/L0 训练完成后就可以打包下载训练的模型了,run.tar是打包压缩后的文件名,runs是要压缩的文件,压缩后output文件中会显示压缩的文件,点文件后的三个点下载即可 !tar -cf run.tar runs 训练结果也保存在runs文件夹中,也可以打开wandb官网查看训练结果使用python实现混淆矩阵热力图,数组的值改为自己的数据即可 # confusion_matrix import numpy as np import matplotlib.pyplot as plt from matplotlib import rcParams classes = ['L0', 'L1', 'L2', 'L3'] confusion_matrix = np.array( [[200,0,0,0], [0,92,0,0], [0,0,24,0], [0,0,3,138], ], dtype=np.int) # 输入特征矩阵 proportion = [] length = len(confusion_matrix) print(length) for i in confusion_matrix: for j in i: temp = j / (np.sum(i)) proportion.append(temp) # print(np.sum(confusion_matrix[0])) # print(proportion) pshow = [] for i in proportion: pt = "%.2f%%" % (i * 100) pshow.append(pt) proportion = np.array(proportion).reshape(length, length) # reshape(列的长度,行的长度) pshow = np.array(pshow).reshape(length, length) # print(pshow) config = { "font.family": 'Times New Roman', # 设置字体类型 } rcParams.update(config) plt.imshow(proportion, interpolation='nearest', cmap=plt.cm.Blues) # 按照像素显示出矩阵 # (改变颜色:'Greys', 'Purples', 'Blues', 'Greens', 'Oranges', 'Reds','YlOrBr', 'YlOrRd', # 'OrRd', 'PuRd', 'RdPu', 'BuPu','GnBu', 'PuBu', 'YlGnBu', 'PuBuGn', 'BuGn', 'YlGn') # plt.title('confusion_matrix') plt.colorbar() tick_marks = np.arange(len(classes)) plt.xticks(tick_marks, classes, fontsize=12) plt.yticks(tick_marks, classes, fontsize=12) thresh = confusion_matrix.max() / 2. # iters = [[i,j] for i in range(len(classes)) for j in range((classes))] iters = np.reshape([[[i, j] for j in range(length)] for i in range(length)], (confusion_matrix.size, 2)) for i, j in iters: if (i == j): plt.text(j, i - 0.12, format(confusion_matrix[i, j]), va='center', ha='center', fontsize=10, color='white', weight=5) # 显示对应的数字 plt.text(j, i + 0.12, pshow[i, j], va='center', ha='center', fontsize=10, color='white') else: plt.text(j, i - 0.12, format(confusion_matrix[i, j]), va='center', ha='center', fontsize=10) # 显示对应的数字 plt.text(j, i + 0.12, pshow[i, j], va='center', ha='center', fontsize=10) plt.ylabel('True label', fontsize=16) plt.xlabel('Predict label', fontsize=16) plt.tight_layout() plt.show() # plt.savefig('混淆矩阵.png') 好了到这里就介绍完了,如果有问题欢迎在评论区留言或私信我,如果这篇文章对你有帮助的话就请点赞收藏吧,感谢支持! |
CopyRight 2018-2019 实验室设备网 版权所有 |