地基云分割

读取地基云图,并显示

%matplotlib inline
import gluonbook as gb
from mxnet import gluon,init,nd,image
from mxnet.gluon import data as gdata,loss as gloss,model_zoo,nn
import numpy as np
def read_voc_images(root=voc_dir, train=True):
    txt_fname = '%s/segmentation/%s' % (
        root, 'train.txt' if train else 'val.txt')
    with open(txt_fname, 'r') as f:
        images = f.read().split()
    data, label = [None] * len(images), [None] * len(images)
    for i, fname in enumerate(images):
        data[i] = image.imread('%s/images/%s.png' % (root, fname))
        label[i] = image.imread('%s/GTmaps/%s_GT.png' % (root, fname))
    return data, label
train_images, train_labels = read_voc_images()
n = 5
imgs = train_images[0:n] + train_labels[0:n]
gb.show_images(imgs, 2, n)

对图片进行剪切,从而增加数据集,并显示

def voc_rand_crop(data, label, height, width):
    data, rect = image.random_crop(data, (width, height))
    label = image.fixed_crop(label, *rect)
    return data, label
imgs = []
for _ in range(n):
    imgs += voc_rand_crop(train_images[0], train_labels[0], 224, 224)
gb.show_images(imgs[::2] + imgs[1::2], 2, n);

生成云图分割数据集

class VOCSegDataset(gdata.Dataset):
    def __init__(self, train, crop_size, voc_dir, colormap2label):
        self.rgb_mean = nd.array([0.485, 0.456, 0.406])
        self.rgb_std = nd.array([0.229, 0.224, 0.225])
        self.crop_size = crop_size
        data, label = read_voc_images(root=voc_dir, train=train)
        self.data = [self.normalize_image(im) for im in self.filter(data)]
        self.label = self.filter(label)
        self.colormap2label = colormap2label
        print('read ' + str(len(self.data)) + ' examples')

    def normalize_image(self, data):
        return (data.astype('float32') / 255 - self.rgb_mean) / self.rgb_std

    def filter(self, images):
        return [im for im in images if (
            im.shape[0] >= self.crop_size[0] and
            im.shape[1] >= self.crop_size[1])]

    def __getitem__(self, idx):
        data, label = voc_rand_crop(self.data[idx], self.label[idx],
                                    *self.crop_size)
        return (data.transpose((2, 0, 1)),
                voc_label_indices(label, self.colormap2label))

    def __len__(self):
        return len(self.data)
output_shape = (224, 224)  # 高和宽。
voc_train = VOCSegDataset(True, output_shape, voc_dir, colormap2label)
voc_test = VOCSegDataset(False, output_shape, voc_dir, colormap2label)
import sys
batch_size = 4
num_workers = 0 if sys.platform.startswith('win32') else 4
train_iter = gdata.DataLoader(voc_train, batch_size, shuffle=True,
                              last_batch='discard', num_workers=num_workers)
test_iter = gdata.DataLoader(voc_test, batch_size, last_batch='discard',
                             num_workers=num_workers)

定义模型

class Resnet(nn.Block):
    def __init__(self,verbose=False,**kwargs):
        super(Resnet,self).__init__(**kwargs)
        b0 = nn.Sequential()
        b0.add(pretrained_net.features[0])
        b1 = nn.Sequential()
        b1.add(pretrained_net.features[1])
        b2 = nn.Sequential()
        b2.add(pretrained_net.features[2])
        b3 = nn.Sequential()
        b3.add(pretrained_net.features[3])
        b4 = nn.Sequential()
        b4.add(pretrained_net.features[4])
        b5 = nn.Sequential()
        b5.add(pretrained_net.features[5])
        b6 = nn.Sequential()
        b6.add(pretrained_net.features[6])
        b7 = nn.Sequential()
        b7.add(pretrained_net.features[7])
        b8 = nn.Sequential()
        b8.add(pretrained_net.features[8])
        b9 = nn.Sequential()
        b9.add(nn.Conv2DTranspose(256, kernel_size=4, padding=1, strides=2))  #output 256x14x14
        b10 = nn.Sequential()
        b10.add(nn.Conv2DTranspose(128, kernel_size=4, padding=1, strides=2))  #output 128x28x28
        b11 = nn.Sequential()
        b11.add(nn.Conv2DTranspose(64, kernel_size=4, padding=1, strides=2))  #output 64x56x56
        b12 = nn.Sequential()
        b12.add(nn.Conv2DTranspose(64, kernel_size=4, padding=1, strides=2))  #output 64x112x112
        b13 = nn.Sequential()
        b13.add(nn.Conv2DTranspose(3, kernel_size=4, padding=1, strides=2))  #output 64x224x224
        self.verbose=verbose
        self.net = nn.Sequential()
        self.net.add(b0,b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13)
    def forward(self,x):
        out = x
        b0 = self.net[0] 
        b1 = self.net[1]
        b2 = self.net[2] 
        b3 = self.net[3] 
        b4 = self.net[4] 
        b5 = self.net[5] 
        b6 = self.net[6] 
        b7 = self.net[7] 
        b8 = self.net[8] 
        b9 = self.net[9]
        b10 = self.net[10]
        b11 = self.net[11]
        b12 = self.net[12]
        b13 = self.net[13] 
        r0 = out = b0(out)
        r1 = out = b1(out) #output 4x64x112x112
        #print('/r1',r1.shape)
        r2 = out = b2(out) #output 4x64x112x112
        #print('/r2',r2.shape)
        r3 = out = b3(out) #output 4x64x112x112
        #print('/r3',r3.shape)
        r4 = out = b4(out) #output 4x64x56x56
        #print('/r4',r4.shape)
        r5 = out = b5(out) #output 4x64x56x56
        #print('/r5',r5.shape)
        r6 = out = b6(out) #output 4x128x28x28
        #print('/r6',r6.shape)
        r7 = out = b7(out) #output 4x256x14x14
        #print('/r7',r7.shape)
        r8 = out = b8(out) #output (4, 512, 7, 7)
        #print('/r8',r8.shape)
        r9 = out = b9(out) #output (4, 256, 14, 14)
        #out = (r9 + r7)
        #print('/r9',r9.shape)
        r10 = out = b10(out) #output (4, 128, 28, 28)
        #out = (r10 + r6)
        #print('/r10',r10.shape)
        r11 = out = b11(out) #output (4, 64, 56, 56)
        #out = (r11 + r5)
        #print('/r11',r11.shape)
        r12 = out = b12(out) #output (4, 64, 112, 112)
        #print('/r12',r12.shape)
        r13 = out = b13(out) #output (4, 3, 224, 224)
        #print('/r13',r13.shape)
        return out
net = Resnet(True)
net.initialize()
x = nd.random.normal(shape=(4,3,224,224))
net(x).shape

训练模型

%matplotlib inline
import gluonbook as gb
from mxnet import gluon, init, nd, image
from mxnet.gluon import data as gdata, loss as gloss, model_zoo, nn
import numpy as np
import sys
ctx = gb.try_all_gpus()
loss = gloss.SoftmaxCrossEntropyLoss(axis=1)
net.collect_params().reset_ctx(ctx)
trainer = gluon.Trainer(net.collect_params(), 'sgd',
                        {'learning_rate': 0.1, 'wd': 1e-3})
gb.train(train_iter, test_iter, net, loss, trainer, ctx, num_epochs=50)

显示模型训练的效果

def display(img, out, thresh=0.5):
    import random
    import matplotlib as mpl
    mpl.rcParams['figure.figsize'] = (10,10)
    pens = dict()
    plt.clf()
    plt.imshow(img)
    for det in out:
        cid = int(det[0])
        if cid < 0:
            continue
        score = det[1]
        if score < thresh:
            continue
        if cid not in pens:
            pens[cid] = (random.random(), random.random(), random.random())
        scales = [img.shape[1], img.shape[0]] * 2
        xmin, ymin, xmax, ymax = [int(p * s) for p, s in zip(det[2:6].tolist(), scales)]
        rect = plt.Rectangle((xmin, ymin), xmax - xmin, ymax - ymin, fill=False, 
                             edgecolor=pens[cid], linewidth=3)
        plt.gca().add_patch(rect)
        text = class_names[cid]
        plt.gca().text(xmin, ymin-2, '{:s} {:.3f}'.format(text, score),
                       bbox=dict(facecolor=pens[cid], alpha=0.5),
                       fontsize=12, color='white')
    plt.show()
display(image[:, :, (2, 1, 0)], output[0].asnumpy(), thresh=0.27)

 

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
第1章总则 (一)、 适用范围 本标准适用于软粘土、粉土、新近沉积粘性土、砂土提高强度的加固和渗透系数大于0.01cm/s 的土层的止水加固以及已建工程局部松软地基的加固。 (二)、 编制参考标准及规范 1、《建筑地基基础工程施工质量验收规范》 GB 50202-2002 2、《建筑工程施工质量验收统一标准》 GB 50300-2001 3、建筑施工手册 第2章术语、符号 注浆地基 grouting foundation 将配置好的化学浆液或水泥浆,通过导管注入土体孔隙中,与土体结合,发生物化反应,从而提高土体强度,减小其缩性和渗透性。 第3章基本规定 1. 一般项目 1) 地基基础工程施工前,必须具备完整的地质勘察资料及工程附近管线、建筑物、构筑物和其它公共设施的构造情况,必要时应作施工勘察和调查以确保工程质量及临近建筑的安全。 2) 施工单位必须具备相应专业资质,并建立完善的质量管理体系和质量检验制度。 3) 从事地基基础工程检测及见证试验的单位,必须具备省级以上(含省、自治区、直辖市)建设行政主管部门颁发的资质证书和计量行政主管部门颁发的计量认证合格证书。 4) 施工过程中出现异常情况时,应停止施工,由监理或建设单位组织勘察、设计、施工等相关单位共同分析情况,解决问题,消除隐患,并应形成文件资料。 2. 质量目标 符合国家规范及设计要求 第4章施工准备 第1节技术准备 熟悉施工图纸及设计说明和其它设计文件。 施工方案审核、批准已经完成。 根据施工技术、安全交底进行各项施工准备。 施工前应检查有关技术文件(注浆点位置、浆液配比、注浆施工技术 参数,检测要求等),对有关浆液组成材料的性能及注浆设备的完好进行检查。 第2节材料要求 ⑴水泥 用强度等级32.5 或42.5 普通硅酸盐水泥;在特殊条件下亦可使用矿渣水泥、火山灰质水泥或抗硫酸盐水泥,要求新鲜无结块。 ⑵水 用一般饮用淡水,但不应采用含硫酸盐大于0.1%、氯化钠大于0.5%以及含过量糖、悬浮物质、碱类的水。 灌浆一般用净水泥浆,水灰比变化范围为0.6-2.0,常用水灰比从8∶1 至1∶1;要求快凝时,可采用快硬水泥或在水中掺入水泥用量1%-2%的氯化钙;如要求缓凝时,可掺加水泥用量0.1%-0.5%的木质素碘酸钙;亦可掺加其他外加剂以调节水泥浆性能。在裂隙或孔隙较大、可灌性好的地层,可在浆液中掺入适量细砂,或粉煤灰比例为1∶0.5-1∶3,以节约水
当涉及到弹性地基梁的建模和分析时,MATLAB是一个非常强大和常用的工具。下面是一个简单的弹性地基梁的MATLAB代码示例: ```matlab % 定义参数 L = 10; % 梁的长度 E = 2e11; % 弹性模量 I = 1e-4; % 惯性矩 k = 1e6; % 地基刚度 q = 1000; % 集中力 % 创建节点和单元 numNodes = 2; numElements = 1; nodes = linspace(0, L, numNodes); elements = [1, 2]; % 创建刚度矩阵和载荷向量 K = zeros(numNodes); F = zeros(numNodes, 1); % 计算刚度矩阵和载荷向量 for i = 1:numElements node1 = elements(i); node2 = elements(i+1); length = nodes(node2) - nodes(node1); ke = (E*I/length^3) * [12, 6*length, -12, 6*length; 6*length, 4*length^2, -6*length, 2*length^2; -12, -6*length, 12, -6*length; 6*length, 2*length^2, -6*length, 4*length^2]; fe = (q*length/24) * [6; length; 6; -length]; % 组装刚度矩阵和载荷向量 K(node1:node2, node1:node2) = K(node1:node2, node1:node2) + ke; F(node1:node2) = F(node1:node2) + fe; end % 添加地基刚度 K(1, 1) = K(1, 1) + k; K(numNodes, numNodes) = K(numNodes, numNodes) + k; % 求解位移 U = K\F; % 输出结果 disp('节点位移:'); disp(U); % 绘制梁的形变 figure; x = linspace(0, L, 100); y = zeros(size(x)); for i = 1:length(x) N1 = 1 - x(i)/L; N2 = x(i)/L; y(i) = U(1)*N1 + U(2)*N2; end plot(x, y); xlabel('位置'); ylabel('位移'); title('梁的形变'); ``` 这段代码实现了一个简单的弹性地基梁的建模和分析。它首先定义了梁的长度、弹性模量、惯性矩、地基刚度和集中力等参数。然后创建了节点和单元,并计算了刚度矩阵和载荷向量。接下来,将地基刚度添加到刚度矩阵中,并求解位移。最后,输出节点位移并绘制梁的形变图。 希望这个示例代码能够帮助你理解弹性地基梁的MATLAB实现。如果你有任何进一步的问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值