自動駕駛領域中的Python機器學習

數據預處理與特征工程

在自動駕駛系統中,數據是驅動決策的核心。從傳感器(如攝像頭、激光雷達、毫米波雷達)收集的原始數據通常包含噪聲、缺失值和異常值,需要進行系統的預處理。Python的pandas庫提供了強大的數據處理能力,而scikit-learn則支持特征提取與轉換。

示例:激光雷達點云數據預處理
import pandas as pd
import numpy as np
from sklearn.preprocessing import StandardScaler# 假設加載點云數據為DataFrame格式
def preprocess_lidar_data(df):# 去除無效點(如距離為0或超出傳感器范圍)df = df[(df['range'] > 0) & (df['range'] < 150)]# 處理缺失值,使用中位數填充df.fillna(df.median(), inplace=True)# 標準化坐標系scaler = StandardScaler()df[['x', 'y', 'z']] = scaler.fit_transform(df[['x', 'y', 'z']])return df
時間序列特征構建

自動駕駛場景中的時間連續性至關重要。通過滑動窗口或光流法,可將連續幀數據轉化為時空特征。例如,計算目標物體的速度和加速度:

def compute_velocity_features(df, time_col='timestamp', coords=['x', 'y']):df = df.sort_values(by=time_col)df['delta_time'] = df[time_col].diff().fillna(0)for coord in coords:df[f'{coord}_speed'] = df[coord].diff() / df['delta_time']df[f'{coord}_accel'] = df[f'{coord}_speed'].diff() / df['delta_time']return df.dropna()

目標檢測與跟蹤

基于YOLOv5的實時目標檢測

YOLO系列算法因其高效性成為自動駕駛目標檢測的主流選擇。Python通過PyTorch實現輕量化部署:

import torch
from torchvision import transforms# 加載預訓練模型
model = torch.hub.load('ultralytics/yolov5', 'yolov5s')# 圖像預處理管道
preprocess = transforms.Compose([transforms.Resize((640, 640)),transforms.ToTensor(),
])def detect_objects(image):input_tensor = preprocess(image).unsqueeze(0)results = model(input_tensor)return results.xyxy[0]  # 返回邊界框坐標
Kalman濾波器實現目標跟蹤

對于連續幀中的目標跟蹤,Kalman濾波器能有效平滑軌跡:

from filterpy.kalman import KalmanFilterkf = KalmanFilter(dim_x=4, dim_z=2)
kf.x = np.array([0, 0, 0, 0])  # 初始狀態 [x, y, vx, vy]
kf.F = np.array([[1, 0, 1, 0],[0, 1, 0, 1],[0, 0, 1, 0],[0, 0, 0, 1]])
kf.H = np.array([[1, 0, 0, 0],[0, 1, 0, 0]])
kf.P *= 1000  # 初始協方差def update_track(z):kf.predict()kf.update(z)return kf.x[:2]  # 返回修正后的位置

路徑規劃與決策控制

基于A*算法的全局路徑規劃

在已知地圖中,A*算法可計算最優行駛路徑。Python的networkx庫簡化了圖搜索實現:

import networkx as nxdef astar_path(graph, start, goal):return nx.astar_path(graph, start, goal)# 示例:網格化地圖建模
G = nx.grid_2d_graph(10, 10)
path = astar_path(G, (0, 0), (9, 9))
print("Optimal Path:", path)
動態避障的局部規劃(RRT*)

快速擴展隨機樹(RRT*)適用于未知環境下的實時避障:

from rrt_star import RRTStar# 定義障礙物區域和車輛動力學約束
obstacles = [(3, 3, 5, 5), (7, 7, 8, 8)]
rrt = RRTStar(start=(0, 0), goal=(10, 10), obstacles=obstacles)# 生成路徑
path = rrt.plan()
print("RRT* Path:", path)

行為預測與風險評估

基于LSTM的駕駛行為預測

長短期記憶網絡(LSTM)可建模駕駛員或周圍車輛的歷史軌跡,預測未來行為:

from keras.models import Sequential
from keras.layers import LSTM, Dense# 構建模型
model = Sequential([LSTM(32, input_shape=(10, 2)),  # 輸入10個時間步的二維坐標Dense(64, activation='relu'),Dense(2)  # 輸出預測坐標
])
model.compile(optimizer='adam', loss='mse')# 訓練數據格式:[樣本數,時間步,特征]
X_train = np.random.rand(1000, 10, 2)
y_train = np.random.rand(1000, 2)
model.fit(X_train, y_train, epochs=20)
風險評估模型

通過計算碰撞時間(TTC)和安全距離,評估潛在危險:

def calculate_ttc(obj1, obj2, velocity1, velocity2):relative_vel = np.linalg.norm(velocity1 - velocity2)distance = np.linalg.norm(obj1[:2] - obj2[:2])return distance / relative_vel if relative_vel > 0 else float('inf')

傳感器融合與多模態學習

卡爾曼濾波融合IMU與GPS數據

不同傳感器的數據融合可提升定位精度:

from filterpy.kalman import KalmanFilter# IMU提供角速度,GPS提供位置
kf = KalmanFilter(dim_x=4, dim_z=2)
kf.x = np.array([0, 0, 0.1, 0.1])  # 初始狀態 [lat, lon, vel_lat, vel_lon]
kf.F = np.array([[1, 0, 1, 0],[0, 1, 0, 1],[0, 0, 1, 0],[0, 0, 0, 1]])
kf.H = np.array([[1, 0, 0, 0],[0, 1, 0, 0]])
kf.R = np.eye(2) * 0.1**2  # GPS噪聲
kf.Q = np.eye(4) * 0.01**2  # 過程噪聲def fuse_sensors(gps_measurement):kf.predict()kf.update(gps_measurement)return kf.x[:2]
多模態深度學習模型

結合攝像頭圖像與激光雷達點云,提升感知魯棒性:

import torch.nn as nnclass MultiModalNet(nn.Module):def __init__(self):super().__init__()self.cnn = nn.Sequential(nn.Conv2d(3, 16, 3),nn.ReLU(),nn.MaxPool2d(2))self.pointnet = nn.Sequential(nn.Linear(3, 64),nn.ReLU(),nn.Linear(64, 128))self.fc = nn.Linear(128 + 16*8*8, 3)  # 假設圖像分辨率為32x32def forward(self, image, point_cloud):image_feat = self.cnn(image).view(-1)point_feat = self.pointnet(point_cloud)combined = torch.cat((image_feat, point_feat), dim=1)return self.fc(combined)

仿真測試與模型部署

Carla模擬器集成Python腳本

在虛擬環境中驗證算法有效性:

import carlaclient = carla.Client('localhost', 2000)
client.set_timeout(10.0)
world = client.get_world()# 控制車輛直線行駛
vehicle = world.get_actors()[0]
vehicle.apply_control(carla.VehicleControl(throttle=0.5))
ONNX格式模型輕量化部署

將PyTorch模型轉換為ONNX格式,適配車載邊緣設備:

import torch
dummy_input = torch.randn(1, 3, 224, 224)
torch.onnx.export(model, dummy_input, "model.onnx")

倫理與系統魯棒性設計

對抗攻擊防御策略

在關鍵任務系統中,需防范惡意攻擊對模型的干擾:

from art.attacks import FastGradientMethod
from art.estimators.classification import PyTorchClassifier# 定義對抗攻擊
attack = FastGradientMethod(estimator=PyTorchClassifier(model), eps=0.1)
perturbed_image = attack.generate(x=test_image)

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/916461.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/916461.shtml
英文地址,請注明出處:http://en.pswp.cn/news/916461.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

PROFINET轉CAN通訊協議轉換速通汽車制造

在汽車系統領域之外&#xff0c;控制器局域網&#xff08;CAN&#xff09;總線技術亦廣泛應用于多種工業環境。其固有的穩健性、可靠性與靈活性&#xff0c;使其成為工業自動化及控制系統中設備間通信的理想選擇。CAN 總線技術在工業應用中的關鍵領域包括機器控制、傳感器網絡以…

影刀RPA_小紅書筆記批量采集_源碼解讀

一、項目簡介本項目是一個基于影刀RPA的小紅書筆記批量采集工具&#xff0c;能夠通過兩種模式獲取小紅書平臺的軟文數據&#xff1a;搜索內容抓取和自定義鏈接抓取。工具使用Chrome瀏覽器自動化技術&#xff0c;實現了從網頁數據采集、解析到Excel導出的完整流程。支持獲取筆記…

以使命為帆,結業是重新出發的號角

站在私教班結業典禮的講臺上&#xff0c;望著眼前一張張閃爍著力量的面孔&#xff0c;我心中始終縈繞著一個信念&#xff1a;所有的相遇&#xff0c;都是為了共同奔赴一件更有意義的事。今天不是終點&#xff0c;而是 “使命的啟程”—— 我們因不甘而相聚&#xff1a;不甘心行…

java測試題(下)

1. Spring 核心概念1.1 如何理解 Spring DI&#xff1f;DI&#xff08;依賴注入&#xff09; 是 IoC&#xff08;控制反轉&#xff09; 的具體實現方式&#xff0c;由 Spring 容器在運行時通過以下方式自動注入依賴&#xff1a;構造器注入&#xff08;推薦&#xff09;Setter 注…

LC振蕩Multisim仿真

電路圖&#xff1a;說明&#xff1a;點擊仿真后&#xff0c;先打開S1&#xff0c;可以看到C1的充電曲線。當電容充滿電后&#xff0c;關閉S1&#xff0c;打開S2&#xff0c;這時候&#xff0c;C2電容會快速獲得C1一半的電量。如果沒有L&#xff0c;曲線會變得很陡。如果只加入電…

五、Web開發

文章目錄1. SpringMVC自動配置概覽2. 簡單功能分析2.1 靜態資源訪問2.1.1 靜態資源目錄2.1.2 靜態資源訪問前綴2.1.3 webjar2.2 歡迎頁支持2.3 自定義 Favicon2.4 靜態資源配置原理2.4.1 配置類只有一個有參構造器2.4.2 資源處理的默認規則2.4.3 歡迎頁的處理規則2.4.4 favicon…

Mysql 二進制安裝常見問題

1. mysql: error while loading shared libraries: libncurses.so.5: cannot open shared object file: No such file or directory在centos9中升級了libncurses.so的版本為libncurses.so.6&#xff0c;所以找不到libncurses.so.5需要使用軟連接指向libncurses.so.6ln -s /lib6…

OpenLayers 綜合案例-點位聚合

看過的知識不等于學會。唯有用心總結、系統記錄&#xff0c;并通過溫故知新反復實踐&#xff0c;才能真正掌握一二 作為一名摸爬滾打三年的前端開發&#xff0c;開源社區給了我飯碗&#xff0c;我也將所學的知識體系回饋給大家&#xff0c;助你少走彎路&#xff01; OpenLayers…

測試老鳥整理,物流項目系統測試+測試點分析(一)

目錄&#xff1a;導讀 前言一、Python編程入門到精通二、接口自動化項目實戰三、Web自動化項目實戰四、App自動化項目實戰五、一線大廠簡歷六、測試開發DevOps體系七、常用自動化測試工具八、JMeter性能測試九、總結&#xff08;尾部小驚喜&#xff09; 前言 物流項目&#xf…

好的編程語言設計是用簡潔清晰的原語組合復雜功能

首先&#xff0c;函數命名要user friendly&#xff0c;比如最常用的控制臺輸入輸出&#xff0c;input scanf gets read readln readline print println writeline… 我專門詢問了chatgpt&#xff0c;讓它給出流行度百分比最高的組合&#xff08;ai干這個最在行&#xff09;&…

基于springboot的在線購票系統/在線售票系統

用戶&#xff1a;注冊&#xff0c;登錄&#xff0c;影院信息&#xff0c;即將上映&#xff0c;電影信息&#xff0c;新聞公告&#xff0c;取票管理&#xff0c;電影評價管理&#xff0c;我的收藏管理&#xff0c;個人中心管理員&#xff1a;登錄&#xff0c;個人中心&#xff0…

Spring Boot項目打包部署常見問題解決方案

問題一&#xff1a;JAR包缺少主清單屬性 問題描述 在使用 java -jar 命令啟動Spring Boot項目時&#xff0c;遇到以下錯誤&#xff1a; demo-service.jar中沒有主清單屬性問題原因 pom.xml 中 spring-boot-maven-plugin 配置不正確打包時跳過了主清單文件的生成主類&#xff08…

【分享】外國使館雷電綜合防護系統改造方案(一)

1防雷項目設計思想&#xff1a;1.1設計依據&#xff1a;依據中國GB標準與部委頒發的設計規范的要求&#xff0c;該建筑物和大樓內之計算機房等設備都必須有完整完善之防護措施&#xff0c;保證該系統能正常運作。這包括電源供電系統、不間斷供電系統&#xff0c;空調設備、電腦…

數據結構預備知識

在學習數據結構之前&#xff0c;有些知識是很有必要提前知道的&#xff0c;它們包括&#xff1a;集合框架、復雜度和泛型。本篇文章專門介紹這三個東西。1.集合框架1.1 什么是集合框架Java 集合框架(Java Collection Framework)&#xff0c;又被稱為容器&#xff0c;是定義在 j…

【C++】數字cmath庫常用函數

菜鳥傳送門&#xff1a;https://www.runoob.com/cplusplus/cpp-numbers.html 作者廢話&#xff1a;作為一個從業3年的JS人&#xff0c;現在重拾C&#xff0c;雖然眾多語言都有很多相似之處&#xff08;至少算法&#xff0c;數學運算&#xff0c;數據結構等等那些都是相同的&…

神經網絡(第二課第一周)

文章目錄神經網絡&#xff08;第二課第一周&#xff09;&#xff08;一&#xff09;神經網絡的內涵&#xff08;二&#xff09;如何構建神經元層1、tensorflow如何處理數據&#xff08;Tensorflow 是由 Google 開發的機器學習包。&#xff09;2、詳細的一些實驗代碼&#xff0c…

CCF-GESP 等級考試 2025年6月認證C++七級真題解析

1 單選題&#xff08;每題 2 分&#xff0c;共 30 分&#xff09;第1題 已知小寫字母 b 的ASCII碼為98&#xff0c;下列C代碼的輸出結果是&#xff08; &#xff09;。#include <iostream>using namespace std;int main() { char a b ^ 4; cout << a; …

【HarmonyOS】鴻蒙應用開發中常用的三方庫介紹和使用示例

【HarmonyOS】鴻蒙應用開發中常用的三方庫介紹和使用示例 截止到2025年&#xff0c;目前參考官方文檔&#xff1a;訪問 HarmonyOS三方庫中心 。梳理了以下熱門下載量和常用的三方庫。 上述庫的組合&#xff0c;可快速實現網絡請求、UI搭建、狀態管理等核心功能&#xff0c;顯著…

SpringBoot 獲取請求參數的常用注解

SpringBoot 提供了多種注解來方便地從 HTTP 請求中獲取參數以下是主要的注解及其用法&#xff1a;1. RequestParam用于獲取查詢參數(URL 參數)&#xff0c;適用于 GET 請求或 POST 表單提交。GetMapping("/user") public String getUser(RequestParam("id"…

【Linux篇章】Socket 套接字,竟讓 UDP 網絡通信如此絲滑,成為一招致勝的秘籍!

本篇文章將帶大家了解網絡通信是如何進行的&#xff08;如包括網絡字節序&#xff0c;端口號&#xff0c;協議等&#xff09; &#xff1b;再對socket套接字進行介紹&#xff1b;以及一些udp-socket相關網絡通信接口的介紹及使用&#xff1b;最后進行對基于udp的網絡通信&#…