色情图片识别

foreach ($posts as $k => $v) {
    $pics = $v->vPics->get_val();

    $filename = $pics[0]->val;
    $arr = getimagesize($filename);
    list($width, $height, $type) = getimagesize($filename);
    switch ($type) {
        case '1':
            $rs = imagecreatefromgif($filename);
            break;
        case '2':
            $rs = imagecreatefromjpeg($filename);
            break;
        case '3':
            $rs = imagecreatefrompng($filename);
            break;
    }

    // if ($width>$height) {
    //     $w = 300;
    //     $h = $height*(300/$width);
    // }else{
    //     $h = 300;
    //     $w = $width*(300/$height);
    // }

    // $rs_thumb = imagecreatetruecolor($w, $h);
    // imagecopyresampled($rs_thumb, $rs, 0, 0, 0, 0, $w, $h, $width, $height);

    // 建立输出图像
    $out = imagecreatetruecolor($width, $height);
    $background = imagecolorallocate($out, 0, 0, 0); // 背景设为黑色,失败返回-1
    $white = imagecolorallocate($out, 255, 255, 255);


    $count = 0;
    for ($x=0; $x < $width; $x++) { 
        for ($y=0; $y < $height; $y++) { 
            $rgb = @imagecolorat($rs, $x, $y);
            $r  = ( $rgb  >>  16 ) &  0xFF ;
            $g  = ( $rgb  >>  8 ) &  0xFF ;
            $b  =  $rgb  &  0xFF ;      
            // 判断是否为肤色
            if ($r>95 && $g>40 && $b>20 && $r>$g && $r>$b  && (max($r,$g,$b)-min($r,$g,$b))>15 && abs($r-$g)>15 && ($r-$b)>20 && ($r-$b)<100 ) {
                $color = imagecolorallocate($out, $r, $g, $b);
                imagesetpixel($out, $x, $y, $color);
                $count++;
            }
        }
    }


    // echo $count/($width*$height);
    $data[$k]['pic'] = $filename;
    $data[$k]['val'] = number_format($count/($width*$height), '5');
    $data[$k]['count'] = "{$count}/({$width}*{$height})";
    ob_start();
    imagejpeg($out);
    $buffer = ob_get_clean();
    ob_end_clean();
    $data[$k]['base64'] = 'data:image/jpeg;base64,'.chunk_split(base64_encode($buffer));
}


$this->rsts = $data;
使用:网络需要在图像和输出概率(评分0-1)之间过滤不适合工作的图片。评分<0.2表示图像具有较高概率是安全的。评分>0.8表明极有可能是不适合工作(NSFW)图像。我们建议开发者根据用例和图像类型的不同选择合适的阈值。根据使用情况、定义以及公差的不同会产生误差。理想情况下,开发人员应该创建一个评价集,根据“什么是安全的”对他们的应用程序进行定义,然后适合ROC曲线选择一个合适的阈值。结果可以通过微调你的数据/ uscase /定义NSFW的模型的改进。我们不提供任何结果的准确性保证。使用者适度地结合机器学习解决方案将有助于提高性能。模型描述:我们将不适合工作的图片(NSFW)作为数据集中的积极对象,适合工作的图片作为消极对象来进行训练。所有这些被训练得图片都被打上了特定的标签。所以由于数据本身的原因,我们无法发布数据集或者其他信息。我们用非常不错的名字叫“CaffeOnSpark”的架构给“Hadoop”带来深度学习算法,并且使用Spark集群来进行模型训练的实验。在此非常感谢 CaffeOnSpark 团队。深度模型算法首先在 ImageNet 上生成了1000种数据集,之后我们调整不适合工作(NSFW)的数据集比例。我们使用了50 1by2的残差网络生成网络模型。模型通过 pynetbuilder 工具以及复制残余网络的方法会产生50层网络(每层网络只有一半的过滤器)。你可以从这里获取到更多关于模型产生的信息。更深的网络或者具有更多过滤器的网络通常会更精确。我们使用剩余(residual)网络结构来训练模型,这样可以提供恰到好处的精确度,同样模型在运行以及内存上都能保持轻量级。 标签:opennsfw
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值