Last active
June 18, 2019 11:39
-
-
Save PolarNick239/fd2931434c4796f53f26d03622649179 to your computer and use it in GitHub Desktop.
Metashape benchmark for Dense Cloud and alignment
This file contains hidden or 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
import Metashape | |
# wget https://www.dropbox.com/s/hh5yg0fmpr4bpn3/benchmarking_1.3.zip | |
# unzip benchmarking_1.3.zip | |
project = "benchmark2.psz" | |
Metashape.app.gpu_mask = (2 ** 16) - 1 | |
Metashape.app.cpu_enable = False | |
Metashape.app.document.open(project, read_only=True) | |
chunk = Metashape.app.document.chunk | |
measurements = [] | |
def simplify_quality(quality): | |
# Examples: | |
# Metashape.Quality.LowQuality -> Low | |
# Metashape.Accuracy.LowestAccuracy -> Lowest | |
quality = str(quality).split('.')[-1] | |
suffixes = ["Quality", "Accuracy"] | |
for suffix in suffixes: | |
if quality.endswith(suffix): | |
quality = quality[:-len(suffix)] | |
return quality | |
def format_time(t): | |
t = float(t) | |
if t > 60.0: | |
return "{} min {} sec".format(int(t / 60), int(t % 60)) | |
else: | |
return "{} sec".format(int(t)) | |
for quality in [Metashape.MediumQuality]:#[Metashape.HighQuality, Metashape.MediumQuality, Metashape.LowQuality]: | |
chunk.buildDepthMaps(quality=quality, filter=Metashape.AggressiveFiltering) | |
chunk.buildDenseCloud() | |
measurements.append("Depth maps {: <6s} in {}".format(simplify_quality(quality), format_time(chunk.dense_cloud.meta['BuildDepthMaps/duration']))) | |
measurements.append("Dense cloud {: <6s} in {}".format(simplify_quality(quality), format_time(chunk.dense_cloud.meta['BuildDenseCloud/duration']))) | |
for quality in [Metashape.HighAccuracy]:#[Metashape.HighAccuracy, Metashape.MediumAccuracy, Metashape.LowAccuracy]: | |
chunk.point_cloud = None | |
for c in chunk.cameras: | |
c.transform = None | |
chunk.matchPhotos(quality, keypoint_limit=40000, tiepoint_limit=10000) | |
chunk.alignCameras(adaptive_fitting=True) | |
measurements.append("Matching {: <6s} in {}".format(simplify_quality(quality), format_time(chunk.point_cloud.meta['MatchPhotos/duration']))) | |
measurements.append("Alignment {: <6s} in {}".format(simplify_quality(quality), format_time(chunk.meta['AlignCameras/duration']))) | |
print() | |
print("Build: {}".format(chunk.point_cloud.meta['Info/OriginalSoftwareVersion'])) | |
print("GPU mask: {}".format(Metashape.app.gpu_mask)) | |
gpu_devices = Metashape.app.enumGPUDevices() | |
print("{} GPU devices:".format(len(gpu_devices))) | |
for d in gpu_devices: | |
print(" - {}".format(d['name'])) | |
print() | |
print("Measurements:") | |
for line in measurements: | |
print(line) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment