- PhD Student at CUHK
- Research Intern at Shanghai AI Lab
- Website: csuhan.com
- Email: [email protected]
csuhan / s2anet Goto Github PK
View Code? Open in Web Editor NEWOfficial code of the paper "Align Deep Features for Oriented Object Detection"
Official code of the paper "Align Deep Features for Oriented Object Detection"
Could you please provide with trained RetinaNet model? Thanks!
when I try to train the dota dataset with the config file "s2anet_r101_fpn_1x_ms_rotate.py", the error description is as follows:
from .transforms_rbox import (delta2rbox, get_best_begin_point,
ImportError: cannot import name 'get_best_rbox' from 'mmdet.core.bbox.transforms_rbox'
Could you please solve this?
why tha angle range of the oriented bounding box is [-pi/4,3pi/4]
I noticed that RetinaNet mAP using R-101-FPN is 68.72 in TABLE VII. Can you tell me where the data comes from? I used this code(https://github.com/dingjiansw101/AerialDetection/blob/master/configs/DOTA/retinanet_obb_r50_fpn_2x_dota.py) for training, and the result was only about 40 mAP. Thank you!
hi, it's odd that this error occured when training DOTA for I check the code and seems no problem :
Traceback (most recent call last): File "tools/train.py", line 9, in <module> from mmdet.apis import (get_root_logger, init_dist, set_random_seed, File "/dat01/zhangshuhao/dy/s2anet-dal/mmdet/apis/__init__.py", line 2, in <module> from .inference import (inference_detector, init_detector, show_result, File "/dat01/zhangshuhao/dy/s2anet-dal/mmdet/apis/inference.py", line 11, in <module> from mmdet.core import get_classes File "/dat01/zhangshuhao/dy/s2anet-dal/mmdet/core/__init__.py", line 1, in <module> from .anchor import * # noqa: F401, F403 File "/dat01/zhangshuhao/dy/s2anet-dal/mmdet/core/anchor/__init__.py", line 2, in <module> from .anchor_target import anchor_inside_flags, anchor_target, unmap, images_to_levels File "/dat01/zhangshuhao/dy/s2anet-dal/mmdet/core/anchor/anchor_target.py", line 3, in <module> from ..bbox import PseudoSampler, assign_and_sample, bbox2delta, build_assigner File "/dat01/zhangshuhao/dy/s2anet-dal/mmdet/core/bbox/__init__.py", line 1, in <module> from .assigners import AssignResult, BaseAssigner, MaxIoUAssigner File "/dat01/zhangshuhao/dy/s2anet-dal/mmdet/core/bbox/assigners/__init__.py", line 1, in <module> from .approx_max_iou_assigner import ApproxMaxIoUAssigner File "/dat01/zhangshuhao/dy/s2anet-dal/mmdet/core/bbox/assigners/approx_max_iou_assigner.py", line 3, in <module> from ..geometry import bbox_overlaps File "/dat01/zhangshuhao/dy/s2anet-dal/mmdet/core/bbox/geometry.py", line 3, in <module> from mmdet.ops.box_iou_rotated import box_iou_rotated File "/dat01/zhangshuhao/dy/s2anet-dal/mmdet/ops/__init__.py", line 8, in <module> from .nms_rotated import nms_rotated File "/dat01/zhangshuhao/dy/s2anet-dal/mmdet/ops/nms_rotated/__init__.py", line 1, in <module> from . import nms_rotated_cuda ImportError: cannot import name 'nms_rotated_cuda' from 'mmdet.ops.nms_rotated' (/dat01/zhangshuhao/dy/s2anet-dal/mmdet/ops/nms_rotated/__init__.py) ~
hey,
when I try to modify some code ,and print the shape of two tensors as following in the anchor_target_single_obb_obb_rbox.py file and find that they are inconsistent:
gt_bboxes: torch.Size([324, 5])
gt_labels: torch.Size([343])
is this right?
building 'mmdet.ops.box_iou_rotated.box_iou_rotated_C' extension
gcc -pthread -B /opt/conda/compiler_compat -Wl,--sysroot=/ -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -fPIC -DWITH_CUDA -I/opt/conda/lib/python3.6/site-packages/torch/include -I/opt/conda/lib/python3.6/site-packages/torch/include/torch/csrc/api/include -I/opt/conda/lib/python3.6/site-packages/torch/include/TH -I/opt/conda/lib/python3.6/site-packages/torch/include/THC -I'/usr/local/cuda'/include -I/opt/conda/include/python3.6m -c mmdet/ops/box_iou_rotated/src/box_iou_rotated_cpu.cpp -o build/temp.linux-x86_64-3.6/mmdet/ops/box_iou_rotated/src/box_iou_rotated_cpu.o -DTORCH_API_INCLUDE_EXTENSION_H -DTORCH_EXTENSION_NAME=box_iou_rotated_C -D_GLIBCXX_USE_CXX11_ABI=0 -std=c++11
cc1plus: warning: command line option ‘-Wstrict-prototypes’ is valid for C/ObjC but not for C++
mmdet/ops/box_iou_rotated/src/box_iou_rotated_cpu.cpp: In function ‘void box_iou_rotated_cpu_kernel(const at::Tensor&, const at::Tensor&, at::Tensor&)’:
mmdet/ops/box_iou_rotated/src/box_iou_rotated_cpu.cpp:25:31: error: expected primary-expression before ‘>’ token
boxes1[i].data_ptr(), boxes2[j].data_ptr());
^
mmdet/ops/box_iou_rotated/src/box_iou_rotated_cpu.cpp:25:33: error: expected primary-expression before ‘)’ token
boxes1[i].data_ptr(), boxes2[j].data_ptr());
^
mmdet/ops/box_iou_rotated/src/box_iou_rotated_cpu.cpp:25:56: error: expected primary-expression before ‘>’ token
boxes1[i].data_ptr(), boxes2[j].data_ptr());
^
mmdet/ops/box_iou_rotated/src/box_iou_rotated_cpu.cpp:25:58: error: expected primary-expression before ‘)’ token
boxes1[i].data_ptr(), boxes2[j].data_ptr());
^
error: command 'gcc' failed with exit status 1
When I run the "python test.....", the problem occurred,
S2anet has good performance in DOTA and HRSC, but when I use s2anet in other data sets, such as DIOR, it has many Fasle Positives. The loss is about 0.3-0.4 and cannot be reduced. Do you have any suggestions?
The config file
`
model = dict(
type='S2ANetDetector',
pretrained='torchvision://resnet101',
backbone=dict(
type='ResNet',
depth=101,
num_stages=4,
out_indices=(0, 1, 2, 3),
frozen_stages=1,
style='pytorch'),
neck=dict(
type='FPN',
in_channels=[256, 512, 1024, 2048],
out_channels=256,
start_level=1,
add_extra_convs=True,
num_outs=5),
rbox_head=dict(
type='S2ANetHead',
num_classes=6,
in_channels=256,
feat_channels=256,
stacked_convs=2,
align_conv_type='AlignConv',#[AlignConv,DCN,GA_DCN]
align_conv_size=3,
with_orconv=True,
anchor_ratios=[1.0],
anchor_strides=[8, 16, 32, 64, 128],
anchor_scales=[4],
target_means=[.0, .0, .0, .0, .0],
target_stds=[1.0, 1.0, 1.0, 1.0, 1.0],
loss_fam_cls=dict(
type='FocalLoss',
use_sigmoid=True,
gamma=2.0,
alpha=0.25,
loss_weight=1.0),
loss_fam_bbox=dict(
type='SmoothL1Loss', beta=1.0 / 9.0, loss_weight=1.0),
loss_odm_cls=dict(
type='FocalLoss',
use_sigmoid=True,
gamma=2.0,
alpha=0.25,
loss_weight=1.0),
loss_odm_bbox=dict(
type='SmoothL1Loss', beta=1.0 / 9.0, loss_weight=1.0)))
train_cfg = dict(
fam_cfg=dict(
anchor_target_type='hbb_obb_rbox_overlap',
assigner=dict(
type='MaxIoUAssignerRbox',
pos_iou_thr=0.5,
neg_iou_thr=0.4,
min_pos_iou=0,
ignore_iof_thr=-1),
allowed_border=-1,
pos_weight=-1,
debug=False),
odm_cfg=dict(
anchor_target_type='obb_obb_rbox_overlap',
anchor_inside_type='center',
assigner=dict(
type='MaxIoUAssignerRbox',
pos_iou_thr=0.5,
neg_iou_thr=0.4,
min_pos_iou=0,
ignore_iof_thr=-1),
allowed_border=-1,
pos_weight=-1,
debug=False))
test_cfg = dict(nms_pre=2000, min_bbox_size=0, score_thr=0.1, nms=dict(type='nms_rotated', iou_thr=0.1), max_per_img=2000)
dataset_type = 'DIORDataset'
data_root = 'data/contest/'
img_norm_cfg = dict(
mean=[65.288, 76.517, 74.574], std=[54.247, 48.163, 46.390], to_rgb=True)
train_pipeline = [
dict(type='LoadImageFromFile'),
dict(type='LoadAnnotations', with_bbox=True),
dict(type='RotatedResize', img_scale=(1024, 1024), keep_ratio=True),
dict(type='RotatedRandomFlip', flip_ratio=0.5),
dict(type='RandomRotate', rate=0.5, angles=[30, 60, 90, 120, 150], auto_bound=False),
dict(type='Normalize', **img_norm_cfg),
dict(type='Pad', size_divisor=32),
dict(type='DefaultFormatBundle'),
dict(type='Collect', keys=['img', 'gt_bboxes', 'gt_labels']),
]
test_pipeline = [
dict(type='LoadImageFromFile'),
dict(
type='MultiScaleFlipAug',
img_scale=(1024, 1024),
flip=False,
transforms=[
dict(type='RotatedResize', img_scale=(1024, 1024), keep_ratio=True),
dict(type='RotatedRandomFlip'),
dict(type='Normalize', **img_norm_cfg),
dict(type='Pad', size_divisor=32),
dict(type='ImageToTensor', keys=['img']),
dict(type='Collect', keys=['img']),
])
]
data = dict(
imgs_per_gpu=4,
workers_per_gpu=2,
train=dict(
type=dataset_type,
ann_file=data_root + 'trainval_patch_s2a.json',
img_prefix=data_root + '/images',
pipeline=train_pipeline),
val=dict(
type=dataset_type,
ann_file=data_root + 'trainval_patch_s2a.json',
img_prefix=data_root + '/images',
pipeline=test_pipeline),
test=dict(
type=dataset_type,
ann_file=data_root + 'test.json',
img_prefix=data_root + '/images',
pipeline=test_pipeline))
optimizer = dict(type='SGD', lr=0.01, momentum=0.9, weight_decay=0.0001)
optimizer_config = dict(grad_clip=dict(max_norm=35, norm_type=2))
lr_config = dict(
policy='step',
warmup='linear',
warmup_iters=500,
warmup_ratio=1.0 / 3,
step=[40, 45])
checkpoint_config = dict(interval=1)
log_config = dict(
interval=50,
hooks=[
dict(type='TextLoggerHook'),
# dict(type='TensorboardLoggerHook')
])
total_epochs = 50
dist_params = dict(backend='nccl')
log_level = 'INFO'
work_dir = './works_dirs/s2anet_r101_dota/'
load_from = '.cache/torch/checkpoints/s2anet_r101_fpn_1x_ms_rotate_epoch_12_20200815.pth'
resume_from = None
workflow = [('train', 1)]
It trained in 50 epoch
{"mode": "train", "epoch": 50, "iter": 50, "lr": 0.0001, "time": 0.86242, "data_time": 0.02099, "memory": 8990, "loss_fam_cls": 0.15524, "loss_fam_bbox": 0.07553, "loss_odm_cls": 0.04947, "loss_odm_bbox": 0.0558, "loss": 0.33603}
{"mode": "train", "epoch": 50, "iter": 100, "lr": 0.0001, "time": 0.8468, "data_time": 0.01285, "memory": 8990, "loss_fam_cls": 0.15316, "loss_fam_bbox": 0.06564, "loss_odm_cls": 0.04806, "loss_odm_bbox": 0.05529, "loss": 0.32216}
{"mode": "train", "epoch": 50, "iter": 150, "lr": 0.0001, "time": 0.85156, "data_time": 0.0137, "memory": 8990, "loss_fam_cls": 0.15407, "loss_fam_bbox": 0.07925, "loss_odm_cls": 0.04821, "loss_odm_bbox": 0.05632, "loss": 0.33786}
{"mode": "train", "epoch": 50, "iter": 200, "lr": 0.0001, "time": 0.85856, "data_time": 0.01323, "memory": 8990, "loss_fam_cls": 0.14702, "loss_fam_bbox": 0.07098, "loss_odm_cls": 0.04571, "loss_odm_bbox": 0.05816, "loss": 0.32187}
{"mode": "train", "epoch": 50, "iter": 250, "lr": 0.0001, "time": 0.84088, "data_time": 0.01274, "memory": 8990, "loss_fam_cls": 0.16415, "loss_fam_bbox": 0.06529, "loss_odm_cls": 0.05354, "loss_odm_bbox": 0.05491, "loss": 0.33789}
{"mode": "train", "epoch": 50, "iter": 300, "lr": 0.0001, "time": 0.83431, "data_time": 0.01131, "memory": 8990, "loss_fam_cls": 0.16803, "loss_fam_bbox": 0.09001, "loss_odm_cls": 0.05105, "loss_odm_bbox": 0.05975, "loss": 0.36885}
{"mode": "train", "epoch": 50, "iter": 350, "lr": 0.0001, "time": 0.84979, "data_time": 0.01281, "memory": 8990, "loss_fam_cls": 0.14657, "loss_fam_bbox": 0.07459, "loss_odm_cls": 0.04058, "loss_odm_bbox": 0.05461, "loss": 0.31635}
{"mode": "train", "epoch": 50, "iter": 400, "lr": 0.0001, "time": 0.85282, "data_time": 0.01256, "memory": 8990, "loss_fam_cls": 0.14932, "loss_fam_bbox": 0.08008, "loss_odm_cls": 0.04741, "loss_odm_bbox": 0.06068, "loss": 0.33749}
{"mode": "train", "epoch": 50, "iter": 450, "lr": 0.0001, "time": 0.84619, "data_time": 0.01359, "memory": 8990, "loss_fam_cls": 0.14492, "loss_fam_bbox": 0.06747, "loss_odm_cls": 0.05152, "loss_odm_bbox": 0.056, "loss": 0.3199}
{"mode": "train", "epoch": 50, "iter": 500, "lr": 0.0001, "time": 0.84169, "data_time": 0.01221, "memory": 8990, "loss_fam_cls": 0.14924, "loss_fam_bbox": 0.06251, "loss_odm_cls": 0.04694, "loss_odm_bbox": 0.04926, "loss": 0.30795}
{"mode": "train", "epoch": 50, "iter": 550, "lr": 0.0001, "time": 0.84714, "data_time": 0.01283, "memory": 8990, "loss_fam_cls": 0.16291, "loss_fam_bbox": 0.08238, "loss_odm_cls": 0.05405, "loss_odm_bbox": 0.05899, "loss": 0.35833}
{"mode": "train", "epoch": 50, "iter": 600, "lr": 0.0001, "time": 0.84862, "data_time": 0.01286, "memory": 8990, "loss_fam_cls": 0.15531, "loss_fam_bbox": 0.06335, "loss_odm_cls": 0.05805, "loss_odm_bbox": 0.05274, "loss": 0.32945}
{"mode": "train", "epoch": 50, "iter": 650, "lr": 0.0001, "time": 0.84977, "data_time": 0.01135, "memory": 8990, "loss_fam_cls": 0.14908, "loss_fam_bbox": 0.07171, "loss_odm_cls": 0.04623, "loss_odm_bbox": 0.05798, "loss": 0.325}
`
您好,关于mAP的计算,是使用旋转框的iou计算的吗?可以告知一下是哪个文件吗?我只您的文件中找到了适用于用(K ,4)这种形式的ap计算。
dear author:
can you help me to solve this prolem? whether i can directly get the visiual result by this command?
CUDA_VISIBLE_DEVICES=1 python tools/test.py configs/dota/s2anet_r101_fpn_1x_ms_rotate.py yzk_work_dirs/s2anet_r101_fpn_1x_ms_rotate/epoch_12.pth --show
when i run it ,it occurs error.
hope for your reply.i want to apply this detection project on real-time detection,if i can do it?thanks for your reply and directions.
您好,请问这个问题怎么解决阿, 谢谢:
Traceback (most recent call last):
File "tools/test.py", line 15, in
from mmdet.apis import init_dist
File "/home/wen/Documents/HJJ/s2anet/mmdet/apis/init.py", line 2, in
from .inference import (inference_detector, init_detector, show_result,
File "/home/wen/Documents/HJJ/s2anet/mmdet/apis/inference.py", line 11, in
from mmdet.core import get_classes
File "/home/wen/Documents/HJJ/s2anet/mmdet/core/init.py", line 1, in
from .anchor import * # noqa: F401, F403
File "/home/wen/Documents/HJJ/s2anet/mmdet/core/anchor/init.py", line 2, in
from .anchor_target import anchor_inside_flags, anchor_target, unmap, images_to_levels
File "/home/wen/Documents/HJJ/s2anet/mmdet/core/anchor/anchor_target.py", line 3, in
from ..bbox import PseudoSampler, assign_and_sample, bbox2delta, build_assigner
File "/home/wen/Documents/HJJ/s2anet/mmdet/core/bbox/init.py", line 1, in
from .assigners import AssignResult, BaseAssigner, MaxIoUAssigner
File "/home/wen/Documents/HJJ/s2anet/mmdet/core/bbox/assigners/init.py", line 1, in
from .approx_max_iou_assigner import ApproxMaxIoUAssigner
File "/home/wen/Documents/HJJ/s2anet/mmdet/core/bbox/assigners/approx_max_iou_assigner.py", line 3, in
from ..geometry import bbox_overlaps
File "/home/wen/Documents/HJJ/s2anet/mmdet/core/bbox/geometry.py", line 3, in
from mmdet.ops.box_iou_rotated import box_iou_rotated
File "/home/wen/Documents/HJJ/s2anet/mmdet/ops/init.py", line 2, in
from .dcn import (DeformConv, DeformConvPack, DeformRoIPooling,
File "/home/wen/Documents/HJJ/s2anet/mmdet/ops/dcn/init.py", line 1, in
from .deform_conv import (DeformConv, DeformConvPack, ModulatedDeformConv,
File "/home/wen/Documents/HJJ/s2anet/mmdet/ops/dcn/deform_conv.py", line 10, in
from . import deform_conv_cuda
ImportError: /home/wen/Documents/HJJ/s2anet/mmdet/ops/dcn/deform_conv_cuda.cpython-37m-x86_64-linux-gnu.so: undefined symbol: _ZN3c1011CPUTensorIdEv
I have got the results on DOTA1.5, but the online evaluation server does not work now. I wonder if there any way to evaluate my results.
Sent from PPHub
Hi,when i set "anchor_ratios=[0.5, 2/3, 1.0, 3/2, 2]", there is some error, so how can i set multi anchor_ratios in s2anet?
The error log is:
2020-10-15 14:54:19,828 - INFO - Distributed training: False
2020-10-15 14:54:20,415 - INFO - load model from: torchvision://resnet101
2020-10-15 14:54:20,778 - WARNING - The model and loaded state dict do not match exactly
unexpected key in source state_dict: fc.weight, fc.bias
2020-10-15 14:54:25,094 - INFO - Start running, host: root@c382926e5c92, work_dir: /user/lsc/workspace/s2anet/work_dirs/match_1015_3
2020-10-15 14:54:25,094 - INFO - workflow: [('train', 1)], max: 36 epochs
Traceback (most recent call last):
File "tools/train.py", line 109, in
main()
File "tools/train.py", line 105, in main
logger=logger)
File "/user/lsc/workspace/s2anet/mmdet/apis/train.py", line 60, in train_detector
_non_dist_train(model, dataset, cfg, validate=validate)
File "/user/lsc/workspace/s2anet/mmdet/apis/train.py", line 232, in _non_dist_train
runner.run(data_loaders, cfg.workflow, cfg.total_epochs)
File "/root/anaconda3/envs/s2net/lib/python3.6/site-packages/mmcv/runner/runner.py", line 358, in run
epoch_runner(data_loaders[i], **kwargs)
File "/root/anaconda3/envs/s2net/lib/python3.6/site-packages/mmcv/runner/runner.py", line 264, in train
self.model, data_batch, train_mode=True, **kwargs)
File "/user/lsc/workspace/s2anet/mmdet/apis/train.py", line 38, in batch_processor
losses = model(**data)
File "/root/anaconda3/envs/s2net/lib/python3.6/site-packages/torch/nn/modules/module.py", line 722, in _call_impl
result = self.forward(*input, **kwargs)
File "/root/anaconda3/envs/s2net/lib/python3.6/site-packages/torch/nn/parallel/data_parallel.py", line 153, in forward
return self.module(*inputs[0], **kwargs[0])
File "/root/anaconda3/envs/s2net/lib/python3.6/site-packages/torch/nn/modules/module.py", line 722, in _call_impl
result = self.forward(*input, **kwargs)
File "/user/lsc/workspace/s2anet/mmdet/core/fp16/decorators.py", line 49, in new_func
return old_func(*args, **kwargs)
File "/user/lsc/workspace/s2anet/mmdet/models/detectors/base.py", line 100, in forward
return self.forward_train(img, img_meta, **kwargs)
File "/user/lsc/workspace/s2anet/mmdet/models/detectors/s2anet.py", line 66, in forward_train
outs = self.rbox_head(x)
File "/root/anaconda3/envs/s2net/lib/python3.6/site-packages/torch/nn/modules/module.py", line 722, in _call_impl
result = self.forward(*input, **kwargs)
File "/user/lsc/workspace/s2anet/mmdet/models/anchor_heads/s2anet_head.py", line 369, in forward
return multi_apply(self.forward_single, feats, self.anchor_strides)
File "/user/lsc/workspace/s2anet/mmdet/core/utils/misc.py", line 24, in multi_apply
return tuple(map(list, zip(*map_results)))
File "/user/lsc/workspace/s2anet/mmdet/models/anchor_heads/s2anet_head.py", line 339, in forward_single
self.target_stds)
File "/user/lsc/workspace/s2anet/mmdet/models/anchor_heads/s2anet_head.py", line 45, in bbox_decode
wh_ratio_clip=1e-6)
File "/user/lsc/workspace/s2anet/mmdet/core/bbox/transforms_rbox.py", line 70, in delta2rbox
Rroi_x = (Rrois[:, 0]).unsqueeze(1).expand_as(dx)
RuntimeError: The expanded size of the tensor (16384) must match the existing size (81920) at non-singleton dimension 0. Target sizes: [16384, 1]. Tensor sizes: [81920, 1]
hi, I found there were many boxes after I run demo_inference.py. I think nms should be added. Thank you.
Dear @csuhan, I cant see where the config file of s2anet is ?
Hi, thanks for the great contribution!
I would like to ask whether it's possible to make the bbox loss heading irrelevant. I.e., different orders of four corners points are equivalent. I.e., the degree of prediction is -pi to pi?
Thank you!
when install with python setup.py develop
, an error occurred as follow:
building 'mmdet.ops.box_iou_rotated.box_iou_rotated_C' extension
gcc -pthread -B /opt/conda/compiler_compat -Wl,--sysroot=/ -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -fPIC -DWITH_CUDA -I/opt/conda/lib/python3.6/site-packages/torch/include -I/opt/conda/lib/python3.6/site-packages/torch/include/torch/csrc/api/include -I/opt/conda/lib/python3.6/site-packages/torch/include/TH -I/opt/conda/lib/python3.6/site-packages/torch/include/THC -I'/usr/local/cuda'/include -I/opt/conda/include/python3.6m -c mmdet/ops/box_iou_rotated/src/box_iou_rotated_cpu.cpp -o build/temp.linux-x86_64-3.6/mmdet/ops/box_iou_rotated/src/box_iou_rotated_cpu.o -DTORCH_API_INCLUDE_EXTENSION_H -DTORCH_EXTENSION_NAME=box_iou_rotated_C -D_GLIBCXX_USE_CXX11_ABI=0 -std=c++11
cc1plus: warning: command line option ‘-Wstrict-prototypes’ is valid for C/ObjC but not for C++
mmdet/ops/box_iou_rotated/src/box_iou_rotated_cpu.cpp: In function ‘void box_iou_rotated_cpu_kernel(const at::Tensor&, const at::Tensor&, at::Tensor&)’:
mmdet/ops/box_iou_rotated/src/box_iou_rotated_cpu.cpp:25:31: error: expected primary-expression before ‘>’ token
boxes1[i].data_ptr<T>(), boxes2[j].data_ptr<T>());
^
mmdet/ops/box_iou_rotated/src/box_iou_rotated_cpu.cpp:25:33: error: expected primary-expression before ‘)’ token
boxes1[i].data_ptr<T>(), boxes2[j].data_ptr<T>());
^
mmdet/ops/box_iou_rotated/src/box_iou_rotated_cpu.cpp:25:56: error: expected primary-expression before ‘>’ token
boxes1[i].data_ptr<T>(), boxes2[j].data_ptr<T>());
^
mmdet/ops/box_iou_rotated/src/box_iou_rotated_cpu.cpp:25:58: error: expected primary-expression before ‘)’ token
boxes1[i].data_ptr<T>(), boxes2[j].data_ptr<T>());
^
error: command 'gcc' failed with exit status 1
I kept your settings completely unchanged, and experimented on the DOTA dataset, and found that the loss became nan.
When I reduced the lr, I found that the loss did not converge very well, and after training for several epochs, it will become very large until nan
Hello, I configured the multi-scale dataset, used the DOTA1.5 tag, and modified the num_classes configuration, but the other configurations were not modified. When I was training, loss dropped at the beginning, but suddenly became NaN. I want to know if this is due to a code problem or my wrong dataset configuration.
Using the dota1.0 dataset, I can train well.Thanks for your attention and reply!
Hello,
In the arxiv manuscript, I do not understand how ARF works
EQ 5 the Y is calculated as the ARF output, but in EQ 6 the x\hat is the pooled output. Is this x\hat supposed to be y\hat or I misunderstood it?
It seems like the ARF is trying to rotate a kernel and compute how the feature map matching different orientation of this filter. If one filter response is high it means the local feature is highly possible aligned in this direction. Am I getting this correctly? Then why should we sum up the output like eq5, rather than keep them in different channels and find the maximum?
For EQ.5 when the F rotates, it is misaligned with X. How to compute eq5. By interpolation?
4.I don't understand why 256 channel feature map will become 32 channel feature map after pooling. Could you explain it?
I think my problems are somewhat related. Maybe I missed some fundamental knowledge in NN.
Thanks for your time and contribution!
Hi, I've obtained the same results reported in paper on hrsc2016 with s2anet.
But detection results with RetinaNet are not good enough, what's wong with my configs:
# model settings
model = dict(
type='RBoxRetinaNet',
pretrained='torchvision://resnet50',
backbone=dict(
type='ResNet',
depth=50,
num_stages=4,
out_indices=(0, 1, 2, 3),
frozen_stages=1,
style='pytorch'),
neck=dict(
type='FPN',
in_channels=[256, 512, 1024, 2048],
out_channels=256,
start_level=1,
add_extra_convs=True,
num_outs=5),
rbox_head=dict(
type='RBoxRetinaHead',
num_classes=2,
in_channels=256,
stacked_convs=4,
feat_channels=256,
octave_base_scale=4,
scales_per_octave=3,
anchor_ratios=[0.5, 1.0, 2.0],
anchor_strides=[8, 16, 32, 64, 128],
target_means=[.0, .0, .0, .0, .0],
target_stds=[1.0, 1.0, 1.0, 1.0, 1.0],
loss_cls=dict(
type='FocalLoss',
use_sigmoid=True,
gamma=2.0,
alpha=0.25,
loss_weight=1.0),
loss_bbox=dict(type='SmoothL1Loss', beta=0.11, loss_weight=1.0)))
# training and testing settings
train_cfg = dict(
# anchor_target_type='hbb_obb_rbox_overlap',
assigner=dict(
type='MaxIoUAssigner',
# type='MaxIoUAssignerRbox',
pos_iou_thr=0.5,
neg_iou_thr=0.4,
min_pos_iou=0,
ignore_iof_thr=-1),
allowed_border=-1,
pos_weight=-1,
debug=False)
test_cfg = dict(
nms_pre=2000,
min_bbox_size=0,
score_thr=0.05,
nms=dict(type='nms_rotated', iou_thr=0.1),#15fps
max_per_img=2000)
# dataset settings
dataset_type = 'HRSC2016Dataset'
data_root = 'data/HRSC2016/'
img_norm_cfg = dict(
mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375], to_rgb=True)
train_pipeline = [
dict(type='LoadImageFromFile'),
dict(type='LoadAnnotations', with_bbox=True),
dict(type='RotatedResize', img_scale=(800, 800), keep_ratio=True),
dict(type='RotatedRandomFlip', flip_ratio=0.5),
dict(type='RandomRotate', rate=0.5, angles=[30, 60, 90, 120, 150], auto_bound=False),
dict(type='Normalize', **img_norm_cfg),
dict(type='Pad', size_divisor=32),
dict(type='DefaultFormatBundle'),
dict(type='Collect', keys=['img', 'gt_bboxes', 'gt_labels']),
]
test_pipeline = [
dict(type='LoadImageFromFile'),
dict(
type='MultiScaleFlipAug',
img_scale=(800, 800),
flip=False,
transforms=[
dict(type='RotatedResize',img_scale=(800, 800), keep_ratio=True),
dict(type='RotatedRandomFlip'),
dict(type='Normalize', **img_norm_cfg),
dict(type='Pad', size_divisor=32),
dict(type='ImageToTensor', keys=['img']),
dict(type='Collect', keys=['img']),
])
]
data = dict(
imgs_per_gpu=2,
workers_per_gpu=2,
train=dict(
type=dataset_type,
ann_file=data_root + 'ImageSets/train.json',
img_prefix=data_root + 'Train/images/',
pipeline=train_pipeline),
val=dict(
type=dataset_type,
ann_file=data_root + 'ImageSets/val.json',
img_prefix=data_root + 'Val/images/',
pipeline=test_pipeline),
test=dict(
type=dataset_type,
ann_file=data_root + 'ImageSets/test.json',
img_prefix=data_root + 'Test/images/',
pipeline=test_pipeline))
# optimizer
optimizer = dict(type='SGD', lr=0.01, momentum=0.9, weight_decay=0.0001)
# optimizer = dict(type='Adam', lr=1e-4)
optimizer_config = dict(grad_clip=dict(max_norm=35, norm_type=2))
# learning policy
lr_config = dict(
policy='step',
warmup='linear',
warmup_iters=500,
warmup_ratio=1.0 / 3,
step=[24, 33])
checkpoint_config = dict(interval=12)
# yapf:disable
log_config = dict(
interval=50,
hooks=[
dict(type='TextLoggerHook'),
# dict(type='TensorboardLoggerHook')
])
# yapf:enable
# runtime settings
total_epochs = 36
dist_params = dict(backend='nccl')
log_level = 'INFO'
work_dir = './work_dirs/retinanet_obb_r50_fpn_1x_hrsc2016/'
load_from = None
resume_from = None
workflow = [('train', 1)]
Big changes! Following mmdetection v2, we made a lot of changes to our code. Does it mean the codes support mmdetectionv2
Hello, thank you for your excellent work.
I have achieved good performance on HRSC2016 with your implementation by adding an extra anchor refinement module(Refined-RetinaNet), but there are many redundant boxes in the detection results. I don't know whether it is caused by your rbox representation. And this may be the reason for the poor performance achieved by RetinaNet here?
In addition, I implemented a retinanet for polygon prediction, and there are still many redundant rotated boxes with high-confidence . Does the problem come from the data loader?
Traceback (most recent call last):
File "./train.py", line 108, in <module>
main()
File "./train.py", line 104, in main
logger=logger)
File "/home/spsv/Codes/lph/hjj/s2anet/mmdet/apis/train.py", line 58, in train_detector
_dist_train(model, dataset, cfg, validate=validate)
File "/home/spsv/Codes/lph/hjj/s2anet/mmdet/apis/train.py", line 192, in _dist_train
runner.run(data_loaders, cfg.workflow, cfg.total_epochs)
File "/home/spsv/miniconda3/envs/s2anet/lib/python3.7/site-packages/mmcv/runner/runner.py", line 358, in run
epoch_runner(data_loaders[i], **kwargs)
File "/home/spsv/miniconda3/envs/s2anet/lib/python3.7/site-packages/mmcv/runner/runner.py", line 274, in train
self.call_hook('after_train_epoch')
File "/home/spsv/miniconda3/envs/s2anet/lib/python3.7/site-packages/mmcv/runner/runner.py", line 229, in call_hook
getattr(hook, fn_name)(self)
File "/home/spsv/Codes/lph/hjj/s2anet/mmdet/core/evaluation/eval_hooks.py", line 64, in after_train_epoch
self.evaluate(runner, results)
File "/home/spsv/Codes/lph/hjj/s2anet/mmdet/core/evaluation/eval_hooks.py", line 92, in evaluate
bboxes = np.vstack([bboxes, ann['bboxes_ignore']])
File "<__array_function__ internals>", line 6, in vstack
File "/home/spsv/miniconda3/envs/s2anet/lib/python3.7/site-packages/numpy/core/shape_base.py", line 283, in vstack
return _nx.concatenate(arrs, 0)
File "<__array_function__ internals>", line 6, in concatenate
ValueError: all the input array dimensions for the concatenation axis must match exactly, but along dimension 1, the array at index 0 has size 5 and the array at index 1 has size 0
Traceback (most recent call last):
File "/home/spsv/miniconda3/envs/s2anet/lib/python3.7/runpy.py", line 193, in _run_module_as_main
"__main__", mod_spec)
File "/home/spsv/miniconda3/envs/s2anet/lib/python3.7/runpy.py", line 85, in _run_code
exec(code, run_globals)
File "/home/spsv/miniconda3/envs/s2anet/lib/python3.7/site-packages/torch/distributed/launch.py", line 253, in <module>
main()
File "/home/spsv/miniconda3/envs/s2anet/lib/python3.7/site-packages/torch/distributed/launch.py", line 249, in main
cmd=cmd)
subprocess.CalledProcessError: Command '['/home/spsv/miniconda3/envs/s2anet/bin/python', '-u', './train.py', '--local_rank=3', '/home/spsv/Codes/lph/hjj/s2anet/configs/dota/hjj.py', '--launcher', 'pytorch', '--validate']' returned non-zero exit status 1.
What should I do to fix this problem?
anchors refined by FAM are transformed to the ODM to regresssion to get the anchors with higher accuracy?
What should I do about it? my dataset format is 9 column, There is no last column difficulty
s2anet/mmdet/core/bbox/transforms_rbox.py
Line 350 in 19bb412
First, thx for this excellent repo.
How could I print loss in test stage.
I changed result = model(return_loss = False, xxxxx)
toresult = model(return_loss =True, xxxxx)
in line 31 of test.py. But run error.
looking forward to your reply.
Hi, During training ,when i set the "imgs_per_gpu=2, workers_per_gpu=2" in s2anet's config file, the error occurred. But when i change the two parameters to "imgs_per_gpu=1, workers_per_gpu=1", it works. How can i solve the problem?
version `libcudart.so.10.1' not found
when I run "python setup.py develop" , I meet the error. How I can do to solve the problem!
(s2anet) dl@dl-System-Product-Name:/media/dl/本地磁盘/s2anet$ python setup.py develop
running develop
running egg_info
writing mmdet.egg-info/PKG-INFO
writing dependency_links to mmdet.egg-info/dependency_links.txt
writing requirements to mmdet.egg-info/requires.txt
writing top-level names to mmdet.egg-info/top_level.txt
reading manifest file 'mmdet.egg-info/SOURCES.txt'
writing manifest file 'mmdet.egg-info/SOURCES.txt'
running build_ext
building 'mmdet.ops.nms.soft_nms_cpu' extension
Emitting ninja build file /media/dl/本地磁盘/s2anet/build/temp.linux-x86_64-3.7/build.ninja...
Compiling objects...
Allowing ninja to set a default number of workers... (overridable by setting the environment variable MAX_JOBS=N)
ninja: no work to do.
g++ -pthread -shared -B /home/dl/anaconda3/envs/s2anet/compiler_compat -L/home/dl/anaconda3/envs/s2anet/lib -Wl,-rpath=/home/dl/anaconda3/envs/s2anet/lib -Wl,--no-as-needed -Wl,--sysroot=/ /media/dl/本地磁盘/s2anet/build/temp.linux-x86_64-3.7/mmdet/ops/nms/src/soft_nms_cpu.o -o build/lib.linux-x86_64-3.7/mmdet/ops/nms/soft_nms_cpu.cpython-37m-x86_64-linux-gnu.so
building 'mmdet.ops.nms.nms_cpu' extension
Emitting ninja build file /media/dl/本地磁盘/s2anet/build/temp.linux-x86_64-3.7/build.ninja...
Compiling objects...
Allowing ninja to set a default number of workers... (overridable by setting the environment variable MAX_JOBS=N)
ninja: no work to do.
g++ -pthread -shared -B /home/dl/anaconda3/envs/s2anet/compiler_compat -L/home/dl/anaconda3/envs/s2anet/lib -Wl,-rpath=/home/dl/anaconda3/envs/s2anet/lib -Wl,--no-as-needed -Wl,--sysroot=/ /media/dl/本地磁盘/s2anet/build/temp.linux-x86_64-3.7/mmdet/ops/nms/src/nms_cpu.o -L/home/dl/anaconda3/envs/s2anet/lib/python3.7/site-packages/torch/lib -L/usr/local/cuda-10.2/lib64 - -ltorch -ltorch_cpu -ltorch_python -lcudart -lc10_cuda -ltorch_cuda -o build/lib.linux-x86_64-3.7/mmdet/ops/nms/nms_cpu.cpython-37m-x86_64-linux-gnu.so
building 'mmdet.ops.nms.nms_cuda' extension
Emitting ninja build file /media/dl/本地磁盘/s2anet/build/temp.linux-x86_64-3.7/build.ninja...
Compiling objects...
Allowing ninja to set a default number of workers... (overridable by setting the environment variable MAX_JOBS=N)
[1/1] c++ -MMD -MF '/media/dl/本地磁盘/s2anet/build/temp.linux-x86_64-3.7/mmdet/ops/nms/src/nms_cuda.o'.d -pthread -B /home/dl/anaconda3/envs/s2anet/compiler_compat -Wl,--sysroot=/ -Wsigmpare -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -fPIC -DWITH_CUDA -I/home/dl/anaconda3/envs/s2anet/lib/python3.7/site-packages/torch/include -I/home/dl/anaconda3/envs/s2anet/lib/python3.7/site-packages/torch/include/torch/csrc/api/include -I/home/dl/anaconda3/envs/s2anet/lib/python3.7/site-packages/torch/include/TH -I/home/dl/anaconda3/envs/s2anet/lib/python3.7/site-packages/torch/include/THC -I/usr/local/cuda-10.2/include -I/home/dl/anaconda3/envs/s2anet/include/python3.7m -c -c '/media/dl/本地磁盘/s2anet/mmdet/ops/nms/src/nms_cuda.cpp' -o '/m/dl/本地磁盘/s2anet/build/temp.linux-x86_64-3.7/mmdet/ops/nms/src/nms_cuda.o' -DTORCH_API_INCLUDE_EXTENSION_H -DTORCH_EXTENSION_NAME=nms_cuda -D_GLIBCXX_USE_CXX11_ABI=0 -std=c++14
FAILED: /media/dl/本地磁盘/s2anet/build/temp.linux-x86_64-3.7/mmdet/ops/nms/src/nms_cuda.o
c++ -MMD -MF '/media/dl/本地磁盘/s2anet/build/temp.linux-x86_64-3.7/mmdet/ops/nms/src/nms_cuda.o'.d -pthread -B /home/dl/anaconda3/envs/s2anet/compiler_compat -Wl,--sysroot=/ -Wsign-comp-DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -fPIC -DWITH_CUDA -I/home/dl/anaconda3/envs/s2anet/lib/python3.7/site-packages/torch/include -I/home/dl/anaconda3/envs/s2anet/lib/python3.7/site-packages/torch/include/torch/csrc/api/include -I/home/dl/anaconda3/envs/s2anet/lib/python3.7/site-packages/torch/include/TH -I/home/dl/anaconda3/envs/s2anet/lib/python3.7/site-packages/torch/include/THC -I/usr/local/cuda-10.2/include -I/home/dl/anaconda3/envs/s2anet/include/python3.7m -c -c '/media/dl/本地磁盘/s2anet/mmdet/ops/nms/src/nms_cuda.cpp' -o '/media/d磁盘/s2anet/build/temp.linux-x86_64-3.7/mmdet/ops/nms/src/nms_cuda.o' -DTORCH_API_INCLUDE_EXTENSION_H -DTORCH_EXTENSION_NAME=nms_cuda -D_GLIBCXX_USE_CXX11_ABI=0 -std=c++14
cc1plus: warning: command line option ‘-Wstrict-prototypes’ is valid for C/ObjC but not for C++
In file included from /home/dl/anaconda3/envs/s2anet/lib/python3.7/site-packages/torch/include/ATen/Parallel.h:149:0,
from /home/dl/anaconda3/envs/s2anet/lib/python3.7/site-packages/torch/include/torch/csrc/api/include/torch/utils.h:3,
from /home/dl/anaconda3/envs/s2anet/lib/python3.7/site-packages/torch/include/torch/csrc/api/include/torch/nn/cloneable.h:5,
from /home/dl/anaconda3/envs/s2anet/lib/python3.7/site-packages/torch/include/torch/csrc/api/include/torch/nn.h:3,
from /home/dl/anaconda3/envs/s2anet/lib/python3.7/site-packages/torch/include/torch/csrc/api/include/torch/all.h:7,
from /home/dl/anaconda3/envs/s2anet/lib/python3.7/site-packages/torch/include/torch/extension.h:4,
from /media/dl/本地磁盘/s2anet/mmdet/ops/nms/src/nms_cuda.cpp:2:
/home/dl/anaconda3/envs/s2anet/lib/python3.7/site-packages/torch/include/ATen/ParallelOpenMP.h:84:0: warning: ignoring #pragma omp parallel [-Wunknown-pragmas]
#pragma omp parallel for if ((end - begin) >= grain_size)
/media/dl/本地磁盘/s2anet/mmdet/ops/nms/src/nms_cuda.cpp: In function ‘at::Tensor nms(const at::Tensor&, float)’:
/media/dl/本地磁盘/s2anet/mmdet/ops/nms/src/nms_cuda.cpp:4:39: warning: ‘at::DeprecatedTypeProperties& at::Tensor::type() const’ is deprecated: Tensor.type() is deprecated. Instead use Tr.options(), which in many cases (e.g. in a constructor) is a drop-in replacement. If you were using data from type(), that is now available from Tensor itself, so instead of tensor.type().scalar_type(), use tensor.scalar_type() instead and instead of tensor.type().backend() use tensor.device(). [-Wdeprecated-declarations]
#define CHECK_CUDA(x) AT_CHECK(x.type().is_cuda(), #x, " must be a CUDAtensor ")
^
/media/dl/本地磁盘/s2anet/mmdet/ops/nms/src/nms_cuda.cpp:9:3: note: in expansion of macro ‘CHECK_CUDA’
CHECK_CUDA(dets);
^~~~~~~~~~
In file included from /home/dl/anaconda3/envs/s2anet/lib/python3.7/site-packages/torch/include/ATen/Tensor.h:3:0,
from /home/dl/anaconda3/envs/s2anet/lib/python3.7/site-packages/torch/include/ATen/Context.h:4,
from /home/dl/anaconda3/envs/s2anet/lib/python3.7/site-packages/torch/include/ATen/ATen.h:5,
from /home/dl/anaconda3/envs/s2anet/lib/python3.7/site-packages/torch/include/torch/csrc/api/include/torch/types.h:3,
from /home/dl/anaconda3/envs/s2anet/lib/python3.7/site-packages/torch/include/torch/csrc/api/include/torch/data/dataloader_options.h:4,
from /home/dl/anaconda3/envs/s2anet/lib/python3.7/site-packages/torch/include/torch/csrc/api/include/torch/data/dataloader/base.h:3,
from /home/dl/anaconda3/envs/s2anet/lib/python3.7/site-packages/torch/include/torch/csrc/api/include/torch/data/dataloader/stateful.h:3,
from /home/dl/anaconda3/envs/s2anet/lib/python3.7/site-packages/torch/include/torch/csrc/api/include/torch/data/dataloader.h:3,
from /home/dl/anaconda3/envs/s2anet/lib/python3.7/site-packages/torch/include/torch/csrc/api/include/torch/data.h:3,
from /home/dl/anaconda3/envs/s2anet/lib/python3.7/site-packages/torch/include/torch/csrc/api/include/torch/all.h:4,
from /home/dl/anaconda3/envs/s2anet/lib/python3.7/site-packages/torch/include/torch/extension.h:4,
from /media/dl/本地磁盘/s2anet/mmdet/ops/nms/src/nms_cuda.cpp:2:
/home/dl/anaconda3/envs/s2anet/lib/python3.7/site-packages/torch/include/ATen/core/TensorBody.h:268:30: note: declared here
DeprecatedTypeProperties & type() const {
^~~~
/media/dl/本地磁盘/s2anet/mmdet/ops/nms/src/nms_cuda.cpp:4:23: error: ‘AT_CHECK’ was not declared in this scope
#define CHECK_CUDA(x) AT_CHECK(x.type().is_cuda(), #x, " must be a CUDAtensor ")
^
/media/dl/本地磁盘/s2anet/mmdet/ops/nms/src/nms_cuda.cpp:9:3: note: in expansion of macro ‘CHECK_CUDA’
CHECK_CUDA(dets);
^~~~~~~~~~
/media/dl/本地磁盘/s2anet/mmdet/ops/nms/src/nms_cuda.cpp:4:23: note: suggested alternative: ‘DCHECK’
#define CHECK_CUDA(x) AT_CHECK(x.type().is_cuda(), #x, " must be a CUDAtensor ")
^
/media/dl/本地磁盘/s2anet/mmdet/ops/nms/src/nms_cuda.cpp:9:3: note: in expansion of macro ‘CHECK_CUDA’
CHECK_CUDA(dets);
^~~~~~~~~~
ninja: build stopped: subcommand failed.
Traceback (most recent call last):
File "/home/dl/anaconda3/envs/s2anet/lib/python3.7/site-packages/torch/utils/cpp_extension.py", line 1515, in _run_ninja_build
env=env)
File "/home/dl/anaconda3/envs/s2anet/lib/python3.7/subprocess.py", line 512, in run
output=stdout, stderr=stderr)
subprocess.CalledProcessError: Command '['ninja', '-v']' returned non-zero exit status 1.
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "setup.py", line 228, in
zip_safe=False)
File "/home/dl/anaconda3/envs/s2anet/lib/python3.7/site-packages/setuptools/init.py", line 163, in setup
return distutils.core.setup(**attrs)
File "/home/dl/anaconda3/envs/s2anet/lib/python3.7/distutils/core.py", line 148, in setup
dist.run_commands()
File "/home/dl/anaconda3/envs/s2anet/lib/python3.7/distutils/dist.py", line 966, in run_commands
self.run_command(cmd)
File "/home/dl/anaconda3/envs/s2anet/lib/python3.7/distutils/dist.py", line 985, in run_command
cmd_obj.run()
File "/home/dl/anaconda3/envs/s2anet/lib/python3.7/site-packages/setuptools/command/develop.py", line 38, in run
self.install_for_development()
File "/home/dl/anaconda3/envs/s2anet/lib/python3.7/site-packages/setuptools/command/develop.py", line 140, in install_for_development
self.run_command('build_ext')
File "/home/dl/anaconda3/envs/s2anet/lib/python3.7/distutils/cmd.py", line 313, in run_command
self.distribution.run_command(command)
File "/home/dl/anaconda3/envs/s2anet/lib/python3.7/distutils/dist.py", line 985, in run_command
cmd_obj.run()
File "/home/dl/anaconda3/envs/s2anet/lib/python3.7/site-packages/setuptools/command/build_ext.py", line 87, in run
_build_ext.run(self)
File "/home/dl/anaconda3/envs/s2anet/lib/python3.7/site-packages/Cython/Distutils/old_build_ext.py", line 186, in run
_build_ext.build_ext.run(self)
File "/home/dl/anaconda3/envs/s2anet/lib/python3.7/distutils/command/build_ext.py", line 340, in run
self.build_extensions()
File "/home/dl/anaconda3/envs/s2anet/lib/python3.7/site-packages/torch/utils/cpp_extension.py", line 649, in build_extensions
build_ext.build_extensions(self)
File "/home/dl/anaconda3/envs/s2anet/lib/python3.7/site-packages/Cython/Distutils/old_build_ext.py", line 195, in build_extensions
_build_ext.build_ext.build_extensions(self)
File "/home/dl/anaconda3/envs/s2anet/lib/python3.7/distutils/command/build_ext.py", line 449, in build_extensions
self._build_extensions_serial()
File "/home/dl/anaconda3/envs/s2anet/lib/python3.7/distutils/command/build_ext.py", line 474, in _build_extensions_serial
self.build_extension(ext)
File "/home/dl/anaconda3/envs/s2anet/lib/python3.7/site-packages/setuptools/command/build_ext.py", line 208, in build_extension
_build_ext.build_extension(self, ext)
File "/home/dl/anaconda3/envs/s2anet/lib/python3.7/distutils/command/build_ext.py", line 534, in build_extension
depends=ext.depends)
File "/home/dl/anaconda3/envs/s2anet/lib/python3.7/site-packages/torch/utils/cpp_extension.py", line 478, in unix_wrap_ninja_compile
with_cuda=with_cuda)
File "/home/dl/anaconda3/envs/s2anet/lib/python3.7/site-packages/torch/utils/cpp_extension.py", line 1233, in _write_ninja_file_and_compile_objects
error_prefix='Error compiling objects for extension')
File "/home/dl/anaconda3/envs/s2anet/lib/python3.7/site-packages/torch/utils/cpp_extension.py", line 1529, in _run_ninja_build
raise RuntimeError(message)
RuntimeError: Error compiling objects for extension
python tools/test.py configs/dota/s2anet_r50_fpn_1x.py
work_dirs/s2anet_r50_fpn_1x/epoch_12.pth \
--out work_dirs/ s2anet_r50_fpn_1x/res.pkl
how to make res.pkl?
when I run python tools/test.py configs/dota/s2anet_r50_fpn_1x.py /home/lichenglong/s2anet/configs/dota/s2anet_r50_fpn_1x_ms_rotate_epoch_12_20200815.pth --out /home/lichenglong/s2anet/work_dirs/s2anet_r50_fpn_1x/res.pkl --show
there is an AssertionError : assert bboxes.shape[1] == 4 or bboxes.shape[1] == 5
the details are as follows:
Is there anyone who has also encountered the same problem?I need for your help,tanks!
Hello, I complied in the environment with python36 pytorch1.5 cuda 9.2 and met the problem as follow:
nvcc fatal : Unsupported gpu architecture 'compute_75'
could you give some advices or solutions?
Hi, I am training s2anet with my custom dataset for which I need to estimate oriented bounding boxes. I have modified input resolution and anchor scales as per my requirement along with support for new dataset, following is logs for one of the epoch. Could you let me know if something else needs to be modified for experimenting with custom dataset?
loss_fam_cls: nan, loss_fam_bbox: nan, loss_odm_cls: 0.3204, loss_odm_bbox: nan
训练hrsc2016出现梯度爆炸问题,请问是怎么解决的呢?
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.