Spaces:
Runtime error
Runtime error
xinwei89
commited on
Commit
Β·
084c97d
1
Parent(s):
f5f79e8
dynamic choosing of model versions
Browse files- app.py +3 -3
- backend.py +9 -4
- {building_model_weight β building_model_weights}/README.md +0 -0
- {building_model_weight β building_model_weights}/_annotations.coco.json +0 -0
- {building_model_weight β building_model_weights}/buildings_poc_cfg.yml +0 -0
- {building_model_weight β building_model_weights}/buildingv1_best.pth +0 -0
- {building_model_weight β building_model_weights}/buildingv1_cfg.yaml +0 -0
- building_model_weight/buildingv2instances_predictions.pth β building_model_weights/buildingv2_instances_predictions.pth +0 -0
- building_model_weight/buildingv2model_best.pth β building_model_weights/buildingv2_model_best.pth +0 -0
- building_model_weight/buildingv2model_best_iteration_71.pth β building_model_weights/buildingv2_model_best_iteration_71.pth +0 -0
- building_model_weight/buildingv2model_final.pth β building_model_weights/buildingv2_model_final.pth +0 -0
- building_model_weight/buildingv2sixmaps_building_level_category_20122023_cfg.yaml β building_model_weights/buildingv2_sixmaps_building_level_category_20122023_cfg.yaml +0 -0
- {building_model_weight β building_model_weights}/buildingv3_binary_17112023.pth +0 -0
- {building_model_weight β building_model_weights}/buildingv3_binary_cfg.yaml +0 -0
- {building_model_weight β building_model_weights}/model_final.pth +0 -0
- {building_model_weight β building_model_weights}/tree_cfg.yml +0 -0
- {building_model_weight β building_model_weights}/tree_model.pth +0 -0
app.py
CHANGED
|
@@ -25,13 +25,13 @@ with gr.Blocks() as demo:
|
|
| 25 |
tree_row, building_row , lcz_row = gr.Row(), gr.Row(), gr.Row()
|
| 26 |
# tree_col, building_col = gr.Column(elem_id="tree_col"), gr.Column(elem_id="building_col")
|
| 27 |
with tree_row as tree_options:
|
| 28 |
-
tree_version_dropdown = gr.Dropdown(choices=
|
| 29 |
tree_pth_dropdown = gr.Dropdown(choices=list_pth_files_in_directory("tree_model_weights", "v2"), label="Select a tree model file", visible=True, interactive=True)
|
| 30 |
tree_threshold_slider = gr.Slider(minimum=0, maximum=1, step=0.1, value=0.7, label='Set confidence threshold "%" for trees', visible=True, interactive=True)
|
| 31 |
|
| 32 |
with building_row as building_options:
|
| 33 |
-
building_version_dropdown = gr.Dropdown(choices=
|
| 34 |
-
building_pth_dropdown = gr.Dropdown(choices=list_pth_files_in_directory("
|
| 35 |
building_threshold_slider = gr.Slider(minimum=0, maximum=1, step=0.1, value=0.7, label='Set confidence threshold "%" for buildings', visible=True, interactive=True)
|
| 36 |
|
| 37 |
with lcz_row as lcz_options:
|
|
|
|
| 25 |
tree_row, building_row , lcz_row = gr.Row(), gr.Row(), gr.Row()
|
| 26 |
# tree_col, building_col = gr.Column(elem_id="tree_col"), gr.Column(elem_id="building_col")
|
| 27 |
with tree_row as tree_options:
|
| 28 |
+
tree_version_dropdown = gr.Dropdown(choices=list_cfg_file_versions("tree_model_weights"), label="Tree Detection Version", value="treev2", visible=True, interactive=True)
|
| 29 |
tree_pth_dropdown = gr.Dropdown(choices=list_pth_files_in_directory("tree_model_weights", "v2"), label="Select a tree model file", visible=True, interactive=True)
|
| 30 |
tree_threshold_slider = gr.Slider(minimum=0, maximum=1, step=0.1, value=0.7, label='Set confidence threshold "%" for trees', visible=True, interactive=True)
|
| 31 |
|
| 32 |
with building_row as building_options:
|
| 33 |
+
building_version_dropdown = gr.Dropdown(choices=list_cfg_file_versions("building_model_weights"), label="Building Detection Version", value="buildingv1", visible=True, interactive=True)
|
| 34 |
+
building_pth_dropdown = gr.Dropdown(choices=list_pth_files_in_directory("building_model_weights", "v1"), label="Select a building model file", visible=True, interactive=True)
|
| 35 |
building_threshold_slider = gr.Slider(minimum=0, maximum=1, step=0.1, value=0.7, label='Set confidence threshold "%" for buildings', visible=True, interactive=True)
|
| 36 |
|
| 37 |
with lcz_row as lcz_options:
|
backend.py
CHANGED
|
@@ -29,6 +29,11 @@ from detectron2.checkpoint import DetectionCheckpointer
|
|
| 29 |
from detectron2.utils.visualizer import ColorMode
|
| 30 |
from detectron2.structures import Instances
|
| 31 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 32 |
|
| 33 |
def list_pth_files_in_directory(directory, version="v1"):
|
| 34 |
files = os.listdir(directory)
|
|
@@ -57,7 +62,7 @@ def update_path_options(version):
|
|
| 57 |
if "tree" in version:
|
| 58 |
directory = "tree_model_weights"
|
| 59 |
else:
|
| 60 |
-
directory = "
|
| 61 |
return gr.Dropdown(choices=list_pth_files_in_directory(directory, version), label=f"Select a {version.split('v')[0]} model file", visible=True, interactive=True)
|
| 62 |
|
| 63 |
# Model for trees
|
|
@@ -74,9 +79,9 @@ def tree_model(tree_version_dropdown, tree_pth_dropdown, tree_threshold, device=
|
|
| 74 |
# Model for buildings
|
| 75 |
def building_model(building_version_dropdown, building_pth_dropdown, building_threshold, device="cpu"):
|
| 76 |
building_cfg = get_cfg()
|
| 77 |
-
building_cfg.merge_from_file(get_version_cfg_yml(f"
|
| 78 |
building_cfg.MODEL.DEVICE=device
|
| 79 |
-
building_cfg.MODEL.WEIGHTS = f"
|
| 80 |
building_cfg.MODEL.ROI_HEADS.NUM_CLASSES = 8 # TODO change this
|
| 81 |
building_cfg.MODEL.ROI_HEADS.SCORE_THRESH_TEST = building_threshold
|
| 82 |
building_predictor = DefaultPredictor(building_cfg)
|
|
@@ -162,7 +167,7 @@ def visualize_image(im, mode, tree_threshold, building_threshold, color_mode, tr
|
|
| 162 |
instances = lcz_instances if mode == "LCZ" else combine_instances(instances, LCZ_instances)
|
| 163 |
|
| 164 |
# Assuming 'urban-small_train' is intended for both Trees and Buildings
|
| 165 |
-
metadata = get_metadata("urban-small_train", "
|
| 166 |
visualizer = Visualizer(im[:, :, ::-1], metadata=metadata, scale=0.5, instance_mode=color_mode)
|
| 167 |
|
| 168 |
output_image = visualizer.draw_instance_predictions(instances)
|
|
|
|
| 29 |
from detectron2.utils.visualizer import ColorMode
|
| 30 |
from detectron2.structures import Instances
|
| 31 |
|
| 32 |
+
def list_cfg_file_versions(directory):
|
| 33 |
+
files = os.listdir(directory)
|
| 34 |
+
# return files that contains substring version and end with .yml
|
| 35 |
+
cfg_files = [f.split("_")[0] for f in files if (f.endswith(".yml") or f.endswith(".yaml")) and f.startswith(f"{directory.split('_')[0]}v")]
|
| 36 |
+
return cfg_files
|
| 37 |
|
| 38 |
def list_pth_files_in_directory(directory, version="v1"):
|
| 39 |
files = os.listdir(directory)
|
|
|
|
| 62 |
if "tree" in version:
|
| 63 |
directory = "tree_model_weights"
|
| 64 |
else:
|
| 65 |
+
directory = "building_model_weights"
|
| 66 |
return gr.Dropdown(choices=list_pth_files_in_directory(directory, version), label=f"Select a {version.split('v')[0]} model file", visible=True, interactive=True)
|
| 67 |
|
| 68 |
# Model for trees
|
|
|
|
| 79 |
# Model for buildings
|
| 80 |
def building_model(building_version_dropdown, building_pth_dropdown, building_threshold, device="cpu"):
|
| 81 |
building_cfg = get_cfg()
|
| 82 |
+
building_cfg.merge_from_file(get_version_cfg_yml(f"building_model_weights/{building_version_dropdown}"))
|
| 83 |
building_cfg.MODEL.DEVICE=device
|
| 84 |
+
building_cfg.MODEL.WEIGHTS = f"building_model_weights/{building_pth_dropdown}"
|
| 85 |
building_cfg.MODEL.ROI_HEADS.NUM_CLASSES = 8 # TODO change this
|
| 86 |
building_cfg.MODEL.ROI_HEADS.SCORE_THRESH_TEST = building_threshold
|
| 87 |
building_predictor = DefaultPredictor(building_cfg)
|
|
|
|
| 167 |
instances = lcz_instances if mode == "LCZ" else combine_instances(instances, LCZ_instances)
|
| 168 |
|
| 169 |
# Assuming 'urban-small_train' is intended for both Trees and Buildings
|
| 170 |
+
metadata = get_metadata("urban-small_train", "building_model_weights/_annotations.coco.json")
|
| 171 |
visualizer = Visualizer(im[:, :, ::-1], metadata=metadata, scale=0.5, instance_mode=color_mode)
|
| 172 |
|
| 173 |
output_image = visualizer.draw_instance_predictions(instances)
|
{building_model_weight β building_model_weights}/README.md
RENAMED
|
File without changes
|
{building_model_weight β building_model_weights}/_annotations.coco.json
RENAMED
|
File without changes
|
{building_model_weight β building_model_weights}/buildings_poc_cfg.yml
RENAMED
|
File without changes
|
{building_model_weight β building_model_weights}/buildingv1_best.pth
RENAMED
|
File without changes
|
{building_model_weight β building_model_weights}/buildingv1_cfg.yaml
RENAMED
|
File without changes
|
building_model_weight/buildingv2instances_predictions.pth β building_model_weights/buildingv2_instances_predictions.pth
RENAMED
|
File without changes
|
building_model_weight/buildingv2model_best.pth β building_model_weights/buildingv2_model_best.pth
RENAMED
|
File without changes
|
building_model_weight/buildingv2model_best_iteration_71.pth β building_model_weights/buildingv2_model_best_iteration_71.pth
RENAMED
|
File without changes
|
building_model_weight/buildingv2model_final.pth β building_model_weights/buildingv2_model_final.pth
RENAMED
|
File without changes
|
building_model_weight/buildingv2sixmaps_building_level_category_20122023_cfg.yaml β building_model_weights/buildingv2_sixmaps_building_level_category_20122023_cfg.yaml
RENAMED
|
File without changes
|
{building_model_weight β building_model_weights}/buildingv3_binary_17112023.pth
RENAMED
|
File without changes
|
{building_model_weight β building_model_weights}/buildingv3_binary_cfg.yaml
RENAMED
|
File without changes
|
{building_model_weight β building_model_weights}/model_final.pth
RENAMED
|
File without changes
|
{building_model_weight β building_model_weights}/tree_cfg.yml
RENAMED
|
File without changes
|
{building_model_weight β building_model_weights}/tree_model.pth
RENAMED
|
File without changes
|