เครื่องตรวจจับ NSFW 2 คลาสนี้เป็นรุ่น Autokeras น้ำหนักเบาที่รับการฝัง CLIP ViT L/14 เป็นอินพุต โดยจะประมาณค่าระหว่าง 0 ถึง 1 (1 = NSFW) และทำงานได้ดีกับการฝังจากรูปภาพ
สาธิต Colab: https://colab.research.google.com/drive/19Acr4grlk5oQws7BHTqNIK-80XGw2u8Z?usp=sharing
สามารถดาวน์โหลดการฝัง CLIP VL/14 การฝึกอบรมได้ที่นี่: https://drive.google.com/file/d/1yenil0R4GqmTOFQ_GVw__x61ofZ-OBcS/view?usp=sharing (ไม่ได้ใส่คำอธิบายประกอบด้วยตนเองทั้งหมด จึงไม่สามารถใช้เป็นการทดสอบได้)
ชุดทดสอบ (ใส่คำอธิบายประกอบด้วยตนเอง) อยู่ที่นั่นhttps://github.com/LAION-AI/CLIP-based-NSFW-Detector/blob/main/nsfw_testset.zip
https://github.com/rom1504/embedding-reader/blob/main/examples/inference_example.py การอนุมานบน laion5B
ตัวอย่างการใช้งานโมเดล:
@ lru_cache ( maxsize = None )
def load_safety_model ( clip_model ):
"""load the safety model"""
import autokeras as ak # pylint: disable=import-outside-toplevel
from tensorflow . keras . models import load_model # pylint: disable=import-outside-toplevel
cache_folder = get_cache_folder ( clip_model )
if clip_model == "ViT-L/14" :
model_dir = cache_folder + "/clip_autokeras_binary_nsfw"
dim = 768
elif clip_model == "ViT-B/32" :
model_dir = cache_folder + "/clip_autokeras_nsfw_b32"
dim = 512
else :
raise ValueError ( "Unknown clip model" )
if not os . path . exists ( model_dir ):
os . makedirs ( cache_folder , exist_ok = True )
from urllib . request import urlretrieve # pylint: disable=import-outside-toplevel
path_to_zip_file = cache_folder + "/clip_autokeras_binary_nsfw.zip"
if clip_model == "ViT-L/14" :
url_model = "https://raw.githubusercontent.com/LAION-AI/CLIP-based-NSFW-Detector/main/clip_autokeras_binary_nsfw.zip"
elif clip_model == "ViT-B/32" :
url_model = (
"https://raw.githubusercontent.com/LAION-AI/CLIP-based-NSFW-Detector/main/clip_autokeras_nsfw_b32.zip"
)
else :
raise ValueError ( "Unknown model {}" . format ( clip_model )) # pylint: disable=consider-using-f-string
urlretrieve ( url_model , path_to_zip_file )
import zipfile # pylint: disable=import-outside-toplevel
with zipfile . ZipFile ( path_to_zip_file , "r" ) as zip_ref :
zip_ref . extractall ( cache_folder )
loaded_model = load_model ( model_dir , custom_objects = ak . CUSTOM_OBJECTS )
loaded_model . predict ( np . random . rand ( 10 ** 3 , dim ). astype ( "float32" ), batch_size = 10 ** 3 )
return loaded_model
nsfw_values = safety_model . predict ( embeddings , batch_size = embeddings . shape [ 0 ])
รหัสและแบบจำลองนี้เผยแพร่ภายใต้ใบอนุญาต MIT:
ลิขสิทธิ์ 2022, คริสตอฟ ชูมันน์
อนุญาตให้บุคคลใดก็ตามที่ได้รับสำเนาของซอฟต์แวร์นี้และไฟล์เอกสารที่เกี่ยวข้อง ("ซอฟต์แวร์") อนุญาตโดยไม่เสียค่าใช้จ่าย เพื่อจัดการกับซอฟต์แวร์โดยไม่มีข้อจำกัด รวมถึงแต่ไม่จำกัดเพียงสิทธิ์ในการใช้ คัดลอก ปรับเปลี่ยน ผสาน เผยแพร่ แจกจ่าย ให้อนุญาตช่วง และ/หรือขายสำเนาของซอฟต์แวร์ และอนุญาตให้บุคคลที่ได้รับซอฟต์แวร์นี้สามารถทำได้ ภายใต้เงื่อนไขต่อไปนี้:
ประกาศเกี่ยวกับลิขสิทธิ์ข้างต้นและประกาศการอนุญาตนี้จะรวมอยู่ในสำเนาทั้งหมดหรือส่วนสำคัญของซอฟต์แวร์
ซอฟต์แวร์นี้มีให้ "ตามที่เป็น" โดยไม่มีการรับประกันใดๆ ทั้งโดยชัดแจ้งหรือโดยนัย ซึ่งรวมถึงแต่ไม่จำกัดเพียงการรับประกันความสามารถในการค้าขาย ความเหมาะสมสำหรับวัตถุประสงค์เฉพาะ และการไม่ละเมิด ไม่ว่าในกรณีใดผู้เขียนหรือผู้ถือลิขสิทธิ์จะต้องรับผิดต่อการเรียกร้องค่าเสียหายหรือความรับผิดอื่นใดไม่ว่าในการกระทำของสัญญาการละเมิดหรืออย่างอื่นที่เกิดขึ้นจากหรือเกี่ยวข้องกับซอฟต์แวร์หรือการใช้งานหรือข้อตกลงอื่น ๆ ใน ซอฟต์แวร์.