【Deeplabv3+】Ubutu18.04中使用pytorch复现Deeplabv3+第三步)-----CityscapesScripts生成自己的标签
本文是在前面两篇文章的基础上,讲解如何更改训练数据集颜色,需要与前面两篇文章连起来看。
本文用于修改cityscapes数据集的标签颜色与Semankitti数据集的标签一致,对修改后的数据集进行训练。需要下载两个开发工具包和一个数据集,分别是cityscapesScripts-master、semantic-kitti-api-master和cityscapes数据集:
- cityscapesScripts是用于检查、准备和评估 Cityscapes 数据集的脚本。下载路径:
https://github.com/mcordts/cityscapesScripts
- cityscapes数据集需要注册登录才能下载,下载链接:
Login – Cityscapes Dataset

下载完成后,在cityscapesScripts-master中创建一个cityscapes文件夹,将下载好的两个文件分别放入其中,解压出来的说明文件直接删除即可,最终如下图:

- semantic-kitti-api是用于打开、可视化、处理和评估 SemanticKITTI 数据集中的点云和标签结果的帮助程序脚本。下载路径:
https://github.com/PRBonn/semantic-kitti-api
一、制作标签步骤
1.1 更改标签颜色
进入目录cityscapesScripts-master\cityscapesscripts\helpers\labels.py中修改标签颜色与semantic-kitti-api-master\config\semanic-kitti.yaml中一致。注意:semantic-kitti-api-maste中的颜色是BGR颜色,cityscapesScripts中的颜色是RGB颜色,颠倒一下
cityscapesScripts-master\cityscapesscripts\helpers\labels.py标签:

semantic-kitti-api-master\config\semanic-kitti.yaml标签:

修改后的cityscapesScripts-master\cityscapesscripts\helpers\labels.py标签,可以直接拷贝使用:
labels = [# name id trainId category catId hasInstances ignoreInEval colorLabel( 'unlabeled' , 0 , 255 , 'void' , 0 , False , True , ( 0, 0, 0) ),Label( 'ego vehicle' , 1 , 255 , 'void' , 0 , False , True , ( 0, 0, 0) ),Label( 'rectification border' , 2 , 255 , 'void' , 0 , False , True , ( 0, 0, 0) ),Label( 'out of roi' , 3 , 255 , 'void' , 0 , False , True , ( 0, 0, 0) ),Label( 'static' , 4 , 255 , 'void' , 0 , False , True , ( 0, 0, 0) ),Label( 'dynamic' , 5 , 255 , 'void' , 0 , False , True , (111, 74, 0) ),
# Label( 'ground' , 6 , 255 , 'void' , 0 , False , True , ( 81, 0, 81) ),Label( 'ground' , 6 , 255 , 'void' , 0 , False , True , ( 175, 0, 75) ),
# Label( 'road' , 7 , 0 , 'flat' , 1 , False , False , (128, 64,128) ),Label( 'road' , 7 , 0 , 'flat' , 1 , False , False , (255, 0,255) ),
# Label( 'sidewalk' , 8 , 1 , 'flat' , 1 , False , False , (244, 35,232) ),Label( 'sidewalk' , 8 , 1 , 'flat' , 1 , False , False , (75, 0,75) ),
# Label( 'parking' , 9 , 255 , 'flat' , 1 , False , True , (250,170,160) ),Label( 'parking' , 9 , 255 , 'flat' , 1 , False , True , (255,150,255) ),
# Label( 'rail track' , 10 , 255 , 'flat' , 1 , False , True , (230,150,140) ),Label( 'rail track' , 10 , 255 , 'flat' , 1 , False , True , (0,0,255) ),
# Label( 'building' , 11 , 2 , 'construction' , 2 , False , False , ( 70, 70, 70) ),Label( 'building' , 11 , 2 , 'construction' , 2 , False , False , ( 255, 200, 0) ),
# Label( 'wall' , 12 , 3 , 'construction' , 2 , False , False , (102,102,156) ),Label( 'wall' , 12 , 3 , 'construction' , 2 , False , False , (255,150,0) ),
# Label( 'fence' , 13 , 4 , 'construction' , 2 , False , False , (190,153,153) ),Label( 'fence' , 13 , 4 , 'construction' , 2 , False , False , (255,120,50) ),
# Label( 'guard rail' , 14 , 255 , 'construction' , 2 , False , True , (180,165,180) ),Label( 'guard rail' , 14 , 255 , 'construction' , 2 , False , True , (255,150,0) ),
# Label( 'bridge' , 15 , 255 , 'construction' , 2 , False , True , (150,100,100) ),Label( 'bridge' , 15 , 255 , 'construction' , 2 , False , True , (255,150,0) ),
# Label( 'tunnel' , 16 , 255 , 'construction' , 2 , False , True , (150,120, 90) ),Label( 'tunnel' , 16 , 255 , 'construction' , 2 , False , True , (255,150, 0) ),
# Label( 'pole' , 17 , 5 , 'object' , 3 , False , False , (153,153,153) ),Label( 'pole' , 17 , 5 , 'object' , 3 , False , False , (255,240,150) ),
# Label( 'polegroup' , 18 , 255 , 'object' , 3 , False , True , (153,153,153) ),Label( 'polegroup' , 18 , 255 , 'object' , 3 , False , True , (50,255,255) ),
# Label( 'traffic light' , 19 , 6 , 'object' , 3 , False , False , (250,170, 30) ),Label( 'traffic light' , 19 , 6 , 'object' , 3 , False , False , (50,255, 255) ),
# Label( 'traffic sign' , 20 , 7 , 'object' , 3 , False , False , (220,220, 0) ),Label( 'traffic sign' , 20 , 7 , 'object' , 3 , False , False , (255,0, 0) ),
# Label( 'vegetation' , 21 , 8 , 'nature' , 4 , False , False , (107,142, 35) ),Label( 'vegetation' , 21 , 8 , 'nature' , 4 , False , False , (0,175, 0) ),
# Label( 'terrain' , 22 , 9 , 'nature' , 4 , False , False , (152,251,152) ),Label( 'terrain' , 22 , 9 , 'nature' , 4 , False , False , (150,240,80) ),
# Label( 'sky' , 23 , 10 , 'sky' , 5 , False , False , ( 70,130,180) ),Label( 'sky' , 23 , 10 , 'sky' , 5 , False , False , ( 0,0,0) ),
# Label( 'person' , 24 , 11 , 'human' , 6 , True , False , (220, 20, 60) ),Label( 'person' , 24 , 11 , 'human' , 6 , True , False , (255, 30, 30) ),
# Label( 'rider' , 25 , 12 , 'human' , 6 , True , False , (255, 0, 0) ),Label( 'rider' , 25 , 12 , 'human' , 6 , True , False , (255, 40, 200) ),
# Label( 'car' , 26 , 13 , 'vehicle' , 7 , True , False , ( 0, 0,142) ),Label( 'car' , 26 , 13 , 'vehicle' , 7 , True , False , ( 100, 150,245) ),
# Label( 'truck' , 27 , 14 , 'vehicle' , 7 , True , False , ( 0, 0, 70) ),Label( 'truck' , 27 , 14 , 'vehicle' , 7 , True , False , ( 80, 30, 180) ),
# Label( 'bus' , 28 , 15 , 'vehicle' , 7 , True , False , ( 0, 60,100) ),Label( 'bus' , 28 , 15 , 'vehicle' , 7 , True , False , ( 100, 80,250) ),
# Label( 'caravan' , 29 , 255 , 'vehicle' , 7 , True , True , ( 0, 0, 90) ),Label( 'caravan' , 29 , 255 , 'vehicle' , 7 , True , True , ( 0, 0, 255) ),
# Label( 'trailer' , 30 , 255 , 'vehicle' , 7 , True , True , ( 0, 0,110) ),Label( 'trailer' , 30 , 255 , 'vehicle' , 7 , True , True , ( 0, 0,255) ),
# Label( 'train' , 31 , 16 , 'vehicle' , 7 , True , False , ( 0, 80,100) ),Label( 'train' , 31 , 16 , 'vehicle' , 7 , True , False , ( 0, 0,255) ),
# Label( 'motorcycle' , 32 , 17 , 'vehicle' , 7 , True , False , ( 0, 0,230) ),Label( 'motorcycle' , 32 , 17 , 'vehicle' , 7 , True , False , ( 30, 60,150) ),
# Label( 'bicycle' , 33 , 18 , 'vehicle' , 7 , True , False , (119, 11, 32) ),Label( 'bicycle' , 33 , 18 , 'vehicle' , 7 , True , False , (100, 230, 245) ),
# Label( 'license plate' , -1 , -1 , 'vehicle' , 7 , False , True , ( 0, 0,142) ),Label( 'license plate' , -1 , -1 , 'vehicle' , 7 , False , True , ( 0, 0,255) ),
]
1.2 生成训练标签
1.2.1 生成labelIds标签
进入目录:cityscapesScripts-master\cityscapesscripts\preparation中
运行下面代码:
# 运行成功后会在cityscapes数据集中生成_labelTrainIds结尾的训练文件python .\createTrainIdLabelImgs.py
此时进入cityscapesScripts-master\cityscapes\gtFine\train中任何一个城市,会发现多了一个修改好的训练标签(gtFine中test、train和val中均多了一个训练标签,不一一展示):

2.2 生成instanceIds标签
进入目录:cityscapesScripts-master\cityscapesscripts\preparation中
运行下面代码
# # 运行成功后会在cityscapes数据集中生成_instanceTrainIds结尾的训练文件
python .\createTrainIdInstanceImgs.py
此时进入cityscapesScripts-master\cityscapes\gtFine\train中任何一个城市,会发现多了一个另一个实例训练标签,(gtFine中test、train和val中均多了一个训练标签,不一一展示):

2.3 修改DeepLabV3Plus-Pytorch中datasets\cityscapes.py中RGB值
训练之前,修改datasets\cityscapes.py文件中标签RGB值与cityscapesScripts-master中一致,可直接使用:

修改好的标签代码如下:
CityscapesClass = namedtuple('CityscapesClass', ['name', 'id', 'train_id', 'category', 'category_id','has_instances', 'ignore_in_eval', 'color'])classes = [CityscapesClass('unlabeled', 0, 255, 'void', 0, False, True, (0, 0, 0)),CityscapesClass('ego vehicle', 1, 255, 'void', 0, False, True, (0, 0, 0)),CityscapesClass('rectification border', 2, 255, 'void', 0, False, True, (0, 0, 0)),CityscapesClass('out of roi', 3, 255, 'void', 0, False, True, (0, 0, 0)),CityscapesClass('static', 4, 255, 'void', 0, False, True, (0, 0, 0)),CityscapesClass('dynamic', 5, 255, 'void', 0, False, True, (111, 74, 0)),# CityscapesClass('ground', 6, 255, 'void', 0, False, True, (81, 0, 81)),CityscapesClass('ground', 6, 255, 'void', 0, False, True, (175, 0, 75)),# CityscapesClass('road', 7, 0, 'flat', 1, False, False, (128, 64, 128)),CityscapesClass('road', 7, 0, 'flat', 1, False, False, (255, 0, 255)),# CityscapesClass('sidewalk', 8, 1, 'flat', 1, False, False, (244, 35, 232)),CityscapesClass('sidewalk', 8, 1, 'flat', 1, False, False, (75, 0, 75)),# CityscapesClass('parking', 9, 255, 'flat', 1, False, True, (250, 170, 160)),CityscapesClass('parking', 9, 255, 'flat', 1, False, True, (255, 150, 255)),# CityscapesClass('rail track', 10, 255, 'flat', 1, False, True, (230, 150, 140)),CityscapesClass('rail track', 10, 255, 'flat', 1, False, True, (0, 0, 255)),# CityscapesClass('building', 11, 2, 'construction', 2, False, False, (70, 70, 70)),CityscapesClass('building', 11, 2, 'construction', 2, False, False, (255, 200, 0)),# CityscapesClass('wall', 12, 3, 'construction', 2, False, False, (102, 102, 156)),CityscapesClass('wall', 12, 3, 'construction', 2, False, False, (255, 150, 0)),# CityscapesClass('fence', 13, 4, 'construction', 2, False, False, (190, 153, 153)),CityscapesClass('fence', 13, 4, 'construction', 2, False, False, (255, 120, 50)),# CityscapesClass('guard rail', 14, 255, 'construction', 2, False, True, (180, 165, 180)),CityscapesClass('guard rail', 14, 255, 'construction', 2, False, True, (255, 150, 0)),# CityscapesClass('bridge', 15, 255, 'construction', 2, False, True, (150, 100, 100)),CityscapesClass('bridge', 15, 255, 'construction', 2, False, True, (255, 150, 0)),# CityscapesClass('tunnel', 16, 255, 'construction', 2, False, True, (150, 120, 90)),CityscapesClass('tunnel', 16, 255, 'construction', 2, False, True, (255, 150, 0)),# CityscapesClass('pole', 17, 5, 'object', 3, False, False, (153, 153, 153)),CityscapesClass('pole', 17, 5, 'object', 3, False, False, (255, 240, 150)),# CityscapesClass('polegroup', 18, 255, 'object', 3, False, True, (153, 153, 153)),CityscapesClass('polegroup', 18, 255, 'object', 3, False, True, (50, 255, 255)),# CityscapesClass('traffic light', 19, 6, 'object', 3, False, False, (250, 170, 30)),CityscapesClass('traffic light', 19, 6, 'object', 3, False, False, (50, 255, 255)),# CityscapesClass('traffic sign', 20, 7, 'object', 3, False, False, (220, 220, 0)),CityscapesClass('traffic sign', 20, 7, 'object', 3, False, False, (255, 0, 0)),# CityscapesClass('vegetation', 21, 8, 'nature', 4, False, False, (107, 142, 35)),CityscapesClass('vegetation', 21, 8, 'nature', 4, False, False, (0, 175, 0)),# CityscapesClass('terrain', 22, 9, 'nature', 4, False, False, (152, 251, 152)),CityscapesClass('terrain', 22, 9, 'nature', 4, False, False, (150, 240, 80)),# CityscapesClass('sky', 23, 10, 'sky', 5, False, False, (70, 130, 180)),CityscapesClass('sky', 23, 10, 'sky', 5, False, False, (0, 0, 0)),# CityscapesClass('person', 24, 11, 'human', 6, True, False, (220, 20, 60)),CityscapesClass('person', 24, 11, 'human', 6, True, False, (255, 30, 30)),# CityscapesClass('rider', 25, 12, 'human', 6, True, False, (255, 0, 0)),CityscapesClass('rider', 25, 12, 'human', 6, True, False, (255, 40, 200)),# CityscapesClass('car', 26, 13, 'vehicle', 7, True, False, (0, 0, 142)),CityscapesClass('car', 26, 13, 'vehicle', 7, True, False, (100, 150, 245)),# CityscapesClass('truck', 27, 14, 'vehicle', 7, True, False, (0, 0, 70)),CityscapesClass('truck', 27, 14, 'vehicle', 7, True, False, (80, 30, 180)),# CityscapesClass('bus', 28, 15, 'vehicle', 7, True, False, (0, 60, 100)),CityscapesClass('bus', 28, 15, 'vehicle', 7, True, False, (100, 80, 250)),# CityscapesClass('caravan', 29, 255, 'vehicle', 7, True, True, (0, 0, 90)),CityscapesClass('caravan', 29, 255, 'vehicle', 7, True, True, (0, 0, 255)),# CityscapesClass('trailer', 30, 255, 'vehicle', 7, True, True, (0, 0, 110)),CityscapesClass('trailer', 30, 255, 'vehicle', 7, True, True, (0, 0, 255)),# CityscapesClass('train', 31, 16, 'vehicle', 7, True, False, (0, 80, 100)),CityscapesClass('train', 31, 16, 'vehicle', 7, True, False, (0, 0, 255)),# CityscapesClass('motorcycle', 32, 17, 'vehicle', 7, True, False, (0, 0, 230)),CityscapesClass('motorcycle', 32, 17, 'vehicle', 7, True, False, (30, 60, 150)),# CityscapesClass('bicycle', 33, 18, 'vehicle', 7, True, False, (119, 11, 32)),CityscapesClass('bicycle', 33, 18, 'vehicle', 7, True, False, (100, 230, 245)),CityscapesClass('license plate', -1, 255, 'vehicle', 7, False, True, (0, 0, 255)),]
更改完成后,在DeepLabV3Plus-Pytorch-master中训练,即可得到训练后的新结果:

相关文章:
【Deeplabv3+】Ubutu18.04中使用pytorch复现Deeplabv3+第三步)-----CityscapesScripts生成自己的标签
本文是在前面两篇文章的基础上,讲解如何更改训练数据集颜色,需要与前面两篇文章连起来看。 本文用于修改cityscapes数据集的标签颜色与Semankitti数据集的标签一致,对修改后的数据集进行训练。需要下载两个开发工具包和一个数据集࿰…...
《动手学深度学习(PyTorch版)》笔记3.3
注:书中对代码的讲解并不详细,本文对很多细节做了详细注释。另外,书上的源代码是在Jupyter Notebook上运行的,较为分散,本文将代码集中起来,并加以完善,全部用vscode在python 3.9.18下测试通过。…...
OpenGL ES 渲染 NV21、NV12 格式图像有哪些“姿势”?
使用2个纹理实现 NV21 格式图像渲染 前文提到渲染 NV21 格式图像需要使用 2 个纹理,分别用于保存 Y plane 和 UV plane 的数据,然后在片段着色器中分别对 2 个纹理进行采样,转换成 RGB 数据。 OpenGLES 渲染 NV21或 NV12 格式图像需要用到 GL_LUMINANCE 和 GL_LUMINANCE_A…...
P8813 [CSP-J 2022] 乘方 题解
目录 题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1 样例 #2样例输入 #2样例输出 #2 提示题目简化题目思路AC 代码 观前提示,此题解解法非正解,仅仅是卡过数据才 A C AC AC 的。正解请参考他人博客。 题目描述 小文同学刚刚接触了信息学竞赛…...
Ubuntu 常用命令、docker 常用命令、unzip常用命令、tar常用命令
ubuntu 常用命令: 进入管理员模式: sudo su退出管理员模式: su <用户名>重启系统: rebootubuntu 复制文件夹下文件到其他文件夹下 cp -r source_folder/* destination_folder/删除文件夹下内容而不删除自身(进入到目录…...
保护医疗数据不受威胁:MPLS专线在医疗网络安全中的角色
随着数字技术的快速发展,医疗行业正在经历一场革命。从电子健康记录到远程医疗服务,数字化不仅提高了效率,也带来了前所未有的挑战--尤其是关于数据安全和隐私保护的挑战。在这样的背景下,如何确保敏感的医疗数据安全传输…...
Java面试题夺命连环问
如何实现一个ioc容器 配置文件配置包扫码路径递归包扫描获取.class文件反射确定需要 交给IOC管理的类对需要注入的类进行依赖注入 配置文件中指定需要扫描的包路径 定义一些注解,分别表示访问控制层,业务服务层,数据持久层,依赖…...
华为策略路由+NQA配置
---NQA--- [RouterA] nqa test-instance admin NQA [RouterA-nqa-admin-vlan10] test-type icmp [RouterA-nqa-admin-vlan10] destination-address ipv4 对方地址 [RouterA-nqa-admin-vlan10] frequency 10 [RouterA-nqa-admin-vlan10] probe-count 2 [RouterA-nqa-admin-vlan…...
逆置字符串
将字符串逆序,比如输入abcd,返回dcba void reverse(char*left,char *right) { while (right>left) { char temp *left; *left *right; *right temp; right--; left; } } int main() { char arr[100] { 0 };//定义…...
第九节HarmonyOS 常用基础组件14-DataPanel
1、描述 数据面板组件,用于将多个数据占比情况使用占比图进行展示。 2、接口 DataPanel(options:{values: number[], max?: numner, type?: DataPanelType}) 3、参数 参数名 参数类型 必填 描述 values number[] 是 数据值列表,最多含9条数…...
Vue开发之proxy代理的配置(附带uniapp代理配置)
vue 1.在vue.config.js中添加 devServer 属性中配置 proxy 属性 module.exports {productionSourceMap: false,publicPath: /,devServer: {port: 8085,proxy: {/api/admin: {target: http://10.58.104.70:6111,changeOrigin: true,pathRewrite: {/api/: /}},/api: {target: …...
【数据分享】2023年我国省市县三级的公司企业数量(21类公司企业/Excel/Shp格式)
医药公司、建筑公司、电信公司等公司企业的数量是一个城市生命力的重要体现,一个城市的公司企业种类越丰富,数量越多,通常能表示这个城市的生命力越旺盛! 本次我们为大家带来的是我国各省份、各地级市、各区县三个层级的公司企业…...
6JS对象
6.1对象简介 对象是JavaScript的基本数据类型。对象是一种复合值:它将很多值(原始值或者其他对象)聚合在一起,可通过名字访问这些值。对象也可看做是属性的无序集合,每个属性都是一个名/值对。属性名是字符串…...
粒子群算法求解港口泊位调度问题(MATLAB代码)
粒子群算法(Particle Swarm Optimization,PSO)是一种基于群体智能的优化算法,它通过模拟鸟群或鱼群的行为来寻找最优解。在泊位调度问题中,目标是最小化所有船只在港时间的总和,而PSO算法可以帮助我们找到一…...
idea控制台出现乱码的解决方案
概述:有时候控制台的关键说明出现乱码,就很令人烦恼 在 IntelliJ IDEA 中出现控制台乱码通常是由于编码设置不正确或者字体显示问题导致的。以下是一些可能的解决方案: 1. 设置项目编码 确保你的项目编码设置正确: 在 Intelli…...
R语言【taxlist】——summary(),show(),print():打印taxlist对象及其内容的概述
Package taxlist version 0.2.4 Description 一种方法,用于显示 taxlist 对象内容的概述或所选分类组的概述。 Usage ## S4 method for signature taxlist summary(object,ConceptID,units "Kb",check_validity TRUE,display "both",maxs…...
【深度学习】sdxl中的 text_encoder text_encoder_2 区别
镜像问题是:https://editor.csdn.net/md/?articleId135867689 代码仓库: https://huggingface.co/stabilityai/stable-diffusion-xl-base-1.0/tree/main 截图: 为什么有两个CLIP编码器 text_encoder 和 text_encoder_2 ? 在…...
上位机图像处理和嵌入式模块部署(python opencv)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 前面我们谈到了qt,谈到了opencv,也谈到了嵌入式,但是没有说明python在这个过程当中应该扮演什么样的角色。open…...
父元素flex:1 高度却被子元素撑开的问题
问题 当父元素设置了flex: 1; 的情况下,想在其中子元素超出父元素高度的情况下,产生滚动条,在父元素区域滚动。由于子元素高度不固定,故父元素设置为display: flex; flex-direction: column; 子元素设置flex: 1; overflow: auto;…...
【LUA】mac状态栏添加天气
基于网络上的版本修改的,找不到出处了。第一个摸索的lua脚本,调了很久。 主要修改:如果风速不大,就默认不显示,以及调整为了一些格式 local urlApi http://.. --这个urlApi去申请个免费的就可以了 然后打开对应的json…...
OpenClaw+千问3.5-9B写作辅助:中英文技术文档自动互译
OpenClaw千问3.5-9B写作辅助:中英文技术文档自动互译 1. 为什么需要自动化文档翻译 作为技术文档工程师,我每周都要处理大量中英文技术文档的互译工作。传统工作流需要反复在翻译软件、术语表和Markdown编辑器间切换,不仅效率低下ÿ…...
企业SEO优化与个人SEO优化有什么不同_外部链接建设在SEO优化中扮演什么角色
企业SEO优化与个人SEO优化的不同 在当今数字化时代,SEO(搜索引擎优化)已成为企业和个人提升在线曝光度和吸引流量的关键策略。企业SEO优化与个人SEO优化在策略、目标和实施上存在显著差异。了解这些不同是制定有效优化计划的重要一步。 企业…...
STM32H7 USB复合设备库:CDC+MSC+SDMMC一体化固件
1. 项目概述 usb_composite 是一款面向 STM32H7 系列微控制器(已验证 H743、H750)的即插即用型 USB 复合设备固件库,基于 TinyUSB 0.15.0 构建。其核心目标是将 CDC(通信设备类)、MSC(大容量存储类&#…...
大模型Agent-应用小记【转载】
参考资料 万字长文解读LLM Agent:总体框架、经典论文与实践万字长文解析Agent框架中的上下文管理策略从Claude Code入手看Agent框架设计思路(基础篇) Agent基础 Agent基本定义 LLM 工具调用 / 长期记忆能力 / 规划能力 上下文管理 是什…...
Linux下CST8XX触摸屏驱动调试实战:从I2C波形异常到内核崩溃的完整解决记录
Linux下CST8XX触摸屏驱动调试实战:从I2C波形异常到内核崩溃的完整解决记录 在嵌入式Linux开发中,触摸屏驱动的调试往往是最具挑战性的环节之一。本文将详细记录CST8XX系列电容触摸屏在Linux平台上的完整调试过程,涵盖从硬件信号异常到内核崩溃…...
8大网盘直链解析工具深度测评:LinkSwift如何突破下载速度瓶颈?
8大网盘直链解析工具深度测评:LinkSwift如何突破下载速度瓶颈? 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 ,支持 百度网盘 / 阿里云盘 / …...
架桥记:耐达讯自动化CC-Link IE转EtherCAT的工业协议融合实战
在工业自动化行业中,生产线的智能化升级常面临一个核心难题:如何让基于不同通信协议的设备“读懂”彼此,协同工作?特别是当代表日系高速网络技术的CC-Link IE,遇上盛行于欧系设备的实时以太网EtherCAT时,协…...
XSS之Flash弹窗钓鱼
0x1 前言 哈喽,师傅们好! 这次打算给师弟们分享的是XSS之Flash弹窗钓鱼和文件上传getshell各种姿势的内容,然后先是给小白师傅们简单介绍下XSS漏洞和文件上传漏洞。然后后面给师傅们简单演示了XSS之Flash弹窗钓鱼,然后后面很详细…...
从零到精通的Android Kotlin实战学习旅程:50个项目带你掌握移动开发核心技能
从零到精通的Android Kotlin实战学习旅程:50个项目带你掌握移动开发核心技能 【免费下载链接】50-android-kotlin-projects-in-100-days My everyday Android practice demos with Kotlin in 100 days. 项目地址: https://gitcode.com/gh_mirrors/50/50-android-k…...
终极指南:3步永久解密科学文库PDF文档,告别7天访问限制
终极指南:3步永久解密科学文库PDF文档,告别7天访问限制 【免费下载链接】ScienceDecrypting 破解CAJViewer带有效期的文档,支持破解科学文库、标准全文数据库下载的文档。无损破解,保留文字和目录,解除有效期限制。 …...
