File size: 1,838 Bytes
4bc44be
 
e82bde7
4bc44be
 
 
f5d47ae
4bc44be
feda03d
e82bde7
7bab844
e82bde7
 
4bc44be
e82bde7
 
 
 
 
 
 
 
 
 
4bc44be
 
 
 
 
538cb81
 
f5d47ae
 
 
 
538cb81
 
 
 
 
 
f5d47ae
 
e82bde7
305d9e4
e82bde7
305d9e4
e82bde7
305d9e4
e82bde7
305d9e4
e82bde7
305d9e4
e82bde7
305d9e4
e82bde7
305d9e4
e82bde7
 
 
 
305d9e4
e82bde7
 
 
f5d47ae
e82bde7
f5d47ae
e82bde7
feda03d
 
f5d47ae
feda03d
7bab844
e82bde7
feda03d
e82bde7
feda03d
e82bde7
 
 
 
feda03d
e82bde7
 
 
538cb81
 
 
 
 
 
 
 
305d9e4
 
 
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
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
# =====================================================
# Apckeyl_RealESRGAN
# Version 13.0
# official_tile_processor.py
# =====================================================

import torch


class OfficialTileProcessor:

    """
    CPU Optimized Version.

    Batch отключён.

    Причина:
    на CPU HuggingFace Batch оказался
    медленнее последовательной обработки.

    Архитектура сохранена.
    При переходе на GPU Batch можно будет
    включить одной функцией.
    """

    def __init__(self, engine):

        self.engine = engine

    # -------------------------------------------------

    def inference(self, tensor):

        with torch.inference_mode():

            return self.engine.infer(
                tensor
            )

    # -------------------------------------------------

    def process(self, tensors):

        outputs = []

        total = len(tensors)

        print()

        print("===== CPU FAST MODE =====")

        print(f"Tiles : {total}")

        print("=========================")

        print()

        for index, tensor in enumerate(
            tensors,
            start=1
        ):

            print(
                f"Tile {index}/{total}"
            )

            outputs.append(

                self.inference(
                    tensor
                )

            )

        return outputs

    # -------------------------------------------------

    def process_tiles(
        self,
        tensors
    ):

        return self.process(
            tensors
        )

    # -------------------------------------------------

    def process_batch(
        self,
        tensors
    ):

        return self.process(
            tensors
        )