Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
chenych
DETR_pytorch
Commits
03c924bc
Commit
03c924bc
authored
Dec 07, 2023
by
chenych
Browse files
update
parent
1707011e
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
28 additions
and
22 deletions
+28
-22
README.md
README.md
+17
-18
train.sh
train.sh
+7
-2
val.sh
val.sh
+4
-2
No files found.
README.md
View file @
03c924bc
...
...
@@ -4,14 +4,14 @@
## 模型结构
对于输入图像
,
DETR使用传统的CNN backbone来学习2D特征, 并在将其传递到transformer encoder之前用positional encoding对其进行补充和平滑。然后
,
transformer decoder将少量固定数量的学习到的positional embeddings(对象查询)作为输入
,
额外关注encoder输出。将解码器的每个输出embedding传递到预测检测(类和边界框)或“无对象”类的共享前馈网络(FFN)。
对于输入图像
,
DETR使用传统的CNN backbone来学习2D特征, 并在将其传递到transformer encoder之前用positional encoding对其进行补充和平滑。然后
,
transformer decoder将少量固定数量的学习到的positional embeddings(对象查询)作为输入
,
额外关注encoder输出。将解码器的每个输出embedding传递到预测检测(类和边界框)或“无对象”类的共享前馈网络(FFN)。
<div
align=
center
>
<img
src=
"./doc/models.png"
/>
</div>
## 算法原理
DETR将目标检测看作一种set prediction问题
,
并提出了一个十分简洁的目标检测pipeline
,
即CNN提取基础特征
,
送入Transformer做关系建模
,
得到的输出通过二分图匹配算法与图片上的ground truth做匹配。
DETR将目标检测看作一种set prediction问题
,
并提出了一个十分简洁的目标检测pipeline
,
即CNN提取基础特征
,
送入Transformer做关系建模
,
得到的输出通过二分图匹配算法与图片上的ground truth做匹配。
<div
align=
center
>
<img
src=
"./doc/DETR.png"
/>
...
...
@@ -49,13 +49,13 @@ pip install -r requirements.txt
1、关于本项目DCU显卡所需的特殊深度学习库可从光合开发者社区下载安装: https://developer.hpccube.com/tool/
```
DTK软件栈
:
dtk23.04.1
python
:
python3.8
torch
:
1.13.1
torchvision
:
0.14.1
DTK软件栈
:
dtk23.04.1
python
:
python3.8
torch
:
1.13.1
torchvision
:
0.14.1
```
Tips
:
以上dtk软件栈、python、torch等DCU相关工具版本需要严格一一对应
Tips
:
以上dtk软件栈、python、torch等DCU相关工具版本需要严格一一对应
2、其他非特殊库直接按照requirements.txt安装
...
...
@@ -75,7 +75,7 @@ COCO2017
[
标签数据
](
https://github.com/ultralytics/yolov5/releases/download/v1.0/coco2017labels.zip
)
数据集的目录结构如下
:
数据集的目录结构如下
:
```
├── COCO2017
...
...
@@ -88,9 +88,9 @@ COCO2017
│ └── instances_val2017.json
```
训练/验证集数据准备
:
训练/验证集数据准备
:
训练/验证集都是采用的COCO的数据格式
,
如果使用自己的标注数据
,
请先将标注数据转换成COCO的格式
,
并按照上面的目录结构进行存放
训练/验证集都是采用的COCO的数据格式
,
如果使用自己的标注数据
,
请先将标注数据转换成COCO的格式
,
并按照上面的目录结构进行存放
。
## 训练
...
...
@@ -102,9 +102,9 @@ bash train.sh
## 推理
验证前需提前准备好预训练模型
,
并将coco_path设置为当前环境中推理数据的对应地址
,
数据应为COCO数据格式
验证前需提前准备好预训练模型
, 可从 参考资料 中提供的模型下载,
并将coco_path设置为当前环境中推理数据的对应地址
,
数据应为COCO数据格式
。
如果想要查看预测效果(预测结果输出到图片上)
,
请执行(其余参数与训练模型参数需一致
,
详情请根据训练参数配置):
如果想要查看预测效果(预测结果输出到图片上)
,
请执行(其余参数
如backbone等需
与训练模型参数需一致
,
详情请根据训练参数配置):
```
python test.py --pre_trained_model <checkpoint path> --coco_path <coco path>
...
...
@@ -118,19 +118,18 @@ bash val.sh
## result
<div
align=
center
>
<img
src=
"./doc/000000001503.jpg"
/>
</div>
### 精度
在COCO2017的val数据集上进行单卡测试
,
结果如下表所示:
在COCO2017的val数据集上进行
R50 backbone的
单卡测试
,
结果如下表所示:
| name | backbone | schedule |
inf_time |
box AP |
| :------: | :------: | :------: | :------: |
:------: |
| DETR(our) | R50 | 500 |
xxx | xxx
|
|
[
DETR
](
https://dl.fbaipublicfiles.com/detr/detr-r50-e632da11.pth
)
| R50 | 500 |
0.036 |
42.0 |
| name | backbone | schedule | box AP |
| :------: | :------: | :------: | :------: |
| DETR(our) | R50 | 500 |
39.8
|
| DETR | R50 | 500 | 42.0 |
## 应用场景
...
...
train.sh
View file @
03c924bc
...
...
@@ -7,7 +7,12 @@ export USE_MIOPEN_BATCHNORM=1
echo
"Training start ..."
# coco_path是训练数据集地址,数据是coco format
python
-m
torch.distributed.launch
--nproc_per_node
=
4
--use_env
main.py
--coco_path
/path/to/coco
# python -m torch.distributed.launch --nproc_per_node=4 --use_env main.py --coco_path /home/datasets/COCO2017
# python -m torch.distributed.launch --nproc_per_node=4 --use_env main.py --coco_path /path/to/coco
# python -m torch.distributed.launch --nproc_per_node=4 --use_env main.py --coco_path /home/datasets/COCO2017 --epochs 300 > log_detr_2_4_dcu.20231205
python
-m
torch.distributed.launch
--nproc_per_node
=
4
--use_env
main.py
\
--coco_path
/home/datasets/COCO2017
\
--resume
./pretrained_model/detr-r50-e632da11.pth
\
--lr
1e-6
\
--epochs
5
>
log_detr_2_4_dcu.20231205
echo
"Training finished."
val.sh
View file @
03c924bc
...
...
@@ -6,5 +6,7 @@ export USE_MIOPEN_BATCHNORM=1
# resume: 待测试模型地址
# coco_path: 训练数据集地址, 数据是coco format
python main.py
--batch_size
2
--no_aux_loss
--eval
--resume
/path/of/model
--coco_path
/path/of/coco_data
# python main.py --batch_size 2 --no_aux_loss --eval --resume https://dl.fbaipublicfiles.com/detr/detr-r50-e632da11.pth --coco_path /home/datasets/COCO2017
# dcu
# python main.py --batch_size 2 --no_aux_loss --eval --resume ./results/checkpoint.pth --coco_path /home/datasets/COCO2017
# ori
python main.py
--batch_size
2
--no_aux_loss
--eval
--resume
./pretrained_model/detr-r50-e632da11.pth
--coco_path
/home/datasets/COCO2017
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment