SentiBank Dector上手指南

news2024/11/27 16:30:57


官网链接:https://www.ee.columbia.edu/ln/dvmm/vso/download/sentibank.html

SentiBank Detector可以抽取图片中的形容词-名词对,之前一直看到,这次复现模型才第一次用到,上手的时候有点手足无措,因为官网在如何使用方面说的不是很清楚,但是用完发现也挺简单,这里记录一下。

官方下载的压缩包解压之后,主要包含以下文件:
在这里插入图片描述
其中source1.01,1.02,1.1是source的三个版本,其中1.1为最新版本,直接解压source1.1.zip即可,binary1.01,1.02,1.1是binary的三个版本,其中1.1为最新版本,直接解压binary1.1.zip即可。两者都可以生成一张图片在1200个形容词名词对上匹配分数,binary可以直接在终端运行,source需要在MATLAB中执行。生成速度上,binary处理一张普通图片需要2min,source在修改源码之后可以达到1min处理10张照片的速度。

Binary

解压Binary1.1.zip之后,先看readme_binary.txt:

Usage: Specify image path in main.bat.
Both relative path and absolute path are accepted(relative path preferred).
Run main.m to obtain the biconcept responce of the image.
Result will be saved in ./result/imagename-biconcept.mat. It will be a 1200 length vector.


Changes in version 1.02:

Fixed bugs and improved robustness.

Changes in version 1.1:

Re-trained classifiers using Non-CC images, improved performance by about 30%.

大意就是,在main.bat文件中指定图片地址(相对地址和绝对地址都可),如:

getBiconcept test.jpg

然后双击main.bat文件执行就OK,从cmd.exe打开到执行结束大概需要两分钟,执行完成后,结果会存储在result文件夹中,命名方式是图像名-biconcept.txt图像名-biconcept.mat,txt文件共1200行,分数对应class1200.txt中的类别。

Source

先看readme_source.txt:

Usage: getBiconcept('image path').
Both relative path and absolute path are accepted(relative path preferred).
Run main.m to obtain the biconcept responce of the image.
Result will be saved in ./result/imagename-biconcept.mat. It will be a 1200 length vector.


Changes in version 1.02:

Fixed bugs and improved robustness.

Changes in version 1.1:

Re-trained classifiers using Non-CC images, improved performance by about 30%.

首先,.m文件无法直接终端执行(也可能我操作不当一直报错,反正没成功),要下载MATLAB执行,我安装的是MATLAB_R2019a,找的是网上的破解版安装教程,安装还算顺利。
然后就可以在MATLAB界面执行.m文件了。

处理多个文件

由于给出的可执行代码都是处理一张图片的,但是使用中不可避免要处理大量图片,就不得不简单地学习了一下MATLAB的.m文件的语法,下面是我是用source文件夹下的main.m文件处理多张图片的步骤:

  1. 将所有要处理的图片放在一个文件夹下,并生成一个txt文件,其中包含了所有的图像连接,如images.txt:
    images/1.jpg
    images/2.jpg
    …
    images/100.jpg
    
  2. 参考博客,对源码进行修改,具体而言,就是将source1.1文件夹下getmapping.m中的所有bitshift(i,1,samples)替换为bitshift(i,1,'uint8')
  3. 修改mian.m文件:
    % 注意每条指令后要写分号
    fid = fopen('images.txt','r+'); %打开存放所有图片链接的txt文件
    data = textscan(fid,'%s'); %读取文件内的所有字符串
    sta=fclose(fid); %关闭文件
    disp(data); %显示读取的数据,可省略
    n=length(data{1}); %n为图片链接个数
    for a = 1:length(data{1}) %遍历所有图片链接
        disp(data{1}{a}); %显示图片链接
        getBiconcept(data{1}{a}); %处理图片链接
    end
    
    %getBiconcept('try.jpg')  %默认的单挑指令
    

可能因为缺失gray2rgb.m文件而报错

gray2rgb.m:

%% 灰度图转换为彩色图
function I = gray2rgb(X)
R = redTransformer(X);
G = greenTransformer(X);
B = blueTransformer(X);
I(:,:,1) = R;
I(:,:,2) = G;
I(:,:,3) = B;
I = uint8(I);
end
 
%% 红色通道映射函数
function R = redTransformer(X)
R = zeros(size(X));
R(X < 128) = 30;
R(128 <= X & X < 192) = 2*X(128 <= X & X < 192)-150;
R(192 <= X) = 234;
end
%% 绿色通道映射函数
function G = greenTransformer(X)
G = zeros(size(X));
G(X < 90) = 2*X(X < 90)+40;
G(90 <= X & X < 160) = 180;
G(160 <= X) = 0;
end
%% 蓝色通道映射函数
function B = blueTransformer(X)
B = zeros(size(X));
B(X < 64) = 115;
B(64 <= X & X < 128) = 510-4*X(64 <= X & X < 128);
B(128 <= X) = 36;
end

概率到TOP5形容词名词对的转化

import os
from collections import defaultdict
import jsonlines
classes=defaultdict(str)
with open("class1200.txt","r",encoding="utf-8") as f:
    lines = f.readlines()
    for i,line in enumerate(lines):
        classes[str(i)]=line.strip()
print(classes) #存储所有类别
 

with open("anps_data.txt","w",encoding="utf-8") as f:
    pass

id2noun_dict={}

for root, dirs, files in os.walk("result/data"):  # filename文件夹名
    count=0
    for file in files:  # 遍历文件夹下所有文件名
        if not file.endswith(".txt"):
            continue
        new_filepath = os.path.join(root, file)  # 创建路径
        id =file.split(".")[0].split("-")[0]
        classdict={}
        with open(new_filepath,"r",encoding="utf-8") as f:
            lines = f.readlines()
            for i,line in enumerate(lines):
                line = float(line.strip())
                classdict[str(i)]=line
        classdict=sorted(classdict.items(),key=lambda x:x[1],reverse=True) #类别按照从大到小排序
        # print(classdict)
        classdict = classdict[:5] #获取top5类别
        classlist = []
        five_words = [id]
        for c in classdict:
            name = classes[c[0]]
            score = c[1]
            classlist.append((name,score))
            five_words.append(name)
        id2noun_dict[id] = tuple(classlist)
        count+=1
        # print(id)
        with open("anps_clue.txt","a",encoding="utf-8") as f:
            f.write(str(five_words)+"\n")

后记

即使是使用source1.1执行,图片的处理速度也是和图片的大小成正比的,所以如果需要提升处理速度,可以降低图片的分辨率。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/474830.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

傅里叶变换解析

p.s.本文无论是cos还是sin&#xff0c;都统一用“正弦波”(Sine Wave)一词来代表简谐波。 一、什么是频域 从我们出生&#xff0c;我们看到的世界都以时间贯穿&#xff0c;股票的走势、人的身高、汽车的轨迹都会随着时间发生改变。这种以时间作为参照来观察动态世界的方法我们称…

自动驾驶技术的优势、局限性及未来发展趋势

自动驾驶技术是当前汽车行业的热门话题之一。该技术的发展&#xff0c;不仅可以提高车辆的安全性和行驶效率&#xff0c;还可以为人们的出行带来更多便利。但与此同时&#xff0c;自动驾驶技术也存在着许多争议和挑战。接下来从以下四个方面谈一下我对自动驾驶技术的看法。 一…

贝叶斯决策理论

贝叶斯决策理论的相关知识 贝叶斯的思想&#xff1a;顾名思义&#xff0c;贝叶斯决策论是利用概率来进行决策&#xff0c;是概率框架下的方法。贝叶斯决策论是利用概率的不同分类决策与相应的决策代价之间的平衡&#xff0c;核心思想是决策问题可以通过概率的形式来描述。 1.…

数量性状基因座QTL及其作图

数量性状基因座作图原理与步骤 经典的数量遗传分析方法 ->只能分析控制数量性状表现的众多基因的综合遗传效应,无法准确鉴别基因的数目、单个基因在染色体上的位置和遗传效应 (1)数量性状基因座(QTL) Quantitative trait loci: QTL 数量性状位点(基因座) 所谓QTL是指通过…

基于TCP的C/S模型代码实现

欢迎关注博主 Mindtechnist 或加入【Linux C/C/Python社区】一起学习和分享Linux、C、C、Python、Matlab&#xff0c;机器人运动控制、多机器人协作&#xff0c;智能优化算法&#xff0c;滤波估计、多传感器信息融合&#xff0c;机器学习&#xff0c;人工智能等相关领域的知识和…

自学C#,要懂得善用MSDN

很多初学者学习编程&#xff0c;都会通过看别人写的教程、或者录制的视频&#xff0c;来学习。 这是一个非常好的途径&#xff0c;因为这个是非常高效的。 但是这样&#xff0c;存在两个问题&#xff1a; 1、教程不够全面&#xff1a;任何再好的教程&#xff0c;都无法囊括所…

Java 输出机制 数据类型 基本数据类型转换 基本数据类型和String类型的转换

目录 一、输出机制 1.print和println的差别 2.可接收不同类型参数 3.输出函数中 符号的使用 二、数据类型 1.整型类型 2.浮点类型 3.字符类型 三、基本数据类型转换 1.自动类型转换 2.强制类型转换 3.练习题 四、基本数据类型和String类型的转换 1.基本类型转S…

论文写作精品课程

本文介绍了一些论文写作的在线课程&#xff0c;方便读者朋友们自学&#xff0c;提高论文写作的能力。论文写作的在线课程非常多&#xff0c;读者朋友们也可以在网上自行搜索&#xff0c;选择适合自己的在线课程进行学习。如需要打开课程的网站&#xff0c;请复制课程的网址到浏…

PostgreSQL16中pg_dump的LZ4和ZSTD压缩

PostgreSQL16中pg_dump的LZ4和ZSTD压缩 pg_dump压缩lz4和zstd LZ4和ZSTD压缩算法合入了PG16。LZ4补丁的作者是Georgios Kokolatos。由Tomas Vondra提交。由Michael Paquier、Rachel Heaton、Justin Pryzby、Shi Yu 和 Tomas Vondra 审阅。提交消息是&#xff1a; Expand pg_dum…

【Java EE初阶】计算机简介及多线程之创建线程

目录 1.计算机发展史 2.冯诺依曼体系 3.操作系统 操作系统的作用&#xff1a; 4.进程 1.PID&#xff08;进程编号&#xff09; 2.内存指针 应用程序申请到的内存中的首地址 3.文件描述符表 问&#xff1a;什么是并发&#xff1f;什么是并行&#xff1f; 4.进程的优先级&a…

Tomcat8和Tomcat9乱码问题

今天新开了一个小项目&#xff0c;我丢&#xff0c;乱码了&#xff0c;咋回事&#xff0c;好久没遇到过了&#xff0c;都忘了咋回事。今天必须记录下来&#xff0c;避免继续踩坑 Tomcat 8 不需要进行任何配置即可&#xff0c;它默认的是GBK&#xff0c;而win10 win7 默认的也是…

[Data structure]单链表 | 一文介绍线性数据结构之一的单链表(Java实现)

⭐作者介绍&#xff1a;大二本科网络工程专业在读&#xff0c;持续学习Java&#xff0c;努力输出优质文章 ⭐作者主页&#xff1a;逐梦苍穹 ⭐所属专栏&#xff1a;数据结构。数据结构专栏主要是在讲解原理的基础上拿Java实现 ⭐如果觉得文章写的不错&#xff0c;欢迎点个关注一…

R语言 | 数据框

目录 一、认识数据框 7.1 建立第一个数据框 7.2 验证与设定数据框的列名和行名 二、认识数据框的结构 三、获取数据框内容 3.1 一般获取 3.2 特殊字符$ 3.3 再看取得的数据 四、使用rbind()函数增加数据框的行数据 五、使用cbind()函数增加数据框的列数据 5.1 使用$符号…

《LearnUE——基础指南:开篇—3》——基础概念

目录 程序之祖——HellowWorld 0.3.1 创建HellowWorld工程 0.3.2编译类型 0.3.3 平台支持 0.3.4 命名约定 程序之祖——HellowWorld 0.3.1 创建HellowWorld工程 接上文准备工作完成之后&#xff0c;双击运行Unreal Engine快捷图标&#xff0c;或者双击生成的UE4Editor.exe…

【计算机图形学】图形变换(以任意直线为对称轴的对称变换)

模块3-2 图形变换 一 实验目的 编写图形各种变换的算法 二 实验内容 1&#xff1a;任意直线的对称变换。要求将变换矩阵写在实验报告中&#xff0c;并与代码匹配。求对任意直线AxByC0的对称变换矩阵。 实验结果如下图所示&#xff1a; 1&#xff1a;预设图形初始化 2&#…

数据结构与算法(小议递归二)

文章目录 前言一、例二二、为什么总结 前言 前面说到了递归在裴波那契数列计算中并不怎么适用&#xff0c;那么它适合什么样的场景呢&#xff1f; 我们继续举例和python3对比测试来说明。 一、例二 下面我们试试阶乘&#xff0c;在前面的代码上稍稍改一下就可以了&#xff1a…

ApachePOI操作Excel快速入门使用

简介 Apache POI 是一个处理Miscrosoft Office各种文件格式的开源项目&#xff0c;主要任务是创建和维护Java API&#xff0c;以基于Office Open XML标准&#xff08;OOXML&#xff09;和Microsoft的OLE 2复合文档格式&#xff08;OLE2&#xff09;处理各种文件格式&#xff0…

【Java笔试强训 3】

&#x1f389;&#x1f389;&#x1f389;点进来你就是我的人了博主主页&#xff1a;&#x1f648;&#x1f648;&#x1f648;戳一戳,欢迎大佬指点! 欢迎志同道合的朋友一起加油喔&#x1f93a;&#x1f93a;&#x1f93a; 目录 一、选择题 二、编程题 &#x1f525;最长的…

能用OpenCV做的15大计算机视觉任务

使用OpenCV&#xff0c;你几乎可以完成你能想到的每种计算机视觉任务。现实生活中的问题要求同时使用许多计算机视觉算法和模块来获得所需的结果。因此&#xff0c;你只需了解要用哪些OpenCV模块和函数来获得你想要的东西。 让我们来看看OpenCV中可以开箱即用的功能。 1 内置…

跨平台Office文档预览原生插件,非腾讯X5,支持离线,稳定高可用

引言 2023年4月13日零时起&#xff0c;腾讯浏览服务内核文档能力正式下线&#xff0c;要实现真正离线文档预览&#xff0c;于是有了这边文章。 前面写了多篇关于<跨平台文件在线预览解决方案>&#xff0c;不管使用pdf.js、LibreOffice&#xff0c;还是永中DCS&#xff…