批量处理多个模型的预测任务

#!/bin/bash# 检查是否传入必要的参数,若未传入参数则打印用法并退出
if [ "$#" -lt 1 ]; thenecho "用法: $0 <file_path>"echo "示例: $0 /home/aistudio/work/PaddleSeg/city/cityscapes_urls_extracted.txt"exit 1
fi# 读取命令行传入的文件路径作为第一个参数
file_path="$1"
# 设置图片路径(用于预测时加载图像)
image_path="/home/aistudio/work/PaddleSeg/val"
# 设置结果保存路径
save_dir="/home/aistudio/work/PaddleSeg/output1"
# 设置配置文件基础路径
config_base_dir="/home/aistudio/work/PaddleSeg/configs"# 检查输入的文件路径是否存在,如果文件不存在则打印错误并退出
if [ ! -f "$file_path" ]; thenecho "文件 $file_path 不存在"exit 1
fi# 获取 configs 目录下的所有子文件夹(每个文件夹的名字作为模型核心名称)
for model_core_name in $(ls -d $config_base_dir/*/); do# 提取文件夹名称作为模型核心名称model_core_name=$(basename $model_core_name)# 输出当前模型核心名称,帮助调试echo "模型核心名称: $model_core_name"# 遍历指定的文件($file_path),读取每一行内容while IFS= read -r url; do# 检查该行是否包含 "model.pdparams",以确认是有效的模型路径if [[ "$url" == *"model.pdparams" ]]; then# 提取模型完整名称(即倒数第一层目录名作为模型名称)model_full_name=$(basename "$(dirname "$url")")# 根据模型核心名称和完整名称,组合出配置文件的路径config_path="${config_base_dir}/${model_core_name}/${model_full_name}.yml"# 检查对应的配置文件是否存在,如果不存在则跳过当前模型if [ ! -f "$config_path" ]; thenecho "配置文件 $config_path 不存在"continuefi# 生成预测命令,执行预测操作command="python predict.py \--config $config_path \--model_path $url \--image_path $image_path \--save_dir $save_dir/$model_full_name"# 打印生成的命令,方便调试echo "执行命令: $command"# 执行预测命令eval $command || { echo "命令执行失败: $command"; exit 1; }# 输出空行,便于分隔每个模型的预测结果echo ""fidone < "$file_path"
done

代码逻辑及注释说明:

  1. 检查输入参数

    • 脚本首先检查是否传入了正确的参数。如果没有传入参数(即 "$#" 小于 1),则会提示用法并退出。
  2. 设置路径变量

    • file_path:传入的包含模型路径的文件。
    • image_path:用于预测的图像路径。
    • save_dir:存放预测结果的文件夹路径。
    • config_base_dir:存放配置文件的基础路径。
  3. 检查文件是否存在

    • 脚本会检查输入的文件路径($file_path)是否存在。如果不存在,则会输出错误并退出。
  4. 遍历配置文件夹

    • 使用 ls -d $config_base_dir/*/ 获取 configs 目录下的所有子文件夹(每个文件夹代表一个模型核心名称)。例如,如果文件夹名为 ginet,则模型核心名称就是 ginet
    • 对每个模型核心名称(文件夹名),脚本都会提取该模型的完整名称,并根据模型路径和完整名称生成相应的配置文件路径。
  5. 读取模型路径并执行预测

    • 脚本会读取输入文件($file_path)中的每一行,检查每行是否是以 model.pdparams 结尾的有效模型路径。
    • 对于有效路径,生成对应的配置文件路径,组合成预测命令,并执行该命令。
  6. 生成并执行预测命令

    • 使用 eval 执行构建的 Python 命令。该命令会调用 predict.py 脚本,传入配置文件、模型路径、图像路径等参数进行预测。
    • 如果命令执行失败,脚本会打印错误信息并退出。
  7. 输出调试信息

    • 在执行命令前,会输出当前的预测命令,帮助调试。
    • 每个模型的预测执行完成后,输出一个空行以便区分不同模型的结果。

适用场景:

此脚本适用于批量处理多个模型的预测任务。每个模型的配置文件、模型文件和其他参数都会从输入的文件和目录结构中自动生成,适合需要自动化批量预测的场景。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/67798.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【LLM-agent】(task4)搜索引擎Agent

note 新增工具&#xff1a;搜索引擎Agent 文章目录 note一、搜索引擎AgentReference 一、搜索引擎Agent import os from dotenv import load_dotenv# 加载环境变量 load_dotenv() # 初始化变量 base_url None chat_model None api_key None# 使用with语句打开文件&#xf…

【自然语言处理(NLP)】基于Transformer架构的预训练语言模型:BERT 训练之数据集处理、训练代码实现

文章目录 介绍BERT 训练之数据集处理BERT 原理及模型代码实现数据集处理导包加载数据生成下一句预测任务的数据从段落中获取nsp数据生成遮蔽语言模型任务的数据从token中获取mlm数据将文本转换为预训练数据集创建Dataset加载WikiText-2数据集 BERT 训练代码实现导包加载数据构建…

LeetCode435周赛T2贪心

题目描述 给你一个由字符 N、S、E 和 W 组成的字符串 s&#xff0c;其中 s[i] 表示在无限网格中的移动操作&#xff1a; N&#xff1a;向北移动 1 个单位。S&#xff1a;向南移动 1 个单位。E&#xff1a;向东移动 1 个单位。W&#xff1a;向西移动 1 个单位。 初始时&#…

【Numpy核心编程攻略:Python数据处理、分析详解与科学计算】2.5 高级索引应用:图像处理中的区域提取

2.5 高级索引应用&#xff1a;图像处理中的区域提取 目录/提纲 #mermaid-svg-BI09xc20YqcpUam7 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-BI09xc20YqcpUam7 .error-icon{fill:#552222;}#mermaid-svg-BI09xc20…

ubuntu直接运行arm环境qemu-arm-static

qemu-arm-static 嵌入式开发有时会在ARM设备上使用ubuntu文件系统。开发者常常会面临这样一个问题&#xff0c;想预先交叉编译并安装一些应用程序&#xff0c;但是交叉编译的环境配置以及依赖包的安装十分繁琐&#xff0c;并且容易出错。想直接在目标板上进行编译和安装&#x…

通过Redisson构建延时队列并实现注解式消费

目录 一、序言二、延迟队列实现1、Redisson延时消息监听注解和消息体2、Redisson延时消息发布器3、Redisson延时消息监听处理器 三、测试用例四、结语 一、序言 两个月前接了一个4万的私活&#xff0c;做一个线上商城小程序&#xff0c;在交易过程中不可避免的一个问题就是用户…

MVC 文件夹:架构之美与实际应用

MVC 文件夹:架构之美与实际应用 引言 MVC(Model-View-Controller)是一种设计模式,它将应用程序分为三个核心组件:模型(Model)、视图(View)和控制器(Controller)。这种架构模式不仅提高了代码的可维护性和可扩展性,而且使得开发流程更加清晰。本文将深入探讨MVC文…

【PyQt】lambda函数,实现动态传递参数

为什么需要 lambda&#xff1f; 在 PyQt5 中&#xff0c;clicked 信号默认会传递一个布尔值&#xff08;表示按钮是否被选中&#xff09;。如果我们希望将按钮的文本内容传递给槽函数&#xff0c;需要通过 lambda 函数显式传递参数。 这样可以实现将按钮内容传递给槽函数&…

pytorch深度Q网络

人工智能例子汇总&#xff1a;AI常见的算法和例子-CSDN博客 DQN 引入了深度神经网络来近似Q函数&#xff0c;解决了传统Q-learning在处理高维状态空间时的瓶颈&#xff0c;尤其是在像 Atari 游戏这样的复杂环境中。DQN的核心思想是使用神经网络 Q(s,a;θ)Q(s, a; \theta)Q(s,…

Baklib构建高效协同的基于云的内容中台解决方案

内容概要 随着云计算技术的飞速发展&#xff0c;内容管理的方式也在不断演变。企业面临着如何在数字化转型过程中高效管理和协同处理内容的新挑战。为应对这些挑战&#xff0c;引入基于云的内容中台解决方案显得尤为重要。 Baklib作为创新型解决方案提供商&#xff0c;致力于…

DeepSeek-R1 论文. Reinforcement Learning 通过强化学习激励大型语言模型的推理能力

论文链接&#xff1a; [2501.12948] DeepSeek-R1: Incentivizing Reasoning Capability in LLMs via Reinforcement Learning 实在太长&#xff0c;自行扔到 Model 里&#xff0c;去翻译去提问吧。 工作原理&#xff1a; 主要技术&#xff0c;就是训练出一些专有用途小模型&…

C++泛型编程指南03-CTAD

文章目录 C17 自定义类型推断指引&#xff08;CTAD&#xff09;深度解析一、基础概念1. 核心作用2. 工作原理 二、标准库中的 CTAD 应用1. 容器类型推导2. 智能指针推导3. 元组类型推导 三、自定义推导指引语法1. 基本语法结构2. 典型应用场景 四、推导指引设计模式1. 迭代器范…

deepseek+vscode自动化测试脚本生成

近几日Deepseek大火,我这里也尝试了一下,确实很强。而目前vscode的AI toolkit插件也已经集成了deepseek R1,这里就介绍下在vscode中利用deepseek帮助我们完成自动化测试脚本的实践分享 安装AI ToolKit并启用Deepseek 微软官方提供了一个针对AI辅助的插件,也就是 AI Toolk…

电介质超表面中指定涡旋的非线性生成

涡旋光束在众多领域具有重要应用&#xff0c;但传统光学器件产生涡旋光束的方式限制了其在集成系统中的应用。超表面的出现为涡旋光束的产生带来了新的可能性&#xff0c;尤其是在非线性领域&#xff0c;尽管近些年来已经有一些研究&#xff0c;但仍存在诸多问题&#xff0c;如…

基于Springboot+mybatis+mysql+html图书管理系统2

基于Springbootmybatismysqlhtml图书管理系统2 一、系统介绍二、功能展示1.用户登陆2.用户主页3.图书查询4.还书5.个人信息修改6.图书管理&#xff08;管理员&#xff09;7.学生管理&#xff08;管理员&#xff09;8.废除记录&#xff08;管理员&#xff09; 三、数据库四、其它…

重构字符串(767)

767. 重构字符串 - 力扣&#xff08;LeetCode&#xff09; 解法&#xff1a; class Solution { public:string reorganizeString(string s){string res;//因为1 < s.length < 500 &#xff0c; uint64_t 类型足够uint16_t n s.size();if (n 0) {return res;}unordere…

本地部署DeepSeek方法

本地部署完成后的效果如下图&#xff0c;整体与chatgpt类似&#xff0c;只是模型在本地推理。 我们在本地部署主要使用两个工具&#xff1a; ollamaopen-webui ollama是在本地管理和运行大模型的工具&#xff0c;可以直接在terminal里和大模型对话。open-webui是提供一个类…

游戏引擎 Unity - Unity 启动(下载 Unity Editor、生成 Unity Personal Edition 许可证)

Unity Unity 首次发布于 2005 年&#xff0c;属于 Unity Technologies Unity 使用的开发技术有&#xff1a;C# Unity 的适用平台&#xff1a;PC、主机、移动设备、VR / AR、Web 等 Unity 的适用领域&#xff1a;开发中等画质中小型项目 Unity 适合初学者或需要快速上手的开…

【开源免费】基于Vue和SpringBoot的公寓报修管理系统(附论文)

本文项目编号 T 186 &#xff0c;文末自助获取源码 \color{red}{T186&#xff0c;文末自助获取源码} T186&#xff0c;文末自助获取源码 目录 一、系统介绍二、数据库设计三、配套教程3.1 启动教程3.2 讲解视频3.3 二次开发教程 四、功能截图五、文案资料5.1 选题背景5.2 国内…

Haskell语言的多线程编程

Haskell语言的多线程编程 Haskell是一种基于函数式编程范式的编程语言&#xff0c;以其强大的类型系统和懒惰求值著称。近年来&#xff0c;随着多核处理器的发展&#xff0c;多线程编程变得日益重要。虽然Haskell最初并不是为了多线程而设计&#xff0c;但它的设计理念和工具集…