【语义分割专题】语义分割前期预处理工作--数据处理

语义分割:基于openCV和深度学习(二) 语义分割:基于openCV和深度学习(二) Semantic segmentation in images with OpenCV 开始吧-打开segment.py归档并插入以下代码: Semantic segmentation with OpenCV and deep learning import the necessary packages import numpy as np import argparse import imutils import time import cv2 从输入必要的依赖 阅读详情
AI摘要

本文分享了研究生阶段在语义分割项目中如何通过数据增强技术提升模型鲁棒性,包括几何变换(如翻转、平移)、随机裁剪缩放、纹理增强(亮度对比度、HSV、运动模糊等),以及标准化方法(min-max归一化、z-score标准化)。这些技巧对于提高模型性能和泛化能力至关重要。

数据预处理

马上毕业了,毕业之前将研究生阶段做过的一些工作做一些分享。本期将分享语义分割的一些前期预处理以及论文。

1 数据增强

1.1 几何增强

原图:
在这里插入图片描述
在这里插入图片描述

import cv2
import matplotlib.pyplot as plt
%matplotlib inline
from skimage import io


# img = io.imread('image.jpg')
# label = io.imread('label.jpg')

img = cv2.imread('image.jpg')
label = cv2.imread('label.jpg')
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB) # cv2默认为bgr顺序
label = cv2.cvtColor(label, cv2.COLOR_BGR2RGB) # cv2默认为bgr顺序
io.imshow(img)
<matplotlib.image.AxesImage at 0x274358194c8>

在这里插入图片描述

io.imshow(label)
<matplotlib.image.AxesImage at 0x274358e2e08>

在这里插入图片描述

水平翻转

  • 水平翻转: 水平镜像图像有助于增加方向的不变性(例如,行人可以以不同的方向出现)。在自然场景下,不建议垂直翻转,因为物体的垂直外观在场景中增加了重要的一致性(例如,网络知道天空是由它的位置决定的),但是像遥感图像这种俯瞰图,是可以垂直翻转的。
img_flip = cv2.flip(img, 1) # 1代表水平翻转,0代表垂直翻转,-1代表对角翻转 
label_flip = cv2.flip(label, 1)
io.imshow(img_flip)
<matplotlib.image.AxesImage at 0x2743595c8c8>

在这里插入图片描述

io.imshow(label_flip)
<matplotlib.image.AxesImage at 0x2743699c608>

在这里插入图片描述

平移

  • 平移: 移动图像会阻止CNN总是看到训练图像的相同位置,因此它不会总是从第一层产生相同的激活(移位不变性)。
# 定义平移矩阵 
import numpy as np

M = np.float32([[1, 0, 100], [0, 1, 0]])
# 变换公式:dst(x, y) = src(M11x + M12y + M13, M21x + M22y + M23)
img_shift = cv2.warpAffine(img, M, (img.shape[1], img.shape[0]))
label_shift = cv2.warpAffine(label, M, (label.shape[1], label.shape[0]))
io.imshow(img_shift)
<matplotlib.image.AxesImage at 0x27436a09248>

在这里插入图片描述

io.imshow(label_shift)
<matplotlib.image.AxesImage at 0x27436a73d08>

在这里插入图片描述

随机裁剪和缩放

  • 随机裁剪和缩放: 随机调整图像大小有助于模型看到每个对象的不同比例,并提高网络对不同图像分辨率的不变性。
h, w = img.shape[0], img.shape[1]
# 获取随机裁剪长度 
crop_scale = np.random.randint(h//2, h) / h
crop_h = int(crop_scale * h)
crop_w = int(crop_scale * w)
h_begin = np.random.randint(0, h - crop_h)
w_begin = np.random.randint(0, w - crop_w)

img_crop = img[h_begin: h_begin+crop_h, w_begin:w_begin+crop_w, :]
label_crop = label[h_begin: h_begin+crop_h, w_begin:w_begin+crop_w]

# resize函数使用时dsize先是w再是h,正好相反 
img_resize = cv2.resize(img_crop, (w, h))
label_resize = cv2.resize(label_crop, (w, h))
io.imshow(img_resize)
<matplotlib.image.AxesImage at 0x27436adefc8>

在这里插入图片描述

io.imshow(label_resize)
<matplotlib.image.AxesImage at 0x27436b524c8>

在这里插入图片描述

1.2 纹理增强

亮度和对比度

  • 亮度和对比度: 物体在图像中的清晰度取决于场景照明和相机灵敏度。通过随机增加或减少图像亮度来增加输入图像的虚拟变化,改善了网络的照明不变性。对比度就是图像中最暗和最亮区域之间的分隔。通过随机增强来增加这个范围有助于增加对阴影的不变性,并且通常会提高网络在低光照条件下的性能。
from albumentations import (
    Compose,
    RandomBrightnessContrast
)

aug = Compose([RandomBrightnessContrast(brightness_limit=(0, 0.4), contrast_limit=(0, 0.4), p=1)])

augmented = aug(image=img, mask=label)
image_bright_contrast = augmented['image']
gt_bright_contrast = augmented['mask']
io.imshow(image_bright_contrast)
<matplotlib.image.AxesImage at 0x27438dd1d08>

在这里插入图片描述

io.imshow(gt_bright_contrast)
<matplotlib.image.AxesImage at 0x27438e42d08>

在这里插入图片描述

  • 色调 饱和度 明度(HSV): 色调的取值范围是0~360度,用来表示颜色的类别,其中红色是0度,绿色是120度,蓝色是240度。饱和度高,颜色则深而艳。亮度的用来表示颜色的明暗程度。
from albumentations import (
    Compose,
    HueSaturationValue
)

aug = Compose([HueSaturationValue(hue_shift_limit=20,
                                  sat_shift_limit=30,
                                  val_shift_limit=20,
                                  p=1)])

augmented = aug(image=img, mask=label)
image_hsv = augmented['image']
gt_hsv = augmented['mask']
io.imshow(image_hsv)
<matplotlib.image.AxesImage at 0x27438eb0b08>

在这里插入图片描述

io.imshow(gt_hsv)
<matplotlib.image.AxesImage at 0x27438f16d88>

在这里插入图片描述

  • 运动模糊: 对图像进行模糊可以模拟部分拍摄场景的运动模糊,让网络对模糊图像的边界也具有较强的识别能力。
from albumentations import (
    Compose,
    MotionBlur
)

aug = Compose([MotionBlur(blur_limit=7, p=1.0)])

augmented = aug(image=img, mask=label)
image_MotionBlur = augmented['image']
gt_MotionBlur = augmented['mask']
io.imshow(image_MotionBlur)
<matplotlib.image.AxesImage at 0x2743906e448>

在这里插入图片描述

io.imshow(gt_MotionBlur)
<matplotlib.image.AxesImage at 0x274390d6c48>

在这里插入图片描述

  • 颜色抖动: 向每个RGB像素添加小的随机噪声有助于获得对一些相机失真的不变性。
from albumentations import (
    Compose,
    RGBShift
)

aug = Compose([RGBShift(r_shift_limit=20,
                        g_shift_limit=20,
                        b_shift_limit=20,
                        p=1.0)])

augmented = aug(image=img, mask=label)
image_rgbshift = augmented['image']
gt_rgbshift = augmented['mask']
io.imshow(image_rgbshift)
<matplotlib.image.AxesImage at 0x2743a10eec8>

在这里插入图片描述

io.imshow(gt_rgbshift)
<matplotlib.image.AxesImage at 0x2743a17e408>

在这里插入图片描述

限制对比度的自适应直方图均衡化:

from albumentations import (
    Compose,
    CLAHE
)

aug = Compose([CLAHE(clip_limit=2,
                     tile_grid_size=(8, 8),
                     p=1)])

augmented = aug(image=img, mask=label)
image_CLAHE = augmented['image']
gt_CLAHE = augmented['mask']
io.imshow(image_CLAHE)
<matplotlib.image.AxesImage at 0x2743a1e2c88>

在这里插入图片描述

io.imshow(gt_CLAHE)
<matplotlib.image.AxesImage at 0x2743a5b0288>

在这里插入图片描述

其他增强

  • 超像素: 随机将图像上某个超像素块内的颜色替换为超像素的均值。
from albumentations import Compose
from albumentations.imgaug.transforms import IAASuperpixels

aug = Compose([IAASuperpixels(p_replace=0.1,
                              n_segments=500,
                              p=1)])

augmented = aug(image=img, mask=label)
image_Superpixels = augmented['image']
gt_Superpixels = augmented['mask']
io.imshow(image_Superpixels)
<matplotlib.image.AxesImage at 0x2743a612ac8>

在这里插入图片描述

io.imshow(gt_Superpixels)
<matplotlib.image.AxesImage at 0x2743a658fc8>

在这里插入图片描述

  • 锐化: 增强图像细节。
from albumentations import Compose
from albumentations.imgaug.transforms import IAASharpen

aug = Compose([IAASharpen(p=1)])

augmented = aug(image=img, mask=label)
image_Sharpen = augmented['image']
gt_Sharpen = augmented['mask']
io.imshow(image_Sharpen)
<matplotlib.image.AxesImage at 0x2743a704c08>

在这里插入图片描述

io.imshow(gt_Sharpen)
<matplotlib.image.AxesImage at 0x2743b7457c8>

在这里插入图片描述

  • 透视变换:
from albumentations import Compose
from albumentations.imgaug.transforms import IAAPerspective

aug = Compose([IAAPerspective(p=1)])

augmented = aug(image=img, mask=label)
image_Perspective = augmented['image']
gt_Perspective = augmented['mask']

io.imshow(image_Perspective)
<matplotlib.image.AxesImage at 0x2743b7c9a08>

在这里插入图片描述

io.imshow(gt_Perspective)
<matplotlib.image.AxesImage at 0x2743b835288>

在这里插入图片描述

2 标准化与归一化

2.1 min-max归一化

  • 公式:对数据的数值范围进行特定缩放,但不改变其数据分布的一种线性特征变换。
import matplotlib.pyplot as plt
import cv2
import numpy as np
import seaborn as sns

image = cv2.imread('image.jpg')[:, :, 0]
min_ = np.min(image)
max_ = np.max(image)

new_image = (image-min_) / (max_-min_)

flat_image = np.reshape(image, -1)
flat_new_image = np.reshape(new_image, -1)
fig, ax = plt.subplots(1, 2)
sns.distplot(flat_image, ax=ax[0])
sns.distplot(flat_new_image, ax=ax[1])
plt.show()

在这里插入图片描述

2.2 z-score 标准化

  • 公式:将数值范围缩放到0附近, 但没有改变数据分布;
import matplotlib.pyplot as plt
import cv2
import numpy as np
import seaborn as sns

image = cv2.imread('image.jpg')[:, :, 0]
mean_ = np.mean(image)
std_ = np.std(image)

new_image = (image-mean_) / std_

flat_image = np.reshape(image, -1)
flat_new_image = np.reshape(new_image, -1)
fig, ax = plt.subplots(1, 2)
sns.distplot(flat_image, ax=ax[0])
sns.distplot(flat_new_image, ax=ax[1])
plt.show()

在这里插入图片描述

语义分割预处理与后处理方法  深度学习发展到现在,各路大神都发展出了各种模型,这里就做个伸手党吧。在深度学习实现过程中最重要的最花时间的我觉得应该是数据预处理与后处理,会极大影响最后效果,至于模型,感觉像是拼乐高积木,一个模块一个模块地叠加,拼成最适合自己的模型。 1 数据预处理 1.1 图像切割  一般而言,训练集会是一整张大图,所以需要自己切割成小图训练,可以做切割,也可以在训练时划窗读取,最好先做切割,可以检查数据。切... 阅读详情

相关推荐

Cityscapes数据集预处理避坑指南:手把手教你制作colormap文件

本文详细解析Cityscapes数据集预处理中的colormap文件制作方法,帮助开发者避免常见陷阱。从数据组织结构解析到手动构建colormap的完整流程,再到与TensorFlow、PyTorch等框架的集成方案,提供实战经验与高级应用技巧,助力语义分割任务的高效开展。

weixin_29084111的博客 164

【深度学习】语义分割-数据集调研-处理方法

目录参考笔记简述数据集ADE20K数据量场景数据集格式:Cityscapes数据量 参考笔记 【语义分割】——语义分割数据集总结 ADE20K/cityScapes/VOC12_AUG 简述 不同的图像语义分割方法在处理相同类型的图像时的效果参差不齐,而且不同的图像语义分割方法擅长处理的图像类型也各不一样。为了对各种图像语义分割方法的优劣性进行公平的比较,需要一个包含各种图像类型且极具代表性的图像语义分割数据集来测试并得到性能评估指标。 下面将依次介绍图像语义分割领域中常用的数据集,所有常用数据集的数据对比

zhe470719的博客 2291

3D语义场景图生成:从室内重建到关系推理的联合学习

在室内三维场景理解中,语义分割只能输出逐点类别标签,难以回答物体间的支撑、邻近等关系问题。3D语义场景图通过图结构描述物体节点及语义关系,为机器人交互、AR导航等下游任务提供结构化推理基础。构建场景图的关键在于解决重建网格的几何噪声、空间关系表达复杂和标注成本高等挑战。联合学习框架通过同时优化语义分割与场景图生成,利用全局上下文弥补局部几何不可靠,显著提升室内场景感知的结构化程度。本文从问题定义、数据特点、方法拆解与实验结论出发,解析超点特征提取、注意力消息传递及多任务损失设计等技术要点,并结合复现经验讨论

weixin_33755649的博客 387

【图像增强】python图像数据增强

导入数据增强包: from imgaug import augmenters as iaa #引入数据增强的包 sometimes = lambda aug: iaa.Sometimes(0.5, aug) #建立lambda表达式, 这里定义sometimes意味有时候做的操作,然而实际上在深度学习的模型训练中,数据增强不能喧宾夺主,如果对每一张图片都加入高斯模糊的话实际上是毁坏了原来数据的特征,因此,我们需要“有时候”做,给这个操作加一个概率。 下面建立一个图像增强流程,有详细注释: seq = i

一路嵌行的博客 3345

图像算法培训实战:从数据处理到模型部署的全流程指南

图像处理与深度学习在工业质检、自动驾驶、医学影像等领域中扮演着越来越关键的角色。传统图像处理技术如滤波、边缘检测与形态学分析,构成了解决复杂视觉问题的基础“手动挡”,而卷积神经网络等深度学习方法则提供了强大的“自动挡”能力,两者结合才能应对真实场景中的光照突变、遮挡与数据量不足等挑战。掌握从数据采集、标注到模型训练、调优直至模型部署的完整链路,是真正落地项目的前提。针对模型效果差、GPU利用率低、部署推理慢等高频工程问题,合理的排查顺序与工具选择(如OpenCV、YOLO、ONNX Runtime)能大幅提

weixin_34160277的博客 489

OpenCV语义分割:实例编程

在上面的代码中,我们首先加载了预训练的模型,可以根据自己的需求选择适合的模型。然后,我们加载了要进行语义分割的图像,并创建了一个输入blob。语义分割是一种计算机视觉任务,旨在将图像分割成不同的语义区域,即将图像中的每个像素分类为特定的对象或类别。在本文中,我们将介绍如何使用OpenCV进行语义分割,并给出相应的源代码示例。然后,我们创建一个颜色映射,用不同的颜色表示不同的类别。最后,我们将分割结果与原始图像融合,并显示最终的语义分割结果。在这个示例中,我们将使用预训练的模型来对图像中的每个像素进行分类。

2301_79326510的博客 407

语义分割数据处理:7大关卡与像素级预处理实战

语义分割是计算机视觉中将图像中每个像素分配语义类别的基础任务,其性能高度依赖输入数据的几何一致性、标签合法性与格式规范性。原理上,模型要求图像与掩码在空间尺寸、坐标系、类别ID编码上严格对齐,任何偏差都会导致训练失真或部署失效。技术价值在于规避‘数据幻觉’——如EXIF旋转错位、16位mask截断、调色板误读等隐性错误,直接决定mIoU能否提升5~15个百分点。典型应用场景涵盖工业缺陷检测、遥感影像分析、医学图像分割及自动驾驶感知,尤其在产线图像、内镜视频、无人机航拍等真实数据源中,数据清洗与增强同步成为落

weixin_29040367的博客 234

PyTorch遥感语义分割实战:从数据准备到模型训练与踩坑记录

语义分割作为深度学习在计算机视觉中的核心任务之一,其目标是对图像中的每个像素赋予语义标签,广泛应用于自动驾驶、医学影像分析等场景。而在遥感领域,这一技术与地物分类需求深度结合,通过高分辨率影像实现对建筑、道路、水体等目标的像素级识别。PyTorch以其动态图机制和灵活的生态,成为实现遥感语义分割模型的常用框架。实际工程中,完整的遥感分割项目涉及数据预处理、类别体系设计、模型选型、训练策略调优及结果评估等多个环节,其中数据质量与预训练权重选择对最终精度的影响往往比模型结构更大。本文以高分辨率遥感影像地物分类为

weixin_30694389的博客 270

语义分割数据预处理全流程:从采集规范到可训练数据集

语义分割是计算机视觉中实现像素级图像理解的核心任务,其性能高度依赖于数据质量而非仅模型结构。原理上,它要求图像与标注在空间、色彩、尺度和语义密度上严格对齐;技术价值体现在显著提升模型泛化能力、降低标注噪声影响、增强跨设备/场景鲁棒性;典型应用场景包括遥感地物识别、工业缺陷检测、医疗影像分割等。实践中,原始图像采集不规范、标注不一致、格式错配、类别严重失衡等问题,常导致训练loss下降但mIoU停滞。本文聚焦语义分割前期预处理,覆盖采集协议制定、图像质量衰减建模、标注三重机器校验、PIL与OpenCV读取陷阱

weixin_32296621的博客 231

深度学习遥感影像分割:从UNet模型到工程化系统全流程解析

语义分割是计算机视觉的核心任务之一,旨在对图像中的每个像素进行分类,实现像素级的场景理解。其原理基于编码器-解码器架构,通过卷积神经网络提取多尺度特征并重建高分辨率分割图。这项技术的价值在于能够自动化、精细化地解析视觉内容,在遥感影像分析、自动驾驶、医疗影像诊断等领域有广泛应用。在遥感领域,结合UNet、DeepLabV3+等模型,可以高效处理卫星和航拍影像,实现地物分类与变化检测。本文聚焦于遥感影像智能分割系统的工程化实现,详细拆解了数据预处理、模型训练、推理部署等关键环节,并针对类别不平衡、大图推理等实

weixin_30252709的博客 350

深度学习工程应用:无人机图像分割案例

本博客深入探讨了深度学习在无人机图像分割中的应用,通过案例研究,展示了如何使用DeepLabV3_ResNet50模型处理图像数据,并通过预处理、数据增强、模型训练、损失函数的选择和优化算法来提高模型性能。

weixin_35879493的博客 624

使用MATLAB读取、加载和可视化点云,并对数据进行下采样和去噪的预处理、应用仿射变换,如平移和旋转研究附Matlab代码

点云数据作为三维空间信息的重要载体,在机器人、自动驾驶、计算机视觉、测绘等领域具有广泛的应用。本文旨在详细阐述如何利用MATLAB这一强大的数值计算和编程环境,实现点云数据的读取、加载、可视化,并对数据进行下采样和去噪的预处理,以及应用平移和旋转等仿射变换。通过具体实例和代码演示,本文将为读者提供一套系统化的点云数据处理与分析方法,旨在提高数据处理效率和质量,为后续的高级应用奠定基础。

Matlab245的博客 751

构建自定义数据库和数据集以助力深度学习项目

在当今的数据驱动世界中,数据库和数据集是不可或缺的组成部分。数据库是一个组织、存储和检索数据的系统,通常拥有强大的数据管理功能。而数据集是数据库中被提取出来用于特定分析或机器学习任务的一组数据。它们是数据科学、人工智能、以及各种IT应用领域的基石。数据集是机器学习和深度学习项目的基石,它们为模型提供了必要的训练材料。创建一个高效且高质量的数据集需要经过一系列精心策划和执行的步骤。本章将详细探讨数据集创建流程的概述,为读者提供创建理想数据集的路线图。

weixin_36204513的博客 741

太像素级地理空间数据处理:从海量影像到智能分析的工程实践

地理空间数据处理是遥感、测绘和计算机视觉领域的核心技术,其核心原理在于对栅格和矢量数据进行采集、存储、分析和可视化。随着卫星、无人机等传感器技术的普及,数据规模正从GB级向TB乃至PB级(拍字节)跃迁,催生了‘太像素’(Terapixel,万亿像素)级超大规模处理需求。这一技术突破的价值在于,它使得对全球或区域尺度进行持续、精细的动态监测成为可能,广泛应用于环境监测、城市规划、灾害评估和农业估产等场景。实现这一目标的关键在于采用‘分而治之’的分布式计算范式,结合云优化数据格式和自动化流水线,将海量影像分块并

weixin_30681615的博客 410

VPI与Matlab协同仿真:相干光通信接收端DSP算法全解析

本文详细解析了如何利用VPI与Matlab协同仿真,构建完整的相干光通信接收端DSP算法处理闭环。重点介绍了从VPI导出数据后,在Matlab中实现时钟恢复、偏振解复用和载波相位估计等核心算法的步骤与原理,并阐述了如何通过误码率计算完成仿真验证,为相干光通信系统算法研究与验证提供了高效实用的方法。

ll5678的博客 611

C++和蓝图1:Unreal Engine 中 C++ 与蓝图的桥梁

摘要: 本文介绍了Unreal Engine(UE)中C++与蓝图可视化脚本的结合机制,重点解析了宏系统(UCLASS、UPROPERTY、UFUNCTION)如何实现代码与蓝图的交互。相比Unity的纯C#脚本模式,UE的双轨制开发允许程序员用C++处理核心逻辑,同时通过蓝图让非程序员快速迭代。文章对比了两大引擎的编程范式差异,指出UE的反射系统和宏标记提供了更精细的控制,并给出了从Unity迁移到UE的具体思路。核心在于理解UE的混合编程优势:C++保证性能,蓝图提升开发效率,二者通过宏系统无缝协作。

qq_46348216的博客 1409

U-Net语义分割实战:皮肤癌图像分类模型全流程解析

在医学影像分析领域,语义分割是一项核心技术,其目标是将图像中的病灶区域与正常组织精确区分,为后续的诊断和分类提供可靠依据。U-Net作为经典的编码器-解码器结构,凭借跳跃连接的设计,在保留空间细节与语义信息之间取得平衡,成为小样本医学图像分割的首选基线。本文从语义分割的基本原理出发,结合ISIC皮肤镜数据集,详细介绍了从数据预处理、网络搭建、损失函数设计到训练调参的完整流程,并重点阐述如何将分割结果融入皮肤癌良恶性分类决策中。通过分割辅助分类,模型能够聚焦于病灶区域而非整张图像的背景噪声,显著提升分类准确率

weixin_34268579的博客 366

Qt 5.9.1 32位下,手把手搞定周立功CAN二次开发库的加载与配置(含常见错误排查)

本文详细介绍了在Qt 5.9.1 32位环境下配置周立功CAN二次开发库的完整流程,包括环境准备、项目配置、常见错误排查及性能优化建议。特别针对MinGW 32bit环境,提供了.pro文件的精准配置和DLL部署策略,帮助开发者快速解决库文件匹配、编译报错和运行时问题,实现高效的CAN总线通信开发。

weixin_28717431的博客 356

高质量数据集构建实战:从采集、预处理到标注的全流程指南

在机器学习和人工智能领域,数据集是模型训练的基石。其质量直接决定了算法的性能上限,遵循着“垃圾进,垃圾出”的基本原理。一个高质量的数据集并非简单的数据堆砌,而是一个贯穿需求定义、采集规划、预处理、标注与验证全生命周期的系统工程。其核心价值在于为模型提供无偏见、高信息密度的学习素材,从而提升模型的泛化能力和鲁棒性。在工程实践中,这涉及到从多源数据融合、自动化采集流水线搭建,到精细化的数据清洗、特征工程与数据增强等一系列关键技术。例如,在构建类似“道路积水检测”或处理“CWRU轴承故障”这类特定领域数据集时,必

weixin_33806300的博客 383

告别‘小爱同学’:用ESP32-S3和esp-sr SDK,从零打造一个离线语音助手(含完整代码)

本文详细介绍了如何利用ESP32-S3芯片和esp-sr SDK从零构建一个离线语音助手,涵盖硬件选型、声学设计、SDK配置及低功耗优化等关键步骤。通过实战案例和完整代码,帮助开发者实现自定义唤醒词和命令词,打造低成本、高隐私的本地语音控制解决方案。

weixin_29041195的博客 372

Android SSL证书固定实战:原理、方案与避坑指南

SSL/TLS协议是保障网络通信安全的基石,其核心原理是通过非对称加密和数字证书实现身份认证与数据加密。在移动应用开发中,为了防止中间人攻击,证书固定技术应运而生,它通过将服务器证书或公钥的哈希值预置在应用内,强制校验服务器身份,从而大幅提升通信链路的安全性。这一技术对于金融、电商等高安全要求场景尤为重要。本文聚焦Android平台,深入解析SPKI固定、Network Security Configuration与OkHttp CertificatePinner等主流方案,并针对证书更新、调试兼容等常见痛

weixin_33935636的博客 405

从农田到城市:激光雷达如何重塑智能农业与智慧交通的未来

本文探讨了激光雷达技术在智能农业与智慧交通领域的革命性应用。通过高精度测绘和实时点云分析,激光雷达实现了从农田作物三维建模到城市交通动态监测的全方位革新,显著提升农业产量与城市管理效率。重点解析了无人机搭载激光雷达系统的实践案例,展示其在精准农业和智慧城市建设中的关键技术突破与经济效益。

kotlin6android的博客 373

YOLOv8改进:全网原创首发 | 新颖的多尺度卷积注意力(MSCA),即插即用,助力小目标检测 | NeurIPS2022

多尺度卷积注意力(MSCA),有效地提取上下文信息;1)作为注意力MSCA使用;

①答疑群聊服务;②YOLO大模型知识问答系统;③计算机视觉论文生成智能体; 3844

自动驾驶开源数据集全景解析:从KITTI到Waymo的选型与应用指南

在自动驾驶技术研发中,高质量数据集是算法模型训练与验证的基石。其核心原理在于通过多传感器(如摄像头、激光雷达)采集真实或仿真环境数据,并辅以精准的标注体系(如2D/3D边界框、语义分割、轨迹预测),为感知、预测、规划等任务提供监督信号。这些数据集的技术价值在于,它们不仅定义了研究基准,推动了算法创新,更是连接学术研究与工程落地的桥梁,能有效评估模型在复杂场景下的泛化能力和鲁棒性。典型的应用场景包括城市道路3D目标检测、恶劣天气下的感知鲁棒性测试,以及基于高精地图的轨迹预测。本文聚焦于nuScenes、Way

weixin_30924239的博客 430

小白也能轻松部署 OpenClaw:OpenClaw可视化部署工具+OpenClaw可视化管理工具分享

分享一个OpenClaw可视化一键部署工具,帮你快速打造属于自己的AI助手 🚀

XiaoqiangClub的博客 6715

机器人中的数值优化(十二)——带约束优化问题简介、LP线性规划

本系列文章主要是我在学习《数值优化》过程中的一些笔记和相关思考,主要的学习资料是深蓝学院的课程《机器人中的数值优化》和高立编著的《数值最优化方法》等,本系列文章篇数较多,不定期更新,上半部分介绍无约束优化,下半部分介绍带约束的优化,中间会穿插一些路径规划方面的应用实例

慕羽★的博客 3852
上一篇: 【分布式面试高频】- 04 分布式事务的解决方案(2PC TCC 可靠性消息 最大努力通知)
下一篇: 【语义分割专题】语义分割相关工作--FCN网络介绍
mind_programmonkey
mind_programmonkey 领域专家: 算法与数据结构技术领域 领域专家: 算法与数据结构技术领域
博客等级 码龄9年 4435粉丝 1111原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

mind_programmonkey

你的鼓励是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值