소스 검색

use ComposedRCNNTransforms in negatives training example

FlyingQianMM 5 년 전
부모
커밋
6c0de4070c
2개의 변경된 파일45개의 추가작업 그리고 12개의 파일을 삭제
  1. 6 12
      docs/tuning_strategy/detection/negatives_training.md
  2. 39 0
      tutorials/train/detection/test.py

+ 6 - 12
docs/tuning_strategy/detection/negatives_training.md

@@ -41,17 +41,10 @@ from paddlex.det import transforms
 import paddlex as pdx
 
 # 定义训练和验证时的transforms
-train_transforms = transforms.Compose([
-    transforms.RandomHorizontalFlip(),
-    transforms.Normalize(),
-    transforms.ResizeByShort(short_size=600, max_size=1000),
-    transforms.Padding(coarsest_stride=32)
-])
-eval_transforms = transforms.Compose([
-    transforms.Normalize(),
-    transforms.ResizeByShort(short_size=600, max_size=1000),
-    transforms.Padding(coarsest_stride=32),
-])
+train_transforms = transforms.ComposedRCNNTransforms(
+    mode='train', min_max_size=[600, 1000])
+eval_transforms = transforms.ComposedRCNNTransforms(
+    mode='eval', min_max_size=[600, 1000])
 
 # 定义训练所用的数据集
 train_dataset = pdx.datasets.CocoDetection(
@@ -61,7 +54,8 @@ train_dataset = pdx.datasets.CocoDetection(
     shuffle=True,
     num_workers=2)
 # 训练集中加入无目标背景图片
-train_dataset.add_negative_samples('jinnan2_round1_train_20190305/normal_train_back/')
+train_dataset.add_negative_samples(
+    'jinnan2_round1_train_20190305/normal_train_back/')
 
 # 定义验证所用的数据集
 eval_dataset = pdx.datasets.CocoDetection(

+ 39 - 0
tutorials/train/detection/test.py

@@ -0,0 +1,39 @@
+import os
+os.environ['CUDA_VISIBLE_DEVICES'] = '0'
+from paddlex.det import transforms
+import paddlex as pdx
+
+# 定义训练和验证时的transforms
+train_transforms = transforms.ComposedRCNNTransforms(
+    mode='train', min_max_size=[600, 1000])
+eval_transforms = transforms.ComposedRCNNTransforms(
+    mode='eval', min_max_size=[600, 1000])
+
+# 定义训练所用的数据集
+train_dataset = pdx.datasets.CocoDetection(
+    data_dir='jinnan2_round1_train_20190305/restricted/',
+    ann_file='jinnan2_round1_train_20190305/train.json',
+    transforms=train_transforms,
+    shuffle=True,
+    num_workers=2)
+# 训练集中加入无目标背景图片
+train_dataset.add_negative_samples(
+    'jinnan2_round1_train_20190305/normal_train_back/')
+
+# 定义验证所用的数据集
+eval_dataset = pdx.datasets.CocoDetection(
+    data_dir='jinnan2_round1_train_20190305/restricted/',
+    ann_file='jinnan2_round1_train_20190305/val.json',
+    transforms=eval_transforms,
+    num_workers=2)
+
+# 初始化模型,并进行训练
+model = pdx.det.FasterRCNN(num_classes=len(train_dataset.labels) + 1)
+model.train(
+    num_epochs=17,
+    train_dataset=train_dataset,
+    eval_dataset=eval_dataset,
+    train_batch_size=8,
+    learning_rate=0.01,
+    lr_decay_epochs=[13, 16],
+    save_dir='./output')