🚀 視覺變換器(ViT)NSFW檢測器
本模型基於視覺變換器架構,在約25000張圖像(包括繪畫、照片等)上微調而來,可精準識別圖像是否包含不適宜內容,為圖像篩選提供高效解決方案。
🚀 快速開始
本模型是 vit-base-patch16-384 的微調版本,在約25000張圖像(繪畫、照片等)上進行了微調。它在評估集上取得了以下結果:
最新消息 [07/30]:我專門為穩定擴散應用創建了一個新的ViT模型,用於檢測NSFW/SFW圖像(原因請閱讀下面的免責聲明):AdamCodd/vit-nsfw-stable-diffusion。
免責聲明:本模型並非針對生成圖像設計!這裡使用的數據集中沒有生成圖像,並且它在生成圖像上的表現明顯較差,這需要另一個專門針對生成圖像訓練的ViT模型。以下是該模型在生成圖像上的實際得分,供您參考:
- 損失值:0.3682(↑ 292.95%)
- 準確率:0.8600(↓ 10.91%)
- F1值:0.8654
- AUC值:0.9376(↓ 5.75%)
- 精確率:0.8350
- 召回率:0.8980
✨ 主要特性
- 精準識別:在評估集上準確率高達0.9654,能有效識別圖像是否包含不適宜內容。
- 多類型支持:在多種類型圖像(寫實、3D、繪畫)上進行訓練,具有廣泛適用性。
📦 安裝指南
文檔未提及安裝步驟,可參考Hugging Face官方文檔進行安裝。
💻 使用示例
基礎用法
本地圖像使用示例
from transformers import pipeline
from PIL import Image
img = Image.open("<path_to_image_file>")
predict = pipeline("image-classification", model="AdamCodd/vit-base-nsfw-detector")
predict(img)
遠程圖像使用示例
from transformers import ViTImageProcessor, AutoModelForImageClassification
from PIL import Image
import requests
url = 'http://images.cocodataset.org/val2017/000000039769.jpg'
image = Image.open(requests.get(url, stream=True).raw)
processor = ViTImageProcessor.from_pretrained('AdamCodd/vit-base-nsfw-detector')
model = AutoModelForImageClassification.from_pretrained('AdamCodd/vit-base-nsfw-detector')
inputs = processor(images=image, return_tensors="pt")
outputs = model(**inputs)
logits = outputs.logits
predicted_class_idx = logits.argmax(-1).item()
print("Predicted class:", model.config.id2label[predicted_class_idx])
高級用法
使用Transformers.js(原生JS)的示例
import { pipeline, env } from 'https://cdn.jsdelivr.net/npm/@xenova/transformers@2.17.1';
env.allowLocalModels = false;
const classifier = await pipeline('image-classification', 'AdamCodd/vit-base-nsfw-detector');
async function classifyImage(url) {
try {
const response = await fetch(url);
if (!response.ok) throw new Error('Failed to load image');
const blob = await response.blob();
const image = new Image();
const imagePromise = new Promise((resolve, reject) => {
image.onload = () => resolve(image);
image.onerror = reject;
image.src = URL.createObjectURL(blob);
});
const img = await imagePromise;
const classificationResults = await classifier([img.src]);
console.log('Predicted class: ', classificationResults[0].label);
} catch (error) {
console.error('Error classifying image:', error);
}
}
classifyImage('https://example.com/path/to/image.jpg');
📚 詳細文檔
模型描述
視覺變換器(ViT)是一種基於Transformer編碼器的模型(類似BERT),它在大量圖像上進行了有監督的預訓練,特別是在ImageNet - 21k數據集上,圖像分辨率為224x224像素。隨後,該模型在ImageNet(也稱為ILSVRC2012)數據集上進行了微調,該數據集包含100萬張圖像和1000個類別,圖像分辨率提高到384x384。
預期用途和限制
該模型有兩個類別:SFW(適宜內容)和NSFW(不適宜內容)。模型經過訓練,具有較高的限制性,因此會將“性感”的圖像分類為NSFW。也就是說,如果圖像顯示出乳溝或過多的皮膚,它將被分類為NSFW,這是正常現象。
該模型在各種圖像(寫實、3D、繪畫)上進行了訓練,但並不完美,有些圖像可能會被錯誤地分類為NSFW。此外,請注意,在transformers.js管道中使用量化的ONNX模型會略微降低模型的準確性。
您可以在 這裡 找到使用Transformers.js對該模型的簡單實現。
訓練和評估數據
更多信息待補充。
訓練過程
訓練超參數
訓練過程中使用了以下超參數:
- 學習率:3e - 05
- 訓練批次大小:32
- 評估批次大小:32
- 隨機種子:42
- 優化器:Adam,β值為(0.9, 0.999),ε值為1e - 08
- 訓練輪數:1
訓練結果
- 驗證損失值:0.0937
- 準確率:0.9654
- AUC值:0.9948
混淆矩陣(評估):
[1076 37]
[ 60 1627]
框架版本
- Transformers 4.36.2
- Evaluate 0.4.1
支持作者
如果您想支持作者,可以點擊 這裡。
🔧 技術細節
本模型基於視覺變換器架構,在預訓練模型基礎上進行微調。訓練過程中使用了Adam優化器,學習率為3e - 05,經過1輪訓練,在評估集上取得了較高的準確率和較低的損失值。但由於訓練數據集中不包含生成圖像,模型在生成圖像上的表現有所下降。
📄 許可證
本模型使用的許可證為Apache 2.0許可證。
信息表格
屬性 |
詳情 |
模型類型 |
視覺變換器(ViT)微調模型 |
基礎模型 |
google/vit-base-patch16-384 |
評估指標 |
損失值:0.0937;準確率:0.9654;AUC值:0.9948 |
訓練超參數 |
學習率:3e - 05;訓練批次大小:32;評估批次大小:32;隨機種子:42;優化器:Adam(β=(0.9, 0.999),ε=1e - 08);訓練輪數:1 |
框架版本 |
Transformers 4.36.2;Evaluate 0.4.1 |
許可證 |
Apache 2.0 |