我正在致力于实现 YOLO v2 和 3,以在自定义数据集上进行对象检测。虽然 YOLO v2 和 3 使用 5 个左右的锚框,但我通常每个图像可能有 50-100 次检测。我的感觉是,如果只有 5 个锚框,那么每个图像最多有 5 个检测,对吧?所以我试图了解是否需要调整我的数据集的锚框数量。
我的问题是,锚框的数量是否需要大于任何训练图像中边界框的最大数量?这样,我就永远不会遇到没有相应锚框的检测。这是改编 YOLO 的正确思考方式吗?
如果我的直觉是正确的,那么我需要使用 k 均值来对地面实况图像中的边界框进行聚类并设置锚框坐标。然后我将使用本博客文章中指定的常用回归方法。
感谢任何人都可以提供的帮助。
在 8 个类的自定义数据集上运行 TensorFlow 对象检测 API 训练和评估,关于使用 model_main.py 运行此任务的结果,我有两个问题
总损失在 10k 步后开始上升(相对)......它在 8000 步后低于 1,但开始从 10k 步缓慢上升到 80k 步并以 1.4 损失结束......为什么会发生这种情况?
关于评价结果,为什么只有IoU=0.50的精度为0.966,其余都在0.5以下,如下图:
Accumulating evaluation results...
DONE (t=0.07s).
Average Precision (AP) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.471
Average Precision (AP) @[ IoU=0.50 | area= all | maxDets=100 ] = 0.966
Average Precision (AP) @[ IoU=0.75 | area= all | maxDets=100 ] = 0.438
Average Precision (AP) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = -1.000
Average …Run Code Online (Sandbox Code Playgroud) python generate_tfrecord.py --csv_input=images\train_labels.csv --image_dir=images\train --output_path=train.record""
Usage:
# From tensorflow/models/
# Create train data:
python generate_tfrecord.py --csv_input=data/train_labels.csv --output_path=train.record
# Create test data:
python generate_tfrecord.py --csv_input=data/test_labels.csv --output_path=test.record
"""
from __future__ import division
from __future__ import print_function
from __future__ import absolute_import
import os
import io
import pandas as pd
import tensorflow as tf
from PIL import Image
from object_detection.utils import dataset_util
from collections import namedtuple, OrderedDict
flags = tf.compat.v1.flags
flags.DEFINE_string('csv_input', '', 'Path to the CSV input')
flags.DEFINE_string('output_path', '', 'Path to …Run Code Online (Sandbox Code Playgroud) 我已经使用Roboflow 的教程创建了一个对象检测模型,并拥有所有保存的权重。我遇到的一个问题是将其部署在谷歌合作实验室中。我更改了一些代码,但它似乎不起作用。简而言之,模型已经训练完毕。
如何在另一个 Google 合作实验室中使用该模型?我已经通过直接下载和一些绘图功能将整个 darknet 文件夹下载到环境中,然后运行:
进而
!./darknet detect cfg/custom-yolov4-detector.cfg backup/custom-yolov4-detector_last.weights {img} #-dont-show
Run Code Online (Sandbox Code Playgroud)
只为得到:
/bin/bash: ./darknet: 权限被拒绝
有什么建议么?
我使用原始数据集和自定义 yolov4 配置文件训练了 YOLOv4 模型,我将其称为我的“基本”YOLOv4 模型。
现在,我想使用我创建的这个基本模型,使用我手动增强的图像再次训练模型。我正在尝试重新训练我的模型以尝试增加 mAP 和 AP。因此,我想使用基本模型中的权重来训练带有手动增强图像的新 yolov4 模型。
我在YOLOv4 wiki 页面上看到,使用stopbackward = 1冻结层,因此这些层中的权重不会更新,但这会降低准确性。我还读到了另一条信息,其中./darknet partial cfg/yolov4.cfg yolov4.weights yolov4.conv.137 137 删除了前 137 层。这是否意味着前 137 层被冻结在网络中,或者这是否意味着您仅在 137 层上进行训练?
我的问题是:
先感谢您!
object-detection deep-learning darknet yolo transfer-learning
我正在尝试使用 Python 中的 OpenCV 执行简单的对象检测。我的问题是我无法使用 TrackerMOSSE_create 方法,就好像它不存在一样。
我只安装了 opencv-contrib-python 软件包pip install opencv-contrib-python,并且我知道它不能与 opencv-python 在一个虚拟环境中共存,所以我没有那个。
我正在研究 MAC 和 Python 3.8。下面有一个代码。
import cv2
print(cv2.__version__)
cap = cv2.VideoCapture(0)
tracker = cv2.TrackerMOSSE_create()
while True:
timer = cv2.getTickCount()
success, img = cap.read()
fps = cv2.getTickFrequency() / (cv2.getTickCount() - timer)
cv2.putText(img, str(int(fps)), (75, 50), cv2.FONT_ITALIC, 0.7, (0, 0, 255), 2)
cv2.imshow("Tracking", img)
if cv2.waitKey(1) & 0xff == ord('q'):
break
Run Code Online (Sandbox Code Playgroud)
我的错误是:
Traceback (most recent call last):
File "/Users/marcin94/PycharmProjects/tracker_objects/main.py", line 8, in <module>
tracker = cv2.TrackerMOSSE_create() …Run Code Online (Sandbox Code Playgroud) ParseError Traceback(最近一次调用最后一次)
在
----> 1 配置 = config_util.get_configs_from_pipeline_file(CONFIG_PATH)
〜\ AppData \ Roaming \ Python \ Python37 \ site-packages \ object_detection \ utils \ config_util.py get_configs_from_pipeline_file(pipeline_config_path,config_override)
96 with tf.io.gfile.GFile(pipeline_config_path, "r") as f:
97 proto_str = f.read()
Run Code Online (Sandbox Code Playgroud)
---> 98 text_format.Merge(proto_str, pipeline_config)
99 if config_override:
100 text_format.Merge(config_override, pipeline_config)
Run Code Online (Sandbox Code Playgroud)
C:\ProgramData\Anaconda3\lib\site-packages\google\protobuf\text_format.py 合并(文本、消息、allow_unknown_extension、allow_field_number、descriptor_pool、allow_unknown_field)
735 allow_field_number,
736 descriptor_pool=descriptor_pool,
Run Code Online (Sandbox Code Playgroud)
--> 737 允许_未知_字段=允许_未知_字段)
738
739
Run Code Online (Sandbox Code Playgroud)
MergeLines 中的 C:\ProgramData\Anaconda3\lib\site-packages\google\protobuf\text_format.py(行、消息、allow_unknown_extension、allow_field_number、descriptor_pool、allow_unknown_field)
803 descriptor_pool=descriptor_pool,
804 allow_unknown_field=allow_unknown_field)
Run Code Online (Sandbox Code Playgroud)
--> 805 返回 parser.MergeLines(lines, message)
806
807
Run Code Online (Sandbox Code Playgroud)
MergeLines 中的 C:\ProgramData\Anaconda3\lib\site-packages\google\protobuf\text_format.py(self,lines,message)
828 """Merges a text representation of a …Run Code Online (Sandbox Code Playgroud) object-detection tensorflow jupyter-notebook object-detection-api
我正在尝试使用Tensorflow 的对象检测 API 2和 Tensorflow 2.3.0 训练对象检测模型。我主要使用本文作为准备数据和训练模型的资源。
大多数使用对象检测 API 的文章都会在微调之前从Tensorflow 模型库下载预训练的模型。
Tensorflow Model Zoo 是由对象检测团队在 Github 页面上设置的一组链接。当我单击一个此类链接(使用 Google Chrome)时,会短暂打开一个新选项卡,就像正在开始下载一样,然后立即关闭并且不会进行下载。我在文章中找到的其他模型的超链接也不起作用。
对于使用对象检测 API 进行微调的任何人:您使用什么方法下载预训练模型?模型动物园链接有用吗?如果没有,您使用了什么资源?
任何帮助深表感谢。
我的图像如下所示:
我的目标是检测并识别该数字31197394。我已经对文本识别的深度神经网络进行了微调。如果以以下格式提供,它可以成功识别正确的号码:
剩下的唯一任务是检测相应的边界框。为此,我尝试了darknet。不幸的是,它无法识别任何东西。有人知道在此类图像上表现更好的网络吗?我知道,亚马逊识别能够解决这个任务。但我需要一个可以离线工作的解决方案。因此,我仍然对存在有效的预训练网络抱有很高的希望。非常感谢你的帮助!
我找不到 yolov4 损失函数的解释。
object-detection ×10
tensorflow ×5
yolo ×3
darknet ×2
python ×2
yolov4 ×2
evaluation ×1
keras ×1
linux ×1
ocr ×1
opencv ×1
python-3.x ×1
roboflow ×1