文档章节

101_binary_classification_infer_building

openthings
 openthings
发布于 03/19 15:56
字数 760
阅读 55
收藏 0

「深度学习福利」大神带你进阶工程师,立即查看>>>

建筑物提取

!pip install rasterio dotmap albumentations keras easydict
#!/usr/bin/env python3
# coding=utf-8
import os
import time
from iobjectspy import open_datasource
from iobjectspy.ml.vision import Inference

设置输入数据路径

curr_dir = ''
data_dir = os.path.join(curr_dir, '..','..','example_data')
inference_dir = os.path.join(data_dir, 'inference')

设置输出数据路径

out_dir = os.path.join(curr_dir, '..','..','out')
if not os.path.exists(out_dir):
    os.makedirs(out_dir)

设置模型路径路径

model_path = os.path.join(curr_dir, '..','..','model')
building_dom_model = os.path.join(model_path, 'bin_cls_building', 'bin_cls_building.sdm')

基于DOM数据集进行建筑物提取

try:
    ds = open_datasource(os.path.join(inference_dir, 'building.udb'))

    start_time = time.time()
    result = Inference(input_data=ds['building_infer'], model_path=building_dom_model,
                       out_data=os.path.join(out_dir, 'out_building.udb'),
                       out_dataset_name='dataset_dom', ).binary_classify_infer(offset=0, result_type='region')
    end_time = time.time()
    print('提取完成,共耗时{}s,结果数据保存在 {} 数据源下 {} 数据集中'.format(
        end_time - start_time, os.path.join(out_dir, 'out_building.udb'), result))

finally:
    ds.close()
---------------------------------------------------------------------------

ObjectDisposedError                       Traceback (most recent call last)

<ipython-input-13-0cb8ae8ff30c> in <module>
      1 try:
----> 2     ds = open_datasource(os.path.join(inference_dir, 'building.udb'))
      3 


~/anaconda3/lib/python3.6/site-packages/iobjectspy/_jsuperpy/data/ws.pyc in open_datasource(conn_info, is_get_existed)


~/anaconda3/lib/python3.6/site-packages/iobjectspy/_jsuperpy/data/ws.pyc in open_datasource(self, conn_info, is_get_existed)


ObjectDisposedError: Workspace has been disposed.


During handling of the above exception, another exception occurred:


NameError                                 Traceback (most recent call last)

<ipython-input-13-0cb8ae8ff30c> in <module>
     11 
     12 finally:
---> 13     ds.close()


NameError: name 'ds' is not defined

基于DOM影像文件进行建筑物提取

dom_path = os.path.join(inference_dir, 'building_infer.tif')

start_time = time.time()
result = Inference(input_data=dom_path, model_path=building_dom_model,
                   out_data=os.path.join(out_dir, 'out_building.udb'),
                   out_dataset_name='file_dom').binary_classify_infer(offset=0, result_type='region')

end_time = time.time()
print('提取完成,共耗时{}s,结果数据保存在 {} 数据源下 {} 数据集中'.format(
    end_time - start_time, os.path.join(out_dir, 'out_building.udb'), result))

---------------------------------------------------------------------------

RuntimeError                              Traceback (most recent call last)

<ipython-input-6-3a240b950ff7> in <module>
      4 result = Inference(input_data=dom_path, model_path=building_dom_model,
      5                    out_data=os.path.join(out_dir, 'out_building.udb'),
----> 6                    out_dataset_name='file_dom').binary_classify_infer(offset=0, result_type='region')
      7 
      8 end_time = time.time()


~/anaconda3/lib/python3.6/site-packages/iobjectspy/ml/vision/_inference.pyc in __init__(self, input_data, model_path, out_data, out_dataset_name)


~/anaconda3/lib/python3.6/site-packages/iobjectspy/_jsuperpy/_utils.pyc in check_lic()


RuntimeError: SuperMap_licensefile_7C_featrue_not_found

输入输出都为numpy数组的建筑物提取

"""
support any numpy size
:return:
"""

dom_path = os.path.join(inference_dir, 'building_infer.tif')
import rasterio
import numpy as np
from iobjectspy.ml.vision._inference_collector import BinaryClassificationWithNumpy
dom_array = np.transpose(rasterio.open(dom_path).read(), (1, 2, 0))
start_time = time.time()

# 加载模型是一个耗时操作,预测前初始化对象会自动加载,所有预测结束后,关闭模型
extraction = BinaryClassificationWithNumpy(
    model_path=building_dom_model)
for i in range(5):
    result_numpy = extraction.infer(image_data=dom_array, offset=0)
extraction.close_model()
print(result_numpy)
end_time = time.time()
print('提取完成,共耗时{}s'.format(
    end_time - start_time))
[[False False False ... False False False]
 [False False False ... False False False]
 [False False False ... False False False]
 ...
 [False False False ...  True  True  True]
 [False False False ...  True  True  True]
 [False False False ...  True  True  True]]
提取完成,共耗时22.05914330482483s

输入输出都为numpy数组的建筑物提取,且numpy数组为底层预测的最小tile尺寸

"""
only support the model default size
:return:
"""

dom_path = os.path.join(inference_dir, 'building_infer.tif')
import rasterio
import numpy as np
from iobjectspy.ml.vision._inference_collector import BinaryClassificationWithTile
dom_array = np.transpose(rasterio.open(dom_path).read(), (1, 2, 0))
dom_array = dom_array[:640, :640, :]
start_time = time.time()

# 加载模型是一个耗时操作,预测前初始化对象会自动加载,所有预测结束后,关闭模型
extraction = BinaryClassificationWithTile(
    model_path=building_dom_model)
result_numpy = extraction.infer_tile(image_data=dom_array)
extraction.close_model()
print(result_numpy)
end_time = time.time()
print('提取完成,共耗时{}s'.format(
    end_time - start_time))
[[0 0 0 ... 0 0 0]
 [0 0 0 ... 0 0 0]
 [0 0 0 ... 0 0 0]
 ...
 [1 1 1 ... 0 0 0]
 [1 1 1 ... 0 0 0]
 [1 1 1 ... 0 0 0]]
提取完成,共耗时3.6827621459960938s

openthings

openthings

粉丝 355
博文 1246
码字总数 927806
作品 1
东城
架构师
私信 提问
加载中
请先登录后再评论。
我的架构演化笔记 功能1: 基本的用户注册

“咚咚”,一阵急促的敲门声, 我从睡梦中惊醒,我靠,这才几点,谁这么早, 开门一看,原来我的小表弟放暑假了,来南京玩,顺便说跟我后面学习一个网站是怎么做出来的。 于是有了下面的一段...

强子哥哥
2014/05/31
976
3
c-string转换工具集合--stringencoders

c-string转换工具集合,比标准实现快2倍以上(如果有的话)。——该项目被Google Chrome使用。 包括以下C字符串转换工具 base64, standard base64, web/url safe, with configurable alphabe...

江斌
2012/11/07
4.8K
1
基于Yii开发的博客--dlfblog

基于Yii 框架开发的博客!用于学习YII。 DLFBLOG 1.0 基于Yii 框架开发的博客! Quick start Clone the repo, git clone git://github.com/windsdeng/dlfblog.git, or download the latest r......

WindsDeng
2012/12/09
2.1K
0
OpenCASCADE Expression Interpreter by Flex & Bison

OpenCASCADE Expression Interpreter by Flex & Bison eryar@163.com Abstract. OpenCASCADE provide data structure of any expression, relation or function used in mathematics. Flex a......

eryar
2016/05/28
237
0
【卡片记忆】iOS 单元测试查看覆盖率

iOS 覆盖率 定义API的需求 为添加到项目中的每个方法或者函数定义需求和结果非常重要。对于需求,包括输入和输出范围,exceptions 抛出异常,条件限制,以及返回值的类型(尤其如果值是类的实...

创意总监
2016/03/09
161
0

没有更多内容

加载失败,请刷新页面

加载更多

大数据研发学习之路--Hadoop集群搭建

阅读编译文档 准备一个hadoop源码包,我选择的hadoop版本是:hadoop-2.7.7-src.tar.gz,在hadoop-2.7.7的源码 包的根目录下有一个文档叫做BUILDING.txt,这其中说明了编译hadoop所需要的一些...

DSJ-shitou
今天
8
0
OSChina 周五乱弹 —— 特么是别的公司派来的特洛伊木马吧?

Osc乱弹歌单(2020)请戳(这里) 【今日歌曲】 小小编辑推荐:《我会守在这里》- 毛不易 《我会守在这里》- 毛不易 手机党少年们想听歌,请使劲儿戳(这里) @FalconChen :股市连跪了五天,...

小小编辑
今天
59
2
如何在find中排除目录。命令 - How to exclude a directory in find . command

问题: I'm trying to run a find command for all JavaScript files, but how do I exclude a specific directory? 我正在尝试为所有JavaScript文件运行find命令,但是如何排除特定目录? ......

法国红酒甜
今天
73
0
《Java8实战》笔记(02):通过行为参数传递代码

本文源码 应对不断变化的需求 通过筛选苹果阐述通过行为参数传递代码 初试牛刀:筛选绿苹果 public static List<Apple> filterGreenApples(List<Apple> inventory){List<Apple> result = ......

巨輪
今天
19
0
JeeSite 4 架构特点、安全方面、为什么好、工匠精神、不忘初心

1、底层架构 以 Spring Boot 2 为基础,Maven 多项目依赖,模块分项目,松耦合,方便模块升级、增减模块。 模块化的数据库自动升级程序,当模块升级代码需要更新数据库时,自动执行对应版本 ...

ThinkGem
昨天
13
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部