File size: 2,291 Bytes
07cb7d3
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
from deep_learning.data.oxford_pets import SegmentationDataSource
from deep_learning.env.resolve import resolve_env, resolve_path, resolve_saved
from deep_learning.models.segmentation import SegmentationModelBuilder
from deep_learning.pipeline import (
    SupervisedModelPipeline,
    PipelineRunner
)
from deep_learning.pipeline.specs.configs import CheckpointConfig, CheckpointLoadRules, TrainingRule


pipeline = resolve_env(
    # 开发配置
    SupervisedModelPipeline(
        name="segmentation",
        data_source=SegmentationDataSource(
            images_path=resolve_path("data/dev/oxford_pets/images"),
            annotations_path=resolve_path("data/dev/oxford_pets/annotations/trimaps"),
            image_size=(200, 200),
            batch_size=2,
            validation_batches=1,
            example_count=5,
            example_output_dir=resolve_path("local/examples/segmentation")
        ),
        model_builder=SegmentationModelBuilder(
            image_size=(200, 200),
            num_classes=3,
            model_filters=(8,)
        ),
        training_rule=TrainingRule(
            epochs=1,
            steps_per_epoch=None
        )
    ),

    # 生产配置
    SupervisedModelPipeline(
        name="segmentation",
        data_source=SegmentationDataSource(
            images_path=resolve_path("~/.keras/datasets/vgg_perts_images_extracted/images"),
            annotations_path=resolve_path("~/.keras/datasets/vgg_pets_annotations_extracted/annotations/trimaps"),
            image_size=(200, 200),
            batch_size=64,
            validation_batches=15,
            example_count=5,
            example_output_dir=resolve_path("local/examples/segmentation")
        ),
        model_builder=SegmentationModelBuilder(
            image_size=(200, 200),
            num_classes=3,
            model_filters=(64, 128, 256)
        ),
        training_rule=TrainingRule(
            epochs=50,
            steps_per_epoch=None
        ),
        checkpoint_load_rules=CheckpointLoadRules(
            export=CheckpointConfig(epoch=26),
            test=CheckpointConfig(dirs=[resolve_saved("models/segmentation")], suffix=".keras")
        )
    )
)

pipeline_runner = PipelineRunner(pipeline)


if __name__ == "__main__":
    pipeline_runner()