基于AidLux平台的智慧交通中对抗防御监测应用评测

本文探讨了智慧交通中基于AidLux平台的车辆检测模型,详细介绍了环境配置、模型训练与部署。同时,文章对对抗攻击和防御进行了深入测试,展示了如何通过对抗防御技术提升AI模型的鲁棒性,确保智慧交通的安全性。
摘要由CSDN通过智能技术生成

一、前言

智慧交通行业主要是对交通场景内的行人,机动车,非机动车进行识别分析。然而,就在这些复合任务的流程中,由于特别制作的数据、复杂的黑盒模型、数据偏见、数据滥用等,可能会导致安全性、可解释性、公平性以及隐私等相关AI安全风险。例如在安全性方面,对抗攻击能够让AI模型产生误判,从而可能引发严重的安全风险,此时就需要设计对抗防御的监测模块来降低安全风险。

本文主要以智慧交通中对抗防御监测应用为例,对基于AidLux平台实现的“车辆检测和检测框提取+使用对抗样本+AI安全监测与告警功能”业务应用进行评测。

二、AidLux环境配置

Aidlux是基于ARM架构的跨生态(Android/鸿蒙+Linux)一站式AIOT应用开发平台。将装有Aidlux应用的安卓手机或边缘设备与PC连接,之后就可以进行代码的移植和调试,进而实现应用测试。

如果使用安卓手机,可以从手机应用商店下载相应的Aidlux软件。下载后进行安装、初始化、注册登录,就可进入其图形界面。在图形界面中,可以进入examples中,尝试一系列的 AI 案例。此外,还可以将手机与同一个局域网下的PC连接。首先通过点击图形界面中的Cloud_ip获取其IP地址,然后将电脑的浏览器打开,并输入IP地址和密码aidlux,就可以看到手机上该软件的图形界面在PC端的投影了,随后就可以进入文件管理中,完成文件的上传、下载、修改等操作了。

当需要调试代码时,手机界面的操作不太方便,可以通过电脑端的vscode连接手机进行调试。主要思路是将手机当作一个远程服务器,在PC端通过SSH协议与其进行连接,具体流程参见相关文章:厉害了我的哥:基于AidLux平台的人流统计应用评测《智慧安防AI实战训练营:边缘端实现越界识别》Lesson2 (qq.com)

三、车辆检测模型的训练和部署

3.1,下载并整理数据集。使用Kaggle开源的车辆数据集,其网址是: Car Object Detection | Kaggle。将数据标签转换成YOLOv5可以训练的格式,而数据集划分按照9:1的方式进行,即90%是训练集, 10%是验证集。

3.2,使用服务器训练检测模型。下载YOLOv5算法代码,新建car.yaml,修改train.py参数,使用yolov5n的模型权重,修改models/yolov5n.yaml,选用YOLOv5环境镜像。

3.3,PC端车辆检测模型推理测试。Pytorch核心库安装,其他依赖库安装;打开detect_image.py文件,这里主要修改代码中的模型、图片路径、yaml文件。

​3.4,Aidlux端模型推理测试。pt模型转换成tflite模型,Aidlux端推理代码编写,代码上传到Aidlux中,远程连接Aidlux软件,推理测试Aidlux端代码。注意,要修改utils.py中标签的类别,coco_class=['car']。

3.5,据增强技术扩展性。为了对训练数据进行增强,优化模型的检测效果和鲁棒性,可以使用数据增强技术进行优化训练。以imgaug为例,包含了color,blur,blend,weather,contrast等数据增强的方式。网址:https://github.com/aleju/imgaug。生成图像如下:

​四、对抗攻击和对抗防御测试

4.1,对抗攻击

对抗攻击(adversarial attack)是AI安全方向的重要分支,其核心逻辑是在数据中增加一些微小扰动,在人类视觉系统无法察觉的情况下,使得算法模型对这些数据产生误判。其中被增加扰动的数据也称为对抗样本,可以理解为生成噪声的艺术,其攻击价值的底层依托是算法模型的过拟合问题。

对抗攻击算法可被攻击者和防御者从多个方面应用。目前主流对抗攻击算法包括白盒攻击和黑盒攻击。白盒攻击主要分为基于梯度的攻击,基于优化的攻击以及基于GAN的攻击。黑盒攻击主要分为基于迁移的攻击和基于查询的攻击两大类。

更多攻击算法的介绍可以查阅:Rocky Ding:【CV算法兵器】“晓风残月” ->对抗攻击“兵器”大放送(综述篇)

4.2,对抗防御

在对抗攻击技术出现之后,对抗防御技术也孕育而生。对抗防御一般针对对抗攻击技术而展开,有针对特定攻击的特定防御,也有一般性防御策略。与对抗攻击结合的形式包括:AI业务的鲁棒性与安全性检查工具;研究对抗攻击,来增强对实际场景中受到的攻击情形的判断力;使用对抗攻击对敏感信息进行隐藏;使用对抗样本在模型训练过程中进行对抗训练。一般性的防御策略有:算法解决方案中加入防御预处理,设计鲁棒模型结构,加入对抗攻击检测模型等方法。

例如,训练轻量级的对抗攻击检测模型,作为算法解决方案的安全模块,在受到攻击风险时,启动防御算法功能。具体原理如下,生成一些对抗样本,并将其和干净样本一同作为训练集,训练一个能够捕捉对抗扰动的二分类模型,并将其作为实际AI项目中的一个前置防御模块。

目前主流对抗防御方法主要有如下几种。1对抗训练是指在训练过程中加入对抗样本,通过不断的学习对抗样本的特征,从而提升模型的鲁棒性。2监测识别对抗样本顾名思义,在项目关键节点处,设置一些能够识别对抗样本的特种模型,从而提前预警对抗攻击风险。3模型鲁棒结构设计是指在模型中设计特定的滤波结构能够一定程度上增强模型鲁棒性,抵御对抗噪声。4对抗扰动结构破坏主要在数据流处理的时候使用,通过一些滤波算法,噪声结构破坏算法,噪声覆盖算法等策略,减弱对抗噪声的影响,使其不能对模型造成攻击。5梯度掩膜则是在白盒对抗防御中非常高效的一种算法,因为其能掩盖真实梯度,从而能够使得白盒攻击算法失效。

4.3,对抗攻击算法效果验证

安装skimage库:

pip install scikit-image -i https://pypi.tuna.tsinghua.edu.cn/simple some-package  
pip install torch==1.8.1 -i https://pypi.tuna.tsinghua.edu.cn/simple some-package 
pip install torchvision==0.9.1 -i https://pypi.tuna.tsinghua.edu.cn/simple some-package

PC端代码示例:(Lesson4_code\adv_code\attack_code.py)

import os
import torch
import torch.nn as nn
from torchvision.models import mobilenet_v2
from advertorch.utils import predict_from_logits
from advertorch.utils import NormalizeByChannelMeanStd

from advertorch.attacks import LinfPGDAttack
from advertorch_examples.utils import ImageNetClassNameLookup
from advertorch_examples.utils import bhwc2bchw
from advertorch_examples.utils import bchw2bhwc

device = "cuda" if torch.cuda.is_available() else "cpu"

### 读取图片
def get_image():
    img_path = os.path.join("./Lesson4_code/adv_code/images", "mountain_bike.png")
    img_url = "https://farm1.static.flickr.com/230/524562325_fb0a11d1e1.jpg"

    def _load_image():
        from skimage.io import imread
        return imread(img_path) / 255.

    if os.path.exists(img_path):
        return _load_image()
    else:
        import urllib
        urllib.request.urlretrieve(img_url, img_path)
        return _load_image()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值