【Paddle打比赛】基于PaddleDetection未知工作服识别
随着科技的发展,监控视频已被广泛应用于日常生活中。但是在实际的使用中,标注的训练数据往往需要花费大量的人力物力才可以获得,严重阻碍了视觉算法的应用和落地。在工作服属性检测中,不同的场地工作服样式基本相同,但是颜色却千差万别。所以要通过对已有数据的训练,对未知颜色和样式的工作服进行检测。

一、山东第三届数据应用创新创业大赛未知工作服属性识别简介
1.竞赛背景
免费影视、动漫、音乐、游戏、小说资源长期稳定更新! 👉 点此立即查看 👈
随着科技的发展,监控视频已被广泛应用于日常生活中。但是在实际的使用中,标注的训练数据往往需要花费大量的人力物力才可以获得,严重阻碍了视觉算法的应用和落地。在工作服属性检测中,不同的场地工作服样式基本相同,但是颜色却千差万别。所以要通过对已有数据的训练,对未知颜色和样式的工作服进行检测。2.任务
工作服属性检测会提供白色厨师服训练数据和少量的工厂工作服训练数据。训练数据包括是否穿着工作服已经工作服的区域坐标。要求识别出是否穿着工作服。比赛分为初赛和复赛,初赛和复赛分别为不同的任务。
初赛任务:初赛将提供白色厨师服标注数据,需要选手建立迁移学习模型,去识别出测试集中不同颜色的厨师服属性。
3.数据
提供带有标注的白色厨师服训练数据900多张,其中标注文件为voc格式的xml文件。测试数据集白色厨师图片若干张,其他颜色厨师图片若干张。 *训练集标注准确率约97%。
初赛提供的训练数据集标注字段如下:
二、环境准备
此次比赛使用PaddleDetection端到端目标检测套件进行。
PaddleDetection提供了目标检测、实例分割、多目标跟踪、关键点检测等多种能力,具有以下特性
模型丰富: 包含目标检测、实例分割、人脸检测等100+个预训练模型,涵盖多种全球竞赛冠军方案使用简洁:模块化设计,解耦各个网络组件,开发者轻松搭建、试用各种检测模型及优化策略,快速得到高性能、定制化的算法。端到端打通: 从数据增强、组网、训练、压缩、部署端到端打通,并完备支持云端/边缘端多架构、多设备部署。高性能: 基于飞桨的高性能内核,模型训练速度及显存占用优势明显。支持FP16训练, 支持多机训练。In [ ]# 下载PaddleDetection,当前版本为realse/2.3版本!git clone https://gitee.com/paddlepaddle/PaddleDetection.git --depth=1登录后复制In [ ]
# 安装%cd ~/PaddleDetection# 安装依赖!pip install -r requirements.txt# 本地安装!pip install -e ./登录后复制In [ ]
# 查看版本!pip list|grep paddledet登录后复制
paddledet 2.3.0 /home/aistudio/PaddleDetection登录后复制In [ ]
# 切换至尊版GPU环境32Gb显卡运行!nvidia-smi登录后复制
Mon Jan 3 12:20:32 2024 +-----------------------------------------------------------------------------+| NVIDIA-SMI 418.67 Driver Version: 418.67 CUDA Version: 10.1 ||-------------------------------+----------------------+----------------------+| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC || Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. ||===============================+======================+======================|| 0 Tesla V100-SXM2... Off | 00000000:05:00.0 Off | 0 || N/A 34C P0 39W / 300W | 0MiB / 32480MiB | 0% Default |+-------------------------------+----------------------+----------------------+ +-----------------------------------------------------------------------------+| Processes: GPU Memory || GPU PID Type Process name Usage ||=============================================================================|| No running processes found |+-----------------------------------------------------------------------------+登录后复制
三、数据处理
1.数据基本情况
训练集:提供带有标注的白色厨师服训练数据900多张,其中标注文件为voc格式的xml文件测试集:测试数据集白色厨师图片35张,其他颜色厨师图片49张2.数据处理任务
解压缩数据并重命名目录利用PaddleX套件把原始训练集按 8:2 分隔为 train 以及 val 数据集In [ ]# 解压缩数据集到data目录# 此处建议解压到data目录,关闭时不保存,启动时速度较快,强烈推荐%cd ~!unzip -qoa data/data124244/省厅-未知工作服属性识别-算法赛-A榜数据.zip -d data登录后复制In [ ]
# 重命名数据集!mv data/省厅-工服识别-算法赛-A榜数据 data/data_a登录后复制In [ ]
# 安装PaddleX!pip install paddlex登录后复制In [ ]
# 按照PaddleX要求规范目录命名!mv data/data_a/train/images data/data_a/train/JPEGImages登录后复制In [ ]
# 利用PaddleX对数据集进行分隔!paddlex --split_dataset --format VOC --dataset_dir data/data_a/train/ --val_value 0.2登录后复制
2024-01-03 12:27:08 [INFO]Dataset split starts...2024-01-03 12:27:08 [INFO]Dataset split done.2024-01-03 12:27:08 [INFO]Train samples: 7362024-01-03 12:27:08 [INFO]Eval samples: 1832024-01-03 12:27:08 [INFO]Test samples: 02024-01-03 12:27:08 [INFO]Split files saved in data/data_a/train/登录后复制
四、模型训练
此次计划选择 ** YOLOv3**
以 configs/yolov3/yolov3_darknet53_270e_voc.yml 配置为基础进行配置
1.总体配置
configs/yolov3/yolov3_darknet53_270e_voc.yml,该配置文件由5部分组成,可以极大方便切换其他网络。
_BASE_: [ '../datasets/voc.yml', '../runtime.yml', '_base_/optimizer_270e.yml', '_base_/yolov3_darknet53.yml', '_base_/yolov3_reader.yml',]snapshot_epoch: 5weights: output/yolov3_darknet53_270e_voc/model_final# set collate_batch to false because ground-truth info is needed# on voc dataset and should not collate data in batch when batch size# is larger than 1.EvalReader: collate_batch: false登录后复制
2.数据集配置
重点配置数据集类型的 num_classes、数据路径等PaddleDetection/configs/datasets/voc.yml
metric: VOCmap_type: 11pointnum_classes: 2# 训练集TrainDataset: !VOCDataSet dataset_dir: /home/aistudio/data/data_a/train/ anno_path: /home/aistudio/data/data_a/train/train_list.txt label_list: /home/aistudio/data/data_a/train/labels.txt data_fields: ['image', 'gt_bbox', 'gt_class', 'difficult']# 测试集EvalDataset: !VOCDataSet dataset_dir: /home/aistudio/data/data_a/train/ anno_path: /home/aistudio/data/data_a/train/val_list.txt label_list: /home/aistudio/data/data_a/train/labels.txt data_fields: ['image', 'gt_bbox', 'gt_class', 'difficult']# 预测集TestDataset: !ImageFolder # 预测标签配置 anno_path: /home/aistudio/data/data_a/train/labels.txt登录后复制
3.运行配置
运行配置PaddleDetection/configs/runtime.yml
#GPU模式use_gpu: true# 日志打印间隔log_iter: 20# 保存目录save_dir: outputsnapshot_epoch: 500print_flops: false登录后复制
4.学习率等超参配置
重点配置epoch、 LR等
PaddleDetection/configs/yolov3/base/optimizer_270e.yml
# 训练轮次配置epoch: 270# 学习率配置LearningRate: base_lr: 0.001 schedulers: - !PiecewiseDecay gamma: 0.1 milestones: - 216 - 243 - !LinearWarmup start_factor: 0. steps: 4000OptimizerBuilder: optimizer: momentum: 0.9 type: Momentum regularizer: factor: 0.0005 type: L2登录后复制
5.网络配置
网络配置,此次配置骨干网为DarkNet PaddleDetection/configs/yolov3/_base_/yolov3_darknet53.yml
architecture: YOLOv3pretrain_weights: https://paddledet.bj.bcebos.com/models/pretrained/DarkNet53_pretrained.pdparamsnorm_type: sync_bnYOLOv3: backbone: DarkNet neck: YOLOv3FPN yolo_head: YOLOv3Head post_process: BBoxPostProcessDarkNet: depth: 53 return_idx: [2, 3, 4]# use default config# YOLOv3FPN:YOLOv3Head: anchors: [[10, 13], [16, 30], [33, 23], [30, 61], [62, 45], [59, 119], [116, 90], [156, 198], [373, 326]] anchor_masks: [[6, 7, 8], [3, 4, 5], [0, 1, 2]] loss: YOLOv3LossYOLOv3Loss: ignore_thresh: 0.7 downsample: [32, 16, 8] label_smooth: falseBBoxPostProcess: decode: name: YOLOBox conf_thresh: 0.005 downsample_ratio: 32 clip_bbox: true nms: name: MultiClassNMS keep_top_k: 100 score_threshold: 0.01 nms_threshold: 0.45 nms_top_k: 1000登录后复制
6.Reader配置
重点关注 batch_size、image_shape等 PaddleDetection/configs/yolov3/_base_/yolov3_reader.yml
worker_num: 2TrainReader: inputs_def: num_max_boxes: 50 sample_transforms: - Decode: {} - Mixup: {alpha: 1.5, beta: 1.5} - RandomDistort: {} - RandomExpand: {fill_value: [123.675, 116.28, 103.53]} - RandomCrop: {} - RandomFlip: {} batch_transforms: - BatchRandomResize: {target_size: [320, 352, 384, 416, 448, 480, 512, 544, 576, 608], random_size: True, random_interp: True, keep_ratio: False} - RandomDistort: {} - NormalizeBox: {} - PadBox: {num_max_boxes: 50} - BboxXYXY2XYWH: {} - NormalizeImage: {mean: [0.485, 0.456, 0.406], std: [0.229, 0.224, 0.225], is_scale: True} - Permute: {} - Gt2YoloTarget: {anchor_masks: [[6, 7, 8], [3, 4, 5], [0, 1, 2]], anchors: [[10, 13], [16, 30], [33, 23], [30, 61], [62, 45], [59, 119], [116, 90], [156, 198], [373, 326]], downsample_ratios: [32, 16, 8]} batch_size: 20 shuffle: true drop_last: true mixup_epoch: 250 use_shared_memory: trueEvalReader: inputs_def: num_max_boxes: 50 sample_transforms: - Decode: {} - Resize: {target_size: [608, 608], keep_ratio: False, interp: 2} - NormalizeImage: {mean: [0.485, 0.456, 0.406], std: [0.229, 0.224, 0.225], is_scale: True} - Permute: {} batch_size: 20TestReader: inputs_def: image_shape: [3, 608, 608] sample_transforms: - Decode: {} - Resize: {target_size: [608, 608], keep_ratio: False, interp: 2} - NormalizeImage: {mean: [0.485, 0.456, 0.406], std: [0.229, 0.224, 0.225], is_scale: True} - Permute: {} batch_size: 1登录后复制7.开始训练
In [5]# 数据集配置,其他可采取默认!cp -f ~/voc.yml ~/PaddleDetection/configs/datasets/voc.yml登录后复制In [ ]
# 训练%cd ~/PaddleDetection/!python tools/train.py -c ./configs/yolov3/yolov3_darknet53_270e_voc.yml --use_vdl=true --vdl_log_dir=vdl_dir/scalar --eval -o use_gpu=true登录后复制
8.输出日志
训练日志
[01/03 23:08:05] ppdet.engine INFO: Epoch: [10] [ 0/36] learning_rate: 0.000090 loss_xy: 5.516527 loss_wh: 3.053876 loss_obj: 12.486687 loss_cls: 1.317490 loss: 22.319881 eta: 8:48:30 batch_cost: 3.1413 data_cost: 2.6554 ips: 6.3668 images/s[01/03 23:09:07] ppdet.engine INFO: Epoch: [10] [20/36] learning_rate: 0.000095 loss_xy: 6.114716 loss_wh: 3.206046 loss_obj: 13.324018 loss_cls: 1.355693 loss: 24.122631 eta: 8:44:56 batch_cost: 3.0901 data_cost: 2.5885 ips: 6.4723 images/s[01/03 23:10:03] ppdet.engine INFO: Epoch: [11] [ 0/36] learning_rate: 0.000099 loss_xy: 5.409023 loss_wh: 2.845924 loss_obj: 12.471905 loss_cls: 1.237947 loss: 21.803427 eta: 8:44:45 batch_cost: 3.4201 data_cost: 2.8799 ips: 5.8477 images/s[01/03 23:11:06] ppdet.engine INFO: Epoch: [11] [20/36] learning_rate: 0.000104 loss_xy: 5.595372 loss_wh: 2.837581 loss_obj: 12.333159 loss_cls: 1.263098 loss: 22.268236 eta: 8:41:59 batch_cost: 3.1570 data_cost: 2.5889 ips: 6.3351 images/s[01/03 23:12:03] ppdet.engine INFO: Epoch: [12] [ 0/36] learning_rate: 0.000108 loss_xy: 5.279551 loss_wh: 2.735991 loss_obj: 11.844409 loss_cls: 1.155111 loss: 21.146755 eta: 8:41:51 batch_cost: 3.4755 data_cost: 3.0134 ips: 5.7545 images/s[01/03 23:13:10] ppdet.engine INFO: Epoch: [12] [20/36] learning_rate: 0.000113 loss_xy: 5.620305 loss_wh: 2.650487 loss_obj: 11.757578 loss_cls: 1.057634 loss: 21.237453 eta: 8:40:36 batch_cost: 3.3526 data_cost: 2.9166 ips: 5.9655 images/s[01/03 23:14:04] ppdet.engine INFO: Epoch: [13] [ 0/36] learning_rate: 0.000117 loss_xy: 5.811560 loss_wh: 2.833800 loss_obj: 12.568821 loss_cls: 1.326491 loss: 21.987259 eta: 8:39:42 batch_cost: 3.3750 data_cost: 2.8388 ips: 5.9260 images/s[01/03 23:15:10] ppdet.engine INFO: Epoch: [13] [20/36] learning_rate: 0.000122 loss_xy: 5.573336 loss_wh: 2.614874 loss_obj: 11.848093 loss_cls: 1.017949 loss: 20.871216 eta: 8:37:56 batch_cost: 3.2704 data_cost: 2.7479 ips: 6.1155 images/s[01/03 23:16:04] ppdet.engine INFO: Epoch: [14] [ 0/36] learning_rate: 0.000126 loss_xy: 5.268225 loss_wh: 2.517870 loss_obj: 10.861967 loss_cls: 1.058530 loss: 19.757854 eta: 8:37:08 batch_cost: 3.3716 data_cost: 2.8755 ips: 5.9318 images/s[01/03 23:17:06] ppdet.engine INFO: Epoch: [14] [20/36] learning_rate: 0.000131 loss_xy: 5.842254 loss_wh: 2.545744 loss_obj: 12.144636 loss_cls: 1.203430 loss: 21.758163 eta: 8:34:32 batch_cost: 3.1135 data_cost: 2.5847 ips: 6.4237 images/s[01/03 23:17:52] ppdet.utils.checkpoint INFO: Save checkpoint: output/yolov3_darknet53_270e_voc[01/03 23:17:53] ppdet.engine INFO: Eval iter: 0[01/03 23:17:57] ppdet.metrics.metrics INFO: Accumulating evaluatation results...[01/03 23:17:57] ppdet.metrics.metrics INFO: mAP(0.50, 11point) = 18.91%[01/03 23:17:57] ppdet.engine INFO: Total sample number: 183, averge FPS: 37.56547376000298[01/03 23:17:57] ppdet.engine INFO: Best test bbox ap is 0.189.[01/03 23:18:01] ppdet.utils.checkpoint INFO: Save checkpoint: output/yolov3_darknet53_270e_voc登录后复制
visualdl可视化

五、模型预测
1.单个预测
-c 参数表示指定使用哪个配置文件-o 参数表示指定配置文件中的全局变量(覆盖配置文件中的设置)--infer_img 参数指定预测图像路径预测结束后会在output文件夹中生成一张画有预测结果的同名图像In [64]# 单个预测%cd ~/PaddleDetection/!python tools/infer.py -c ./configs/yolov3/yolov3_darknet53_270e_voc.yml -o use_gpu=true --infer_img=../data/data_a/train/JPEGImages/chef910-0000.webp登录后复制
/home/aistudio/PaddleDetection/opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/paddle/tensor/creation.py:130: DeprecationWarning: `np.object` is a deprecated alias for the builtin `object`. To silence this warning, use `object` by itself. Doing this will not modify any behavior and is safe. Deprecated in NumPy 1.20; for more details and guidance: https://numpy.org/devdocs/release/1.20.0-notes.html#deprecations if data.dtype == np.object:W0104 08:04:54.116544 22620 device_context.cc:447] Please NOTE: device: 0, GPU Compute Capability: 7.0, Driver API Version: 10.1, Runtime API Version: 10.1W0104 08:04:54.121711 22620 device_context.cc:465] device: 0, cuDNN Version: 7.6.[01/04 08:04:57] ppdet.utils.checkpoint INFO: Finish loading model weights: output/yolov3_darknet53_270e_voc/model_final.pdparams[01/04 08:04:57] ppdet.engine INFO: Detection bbox results save in output/chef910-0000.webp登录后复制In [66]
# 打印预测结果from PIL import Imageimg=Image.open('output/chef910-0000.webp')img登录后复制登录后复制
2.批量预测
重点关注参数有:
--save_txt=True--draw_threshold=0.5通过 --save_txt=True 保存预测结果为文本
In [71]%cd ~/PaddleDetection/# 其他颜色工作服预测!python tools/infer.py -c./configs/yolov3/yolov3_darknet53_270e_voc.yml -o use_gpu=true --infer_dir=../data/data_a/test-A/othercolor/images/ --save_txt=True --draw_threshold=0.5# 白色工作服预测!python tools/infer.py -c./configs/yolov3/yolov3_darknet53_270e_voc.yml -o use_gpu=true --infer_dir=../data/data_a/test-A/whitecolor/images/ --save_txt=True --draw_threshold=0.5登录后复制
/home/aistudio/PaddleDetection/opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/paddle/tensor/creation.py:130: DeprecationWarning: `np.object` is a deprecated alias for the builtin `object`. To silence this warning, use `object` by itself. Doing this will not modify any behavior and is safe. Deprecated in NumPy 1.20; for more details and guidance: https://numpy.org/devdocs/release/1.20.0-notes.html#deprecations if data.dtype == np.object:W0104 08:10:57.304265 23501 device_context.cc:447] Please NOTE: device: 0, GPU Compute Capability: 7.0, Driver API Version: 10.1, Runtime API Version: 10.1W0104 08:10:57.309389 23501 device_context.cc:465] device: 0, cuDNN Version: 7.6.[01/04 08:11:00] ppdet.utils.checkpoint INFO: Finish loading model weights: output/yolov3_darknet53_270e_voc/model_final.pdparams[01/04 08:11:00] train INFO: Found 35 inference images in total.[01/04 08:11:02] ppdet.engine INFO: Detection bbox results save in output/chef910-0598.webp[01/04 08:11:02] ppdet.engine INFO: Detection bbox results save in output/chef911--1351.webp[01/04 08:11:02] ppdet.engine INFO: Detection bbox results save in output/chef911--1349.webp[01/04 08:11:02] ppdet.engine INFO: Detection bbox results save in output/chef911--1352.webp[01/04 08:11:02] ppdet.engine INFO: Detection bbox results save in output/chef911--1632.webp[01/04 08:11:02] ppdet.engine INFO: Detection bbox results save in output/chef911--1625.webp[01/04 08:11:02] ppdet.engine INFO: Detection bbox results save in output/chef910-0595.webp[01/04 08:11:02] ppdet.engine INFO: Detection bbox results save in output/chef911--0452.webp[01/04 08:11:02] ppdet.engine INFO: Detection bbox results save in output/chef910-0298.webp[01/04 08:11:02] ppdet.engine INFO: Detection bbox results save in output/chef911--0453.webp[01/04 08:11:02] ppdet.engine INFO: Detection bbox results save in output/chef910-0596.webp[01/04 08:11:02] ppdet.engine INFO: Detection bbox results save in output/chef911--1622.webp[01/04 08:11:02] ppdet.engine INFO: Detection bbox results save in output/chef911--1348.webp[01/04 08:11:02] ppdet.engine INFO: Detection bbox results save in output/chef911--0455.webp[01/04 08:11:02] ppdet.engine INFO: Detection bbox results save in output/chef911--1628.webp[01/04 08:11:02] ppdet.engine INFO: Detection bbox results save in output/chef911--1627.webp[01/04 08:11:03] ppdet.engine INFO: Detection bbox results save in output/chef910-0594.webp[01/04 08:11:03] ppdet.engine INFO: Detection bbox results save in output/chef911--2049.webp[01/04 08:11:03] ppdet.engine INFO: Detection bbox results save in output/chef911--0454.webp[01/04 08:11:03] ppdet.engine INFO: Detection bbox results save in output/chef911--1353.webp[01/04 08:11:03] ppdet.engine INFO: Detection bbox results save in output/chef911--2048.webp[01/04 08:11:03] ppdet.engine INFO: Detection bbox results save in output/chef911--0451.webp[01/04 08:11:03] ppdet.engine INFO: Detection bbox results save in output/chef910-0597.webp[01/04 08:11:03] ppdet.engine INFO: Detection bbox results save in output/chef911--1629.webp[01/04 08:11:03] ppdet.engine INFO: Detection bbox results save in output/chef911--1626.webp[01/04 08:11:03] ppdet.engine INFO: Detection bbox results save in output/chef910-0592.webp[01/04 08:11:03] ppdet.engine INFO: Detection bbox results save in output/chef911--0456.webp[01/04 08:11:03] ppdet.engine INFO: Detection bbox results save in output/chef911--1630.webp[01/04 08:11:03] ppdet.engine INFO: Detection bbox results save in output/chef911--1635.webp[01/04 08:11:03] ppdet.engine INFO: Detection bbox results save in output/chef911--0457.webp[01/04 08:11:03] ppdet.engine INFO: Detection bbox results save in output/chef911--1633.webp[01/04 08:11:03] ppdet.engine INFO: Detection bbox results save in output/chef910-0069.webp[01/04 08:11:03] ppdet.engine INFO: Detection bbox results save in output/chef911--1634.webp[01/04 08:11:03] ppdet.engine INFO: Detection bbox results save in output/chef911--1631.webp[01/04 08:11:03] ppdet.engine INFO: Detection bbox results save in output/chef910-0593.webp登录后复制
3.后处理及提交
主要步骤如下:
拷贝预测结果 txt文件到指定目录把预测txt文件处理为比赛需要的格式In [67]# 可视化预测结果from PIL import Imageimg=Image.open('output/chef910-0298.webp')img登录后复制登录后复制In [ ]
%cd ~# 新建result_dir!mkdir result_dir# 拷贝txt预测结果文件到result_dir!cp -r PaddleDetection/output/*.txt result_dir登录后复制In [ ]
#!/usr/bin/python# -*- coding: UTF-8 -*-"""@author:livingbody@file:test.py@time:2024/01/04"""import pandas as pdimport os# 修改标签# chefclothes为1# otherclothes为0def fix_clothes(data): print(data) if data == 'chefclothes': return 1 else: return 0# 坐标格式化数据,保留小数点后1位def fix_pint(data): data1 = float('%.1f' % data) return data1# 概率格式化,保留小数点后2位def fix_pint2(data): data1 = float('%.2f' % data) return data1# 获取预测结果def get_data(file_name): data = pd.read_csv(file_name, index_col=None, header=None, sep=' ') data[0] = data[0].apply(fix_clothes) data[1] = data[1].apply(fix_pint2) for i in range(2, len(data.columns)): data[i] = data[i].apply(fix_pint) return data# 获取单个预测文件数据def get_single_data(file_name): # 获取txt文件名 temp = file_name.split('\')[-1] # 获取图片文件名 temp = temp.split('.')[0] + '.webp' mylist = [] data = None try: data = get_data(file_name) except: # 如文件为空,返回None return None for index, row in data.iterrows(): row = row.tolist() # 第2列概率 # 第3列左上顶点x值 # 第4列左上顶点y值 # 第1列为标签,int row[0] = int(row[0]) # 第5列右下顶点x值 # 第6列右下顶点y值 # PaddleDetection预测结果为:左上x 左上y 宽度 高度,此处需要转换 row[4] = row[2] + row[4] row[4] = float('%.1f' % row[4]) row[5] = row[3] + row[5] row[5] = float('%.1f' % row[5]) for i in range(len(row)): row[i] = str(row[i]) row = temp + ' ' + ' '.join(row) # print(row) # 输出每行的索引值 mylist.append(row) return mylist# 输出结果到提交文件def get_all_data(): mylist = [] for dirpath, dirname, filenames in os.walk('./result_dir'): for filename in filenames: if '.txt' in filename: print(filename) tmp = get_single_data(os.path.join(dirpath, filename)) if tmp == None: continue mylist.extend(tmp) return mylistif __name__ == '__main__': all_data = get_all_data() with open('myresult.txt', 'w') as f: for item in all_data: f.write(item + '')登录后复制In [6]!head myresult.txt登录后复制
chef910-0069.webp 1 0.98 1353.4 318.9 1501.4 625.5chef910-0069.webp 0 0.95 1507.0 412.6 1672.6 658.8chef910-0298.webp 1 0.99 808.9 200.8 889.3 385.7chef910-0298.webp 1 0.93 914.6 200.7 983.3 334.5chef910-0298.webp 1 0.9 1126.5 207.0 1186.2 374.9chef910-0592.webp 1 0.93 114.7 322.2 223.3 548.4chef910-0592.webp 1 0.92 681.4 212.6 745.3 346.6chef910-0592.webp 1 0.75 1021.3 218.3 1107.3 435.0chef910-0592.webp 1 0.61 207.9 276.7 309.8 488.5chef910-0593.webp 1 0.96 681.8 210.6 747.9 346.5登录后复制
如上所示,提交即可获得成绩,如下图:

如需提分,可在模型选择,超参设置等方面下功夫。
游乐网为非赢利性网站,所展示的游戏/软件/文章内容均来自于互联网或第三方用户上传分享,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系youleyoucom@outlook.com。
同类文章
说一下WorkBuddy 的 Plan 模式
如何切换到 Plan 模式 想体验这种更可控的方式?操作很简单。在 WorkBuddy 主界面的右下角,你会看到一个“安全模式切换”的下拉菜单,从中选择“Plan”选项即可完成切换。 核心使用流程 光说概念可能有点抽象,咱们直接看个例子。假设你手头有个任务:“把桌面上‘项目报告’文件夹里所有Exce
滴滴出行开放打车 Skill,“龙虾”叫车全程不需要切换 App
滴滴出行全网首发语音打车Skill,一句话智能叫车全攻略 近日,滴滴出行正式上线了一项创新的语音交互功能:全面开放打车Skill。这意味着,用户只需通过语音指令,即可完成从叫车到行程追踪的全流程,真正实现“动口不动手”的便捷出行体验。 整个操作过程,包括目的地搜索、车型比价、下单确认、查看订单状态等
阿里千问 AI 眼镜接入蚂蚁 GPASS:语音解锁共享单车、停车缴费
当AI眼镜学会“跑腿”:语音解锁单车,无感支付停车费 近来,智能穿戴领域的一个新动向值得关注:阿里旗下的千问AI眼镜,正式接入了蚂蚁集团的GPASS平台。这可不是一次简单的功能叠加,它意味着,诸如共享单车骑行、停车缴费这一系列高频的“AI办事”功能,开始从手机屏幕转移到了你的眼前。 简单说,借助GP
Workbuddy注册额外积分
角色定位与核心任务目标 明确了基本定位后,我们直接切入核心:作为一名专业的文章优化师,我的核心职责在于,将那些带有明显AI生成特征的文本,深度重塑为拥有个人特色与行业洞见的优质内容。 换句话说,这项任务的关键在于实施一次“精准的换血手术”。你必须严格保证原文所有的事实依据、核心观点、逻辑框架,以及每
我把 Anthropic 的 Harness 工程思想做成了一个 Skill
用AI写代码,难在哪儿? 用AI生成代码本身并不难,真正的挑战在于让它稳定地交付一个真正可用的东西。这篇文章,我们就来聊聊Anthropic工程团队是如何破解这个难题的,以及我如何将这套方法论落地成了一个可以复用的实战工具。 用 AI 写代码有多难?不是写不出来难,是让它稳定交付可用的东西很难。这篇
- 日榜
- 周榜
- 月榜
1
2
3
4
5
6
7
8
9
10
相关攻略
2015-03-10 11:25
2015-03-10 11:05
2021-08-04 13:30
2015-03-10 11:22
2015-03-10 12:39
2022-05-16 18:57
2025-05-23 13:43
2025-05-23 14:01
热门教程
- 游戏攻略
- 安卓教程
- 苹果教程
- 电脑教程

