【论文复现】SRM隐写分析官方代码使用说明

代码下载地址:http://dde.binghamton.edu/download/feature_extractors/


Linux下载SRM.tar并解压,Windows下载SRM.zip(运行速度比较快),如果是为了研究过程可下载SRM.m

  1. 以Linux为例,解压后进入release文件夹,在终端运行SRM命令,自行修改stego和输出特征路径,然后在终端bash SRM_example.sh 运行 (只能处理pgm格式,头部不能有多余注释字段),这里可以自己写脚本实现批量处理

    Linux命令对于512*512的pgm灰度图处理比较慢,30多秒一张图,建议用Windows版本的SRM.EXE文件处理,速度大概4-5秒

  2. 使用python对提取出的特征进行组合(实现SubmodelConcatenation原matlab代码的功能)

    import pandas as pd
    import os
    
    train_path = r'/home/train/'
    test_path = r'/home/test/'
    
    all_train = pd.DataFrame()
    all_test = pd.DataFrame()
    
    for file in os.listdir(train_path):
        print(file)
        fea_train = pd.read_csv(train_path + file, header=None,delimiter=' ')
        fea_train = fea_train.iloc[:, :-1] # 去掉最后一列
        all_train = pd.concat([all_train, fea_train], axis=1)
        
    all_train.to_csv('q1_stego_1024-train.csv', index=False)  
        
    for file in os.listdir(test_path):    
        fea_test = pd.read_csv(test_path + file, header=None,delimiter=' ')
        fea_test = fea_test.iloc[:, :-1] # 去掉最后一列
        all_test = pd.concat([all_test, fea_test], axis=1)
        
    all_test.to_csv('q1_stego_1024-test.csv', index=False)   
    
  3. SRM.zip解压后,有ensamble_training.mensamble_test.m两个文件。将上一步提取出的载体和含密图像特征分别输入ensamble_training.m,进行训练。

  4. 训练好的模型和提取的SRM特征输入ensamble_test.m,给出分类结果result

    % matlab代码
    % 读取python组合好的特征
    disp("1")
    cover_test = importdata('/home/q1_cover_1024-test.csv');
    cover_test = single(cover_test);
    cover_test= cover_test(2:end,:);
    
    disp("2")
    cover_train = importdata('/home/q1_cover_1024-train.csv');
    cover_train = single(cover_train);
    cover_train= cover_train(2:end,:);
    
    disp("3")
    stego_test = importdata('/home/q1_mean_stego_256-test.csv');
    stego_test = single(stego_test);
    stego_test= stego_test(2:end,:);
    
    disp("4")
    stego_train = importdata('/home/q1_mean_stego_256-train.csv');
    stego_train = single(stego_train);
    stego_train= stego_train(2:end,:);
    
    % disp(stego_train)
    % disp(stego_test)
    
    %% 开始训练
    [trained_ensemble,~] = ensamble_training(cover_train,stego_train);
    
    %% 开始测试
    results = ensemble_testing(stego_test,trained_ensemble);
    
    % 输出结果 
    disp(sum(results.predictions(results.predictions==-1)));
    
    
    

这是目前手中比较快的SRM使用方法,若有其他同学找到更快的方法,麻烦请告知我一下~

                                      祝大家科研顺利,paper多多!
  • 6
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

岁月漫长_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值