Crates.io | nsfw |
lib.rs | nsfw |
version | 0.2.0 |
source | src |
created_at | 2023-11-05 23:39:29.665331 |
updated_at | 2024-08-01 23:24:09.581268 |
description | A Rust library for detecting NSFW images using a neural network. |
homepage | https://github.com/fyko/nsfw |
repository | https://github.com/fyko/nsfw |
max_upload_size | |
id | 1026228 |
size | 180,175 |
nsfw
is a library for determining the not-safe-for-work-ness of images.
It is based off of GantMan's model.
Because Cargo has a size limit of 10mb, the pre-trained model cannot be included in the crate. You will need to download it from the release page or download the model yourself and convert it into ONNX
$ gh release download -R Fyko/nsfw --pattern "model.onnx"
# or naviate to the release page and download it manually
See our GitHub Workflow
[dependencies]
image = { version = "0.24.7", default-features = false, features = ["jpeg"] }
nsfw = { version = "0.1.0", default-features = false, features = ["jpeg"] }
use nsfw::{create_model, examine};
fn main() -> Result<(), Box<dyn std::error::Error>> {
let model = create_model(
include_bytes!(concat!(env!("CARGO_MANIFEST_DIR"), "/model.onnx"))
);
let image = image::open(concat!(env!("CARGO_MANIFEST_DIR"), "/might_be_porn.jpg"))?;
let result = examine(&model, &image)?;
println!("{:#?}", result);
Ok(())
}
[dependencies]
image = { version = "0.24.7", default-features = false, features = ["gif"] }
nsfw = { version = "0.1.0", default-features = false, features = ["gif"] }
use nsfw::{examine, MODEL, GifParser};
fn main() -> Result<(), Box<dyn std::error::Error>> {
let model = create_model(
include_bytes!(concat!(env!("CARGO_MANIFEST_DIR"), "/model.onnx"))
);
let path = concat!(env!("CARGO_MANIFEST_DIR"), "/might_be_porn.gif");
let file = BufReader::new(File::open(gif_path)?);
let frames = GifParser::new(GifDecoder::new(file)?, &model);
for frame in frames {
println!("{frame:#?}")
}
Ok(())
}
default
- jpeg
and png
serde
- Enables serialization and deserialization of the model using serde
.gif
- Enables GIF support for image
.jpeg
- Enables JPEG support for image
.png
- Enables PNG support for image
.webp
- Enables WEBP support for image
.Name | Size | Language | Time |
---|---|---|---|
test_porn.gif | 50495726 bytes (50.49 MB) |
Rust | 22.719 seconds |
test_porn.gif | 50495726 bytes (50.49 MB) |
JavaScript | 219.96 seconds |