def render(self, is_lock):
        bimpy.set_next_tree_node_open(True, bimpy.Condition.FirstUseEver)
        
        if not bimpy.tree_node('convex points##convex_component'):
            return
        
        bimpy.same_line()
        bimpy_tools.help_marker('Convex points should be presented in counter-clockwise order')

        flags = bimpy.InputTextFlags.EnterReturnsTrue
        if is_lock:
            flags |= bimpy.InputTextFlags.ReadOnly
        
        last_convex_number_value = self._convex_number.value

        if bimpy.input_int('number##convex_component', self._convex_number, 1, 1, flags):
            self._convex_number.value = max(3, self._convex_number.value)
            if last_convex_number_value > self._convex_number.value:
                self._convex_data = self._convex_data[:self._convex_number.value]  # cut back points
            else:
                self._convex_data.extend([
                    [bimpy.Float(0), bimpy.Float(0)] 
                    for _ in range(last_convex_number_value, self._convex_number.value)
                ])
        
        # show convex value setting
        bimpy.set_next_tree_node_open(self._convex_number.value < 10, bimpy.Condition.FirstUseEver)

        if bimpy.tree_node('convex value ({})##convex_component'.format(self._convex_number.value)):
            for index in range(self._convex_number.value):
                bimpy.push_item_width(210)
                bimpy.input_float2(
                    '{:<3d}'.format(index),
                    self._convex_data[index][0],
                    self._convex_data[index][1],
                    flags=flags
                )
                bimpy.pop_item_width()
            bimpy.tree_pop()
        
        # draw part
        bimpy.new_line()
        if bimpy.button('draw convex##convex_component') and not is_lock:
            self._convex_data_backup = [[item[0].value, item[1].value]
                                        for item in self._convex_data]
            self._convex_draw_flag = True
            self._convex_data = []
            self._convex_number.value = 0

        bimpy.tree_pop()
    def render(self):
        bimpy.set_next_tree_node_open(True, bimpy.Condition.FirstUseEver)

        if not bimpy.tree_node('result##train_result_component'):
            return
        
        for item in ['loss', 'acc']:
            for name in self._measure_value:
                bimpy.text('{:<6} {:<6}: {:.8f}'.format(
                    name, item, 
                    self._measure_value[name][item],
                ))
            bimpy.new_line()

        bimpy.tree_pop()
Beispiel #3
0
    def render(self):
        bimpy.set_next_window_pos(bimpy.Vec2(765, 30),
                                  bimpy.Condition.FirstUseEver)
        bimpy.set_next_window_size(bimpy.Vec2(410, 750),
                                   bimpy.Condition.FirstUseEver)

        if not bimpy.begin('dash window'):  # open fail
            bimpy.end()
            return

        is_lock = any([
            self.train_phase_component.if_is_trainning(),
            self.lines_componnet.if_is_drawing(),
            self.convex_component.if_is_drawing(),
        ])

        # dash board
        if bimpy.collapsing_header('convex setting',
                                   bimpy.TreeNodeFlags.DefaultOpen):
            self.convex_component.render(is_lock)
            bimpy.new_line()

        if bimpy.collapsing_header('train setting',
                                   bimpy.TreeNodeFlags.DefaultOpen):
            self.lines_componnet.render(is_lock)
            bimpy.new_line()
            self.generator_component.render(is_lock)
            bimpy.new_line()
            self.optimizer_component.render(is_lock)
            bimpy.new_line()
            self.loss_function_component.render(is_lock)
            bimpy.new_line()
            self.train_component.render(is_lock)
            bimpy.new_line()

        if bimpy.collapsing_header('train phase',
                                   bimpy.TreeNodeFlags.DefaultOpen):
            self.train_phase_component.render(self._is_tranning_runner_running)
            bimpy.new_line()
            self.train_result_component.render()
            bimpy.new_line()

        # padding
        for _ in range(5):
            bimpy.new_line()

        # trainning runner
        if self.train_phase_component.if_is_trainning_start():
            self.trainning_runner = TrainningRunner()

            line_data = self.lines_componnet.get_line_data()

            self.trainning_runner.create_net(width=len(line_data))
            self.trainning_runner.set_net_value(line_data)

            generator = self.generator_component.build_generator()
            generator.set_data(
                raw_points=[],
                convex_points=self.convex_component.get_convex_data())
            self.trainning_runner.set_generator(generator)

            self.trainning_runner.set_optimizer(
                self.optimizer_component.build_optimizer(
                    self.trainning_runner.get_net()))

            self.trainning_runner.set_loss_function(
                self.loss_function_component.build_loss_function())

            self.trainning_runner.set_trainning_params(
                self.train_component.get_train_setting())

            self._is_tranning_runner_running = True
            self.trainning_runner.start()

        # if self.train_phase_component.if_is_trainning():
        if self._is_tranning_runner_running:
            # self.trainning_runner.run_once()
            line_data = self.trainning_runner.get_net_value()
            self.lines_componnet.set_line_data(line_data)

            # if self.trainning_runner is not None:
            self.train_phase_component.set_trainning_progress(
                self.trainning_runner.get_trainning_progress())

            self.train_result_component.set_trainning_result(
                self.trainning_runner.get_tranning_result())

        if self.train_phase_component.if_is_trainning_stop():
            self.trainning_runner.try_to_stop()

        if self._is_tranning_runner_running:
            self.trainning_runner.join(1e-2)
            self._is_tranning_runner_running = self.trainning_runner.is_alive()

        bimpy.end()
Beispiel #4
0
    def render(self, is_lock):
        bimpy.set_next_tree_node_open(True, bimpy.Condition.FirstUseEver)
        
        if not bimpy.tree_node('lines##lines_component'):
            return

        # number setting
        flags = bimpy.InputTextFlags.EnterReturnsTrue
        if is_lock:
            flags |= bimpy.InputTextFlags.ReadOnly
        
        if bimpy.input_int('number##lines_component', self._line_number, 1, 1, flags):
            self._line_number.value = max(3, self._line_number.value)
            if self._last_line_number_value > self._line_number.value:
                self._line_data = self._line_data[:self._line_number.value]  # cut back points
            else:
                self._line_data.extend([
                    [bimpy.Float(0), bimpy.Float(0), bimpy.Float(0)] 
                    for _ in range(self._last_line_number_value, self._line_number.value)
                ])
            self._last_line_number_value = self._line_number.value
            # print('line number change to {}'.format(self._line_number.value))

        # show line value setting
        bimpy.set_next_tree_node_open(self._line_number.value < 10, bimpy.Condition.FirstUseEver)

        self._highlight_line_index = None

        if bimpy.tree_node('line value ({})'.format(self._line_number.value)):
            for index in range(self._line_number.value):
                bimpy.push_item_width(210)
                bimpy.input_float3(
                    '{:<3d}'.format(index),
                    self._line_data[index][0],
                    self._line_data[index][1],
                    self._line_data[index][2],
                    flags=flags
                )
                bimpy.pop_item_width()

                if bimpy.is_item_hovered():
                    self._highlight_line_index = index

                bimpy.same_line()
                if bimpy.button('rev##lines_component{}'.format(index)) and not is_lock:
                    for j in range(3):
                        self._line_data[index][j].value = -self._line_data[index][j].value
                
                if bimpy.is_item_hovered():
                    self._highlight_line_index = index

                bimpy.same_line()
                if bimpy.button('draw##lines_component{}'.format(index)) and not is_lock:
                    self._waitting_draw_line_index = index
                    bimpy.set_window_focus('canvas window##canvas')
                
                if bimpy.is_item_hovered():
                    self._highlight_line_index = index

            bimpy.tree_pop()

        # random setting
        bimpy.new_line()
        if bimpy.button('random##lines_component') and not is_lock:
            initializer = self.initializer_component.build_initializer()
            random_lines = initializer.random(self._line_number.value)
            for index in range(self._line_number.value):
                self._line_data[index][0].value = random_lines[index].a
                self._line_data[index][1].value = random_lines[index].b
                self._line_data[index][2].value = random_lines[index].c
        
        self.initializer_component.render(is_lock)

        bimpy.tree_pop()
Beispiel #5
0
    def draw_gui(self, config_server):

        frames = []

        if bimpy.button("Load Profile"):
            with open('config.txt', 'r') as f:
                lines = f.readlines()
                for index, server in enumerate(servers):
                    items = lines[index].split(' ')
                    server.orientation = int(items[0])
                    server.process = int(items[1])
        bimpy.same_line()

        if bimpy.button("Save Profile"):
            with open('config.txt', 'w') as f:
                for server in servers:
                    f.write('%d %d\n' % (server.orientation, server.process))
        bimpy.same_line()

        if bimpy.button("Identify"):
            self.identify = not self.identify
        bimpy.same_line()

        if bimpy.button("Print ports"):
            print(available_ports)

        bimpy.slider_float("Min Aspect Ratio", self.min_aspect_ratio, 0.0,
                           10.0)
        bimpy.new_line()

        for server in servers:
            bimpy.slider_float("Stream Width %d" % server.cam_id,
                               server.stream_width, 0, 640)
            bimpy.slider_float("Stream Height %d" % server.cam_id,
                               server.stream_height, 0, 480)

            if bimpy.button("Update %d" % server.cam_id):
                server.update_settings()
            bimpy.same_line()

            if bimpy.button("Add Processing %d" % server.cam_id):
                server.process = True
            bimpy.same_line()

            if bimpy.button("Remove Processing %d" % server.cam_id):
                server.process = False

            if bimpy.button("Rotate 90 %d" % server.cam_id):
                server.orientation += 90
            bimpy.same_line()

            if bimpy.button("Rotate -90 %d" % server.cam_id):
                server.orientation -= 90
            bimpy.same_line()

            if bimpy.button("Rotate 180 %d" % server.cam_id):
                server.orientation += 180
            '''
			if bimpy.button("V+ %d" % server.cam_id):
				server.V += 1
			bimpy.same_line()

			if bimpy.button("V- %d" % server.cam_id):
				server.V -= 1
			bimpy.same_line()

			if bimpy.button("H+ %d" % server.cam_id):
				server.H += 1
			bimpy.same_line()

			if bimpy.button("H- %d" % server.cam_id):
				server.H -= 1
			'''

            bimpy.new_line()
            bimpy.new_line()
Beispiel #6
0
    if bimpy.button("Forward", bimpy.Vec2(140,80)):
        move_forward()
    bimpy.next_column()
    bimpy.next_column()
    if bimpy.button("Left", bimpy.Vec2(140,80)):
        turn_left()
    bimpy.next_column()
    bimpy.next_column()
    if bimpy.button("Right", bimpy.Vec2(140,80)):
        turn_right()
    bimpy.next_column()
    bimpy.next_column()
    if bimpy.button("Back", bimpy.Vec2(140,80)):
        move_backwards()
    bimpy.columns(1)
    bimpy.new_line()
    if bimpy.button("Spin Me", bimpy.Vec2(150,50)):
        spinMe()
    bimpy.end()

#    setup the 3rd window
    bimpy.set_next_window_pos(bimpy.Vec2(800, 460), bimpy.Condition.Once)
    bimpy.set_next_window_size(bimpy.Vec2(winWidth - 820, winHeight-480), bimpy.Condition.Once)
    bimpy.begin("Window Settings", flags=bimpy.NoMove | bimpy.NoCollapse)
    bimpy.text("Borders")
    #bimpy.checkbox("horizontal", borders_horizontal)
    #bimpy.same_line()
    #bimpy.checkbox("vertical", borders_vertical)
    bimpy.end()
    bimpy.show_demo_window()
    # render the context window