OpenGAN:基于開放數據生成的開放集識別

簡介

簡介:這次學習的OpenGAN主要學習一個思路,跳出傳統GAN對于判斷真假的識別到判斷是已知種類還是未知種類。重點內容不在于代碼而是思路,會簡要給出一個設計的代碼。

論文題目:OpenGAN: Open-Set Recognition via Open Data Generation(基于開放數據生成的開放集識別)

期刊:IEEE TRANSACTIONS ON PATTERN ANALYSIS AND MACHINE INTELLIGENCE(if=20.8,超級Top)

摘要:現實世界的機器學習系統需要分析可能與訓練數據不同的測試數據。 在K-way分類中,這被清晰地表述為開集識別,其核心是區分K個閉集類之外的開集數據的能力。 開集判別的兩個概念是:1)通過利用一些離群數據作為開集判別學習開-閉二元判別器; 2)利用GAN的判別器作為開集似然函數,對閉集數據分布進行無監督學習。 然而,由于對訓練異常值的過度擬合,前者對各種開放測試數據的泛化效果較差,而訓練異常值不太可能詳盡地跨越開放世界。 后者不能很好地工作,可能是由于gan的訓練不穩定。 在上述的激勵下,我們提出了OpenGAN,它通過將每種方法與幾個技術見解相結合來解決每種方法的局限性。 首先,我們證明了在一些真實的離群數據上精心選擇的gan鑒別器已經達到了最先進的水平。 其次,我們用對抗合成的“假”數據增強真實開放訓練樣本的可用集。 第三,也是最重要的,我們在封閉世界K-way網絡計算的特征上建立了鑒別器。 這使得OpenGAN可以通過建立在現有K-way網絡之上的輕量級鑒別器頭來實現。 大量的實驗表明,OpenGAN顯著優于先前的開集方法。

問題背景的具體例子

想象你要訓練一個自動駕駛汽車的視覺系統:

  • 訓練數據:汽車、行人、紅綠燈、建筑物等19個類別
  • 現實問題:路上突然出現嬰兒車、街頭小攤等訓練時沒見過的物體
  • 危險后果:系統可能把嬰兒車錯誤識別為"摩托車",導致不當的避讓策略

OpenGAN的具體操作流程

第一步:準備基礎設施

1. 已有一個訓練好的K類分類器(比如識別19種交通場景物體)
2. 從這個分類器的倒數第二層提取特征(不是直接用原始圖片)
3. 收集少量"其他"類別的數據作為已知的異常樣本

為什么用特征而不用像素?

  • 原始圖片:1024×2048×3 = 600萬維度,太復雜
  • 提取的特征:可能只有512維,包含了高級語義信息
  • 就像人類識別物體時關注的是形狀、紋理,而不是每個像素點

第二步:構建OpenGAN架構

OpenGAN包含兩個核心組件:

判別器D(Discriminator)

  • 輸入:特征向量
  • 輸出:該特征屬于"已知類別"的概率
  • 作用:區分"已知"vs"未知"

生成器G(Generator)

  • 輸入:隨機噪聲
  • 輸出:假的"未知類別"特征
  • 作用:生成更多樣的"未知"樣本來訓練判別器

第三步:對抗訓練過程

這是核心!OpenGAN使用三種數據同時訓練:

# 偽代碼展示訓練過程
for epoch in training:# 1. 真實的已知類別數據real_closed_features = extract_features(known_class_images)# 2. 真實的未知類別數據(少量)real_open_features = extract_features(outlier_images)# 3. 生成器創造的假未知數據noise = random_noise()fake_open_features = Generator(noise)# 訓練判別器:讓它學會區分已知和未知d_loss = - log(D(real_closed_features))           # 已知類別應該得高分- λ_o * log(1-D(real_open_features))     # 真實未知應該得低分  - λ_G * log(1-D(fake_open_features))     # 生成未知應該得低分# 訓練生成器:讓它生成能騙過判別器的"未知"特征g_loss = - log(1-D(Generator(noise)))  # 生成的特征要能騙過判別器

關鍵參數解釋

  • λ_o:控制真實異常數據的重要性
  • λ_G:控制生成假數據的重要性
  • λ_o=0時,就是OpenGAN-0(不使用真實異常數據)

第四步:模型選擇的巧妙方法

傳統GAN的問題

  • 訓練到最后,生成器太強了,判別器分不出真假
  • 判別器失去了區分"已知"和"未知"的能力

OpenGAN的解決方案

  1. 在訓練過程中保存多個判別器快照
  2. 用少量真實的異常數據作為驗證集
  3. 選擇在驗證集上表現最好的判別器
# 模型選擇過程
best_auroc = 0
best_discriminator = Nonefor checkpoint in training_checkpoints:discriminator = load_checkpoint(checkpoint)auroc = evaluate_on_validation_set(discriminator, validation_outliers)if auroc > best_auroc:best_auroc = aurocbest_discriminator = discriminator# 使用最佳判別器進行最終預測

第五步:實際應用

在測試時

def predict_open_set(test_image):# 1. 提取特征features = pretrained_classifier.extract_features(test_image)# 2. 用OpenGAN判別器打分confidence = best_discriminator(features)# 3. 做決策if confidence > threshold:# 進行正常的K類分類class_prediction = pretrained_classifier(test_image)return class_predictionelse:return "UNKNOWN_OBJECT"  # 未知物體

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

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

相關文章

隨機游動算法解決kSAT問題

input:n個變量的k-CNF公式 ouput:該公式的一組滿足賦值或宣布沒有滿足賦值 算法步驟: 隨機均勻地初始化賦值 a ∈ { 0 , 1 } n a\in\{0,1\}^n a∈{0,1}n.重復t次(后面會估計這個t): a. 如果在當前賦值下…

企業上線ESOP電子作業指導書系統實現車間無紙化的投入收益數據綜合分析

企業上線ESOP電子作業指導書系統實現車間無紙化的投入收益數據綜合分析 一、成本節約:無紙化直接降低運營成本 紙張與耗材費用銳減 o 杭州科創致遠案例:某汽配企業引入無紙化系統后,年節省紙張耗材費用超50萬元。通過電子化替代傳統紙質文檔…

高并發抽獎系統優化方案

引子 最近接觸了一個抽獎的項目,由于用戶量比較大,而且第三方提供的認證接口并發量有限,為了保證服務的高可用性,所以對高并限制發有一定的要求。經過一系列研究和討論,做出了以下一些優化方案。 需求分析 根據用戶量…

STM32八股【10】-----stm32啟動流程

啟動流程 1.上電復位 2.系統初始化 3.跳轉到 main 函數 啟動入口: cpu被清空,程序從0x00000000開始運行0x00000000存放的是reset_handler的入口地址0x00000000的實際位置會變,根據不同的啟動模式決定啟動模式分為: flash啟動&a…

LLMTIME: 不用微調!如何用大模型玩轉時間序列預測?

今天是端午節,端午安康!值此傳統佳節之際,我想和大家分享一篇關于基于大語言模型的時序預測算法——LLMTIME。隨著人工智能技術的飛速發展,利用大型預訓練語言模型(LLM)進行時間序列預測成為一個新興且極具…

在VirtualBox中打造高效開發環境:CentOS虛擬機安裝與優化指南

🔥「炎碼工坊」技術彈藥已裝填! 點擊關注 → 解鎖工業級干貨【工具實測|項目避坑|源碼燃燒指南】 一、為何選擇VirtualBox CentOS組合? 對于程序員而言,構建隔離的開發測試環境是剛需。VirtualBox憑借其跨平臺支持(W…

LeeCode 98. 驗證二叉搜索樹

給你一個二叉樹的根節點 root ,判斷其是否是一個有效的二叉搜索樹。 有效 二叉搜索樹定義如下: 節點的左子樹只包含 小于 當前節點的數。節點的右子樹只包含 大于 當前節點的數。所有左子樹和右子樹自身必須也是二叉搜索樹。 提示: 樹中節…

Python簡易音樂播放器開發教程

📚 前言 編程基礎第一期《12-30》–音樂播放器是日常生活中常用的應用程序,使用Python和pygame庫可以輕松實現一個簡易的音樂播放器。本教程將詳細講解如何開發一個具有基本功能的音樂播放器,并解析其中涉及的Python編程知識點。 &#x1f6e…

ssh連接斷開,保持任務后臺執行——tmux

目錄 **核心用途****基礎使用方法**1. **安裝 tmux**2. **啟動新會話**3. **常用快捷鍵(需先按 Ctrlb 前綴)**4. **會話管理命令**5. **窗格操作進階** **典型工作流****注意事項****配置文件(~/.tmux.conf)** tmux( …

3D Gaussian splatting 04: 代碼閱讀-提取相機位姿和稀疏點云

目錄 3D Gaussian splatting 01: 環境搭建3D Gaussian splatting 02: 快速評估3D Gaussian splatting 03: 用戶數據訓練和結果查看3D Gaussian splatting 04: 代碼閱讀-提取相機位姿和稀疏點云3D Gaussian splatting 05: 代碼閱讀-訓練整體流程3D Gaussian splatting 06: 代碼…

每日c/c++題 備戰藍橋杯(P1204 [USACO1.2] 擠牛奶 Milking Cows)

P1204 [USACO1.2] 擠牛奶 Milking Cows - 詳解與代碼實現 一、題目背景 三個農民每天清晨[……](簡要介紹題目背景,與官網描述類似) 二、問題分析 輸入要求 :讀取 N 個農民的擠奶時間區間,計算兩個值:最…

保持本地 Git 項目副本與遠程倉庫完全同步

核心目標: 保持本地 Git 項目副本與 GitHub 遠程倉庫完全同步。 關鍵方法: 定期執行 git pull 命令。 操作步驟: 進入項目目錄: 在終端/命令行中,使用 cd 命令切換到你的項目文件夾。執行拉取命令: 運行…

Flutter 4.x 版本 webview_flutter 嵌套H5

踩坑早期版本 使用 WebView 代碼如下 import package:flutter/material.dart; import package:webview_flutter/webview_flutter.dart;class HomePage extends StatelessWidget {const HomePage({super.key});overrideWidget build(BuildContext context) {return Scaffold(ap…

rtpinsertsound:語音注入攻擊!全參數詳細教程!Kali Linux教程!

簡介 2006年8月至9月期間,我們創建了一個用于將音頻插入指定音頻(即RTP)流的工具。該工具名為rtpinsertsound。 該工具已在Linux Red Hat Fedora Core 4平臺(奔騰IV,2.5 GHz)上進行了測試,但預…

跑步前熱身動作

跑前熱身的核心目標是升高體溫、激活肌肉、預防損傷 ,同時通過動態動作提升運動表現。熱身(步驟關節→肌肉→心肺)和針對性動作(如抱膝抬腿)能有效降低受傷風險,建議每次跑步前嚴格執行。 推薦跑前熱身動作…

GIT命令行的一些常規操作

放棄修改 git checkout . 修改commit信息 git commit --amend 撤銷上次本地commit 1、通過git log查看上次提交的哈希值 2、git reset --soft 哈希值 分支 1.創建本地分支 git branch 分支名 2.切換本地分支 git checkout mybranch; 3.創建一個新分支并…

RAGFlow從理論到實戰的檢索增強生成指南

目錄 前言 一、RAGFlow是什么?為何需要它? 二、RAGFlow技術架構拆解 三、實戰指南:從0到1搭建RAGFlow系統 步驟1:環境準備 步驟2:數據接入 步驟3:檢索與生成 四、優化技巧:讓RAGFlow更精…

軟件工程方法論:在確定性與不確定性的永恒之舞中尋找平衡

當我們談論“軟件工程”時,“工程”二字總暗示著某種如橋梁建造般的精確與可控。然而,軟件的本質卻根植于人類思維的復雜性與需求的流變之中。軟件工程方法論的發展史,并非線性進步的凱歌,而是一部在確定性的渴望與不確定性的現實…

Python打卡訓練營Day41

DAY 41 簡單CNN 知識回顧 數據增強卷積神經網絡定義的寫法batch歸一化:調整一個批次的分布,常用與圖像數據特征圖:只有卷積操作輸出的才叫特征圖調度器:直接修改基礎學習率 卷積操作常見流程如下: 1. 輸入 → 卷積層 →…

開源版 PyMOL 如何繪制 Galidesivir 分子結構 ?

參閱:開源版PyMol安裝保姆級教程 百度網盤下載 提取碼:csub pip show pymol 簡介: PyMOL是一個Python增強的分子圖形工具。它擅長蛋白質、小分子、密度、表面和軌跡的3D可視化。它還包括分子編輯、射線追蹤和動畫。 先從 www.python.org 下載 python-…