open_nsfw_android
色情图片离线识别,基于TensorFlow实现。识别只需20ms,可断网测试,成功率99%,调用只要一行代码,从雅虎的开源项目open_nsfw移植,该模型文件可用于iOS、java、C++等平台
issues13
iOS请参考:NSFW-Python、Python-TensorflowLite-Api、Python-Tensorflow-Api
Python参考:Tensorflow-Api
Java参考:TensorflowLite-Api
C++参考:JS相关文档
JavaScript参考其中Python、C++均有两种数据喂入的方式,可根据需求选择pb模型或tfLite文件,详细请参考上面的链接.Java的目前只能加载pb模型。其他的平台可自行百度
本项目移除测试图片,请下载Demo后自行配图测试
测试图片
开始使用(从1.3.9版本开始,依赖从JetPack移动到Maven仓库,可直接在项目中依赖,无需添加jetpack支持)
- 开启tflite文件支持
android {
aaptOptions {
noCompress "tflite"
}
}
//可选 快速初始化扫描器,可免去初始化代码
implementation 'com.zwy.nsfw:nsfw_initializer:lastVersion'
//必须 扫描器核心文件
implementation 'com.zwy.nsfw:nsfw:lastVersion'
//必须 tensorflow 支持库
implementation 'org.tensorflow:tensorflow-lite:2.1.0'
implementation 'org.tensorflow:tensorflow-lite-gpu:2.1.0'
- 初始化
//方式一,将模型文件放在Assets根目录下并命名为nsfw.tflite
NSFWHelper.init(context = this@Application)
//方式二,适用于产品对apk大小控制严格,无法将模型文件直接放在apk中,可在用户打开Apk后台静默下载后指定模型路径进行初始化
NSFWHelper.init(modelPath = "模型文件存放路径")
//方式三,将模型文件放在Assets根目录下并命名为nsfw.tflite,引用该库可免去初始化代码
implementation 'com.zwy.nsfw:nsfw_initializer:lastVersion'
- 使用:
//val mNSFWScoreBean:NSFWScoreBean = File.getNSFWScore()
//val mNSFWScoreBean:NSFWScoreBean = Bitmap.getNSFWScore()
//val mNSFWScoreBean:NSFWScoreBean = NSFWHelper.getNSFWScore(bitmap)
mNSFWScoreBean.sfw ... 非涉黄数值 数值越大约安全
mNSFWScoreBean.nsfw ... 涉黄数值 数值越大约危险
mNSFWScoreBean.timeConsumingToLoadData ... 装载数据耗时 单位ms
mNSFWScoreBean.timeConsumingToScanData ... 扫描图片耗时 单位ms