object_detection“使用教程”翻译(一):configuring_jobs.md

(刚接触tensorflow中关于object_detectionAPI时深知其上手之不易,模块的“g3doc”中其实给出了使用指南,这里翻译为中文,方便以后查阅。也希望这一系列的“译文”能够帮助到和我一样“白手起家”的爱好者们。本人翻译能力已经精力有限,有表述得不恰当的地方大家多多指正。)
(一【也就是此译文】)的原文:Configuring the Object Detection Training Pipeline

概览

Tensorflow目标检测API使用protobuf文件来配置训练和测试相关的东西。文件格式可以参照object_detection/protos/pipeline.proto。在高层次中【注:注意这个high level,意思是以下的配置文件并不在pipeline.proto中,而在以config结尾的配置文件中。比如\object_detection\samples\configs\ssd_inception_v2_coco.config(大多是嵌套型的map)】
配置文件分为5个部分:
1. model configuration:定义了什么类型的模型(即元meta-architecture将被训练。(比如说选择SSD/FASTER RCNN/RFCN等模型,什么特征提取器【译者注:简单的说就是我们平常在代码中写的关于模型的配置参数“挪到”了这个配置文件中,让代码不那么”冗余”】
2. train_config:决定应使用哪些参数来训练模型参数(即SGD参数,输入的张量需要哪些预处理和怎么初始化特征提取器【译者注:用咱们的话说就是卷积核】的值)。
3. eval_config:决定了什么样的指标将在报告被用来评估(目前只支持PASCAL VOC指标)。
4. train_input_config:定义了模型中的训练集。
5. eval_input_config:定义了模型中的测试集。通常这应该不同于训练集。


配置文件的框架(格式)如下:

model {
(… 在这里添加model的配置…)
}
train_config : {
(… Add train_config here…)
}
train_input_reader: {
(… Add train_input configuration here…)
}
eval_config: {
}
eval_input_reader: {
(… Add eval_input configuration here…)
}

选择模型参数

这里有大量的参数需要设置。怎样的设置时最好的取决于您的给定的应用程序。FASTER R-CNN模型更适合于要求高精度不要求速度的情况。相反,如果更看重时间,建议使用SSD模型。请阅读我们的论文【译者注:Speed/accuracy trade-offs for modern convolutional object detectors】,以获得关于速度与准确度之间的更详细讨论。 为帮助新用户入门,在object_detection / samples / model_configs文件夹中提供了示例模型配置。这些配置文件的内容可以粘贴到上面给出的配置文件的框架中。用户应该注意的是,num_classes字段应该改为用户正在训练的类的数量。

设置输入(路径)

Tensorflow目标检测API接受TFRecord文件格式的输入。用户必须指定训练文件和测试文件的位置。此外,用户还应该指定一个标签映射(文件),它定义了类ID和类名之间的映射。训练和评估数据集之间的标签文件应该是相同的。

示例如下:
tf_record_input_reader {
input_path: “/usr/home/username/data/train.record”
}
label_map_path: “/usr/home/username/data/label_map.pbtxt”
用户应该替换input_path和label_map_path参数,并将配置插入到配置文件中的train_input_reader和eval_input_reader字段。请注意,这些路径也可以指向Google云。(即gs://project_bucket/train.record)

train_config 的配置

  1. 模型参数初始化。
  2. 输入预处理。
  3. SGD参数。

简单示例如下:

batch_size: 1
optimizer {
momentum_optimizer: {
learning_rate: {
manual_step_learning_rate {
initial_learning_rate: 0.0002
schedule {
step: 0
learning_rate: .0002
}
schedule {
step: 900000
learning_rate: .00002
}
schedule {
step: 1200000
learning_rate: .000002
}
}
}
momentum_optimizer_value: 0.9
}
use_moving_average: false
}
fine_tune_checkpoint: “/usr/home/username/tmp/model.ckpt-#####”
from_detection_checkpoint: true
gradient_clipping_by_norm: 10.0
data_augmentation_options {
random_horizontal_flip {
}
}

模型参数初始化

虽然(这个操作)是可选的,但强烈建议用户使用其他object detection checkpoints【译者注:也就是说,建议我们使用checkpointzhong 已经保存了的参数】。从头开始训练目标检测器可能需要数天时间。为了加快训练过程,建议用户重新使用先前在目标分类或检测的checkpoint保存好的参数。 train_config提供了两个字段来指定已经保存好的检查点:fine_tune_checkpoint和from_detection_checkpoint。 fine_tune_checkpoint应提供一个路径到已经保存好的检查点(即:“/ usr/home/username/checkpoint/model.ckpt - #####”)。 from_detection_checkpoint是一个布尔值。如果为false,则表示检查点来自目标分类检查点。请注意,从detection checkpoint开始(运行)训练过程通常会比classification checkpoint更快。 提供的 checkpoint列表可以在这里找到。

输入预处理

train_config中的data_augmentation_options可用于指定如何修改训练数据。该字段是可选的。

SGD参数

train_config中的其余参数是作用于梯度下降的参数。请注意,这些配置文件中提供的最佳学习率可能取决于训练中的设置的具体情况(例如,worker数量,GPU类型)

设置“评委”【我造的词。。】

目前评估被固定为PASCAL VOC竞赛定义的度量标准。 eval_config的参数设置的默认值比较合理,通常不需要设置。

<think>嗯,用户遇到了在启动Erlang或Elixir应用时出现的错误:“Error during startup: no configuration schema found, logger redirection, boot failed”。我需要仔细分析可能的原因,并提供解决方案。首先,我应该回忆下Erlang/OTP和Elixir的配置机制。 首先,这个错误提示中提到“no configuration schema found”,可能涉及到应用的配置文件问题。Erlang应用通常使用sys.config文件,而Elixir项目则用config.exs。用户可能在配置文件中引用了不存在的模块或配置项,或者配置文件本身未被正确加载。需要检查配置文件是否存在,路径是否正确,语法是否有误。 接下来,“logger redirection”可能与日志系统的配置有关。Erlang的logger模块允许重定向日志输出,如果配置不正确,可能导致启动失败。用户可能错误配置了logger的handler,或者指定了无效的输出路径。需要检查logger相关的配置项,比如handlers的设置,以及是否有权限问题导致无法写入日志文件。 然后,“boot failed”说明应用在启动过程中遇到了致命错误,无法继续。这可能是因为依赖项未正确安装或版本不兼容,导致应用启动时无法加载必要的模块。用户需要检查mix.lock或rebar.lock文件,确认依赖是否正确,并尝试重新编译依赖。 另外,Erlang应用的启动流程涉及.app文件,其中指定了应用的模块和启动参数。如果.app文件中的modules列表缺失关键模块,或者启动函数有误,也会导致引导失败。需要检查.app文件的内容,确保所有必要的模块都被列出,并且mod字段指定的启动函数正确。 用户可能没有正确生成或更新应用的配置架构,特别是在使用Distillery或Releases时,配置文件的路径可能在发布过程中发生了变化。需要确认发布配置是否正确,确保运行时能够找到sys.config或vm.args等文件。 此外,检查日志文件中的详细错误信息是关键。用户可能需要增加日志级别,或者查看启动时生成的crash.log,以获取更具体的错误原因。如果日志重定向本身有问题,可能需要临时将日志输出到控制台,以便调试。 最后,考虑环境变量的问题,特别是在容器化部署时,环境变量可能未被正确设置,导致应用读取不到预期的配置值。需要验证所有必要的环境变量是否在运行时可用,并且格式正确。 总结可能的解决步骤:检查配置文件的存在和语法;验证logger配置;确保依赖项正确;检查.app文件;确认发布配置;查看详细日志;检查环境变量。需要步步引导用户排查这些可能性,找到具体原因后对应解决。</think>关于Erlang/Elixir应用启动时出现的"no configuration schema found"错误,以下是分步解决方案: 1. **验证配置文件完整性** - 检查$config/config.exs$是否存在语法错误(Elixir) - 确认$sys.config$路径正确(Erlang) - 使用`mix compile`验证配置加载 ```elixir # 示例配置文件检测 Application.load(:your_app) Application.get_all_env(:your_app) |> IO.inspect ``` 2. **日志系统诊断** - 临时启用控制台日志输出: ```elixir config :logger, :console, level: :debug ``` - 检查文件权限:`ls -l log/`确保有写入权限 - 验证日志处理器配置是否符合OTP规范[^1] 3. **依赖关系验证** - 执行`mix deps.compile --force`强制重新编译依赖 - 检查$mix.lock$与$build.boot$的版本兼容性 - 使用`Application.loaded_applications()`确认依赖加载 4. **启动文件分析** - 检查$rel/vm.args$中的节点名称格式 - 确认$rel/sys.config$包含必要参数: ```erlang [{kernel, [{logger_level, info}]}]. ``` - 验证发布包结构是否符合Erlang OTP设计原则[^2]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值