generated from ashleve/lightning-hydra-template
-
Notifications
You must be signed in to change notification settings - Fork 3
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Module d'identification de la végétation et des non-classés (#62)
Bump version to V1.7.0 Add vegetation and unclassified detections Co-authored-by: Charles GAYDON <[email protected]>
- Loading branch information
1 parent
00d8b32
commit 7be3359
Showing
41 changed files
with
1,137 additions
and
241 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Empty file.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
# parameters | ||
vegetation_threshold: 0.3923 | ||
unclassified_threshold: 0.2455 | ||
|
||
vegetation_nb_trials: 100 | ||
unclassified_nb_trials: 100 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
# parameters | ||
vegetation_threshold: 0.5 | ||
unclassified_threshold: 0.5 | ||
|
||
vegetation_nb_trials: 3 | ||
unclassified_nb_trials: 3 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,62 @@ | ||
# Those names connect the logics between successive tasks | ||
las_dimensions: | ||
# input | ||
classification: Classification # las format | ||
|
||
# Extra dims | ||
# ATTENTION: If extra dimensions are added, you may want to add them in cleaning.in parameter as well. | ||
ai_building_proba: building # user-defined - output by deep learning model | ||
entropy: entropy # user-defined - output by deep learning model | ||
|
||
# Intermediary channels | ||
cluster_id: ClusterID # pdal-defined -> created by clustering operations | ||
uni_db_overlay: BDTopoOverlay # user-defined -> a 0/1 flag for presence of a BDUni vector | ||
candidate_buildings_flag: F_CandidateB # -> a 0/1 flag identifying candidate buildings found by rules-based classification | ||
ClusterID_candidate_building: CID_CandidateB # -> Cluster index from BuildingValidator, 0 if no cluster, 1-n elsewise | ||
ClusterID_isolated_plus_confirmed: CID_IsolatedOrConfirmed # -> Cluster index from BuildingCompletor, 0 if no cluster, 1-n elsewise | ||
|
||
# Additionnal output channel | ||
ai_building_identified: Group | ||
|
||
codes: | ||
building: | ||
candidates: [202] # found by rules-based classification (TerraScan) | ||
detailed: # used for detailed output when doing threshold optimization | ||
unsure_by_entropy: 200 # unsure (based on entropy) | ||
unclustered: 202 # refuted | ||
ia_refuted: 110 # refuted | ||
ia_refuted_but_under_db_uni: 111 # unsure | ||
both_unsure: 112 # unsure (elsewise) | ||
ia_confirmed_only: 113 # confirmed | ||
db_overlayed_only: 114 # confirmed | ||
both_confirmed: 115 # confirmed | ||
final: # used at the end of the building process | ||
unsure: 214 # unsure | ||
not_building: 208 # refuted | ||
building: 6 # confirmed | ||
detailed_to_final: | ||
- ["${data_format.codes.building.detailed.unclustered}","${data_format.codes.building.final.not_building}"] | ||
- ["${data_format.codes.building.detailed.ia_refuted}","${data_format.codes.building.final.not_building}"] | ||
- ["${data_format.codes.building.detailed.ia_refuted_but_under_db_uni}","${data_format.codes.building.final.unsure}"] | ||
- ["${data_format.codes.building.detailed.both_unsure}","${data_format.codes.building.final.unsure}"] | ||
- ["${data_format.codes.building.detailed.unsure_by_entropy}","${data_format.codes.building.final.unsure}"] | ||
- ["${data_format.codes.building.detailed.ia_confirmed_only}","${data_format.codes.building.final.building}"] | ||
- ["${data_format.codes.building.detailed.db_overlayed_only}","${data_format.codes.building.final.building}"] | ||
- ["${data_format.codes.building.detailed.both_confirmed}","${data_format.codes.building.final.building}"] | ||
|
||
|
||
cleaning: | ||
# Extra dims that are kept when application starts. Others are removed to lighten the LAS. | ||
input_building: | ||
_target_: lidar_prod.tasks.cleaning.Cleaner | ||
extra_dims: | ||
- "${data_format.las_dimensions.ai_building_proba}=float" | ||
- "${data_format.las_dimensions.entropy}=float" | ||
output_building: | ||
# Extra dims that are kept before final saving. | ||
# You can override with "all" to keep all extra dimensions at development time. | ||
_target_: lidar_prod.tasks.cleaning.Cleaner | ||
extra_dims: | ||
- "${data_format.las_dimensions.ai_building_proba}=float" | ||
- "${data_format.las_dimensions.entropy}=float" | ||
- "${data_format.las_dimensions.ai_building_identified}=uint" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,89 @@ | ||
# Those names connect the logics between successive tasks | ||
las_dimensions: | ||
# input | ||
classification: classification # las format | ||
|
||
# Extra dims | ||
# ATTENTION: If extra dimensions are added, you may want to add them in cleaning.in parameter as well. | ||
ai_vegetation_proba: vegetation | ||
ai_unclassified_proba: unclassified | ||
ai_building_proba: building # user-defined - output by deep learning model | ||
entropy: entropy # user-defined - output by deep learning model | ||
|
||
|
||
# Intermediary channels | ||
cluster_id: ClusterID # pdal-defined -> created by clustering operations | ||
uni_db_overlay: BDTopoOverlay # user-defined -> a 0/1 flag for presence of a BDUni vector | ||
candidate_buildings_flag: F_CandidateB # -> a 0/1 flag identifying candidate buildings found by rules-based classification | ||
ClusterID_candidate_building: CID_CandidateB # -> Cluster index from BuildingValidator, 0 if no cluster, 1-n otherwise | ||
ClusterID_isolated_plus_confirmed: CID_IsolatedOrConfirmed # -> Cluster index from BuildingCompletor, 0 if no cluster, 1-n otherwise | ||
|
||
# Additionnal output channel | ||
ai_building_identified: Group | ||
ai_vegetation_unclassified_groups: Group | ||
|
||
codes: | ||
vegetation: 3 | ||
vegetation_target: | ||
vegetation_low: 3 | ||
vegetation_medium: 4 | ||
vegetation_high: 5 | ||
unclassified: 1 | ||
building: | ||
candidates: [202] # found by rules-based classification (TerraScan) | ||
detailed: # used for detailed output when doing threshold optimization | ||
unsure_by_entropy: 200 # unsure (based on entropy) | ||
unclustered: 202 # refuted | ||
ia_refuted: 110 # refuted | ||
ia_refuted_but_under_db_uni: 111 # unsure | ||
both_unsure: 112 # unsure (otherwise) | ||
ia_confirmed_only: 113 # confirmed | ||
db_overlayed_only: 114 # confirmed | ||
both_confirmed: 115 # confirmed | ||
final: # used at the end of the building process | ||
unsure: 214 # unsure | ||
not_building: 208 # refuted | ||
building: 6 # confirmed | ||
detailed_to_final: | ||
- ["${data_format.codes.building.detailed.unclustered}","${data_format.codes.building.final.not_building}"] | ||
- ["${data_format.codes.building.detailed.ia_refuted}","${data_format.codes.building.final.not_building}"] | ||
- ["${data_format.codes.building.detailed.ia_refuted_but_under_db_uni}","${data_format.codes.building.final.unsure}"] | ||
- ["${data_format.codes.building.detailed.both_unsure}","${data_format.codes.building.final.unsure}"] | ||
- ["${data_format.codes.building.detailed.unsure_by_entropy}","${data_format.codes.building.final.unsure}"] | ||
- ["${data_format.codes.building.detailed.ia_confirmed_only}","${data_format.codes.building.final.building}"] | ||
- ["${data_format.codes.building.detailed.db_overlayed_only}","${data_format.codes.building.final.building}"] | ||
- ["${data_format.codes.building.detailed.both_confirmed}","${data_format.codes.building.final.building}"] | ||
|
||
|
||
cleaning: | ||
# Extra dims that are kept when application starts. Others are removed to lighten the LAS. | ||
input: | ||
_target_: lidar_prod.tasks.cleaning.Cleaner | ||
extra_dims: | ||
# - "${data_format.las_dimensions.ai_building_proba}=float" | ||
- "${data_format.las_dimensions.entropy}=float" | ||
- "${data_format.las_dimensions.ai_vegetation_proba}=float" | ||
- "${data_format.las_dimensions.ai_unclassified_proba}=float" | ||
output: | ||
# Extra dims that are kept before final saving. | ||
# You can override with "all" to keep all extra dimensions at development time. | ||
_target_: lidar_prod.tasks.cleaning.Cleaner | ||
extra_dims: | ||
# - "${data_format.las_dimensions.ai_building_proba}=float" | ||
# - "${data_format.las_dimensions.ai_vegetation_proba}=float" | ||
- "${data_format.las_dimensions.entropy}=float" | ||
# - "${data_format.las_dimensions.ai_building_identified}=uint" | ||
- "${data_format.las_dimensions.ai_vegetation_unclassified_groups}=uint" | ||
input_vegetation_unclassified: | ||
# Extra dims added for storing the result of the vegetation/unclassified detection. | ||
_target_: lidar_prod.tasks.cleaning.Cleaner | ||
extra_dims: | ||
- "${data_format.las_dimensions.ai_vegetation_unclassified_groups}=uint32" | ||
output_vegetation_unclassified: | ||
# Extra dims that are kept before final saving. | ||
# You can override with "all" to keep all extra dimensions at development time. | ||
_target_: lidar_prod.tasks.cleaning.Cleaner | ||
extra_dims: | ||
- "${data_format.las_dimensions.entropy}=float" | ||
- "${data_format.las_dimensions.ai_building_identified}=uint" | ||
- "${data_format.las_dimensions.ai_vegetation_unclassified_groups}=uint" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,34 @@ | ||
# Overview of the process | ||
|
||
A las file goes through several steps, which alter its content. | ||
At first we have a `Raw` las file, sent to another process (`Myria3D`) that infers the probabilities of various classes. | ||
From there, the las file is used a first time by this module to decide if the points are vegetation, unclassified or something else, and sent to an external process, a `rule-based segmentation`. | ||
The las file is used a second time by this module to decide if the points are buildings or not. | ||
|
||
# schema of the overall process | ||
The arrows represent dimensions in the las file, where they come from and where they are consumed. | ||
|
||
.. mermaid:: | ||
sequenceDiagram | ||
participant Raw | ||
participant AI inference (Myria3D) | ||
participant vegetation and unclassified detection | ||
participant Rule based segmentation | ||
participant Building module | ||
actor Human inspection | ||
Raw->>AI inference (Myria3D): Intensity | ||
Raw->>AI inference (Myria3D): ReturnNumber | ||
Raw->>AI inference (Myria3D): NumberOfReturns | ||
Raw->>AI inference (Myria3D): Red, Green, Blue | ||
Raw->>AI inference (Myria3D): Infrared | ||
AI inference (Myria3D)->>vegetation and unclassified detection: vegetation | ||
AI inference (Myria3D)->>vegetation and unclassified detection: unclassified | ||
vegetation and unclassified detection->>Rule based segmentation: Group (1: vegetation, 3: unclassified) | ||
note right of Rule based segmentation: uses vegetation and unclassified | ||
AI inference (Myria3D)->>Building module: building | ||
AI inference (Myria3D)->>Building module: entropy | ||
Building module->>Human inspection: Group | ||
Raw-->>vegetation and unclassified detection: Classification | ||
Raw-->>Building module: Classification | ||
note right of Building module: Building module updates Classification | ||
Building module->>Human inspection: Classification |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.