河道水面漂浮物识别检测根据监控摄像头搜集江河或湖水的短视频,河道水面漂浮物识别检测截取图片中带有海上漂浮物的照片,河道水面漂浮物识别检测训练所需照片,形成数据实体模型,随后即时检测真正情景里的监控视频或照片。因而,完成检测的第一步是收集数据。

在CNN出现之前,对于图像的处理一直都是一个很大的问题,一方面因为图像处理的数据量太大,比如一张512 x 512的灰度图,它的输入参数就已经达到了252144个,更别说1024x1024x3之类的彩色图,这也导致了它的处理成本十分昂贵且效率极低。另一方面,图像在数字化的过程中很难保证原有的特征,这也导致了图像处理的准确率不高。

而CNN网络能够很好的解决以上两个问题。对于第一个问题,CNN网络它能够很好的将复杂的问题简单化,将大量的参数降维成少量的参数再做处理。也就是说,在大部分的场景下,我们使用降维不会影响结果。比如在日常生活中,我们用一张1024x1024x3表示鸟的彩色图和一张100x100x3表示鸟的彩色图,我们基本上都能够用肉眼辨别出这是一只鸟而不是一只狗。这也是卷积神经网络在图像分类里的一个重要应用。

河道水面漂浮物识别检测 CNN_人工智能

河道水面漂浮物识别检测运用训练样本检测真正情景里的水漂浮物,即时检测待测水面上是不是有漂浮物。在检测情况下,根据改动阀值,避免识别过多的。最终,河道水面漂浮物识别检测导出检测到的漂浮物的坐标值信息内容、类型和各种漂浮物的精确性。河道水面漂浮物识别检测将视频监控与电子计算机相互连接,应用事先练习好的数据模型完成视频检测的并行处理,最终用矩形标识和导出图片视频里的水漂浮物。伴随着漂浮物的挪动,矩形将相对应地挪动。

batch_size = 256
train_iter, test_iter = d2l.load_data_fashion_mnist(batch_size=batch_size)

def evaluate_accuracy_gpu(net, data_iter, device=None): #@save
    """使用GPU计算模型在数据集上的精度。"""
    if isinstance(net, torch.nn.Module):
        net.eval()  # 设置为评估模式
        if not device:
            device = next(iter(net.parameters())).device
    # 正确预测的数量,总预测的数量
    metric = d2l.Accumulator(2)
    for X, y in data_iter:
        if isinstance(X, list):
            X = [x.to(device) for x in X]
        else:
            X = X.to(device)
        y = y.to(device)
        metric.add(d2l.accuracy(net(X), y), y.numel())
    return metric[0] / metric[1]

#@save
def train_ch6(net, train_iter, test_iter, num_epochs, lr, device):
    """用GPU训练模型。"""
    def init_weights(m):
        if type(m) == nn.Linear or type(m) == nn.Conv2d:
            nn.init.xavier_uniform_(m.weight)
    net.apply(init_weights)
    print('training on', device)
    net.to(device)
    optimizer = torch.optim.SGD(net.parameters(), lr=lr)
    loss = nn.CrossEntropyLoss()
    animator = d2l.Animator(xlabel='epoch', xlim=[1, num_epochs],
                            legend=['train loss', 'train acc', 'test acc'])
    timer, num_batches = d2l.Timer(), len(train_iter)
    for epoch in range(num_epochs):
        # 训练损失之和,训练准确率之和,范例数
        metric = d2l.Accumulator(3)
        net.train()
        for i, (X, y) in enumerate(train_iter):
            timer.start()
            optimizer.zero_grad()
            X, y = X.to(device), y.to(device)
            y_hat = net(X)
            l = loss(y_hat, y)
            l.backward()
            optimizer.step()
            with torch.no_grad():
                metric.add(l * X.shape[0], d2l.accuracy(y_hat, y), X.shape[0])
            timer.stop()
            train_l = metric[0] / metric[2]
            train_acc = metric[1] / metric[2]
            if (i + 1) % (num_batches // 5) == 0 or i == num_batches - 1:
                animator.add(epoch + (i + 1) / num_batches,
                             (train_l, train_acc, None))
        test_acc = evaluate_accuracy_gpu(net, test_iter)
        animator.add(epoch + 1, (None, None, test_acc))
    print(f'loss {train_l:.3f}, train acc {train_acc:.3f}, '
          f'test acc {test_acc:.3f}')
    print(f'{metric[2] * num_epochs / timer.sum():.1f} examples/sec '
          f'on {str(device)}')

江河漂浮物识别实时监测河流和湖泊地区。当检测到水面上面有很多废弃物时,直接警报并通告管理者及时处理。与此同时,将警报截屏和视频保存到数据表中,产生汇报,并发送给有关管理者。以后可依据时间范围查看播放报警记录和警报截屏,进一步提高监控区域的识别监控效率,合理处理大城市供水公司难题,提升大城市水务管理工作能力。