我正在建立一个基于最近发布的tensorflow对象检测API的对象检测管道.我使用arXiv作为指导.我希望了解以下对我自己的数据集的培训.
目前尚不清楚他们如何选择学习率计划以及如何根据可用于培训的GPU数量进行更改.根据可用于培训的GPU数量,培训费率计划如何变化?该文提到使用了9个GPU.如果我只想使用1个GPU,我应该如何改变训练率?
使用Faster R-CNN 发布的Pascal VOC 样本培训配置文件的初始学习率= 0.0001.这比最初的Faster-RCNN论文中发布的版本低10倍.这是由于对GPU可用于培训的数量或由于不同原因的假设?
当我从COCO检测检查点开始训练时,训练损失应该如何减少?看看tensorboard,我的数据集训练损失很低 - 每次迭代0.8到1.2之间(批量大小为1).下图显示了tensorboard的各种损失..这是预期的行为吗?

我正在尝试使用两种不同的级联分类器来识别两个不同的对象.我修改了面部识别样本,但我遇到了一个问题:当我尝试识别来自object1.xml的对象时,它会打印两个矩形,当我尝试识别来自object2.xml的对象时,它不打印不对...
问题出在哪儿??
private BaseLoaderCallback mLoaderCallback = new BaseLoaderCallback(this) {
@Override
public void onManagerConnected(int status) {
switch (status) {
case LoaderCallbackInterface.SUCCESS:
{
Log.i(TAG, "OpenCV loaded successfully");
// Load native library after(!) OpenCV initialization
System.loadLibrary("detection_based_tracker");
try {
// load cascade file from application resources
InputStream is = getResources().openRawResource(R.raw.object1);
File cascadeDir = getDir("cascade", Context.MODE_PRIVATE);
mCascadeFile = new File(cascadeDir, "object1.xml");
FileOutputStream os = new FileOutputStream(mCascadeFile);
/* By me */
InputStream is2 = getResources().openRawResource(R.raw.object2);
mCascadeFile2 = new File(cascadeDir, "object2.xml");
FileOutputStream os2 = new FileOutputStream(mCascadeFile2);
byte[] …Run Code Online (Sandbox Code Playgroud) opencv object-detection object-recognition cascade-classifier
我使用OpenCV的功能matchShapes,我不知道什么是3种比较方法之间的差异CV_CONTOURS_MATCH_I1,CV_CONTOURS_MATCH_I2并CV_CONTOURS_MATCH_I3在这里
是否有使用特定方法更好的情况?
另外,为什么CV_CONTOURS_MATCH_I1和CV_CONTOURS_MATCH_I2计算总和并且CV_CONTOURS_MATCH_I3仅考虑最大值?
我想检测显微镜图像细胞内的物体.我有很多带注释的图像(带有对象的应用程序50.000个图像和没有对象的500.000个图像).
到目前为止,我尝试使用HOG提取特征并使用逻辑回归和LinearSVC进行分类.我已经为HOG或颜色空间(RGB,HSV,LAB)尝试了几个参数,但我没有看到很大的差异,预测率约为70%.
我有几个问题.我应该使用多少图像来训练描述符?我应该使用多少图像来测试预测?
我已经尝试了大约1000张图像用于训练,这给了我55%的正面和5000,这给了我大约72%的正面.但是,它也很大程度上取决于测试集,有时测试集可以达到80-90%的正检测图像.
以下是包含对象和两个没有对象的图像的两个示例:




另一个问题是,有时图像包含几个对象:

我应该尝试增加学习集的示例吗?我该如何选择训练集的图像,只是随机的?我还能尝试什么?
任何帮助都将非常感激,我刚开始发现机器学习.我正在使用Python(scikit-image和scikit-learn).
在TensorFlow对象检测的示例管道配置文件中,有以下代码段:
eval_config: {
num_examples: 2000
# Note: The below line limits the evaluation process to 10 evaluations.
# Remove the below line to evaluate indefinitely.
max_evals: 10
}
Run Code Online (Sandbox Code Playgroud)
"num_examples"是否表示每个评估运行使用相同的前2000个图像,或者它将测试集视为循环缓冲区并且每次使用不同的2000个图像?
我有一个关于微调和迁移学习的一般性问题,当我试图找出如何最好地让 yolo 检测我的自定义对象(手)时出现了这个问题。
对于可能包含大量虚假信息的长文本,我深表歉意。如果有人有耐心阅读它并帮助我清除我的困惑,我会很高兴。
经过大量的谷歌搜索,我了解到很多人认为微调是迁移学习的一个子类,而其他人则认为他们是训练模型的不同方法。同时,人们区分仅在自定义数据集上重新训练模型的最后一个分类器层与重新训练模型的其他层(并且可能添加一个全新的分类器而不是重新训练?)。这两种方法都使用预先训练的模型。
我最后的困惑就在这里:我按照以下说明操作:https : //github.com/thtrieu/darkflow 通过darkflow 使用以下命令训练小yolo:
# Initialize yolo-new from yolo-tiny, then train the net on 100% GPU:
flow --model cfg/yolo-new.cfg --load bin/tiny-yolo.weights --train --gpu 1.0
但是这里发生了什么?我想我只是重新训练分类器,因为说明说要更改配置文件中最后一层的类数。但话又说回来,还需要更改倒数第二层(卷积层)中的过滤器数量。
最后,说明提供了替代培训的示例:
# Completely initialize yolo-new and train it with ADAM optimizer
flow --model cfg/yolo-new.cfg --train --trainer adam我完全不明白这与迁移学习的不同方式有何关联。
我正在阅读faster-rcnntensorflow 模型的代码。我对使用tf.stop_gradient.
考虑以下代码片段:
if self._is_training:
proposal_boxes = tf.stop_gradient(proposal_boxes)
if not self._hard_example_miner:
(groundtruth_boxlists, groundtruth_classes_with_background_list, _,
groundtruth_weights_list
) = self._format_groundtruth_data(true_image_shapes)
(proposal_boxes, proposal_scores,
num_proposals) = self._sample_box_classifier_batch(
proposal_boxes, proposal_scores, num_proposals,
groundtruth_boxlists, groundtruth_classes_with_background_list,
groundtruth_weights_list)
Run Code Online (Sandbox Code Playgroud)
更多代码在这里。我的问题是:如果tf.stop_gradient没有设置为会发生什么proposal_boxes?
python object-detection tensorflow tensorflow-model-analysis
我正在研究一些与对象检测方法(YOLOv3、Faster-RCNN、RetinaNet 等)相关的东西,我需要在 VOC2007 和 VOC2012 上进行训练(当然使用预训练模型)。然而,当我阅读相关论文时,我没有看到人们描述他们是使用早期停止训练还是仅使用固定次数的迭代进行训练。如果他们使用提前停止,在停止之前设置了多少步?因为当我在停止前尝试 100 步时,结果非常糟糕。请帮助我,非常感谢。
我目前正在使用来自 pytorch 预训练 Faster-RCNN 模型(如 torchvision教程)的迁移学习对自定义数据集进行对象检测。我想在每个时代结束时计算验证损失字典(如在训练模式下)。我可以在训练模式下运行模型进行验证,如下所示:
model.train()
for images, targets in data_loader_val:
images = [image.to(device) for image in images]
targets = [{k: v.to(device) for k, v in t.items()} for t in targets]
with torch.no_grad():
val_loss_dict = model(images, targets)
print(val_loss_dict)
Run Code Online (Sandbox Code Playgroud)
但我不认为,这是验证的“正确”方式(因为某些特殊层,如 dropout 和 batch norm 在 eval/train 模式下的工作方式不同)。在 eval 模式下,模型返回预测的 bbox(如预期)。我可以为此使用一些内置函数吗?
谢谢。
python machine-learning object-detection computer-vision pytorch
你能解释一下它在训练过程中是如何工作的吗?
learning_rate: {
cosine_decay_learning_rate {
learning_rate_base: 8e-2
total_steps: 300000
warmup_learning_rate: .0001
warmup_steps: 400
}
}```
Run Code Online (Sandbox Code Playgroud) object-detection ×10
tensorflow ×4
python ×3
opencv ×2
yolo ×2
faster-rcnn ×1
image ×1
pytorch ×1
scikit-image ×1
scikit-learn ×1