Falconsai
色情内容
色情内容是非常有害的,它们既不符合我国的法律也要求,同时也毒害了人们的思想精神。在过去,通过使用人工“鉴黄”的方式,找一个专门的工作者,去判断一个内容是否是色情内容,虽然,他们通过努力不懈,阻止了色情内容的传播,但是,这样的工作对于鉴黄师本人来说,却是很大的心灵伤害。
好在,随着科技的发展和进步,现在的深度学习模型,已经可以完成由ai鉴别这些不合适的内容了,让这些淫秽内容无处遁形,净化网络空间,打击不法犯罪,与“黄毒赌”不共戴天!
nsfw模型
NSFW的图像检测,是指识别图像中的不适合工作场合的内容,其中nsfw,即not safe for work,翻译为不适合工作场合,主要就是指包含色情和裸露的内容。这些内容通常不应该在上班工作的时候看,这样做不符合职业道德,可能让他人感到反感,当然,如果被老板发现了,还可能被扣工资,甚至解雇。
FalconsAI NSFW是基于Vision Transformer架构的模型,其可以将图片分类为两类,nsfw和normal,也即不合适的图片和正常的图片,它的主要功能可能包括内容审核,广告过滤等。Vision Transformer也即ViT,是一种图像分类模型,将图像划分为多个小图像块,然后将其编码,具有强大的图像分类能力,和传统的卷积神经网络并不相同。根据官方介绍,训练该模型使用了约80000图片,不过由于是属于专有数据集,并未开放提供下载和查看。
补充介绍:falcon是英语中的“鹰”的意思,也叫“隼”,隼(读音sun,三声,是一种鸟,不是那个爱止痛的隼)。
官方地址可以参考:nsfw_image_detection。
autodl
autodl介绍
说起深度学习模型的训练以及使用,就必须要有强力的显卡以及合适的运行环境。但是,很多人并不具备这样的条件,提起ai深度学习,遇到的最多的一个问题就是:“我没有好显卡,买一个太贵了,但是还想进行深度学习,怎么办?”
那还用问吗?当然是租一个!autodl就是这样一个可以租显卡的平台。不仅可以租显卡,而且该平台已经提供了全套的运行环境,还有丰富的帮助手册,扫清ai路上的一切障碍。
autodl租显卡,可以使用其官网:autodl深度学习
深度学习环境搭建
第一步:我们选择“算力市场”
第二步:选择一个需要的GPU,例如3080Ti
第三步:选择python运行环境,例如pytorch,免安装环境的烦恼
第四步:在控制台找到实例,连接使用
此时,我们就可以按照自己需要,随意的运行深度学习模型了。
nsfw模型搭建
模型下载
如果要使用该模型,最主要的包括如下几个部分:
将其下载,并放于某个文件目录中,例如model
单一图片检测
import torch
from transformers import AutoModelForImageClassification, ViTImageProcessor
from PIL import Image
# 在这里填写模型的路径
model = AutoModelForImageClassification.from_pretrained("./model")
processor = ViTImageProcessor.from_pretrained("./model")
# 在这里填写图片的路径
img = Image.open("images/1.png").convert("RGB")
with torch.no_grad():
inputs = processor(images=img, return_tensors="pt")
outputs = model(**inputs)
logits = outputs.logits
predicted_label = logits.argmax(-1).item()
label = model.config.id2label[predicted_label]
# normal即为正常图片
# nsfp即为不适合的图片
print(f"预测标签: {label}")
色情图片概率分析
上面方法的判断直接提供一个最终结果,如果你想知道图片判断的概率(也即,有多大的可能性是nsfw图片),可以尝试使用这段代码。
一般来说,越接近nsfw的图片,概率就会越高,反之就会越低。
import torch
import torch.nn.functional as F
from PIL import Image
from transformers import AutoModelForImageClassification, ViTImageProcessor
img = Image.open("images/1.png").convert("RGB")
model = AutoModelForImageClassification.from_pretrained("./model")
processor = ViTImageProcessor.from_pretrained("./model")
with torch.no_grad():
inputs = processor(images=img, return_tensors="pt")
outputs = model(**inputs)
logits = outputs.logits
probabilities = F.softmax(logits, dim=-1)
for idx, score in enumerate(probabilities[0]):
label = model.config.id2label[idx]
print(f"类别: {label}, 概率: {score.item():.4f}")
检测文件目录
遍历整个文件目录,分析其中的图片是否包含nsfw图片,默认只会检测常见的几种图片扩展名后缀,不会检测其他未知类型的文件。如果你需要使用更多的图片扩展名,需要适当修改代码。
import os
from PIL import Image
from transformers import AutoModelForImageClassification, ViTImageProcessor
import torch
def detect_nsfw_in_folder(folder_path):
model = AutoModelForImageClassification.from_pretrained("./model")
processor = ViTImageProcessor.from_pretrained("./model")
for filename in os.listdir(folder_path):
if filename.lower().endswith(('.png', '.jpg', '.jpeg', '.bmp')):
image_path = os.path.join(folder_path, filename)
try:
img = Image.open(image_path).convert("RGB")
inputs = processor(images=img, return_tensors="pt")
with torch.no_grad():
outputs = model(**inputs)
logits = outputs.logits
predicted_label = logits.argmax(-1).item()
label = model.config.id2label[predicted_label]
if label.lower() == 'nsfw':
print(f"检测到不适宜图像: {filename}")
except Exception as e:
print(f"无法处理图像: {filename}, 错误: {e}")
detect_nsfw_in_folder("./images")
标签:autodl,色色,label,nsfw,import,鉴黄,model,logits,图片
From: https://blog.csdn.net/jiaowoyefan/article/details/143808039