Datawhale组队学习|全球AI攻防挑战赛——赛道二:AI核身之金融场景凭证篡改检测

news2024/11/24 4:45:10

目录

  • 前言
  • Baseline代码解读

前言

Datawhale 2024.10 组队学习来了!这次选择的是动手实践专区——CV方向——“全球AI攻防挑战赛—赛道二:AI核身之金融场景凭证篡改检测”。

Baseline代码解读

1、读取数据集

!apt update > /dev/null; apt install aria2 git-lfs axel -y > /dev/null
!pip install ultralytics==8.2.0 numpy pandas opencv-python Pillow matplotlib > /dev/null
!axel -n 12 -a http://mirror.coggle.club/seg_risky_testing_data.zip; unzip -q seg_risky_testing_data.zip
!axel -n 12 -a  http://mirror.coggle.club/seg_risky_training_data_00.zip; unzip -q seg_risky_training_data_00.zip

(1)!apt update > /dev/null; apt install aria2 git-lfs axel -y > /dev/null
!: 告诉 Jupyter Notebook (或 Google Colab),运行的是 apt update 这个shell 命令,而不是 Python 代码
apt update:更新Ubuntu的包管理器APT的包列表
-y:自动同意安装提示,省去手动确认。
> /dev/null:将输出重定向到/dev/null,相当于忽略输出日志。

安装用于下载文件的工具:
aria2:支持多源下载
git-lfs:用于处理大文件
axel:一个多线程下载工具
(2)!pip install ultralytics==8.2.0 numpy pandas opencv-python Pillow matplotlib > /dev/null
安装一些Python库:
ultralytics==8.2.0:一个开源的YOLOv8框架,用于目标检测、分割等任务。
numpy:用于数值计算的库。
pandas:用于数据处理和分析的库。
opencv-python:用于图像处理的库。
Pillow:用于图像处理的Python库。
matplotlib:用于绘制图形的库。
(3)!axel -n 12 -a http://mirror.coggle.club/seg_risky_testing_data.zip; unzip -q seg_risky_testing_data.zip
使用axel以12个线程并行下载名为seg_risky_testing_data.zip的文件。下载完成后,使用unzip命令解压该压缩文件。
-n 12:指定12个线程进行下载
-a:显示下载进度
-q:以安静模式解压(即不显示解压过程的详细信息)
(4)!axel -n 12 -a http://mirror.coggle.club/seg_risky_training_data_00.zip; unzip -q seg_risky_training_data_00.zip

与(3)类似,使用axel以12个线程下载名为seg_risky_training_data_00.zip的文件,并解压。

import os, shutil
import cv2
import glob
import json
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

training_anno = pd.read_csv('http://mirror.coggle.club/seg_risky_training_anno.csv')

train_jpgs = [x.replace('./', '') for x in glob.glob('./0/*.jpg')]
training_anno = training_anno[training_anno['Path'].isin(train_jpgs)]
training_anno['Polygons'] = training_anno['Polygons'].apply(json.loads)

training_anno.head()

在这里插入图片描述
(1)import *导入库
os 和 shutil:用于文件和目录操作。
cv2:OpenCV库,用于计算机视觉任务(如图像处理)。
glob:用于查找符合特定规则的文件路径名。
json:用于解析和处理JSON格式的数据。
pandas:用于数据处理和分析。
numpy:用于数值计算,提供高效的数组操作。
matplotlib.pyplot:用于绘制图形和可视化数据。

(2)training_anno = pd.read_csv('http://mirror.coggle.club/seg_risky_training_anno.csv')
加载篡改后的凭证图像的位置标注,标注文件以csv格式给出(seg_risky_training_anno.csv),csv文件中包括两列,Path列内容为篡改凭证图像的名称,Polygons列内容采用轮廓点的方式存储每个篡改区域的位置;

使用 pandas 的** read_csv** 函数从指定的 URL 加载 CSV 文件,创建一个 DataFrame,名为training_anno。
(3)training_anno = training_anno[training_anno['Path'].isin(train_jpgs)]
获取训练图像文件列表:glob.glob(‘./0/*.jpg’) 会返回 ./0 目录下所有 JPG 文件的路径。
列表推导式将这些路径中的 ‘./’ 替换为空字符串,生成 train_jpgs 列表,包含相对路径的 JPG 文件名。

(4)training_anno = training_anno[training_anno['Path'].isin(train_jpgs)]
条件过滤,保留 training_anno 中仅与训练图像相对应的行。
isin(train_jpgs):检查 training_anno 中的 ‘Path’ 列是否在 train_jpgs 列表中。

(5)training_anno['Polygons'] = training_anno['Polygons'].apply(json.loads)
解析 ‘Polygons’ 列
apply(): 是 pandas DataFrame 或 Series 的方法,它允许对列中的每个元素应用一个函数。这里对 Polygons 列的每个元素应用了 json.loads 函数。
json.loads:将 training_anno 中的 ‘Polygons’ 列应用 json.loads 函数,以将存储为字符串格式的 JSON 数据(字符串,表示存储Polygons坐标的JSON对象)解析为 Python 对象(如字典或列表),为后续的图像处理或模型训练做准备。假如 Polygons 列的某一单元格是 “[ [10, 20], [30, 40], [50, 60] ]”,它会将其转换为 Python 列表:[[10, 20], [30, 40], [50, 60]]。

training_anno.shape

(63785, 2)

np.array(training_anno['Polygons'].iloc[4], dtype=np.int32)

在这里插入图片描述

idx = 23
img = cv2.imread(training_anno['Path'].iloc[idx])

plt.figure(figsize=(12, 6))
plt.subplot(121)
plt.imshow(img)
plt.title("Original Image")
plt.axis('off')

plt.subplot(122)
img = cv2.imread(training_anno['Path'].iloc[idx])
polygon_coords = np.array(training_anno['Polygons'].iloc[idx], dtype=np.int32)

for polygon_coord in polygon_coords:
    cv2.polylines(img, np.expand_dims(polygon_coord, 0), isClosed=True, color=(0, 255, 0), thickness=2)
    img= cv2.fillPoly(img, np.expand_dims(polygon_coord, 0), color=(255, 0, 0, 0.5))

plt.imshow(img)
plt.title("Image with Polygons")
plt.axis('off')

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2209231.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

美团测试面试真题学习

美团真题1–测试基础-业务场景说下你的测试用例设计 功能角度 方法论 边界值、等价类划分、错误推测法示例 输入已注册的用户名和正确的密码,验证是否登录成功;输入已注册的用户名和不正确的密码,验证是否登录失败输入未注册的用户名和任意密码&#xff…

Win10自带录屏神器?这4款工具让你秒变剪辑达人!

小伙伴们,随着电子设备使用率越来越高,日常工作中我们需要进行一些操作的演示,或者是游戏中精彩的瞬间都希望录下来,那就少不了好用的录屏工具了。这次我来跟大家聊聊Windows 10自带的那些让人惊艳的录屏工具。这不仅仅是我个人推…

Halcon 3D应用 - 胶路提取

1. 需求 本文基于某手环(拆机打磨处理)做的验证性工作,为了项目保密性,只截取部分数据进行测试。 这里使用的是海康3D线激光轮廓相机直线电机的方式进行的高度数据采集,我们拿到的是高度图亮度图数据。 提取手环上的胶…

IBM Flex System服务器硬件监控指标解读

随着企业IT架构的日益复杂,服务器的稳定运行对于保障业务连续性至关重要。IBM Flex System作为一款模块化、可扩展的服务器解决方案,广泛应用于各种企业级环境中。为了确保IBM Flex System服务器的稳定运行,监控易作为一款专业的IT基础设施监…

[Linux#65][TCP] 详解 延迟应答 | 捎带应答 | 流量控制 | 拥塞控制

目录 一、延迟应答 二、捎带应答 三. 流量控制 总结 四. 拥塞控制 1. 拥塞控制 2. 慢启动机制: 3.思考 4.拥塞避免算法 5. 快速恢复算法 一、延迟应答 1. 立即应答问题 接收数据的主机若立刻返回ACK应答,可能返回的窗口较小。例如&#xff1…

数字化转型新引擎:中小企业信息化建设的破局与未来-亿发

随着全球数字经济的蓬勃发展,信息化建设已成为企业提升竞争力、提高运营效率的重要途径。中小企业作为经济的重要组成部分,也逐步认识到信息化的重要性。然而,尽管中小企业在信息化方面有强烈的需求,但在实际推进过程中却面临诸多…

简单粗暴理解GNN、GCN、GAT

GNN 思想:近朱者赤近墨者黑 GNN的流程: 聚合(把邻居的信息贴到自己身上来,作为它自己特征的补足)更新循环(为什么要多次?看以下例子) GNN能干嘛? 1.结点分类&#xf…

Windows系统最高分辨率(单边16384)

11520*216024883200 来源: 2017-04-08【【极客湾】双路核弹?三屏4K?终极Geforce的究极测试!】 【精准空降到 02:45】 https://www.bilibili.com/video/BV1tx411S7MU/?t165 2020-12-09【用三台8K电视玩游戏!能成功吗&a…

【Linux】嵌入式Linux系统的组成、u-boot编译

Linux—嵌入式Linux系统的组成、u-boot编译 前言一、嵌入式Linux系统的组成1.1 嵌入式Linux系统和PC完整的操作系统的对比如下:1.2 PC机—Windows系统启动流程(PC机—Linux系统、嵌入式ARM—linux系统的启动流程类似) 二、编译u-boot2.1 u-bo…

测试质量报告=测试报告?当然不是!

测试报告大家都大概知道怎么做,但是质量报告呢,说起来到底与测试报告有什么不同? 仔细思考,其实这两种报告之间的差异还是比较直观的。 测试报告 更多是以测试为出发点,关注测试工作的背景、过程、完成度和结果。当…

Qt-系统处理定时器相关事件(59)

目录 描述 使用 描述 qt进行了封装,之前也使用过了 使用 先创建一个定时器 原型 这个事件是继承自 QObject 的,Widget 是继承 QObject 的,所以我们能够直接使用 重写 如下重写过后的定时器事件,正常倒计时了

rpc中常用的数据格式:Protobuf 图文详解

概述 protobuf也叫protocol buffer,是google 的一种数据交换的格式,它跨语言、跨平台。可以实现多种语言文件的数据传输实现(java、c#、c、go 和 python 等),如一个cpp程序和一个python程序的数据传输。 由于它是一种…

Linux下以编译源码的方式安装Qt5与Qt6及其使用

文章目录 概要资源下载依赖安装编译Qt5Qt6 遇到的问题qtchooser使用 概要 自 Qt 5.15 开始,不再提供 open source offline installers,也就是原来的 .run 的安装文件,只能通过源码编译来安装了参考文章 资源下载 源码网址,链接…

【C语言复习】分支和循环

【C语言复习】分支和循环 1. if语句1.1 if1.2 else1.3分支中包含多条语句1.4嵌套if1.5悬空else问题 2.关系操作符3. 条件操作符4.逻辑操作符:&& 、|| 、!4.1 逻辑取反运算符4.2 与运算符4.3或运算符4.4 练习:闰年的判断4.5短路 5.switch 语句5.1…

【黑苹果】记录MacOS升级Sonoma的过程

【黑苹果】记录MacOS升级Sonoma的过程 一、硬件二、提前说明三、准备OC四、选择驱动五、选择ACPI六、下载内核扩展七、其他问题 一、硬件 设备是神舟zx6-ct5da 具体参照下图 二、提前说明 本机器已经安装过 macOS Monterey 12.6,这次是升级到 macOS Sonoma 14。 …

GoogLeNet,代码示例,辅助分类器,Inception

亮点: 引入了Inception结构(融合不同尺度的特征信息) 使用1x1的卷积核进行降维以及映射处理 添加两个辅助分类器帮助训练 丢弃全连接层,使用平均池化层(大大减少模型 参数) GoogLeNet的网络连接图&…

LInux学习FreeType编程

文章目录 使用freetype 显示一个文字使用 freetype 显示一行文字了解笛卡尔坐标系每个字符的大小可能不同怎么在指定位置显示一行文字freetype 的几个重要数据结构1、**FT_Library**结构体2、FT_Face结构体3、FT_GlyphSlot结构体4、FT_Glyph结构体5、FT_BBox结构体 读懂显示一行…

Linux运维_Apache更改默认网站目录

1.首先创建目录 并且在目录下新建测试文件 index.html mkdir -p /home/test/ap_web 直接wget 百度官网 wget www.baidu.com 2.编辑配置文件 /etc/apache2/sites-available/000-default.conf(找到 DocumentRoot)更改为刚刚创建的目录 接着在添加 最终文件: 3.给文件 添加属…

Nacos配置管理和Nacos集群配置

目录 Nacos作为配置中心实现配置管理 统一配置管理 如何在nocas添加配置文件 在微服务拉取nacos配置中心的配置 1)引入nacos-config依赖 2)添加bootstrap.yaml 3)测试,读取nacos配置中心中配置文件的内容 ​编辑 总结&…

在Spring Boot中具有多个实现的接口正确注入的六种方式

​ 博客主页: 南来_北往 系列专栏:Spring Boot实战 在Spring Boot中,当一个接口具有多个实现时,正确地将这些实现注入到需要使用它们的地方是一个常见的需求。以下是在Spring Boot中实现这一目标的六种方式: 1. 使用Autowir…