Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
weixin_47816946
simple-faster-rcnn-pytorch
提交
37b85be6
S
simple-faster-rcnn-pytorch
项目概览
weixin_47816946
/
simple-faster-rcnn-pytorch
与 Fork 源项目一致
从无法访问的项目Fork
通知
8
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
S
simple-faster-rcnn-pytorch
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
37b85be6
编写于
12月 18, 2017
作者:
C
chenyuntc
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix fetal fault in eval
上级
e436f60b
变更
5
隐藏空白更改
内联
并排
Showing
5 changed file
with
25 addition
and
25 deletion
+25
-25
data/dataset.py
data/dataset.py
+1
-1
model/faster_rcnn.py
model/faster_rcnn.py
+3
-3
model/faster_rcnn_vgg16.py
model/faster_rcnn_vgg16.py
+11
-11
train.py
train.py
+2
-2
trainer.py
trainer.py
+8
-8
未找到文件。
data/dataset.py
浏览文件 @
37b85be6
...
...
@@ -89,7 +89,7 @@ class Dataset():
#TODO: check whose stride is negative to fix this instead copy all
# some of the strides of a given numpy array are negative.
# This is currently not supported, but will be added in future releases.
return
img
.
copy
(),
bbox
.
copy
(),
label
.
copy
(),
scale
,
ori_img
return
img
.
copy
(),
bbox
.
copy
(),
label
.
copy
(),
scale
,
ori_img
def
__len__
(
self
):
return
len
(
self
.
db
)
...
...
model/faster_rcnn.py
浏览文件 @
37b85be6
...
...
@@ -370,13 +370,13 @@ class FasterRCNN(nn.Module):
self
.
lr3
=
self
.
optimizer
.
param_groups
[
2
][
'lr'
]
=
lr3
return
self
.
optimizer
def
get_optimizer
(
self
):
def
get_optimizer
_
(
self
):
self
.
lr1
=
lr
=
opt
.
lr1
params
=
[
param
for
param
in
self
.
parameters
()
if
param
.
requires_grad
]
self
.
optimizer
=
t
.
optim
.
SGD
(
params
,
lr
=
lr
,
momentum
=
0.9
,
weight_decay
=
0.0005
)
return
self
.
optimizer
def
get_optimizer
_
(
self
):
def
get_optimizer
(
self
):
lr
=
opt
.
lr1
self
.
lr1
=
lr
params
=
[]
...
...
@@ -385,7 +385,7 @@ class FasterRCNN(nn.Module):
if
'bias'
in
key
:
params
+=
[{
'params'
:[
value
],
'lr'
:
lr
*
2
,
'weight_decay'
:
0
}]
else
:
params
+=
[{
'params'
:[
value
],
'lr'
:
lr
,
'weight_decay'
:
5e-4
}]
params
+=
[{
'params'
:[
value
],
'lr'
:
lr
,
'weight_decay'
:
opt
.
weight_decay
}]
self
.
optimizer
=
t
.
optim
.
SGD
(
params
,
momentum
=
0.9
)
return
self
.
optimizer
...
...
model/faster_rcnn_vgg16.py
浏览文件 @
37b85be6
...
...
@@ -13,21 +13,15 @@ def decom_vgg16(pretrained=True):
model
=
vgg16
(
pretrained
)
features
=
list
(
model
.
features
)[:
30
]
classifier
=
model
.
classifier
classifier
=
list
(
classifier
)
# delete dropout
del
classifier
[
6
]
del
classifier
[
5
]
del
classifier
[
2
]
classifier
=
nn
.
Sequential
(
*
classifier
)
#
# del classifier._modules['6']
# classifier = list(classifier)
# del the last layer
del
classifier
.
_modules
[
'6'
]
#
冻结前几层的卷积
#
free top3 conv
for
layer
in
features
[:
10
]:
for
p
in
layer
.
parameters
():
p
.
requires_grad
=
False
return
nn
.
Sequential
(
*
features
),
classifier
def
decom_vgg16_chainer
(
pretrained
=
True
):
...
...
@@ -41,6 +35,10 @@ def decom_vgg16_chainer(pretrained=True):
del
classifier
[
5
]
del
classifier
[
2
]
classifier
=
nn
.
Sequential
(
*
classifier
)
# chainer ceil mode = True
for
idx
in
[
4
,
9
,
16
,
23
]:
features
[
idx
].
ceil_mode
=
True
#
# del classifier._modules['6']
...
...
@@ -58,6 +56,8 @@ def decom_vgg16bn(pretrained=True):
classifier
=
model
.
classifier
del
classifier
.
_modules
[
'6'
]
# 冻结前几层的卷积
for
layer
in
features
[:
13
]:
for
p
in
layer
.
parameters
():
...
...
@@ -130,7 +130,7 @@ class FasterRCNNVGG16(FasterRCNN):
min_size
=
600
,
max_size
=
1000
,
ratios
=
[
0.5
,
1
,
2
],
anchor_scales
=
[
8
,
16
,
32
]
):
extractor
,
classifier
=
decom_vgg16
_chainer
(
not
opt
.
load_path
)
extractor
,
classifier
=
decom_vgg16
(
not
opt
.
load_path
)
rpn
=
RegionProposalNetwork
(
512
,
512
,
...
...
train.py
浏览文件 @
37b85be6
...
...
@@ -33,7 +33,7 @@ def eval(dataloader,faster_rcnn,test_num=1000):
if
ii
==
test_num
:
break
result
=
eval_detection_voc
(
pred_bboxes
,
pred_labels
,
pred_
label
s
,
pred_bboxes
,
pred_labels
,
pred_
score
s
,
gt_bboxes
,
gt_labels
,
gt_difficults
,
use_07_metric
=
True
)
return
result
...
...
@@ -70,7 +70,7 @@ def train(**kwargs):
scale
=
at
.
scalar
(
scale
)
img
,
bbox
,
label
=
img
.
cuda
().
float
(),
bbox_
.
cuda
(),
label_
.
cuda
()
img
,
bbox
,
label
=
Variable
(
img
),
Variable
(
bbox
),
Variable
(
label
)
losses
,
rois
=
trainer
.
train_step
(
img
,
bbox
,
label
,
scale
)
losses
=
trainer
.
train_step
(
img
,
bbox
,
label
,
scale
)
if
(
ii
+
1
)
%
opt
.
plot_every
==
0
:
if
os
.
path
.
exists
(
opt
.
debug_file
):
...
...
trainer.py
浏览文件 @
37b85be6
...
...
@@ -140,11 +140,11 @@ class FasterRCNNTrainer(nn.Module):
# I think it's fine to break the computation graph of rois
# Sample RoIs and forward
sample_roi
,
gt_roi_loc
,
gt_roi_label
=
self
.
proposal_target_creator
(
roi
,
at
.
tonumpy
(
bbox
),
at
.
tonumpy
(
label
),
self
.
loc_normalize_mean
,
self
.
loc_normalize_std
)
roi
,
at
.
tonumpy
(
bbox
),
at
.
tonumpy
(
label
),
self
.
loc_normalize_mean
,
self
.
loc_normalize_std
)
self
.
sample_roi
,
self
.
gt_roi_label
=
sample_roi
,
gt_roi_label
#NOTE it's all zero because now it only support for batch=1 now
sample_roi_index
=
t
.
zeros
(
len
(
sample_roi
))
...
...
@@ -199,16 +199,16 @@ class FasterRCNNTrainer(nn.Module):
losses
=
[
rpn_loc_loss
,
rpn_cls_loss
,
roi_loc_loss
,
roi_cls_loss
]
losses
=
losses
+
[
sum
(
losses
)]
return
LossTuple
(
*
losses
)
,
rois
return
LossTuple
(
*
losses
)
def
train_step
(
self
,
imgs
,
bboxes
,
labels
,
scale
):
self
.
optimizer
.
zero_grad
()
losses
,
rois
=
self
.
forward
(
imgs
,
bboxes
,
labels
,
scale
)
losses
=
self
.
forward
(
imgs
,
bboxes
,
labels
,
scale
)
rpn_loc_loss
,
rpn_cls_loss
,
roi_loc_loss
,
roi_cls_loss
,
total_loss
=
losses
total_loss
.
backward
()
self
.
optimizer
.
step
()
self
.
update_meters
(
losses
)
return
losses
,
rois
return
losses
# def visulize(self):
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录