我想使用 Faster_rcnn 或 mask_rcnn 与 Pytorch 和 Detectron2 来训练自定义数据集。一切正常,但我想知道我想知道我得到的结果是什么。
[11/29 20:16:31 d2.utils.events]: eta: 0:24:04 iter: 19 total_loss: 9.6 loss_cls: 1.5 loss_box_reg: 0.001034 loss_mask: 0.6936 loss_rpn_cls: 6.773 loss_rpn_loc: 0.5983 time: 1.4664 data_time: 0.0702 lr: 4.9953e-06 max_mem: 2447M
Run Code Online (Sandbox Code Playgroud)
我得到了这个结果,我想知道这一切意味着什么
python machine-learning conv-neural-network pytorch detectron
此错误的原因是什么,我该如何解决?我正在运行这个 repo 的代码:https : //github.com/facebookresearch/frankmocap
(frank) mona@goku:~/research/code/frankmocap$ python -m demo.demo_frankmocap --input_path ./sample_data/han_short.mp4 --out_dir ./mocap_output
Traceback (most recent call last):
File "/usr/lib/python3.8/runpy.py", line 194, in _run_module_as_main
return _run_code(code, main_globals, None,
File "/usr/lib/python3.8/runpy.py", line 87, in _run_code
exec(code, run_globals)
File "/home/mona/research/code/frankmocap/demo/demo_frankmocap.py", line 25, in <module>
from handmocap.hand_bbox_detector import HandBboxDetector
File "/home/mona/research/code/frankmocap/handmocap/hand_bbox_detector.py", line 33, in <module>
from detectors.hand_object_detector.lib.model.roi_layers import nms # might raise segmentation fault at the end of program
File "/home/mona/research/code/frankmocap/detectors/hand_object_detector/lib/model/roi_layers/__init__.py", line 3, in <module>
from .nms import nms
File "/home/mona/research/code/frankmocap/detectors/hand_object_detector/lib/model/roi_layers/nms.py", …Run Code Online (Sandbox Code Playgroud) 我想将 detectorron2 模型转换为另一个深度学习框架,即 PyTorch、TensorFlow 或 ONNX。我该如何进行这种转换?
cfg我可以使用(我相信这意味着 detectorron2 行话中的配置)对 detectorron2 模型进行推理。
目标是最终在 Nvidia Jetson 主板上运行 Detectron2 模型。因此,目标是转换模型。
当我有以下行时requirements.txt
detectron2 -f https://dl.fbaipublicfiles.com/detectron2/wheels/cu101/index.html
Run Code Online (Sandbox Code Playgroud)
我收到错误:
ERROR: Could not find a version that satisfies the requirement detectron2 (from versions: none)
ERROR: No matching distribution found for detectron2
Run Code Online (Sandbox Code Playgroud)
然而,尝试在命令行上执行此操作时,它会安装软件包,但我真的更希望所有内容都在requirements.txt中
即使requirements.txt 没有任何其他条目,也会发生这种情况。
pip install detectron2 -f https://dl.fbaipublicfiles.com/detectron2/wheels/cu101/index.html
Run Code Online (Sandbox Code Playgroud)
知道有什么问题吗?requirements.txt 中列出的其他要求是否会导致此问题?我怎样才能找到是哪一个?
这是一个 Docker 容器python:3.7-slim-buster,如果我没记错的话,它是基于 Debian buster 的。它运行的是 Python 3.7.11。
我在 virtualenv 和没有 virtualenv 的情况下都尝试过这个。
requirements.txt 中的其他软件包已正确安装。
希望你做得很好!
我不太明白 detectorron2 colab 笔记本教程中的这两行,我尝试查看官方文档,但我不太明白,有人可以向我解释一下吗:
cfg.MODEL.ROI_HEADS.SCORE_THRESH_TEST = 0.5 # set threshold for this model
# Find a model from detectron2's model zoo. You can use the https://dl.fbaipublicfiles... url as well
cfg.MODEL.WEIGHTS = model_zoo.get_checkpoint_url("COCO-InstanceSegmentation/mask_rcnn_R_50_FPN_3x.yaml")
Run Code Online (Sandbox Code Playgroud)
我预先感谢您并祝您度过愉快的一天!
我正在尝试使用detectron2框架提取类检测高于某个阈值的区域特征。我稍后将在我的管道中使用这些功能(类似于:VilBert第 3.1 节训练 ViLBERT)到目前为止,我已经使用此配置训练了一个 Mask R-CNN,并在一些自定义数据上对其进行了微调。它表现良好。我想要做的是从我训练的模型中为生成的边界框提取特征。
编辑:我查看了关闭我帖子的用户所写的内容并试图对其进行改进。尽管读者需要了解我在做什么的上下文。如果您对我如何改进问题有任何想法,或者您对如何做我想做的事情有一些见解,欢迎您提供反馈!
我有个问题:
我相信这是产生 ROI 特征的正确方法:
images = ImageList.from_tensors(lst[:1], size_divisibility=32).to("cuda") # preprocessed input tensor
#setup config
cfg = get_cfg()
cfg.merge_from_file(model_zoo.get_config_file("COCO-InstanceSegmentation/mask_rcnn_R_101_FPN_3x.yaml"))
cfg.MODEL.WEIGHTS = os.path.join(cfg.OUTPUT_DIR, "model_final.pth")
cfg.SOLVER.IMS_PER_BATCH = 1
cfg.MODEL.ROI_HEADS.NUM_CLASSES = 1 # only has one class (pnumonia)
#Just run these lines if you have the trained model im memory
cfg.MODEL.ROI_HEADS.SCORE_THRESH_TEST = 0.7 # set the testing threshold for this model …Run Code Online (Sandbox Code Playgroud) 我尝试使用以下方法保存和加载模型:所有键都已映射,但输出 #1 中没有预测
from detectron2.modeling import build_model
model = build_model(cfg)
torch.save(model.state_dict(), 'checkpoint.pth')
model.load_state_dict(torch.load(checkpoint_path,map_location='cpu'))
Run Code Online (Sandbox Code Playgroud)
我也尝试使用官方文档来做,但无法理解输入格式部分
from detectron2.checkpoint import DetectionCheckpointer
DetectionCheckpointer(model).load(file_path_or_url) # load a file, usually from cfg.MODEL.WEIGHTS
checkpointer = DetectionCheckpointer(model, save_dir="output")
checkpointer.save("model_999") # save to output/model_999.pth
Run Code Online (Sandbox Code Playgroud) 我是使用检测器 2 的新手,只是在学习它。这可能是一个菜鸟问题,但我真的需要答案。我发现与存储库中的时代数无关。
我们知道,epoch 意味着所有数据通过模型一次传递,batch 意味着整个数据集的某个子集,它有能力通过梯度下降影响损失。在这个模型中,(Detectron2) 我们有一个叫做迭代的东西。这个迭代是什么意思?这是否意味着通过模式或一个时期传递一批(考虑到每次迭代的时间,情况不应该如此)
我的问题是,我怎么知道将我的所有图像传递给模型的最小迭代次数,至少一次。
我正在尝试使用 Detectron2 训练模型。我正在使用 Grocery 图像数据,并且有 COCO 格式的注释。我在模型加载时遇到问题。模型不带注释。我指的是这个博客https://gilberttanner.com/blog/detectron2-train-a-instance-segmentation-model。
注册数据集时面临问题。
from detectron2.data.datasets import register_coco_instances
for d in ["train", "test"]:
register_coco_instances(f"microcontroller_{d}", {}, f"Microcontroller Segmentation/{d}.json", f"Microcontroller Segmentation/{d}")
Run Code Online (Sandbox Code Playgroud)
这段代码有问题吗?
json image-segmentation deep-learning detectron image-classification
我已经在以 coco 格式标记和导出的自定义数据上训练了 detectorron2 模型,但现在我想应用增强并使用增强数据进行训练。如果我不使用自定义 DataLoader,而是使用 register_coco_instances 函数,我该如何做到这一点。
cfg = get_cfg()
cfg.merge_from_file(model_zoo.get_config_file("COCO-InstanceSegmentation/mask_rcnn_R_50_FPN_3x.yaml"))
cfg.MODEL.ROI_HEADS.SCORE_THRESH_TEST = 0.5
cfg.MODEL.WEIGHTS = model_zoo.get_checkpoint_url("COCO-InstanceSegmentation/mask_rcnn_R_50_FPN_3x.yaml")
predictor = DefaultPredictor(cfg)
outputs = predictor(im)
train_annotations_path = "./data/cvat-corn-train-coco-1.0/annotations/instances_default.json"
train_images_path = "./data/cvat-corn-train-coco-1.0/images"
validation_annotations_path = "./data/cvat-corn-validation-coco-1.0/annotations/instances_default.json"
validation_images_path = "./data/cvat-corn-validation-coco-1.0/images"
register_coco_instances(
"train-corn",
{},
train_annotations_path,
train_images_path
)
register_coco_instances(
"validation-corn",
{},
validation_annotations_path,
validation_images_path
)
metadata_train = MetadataCatalog.get("train-corn")
dataset_dicts = DatasetCatalog.get("train-corn")
cfg = get_cfg()
cfg.merge_from_file(model_zoo.get_config_file("COCO-InstanceSegmentation/mask_rcnn_R_50_FPN_3x.yaml"))
cfg.DATASETS.TRAIN = ("train-corn",)
cfg.DATASETS.TEST = ("validation-corn",)
cfg.DATALOADER.NUM_WORKERS = 2
cfg.MODEL.WEIGHTS = model_zoo.get_checkpoint_url("COCO-InstanceSegmentation/mask_rcnn_R_50_FPN_3x.yaml") # Let training initialize from model zoo
cfg.SOLVER.IMS_PER_BATCH = 2 …Run Code Online (Sandbox Code Playgroud) 我使用下面的代码加载经过训练的自定义 Yolov5 模型并执行检测。
import cv2
import torch
from PIL import Image
model = torch.hub.load('ultralytics/yolov5', 'custom',
path='yolov5/runs/train/exp4/weights/best.pt', force_reload=True)
img = cv2.imread('example.jpeg')[:, :, ::-1] # OpenCV image (BGR to RGB)
results = model(img, size=416)
Run Code Online (Sandbox Code Playgroud)
#显示和保存我正在使用的结果:
results.print()
results.save()
results.show()
Run Code Online (Sandbox Code Playgroud)
我的问题是如何将结果保存在不同的目录中,以便我可以在基于网络的应用程序中使用它们。我正在使用 Streamlit,供您参考。例如,目前,结果(图像)保存在运行\检测\exp*中。我想改变它。任何人都可以指导我吗?