多模态便捷半自动化标注软件——Label-Studio(包含图片标注、检测、分割、分类、语言。。。)

本文介绍了如何通过pip安装LabelStudio,详细步骤包括启动应用、创建新项目、导入本地数据并选择标注类别,特别强调了其支持导入自定义模型进行半自动标注的功能。
摘要由CSDN通过智能技术生成

1、安装:pip install label-studio

2、启动:label-studio
在这里插入图片描述
启动成功
在这里插入图片描述
3、怎么使用

创建新工程项目
在这里插入图片描述

命名
在这里插入图片描述
导入本地数据
在这里插入图片描述
选择标注类别(左边竖着一栏是大类别,比如图片、音频、视频、语言等等。右边是小类别,比如图片有分割、检测等等)
在这里插入图片描述
写入自己的标签
在这里插入图片描述
接下来就可以标注了
在这里插入图片描述
4、它最牛逼的是可以导入自己的模型进行半自动标注,具体怎么搞,研究完再写。

由于数据集只有网址加图片,我们需要首先将网址转换为可用的特征向量。这可以通过将网址拆分为其组成部分(例如协议、域名、路径等)并使用编码器将每个部分编码为数字向量来实现。然后,我们可以将这些特征向量与图像特征向量进行多模态分类。 以下是一个可能的实现: ```python import numpy as np from sklearn.preprocessing import LabelEncoder, OneHotEncoder from keras.preprocessing.text import Tokenizer from keras.preprocessing.sequence import pad_sequences from keras.models import Sequential from keras.layers import Dense, Dropout, Flatten, Input, Concatenate from keras.layers.embeddings import Embedding from keras.layers.convolutional import Conv1D, MaxPooling1D from keras.utils import np_utils from keras.models import Model from keras.layers.merge import concatenate from keras.callbacks import ModelCheckpoint, EarlyStopping # 加载数据集 urls = np.load('urls.npy') images = np.load('images.npy') labels = np.load('labels.npy') # 网址特征向量化 # 将网址拆分为其组成部分 protocols = [] domains = [] paths = [] for url in urls: parts = url.split('/') if len(parts) > 2: protocols.append(parts[0]) domains.append(parts[2]) paths.append('/'.join(parts[3:])) else: protocols.append('') domains.append('') paths.append('') # 使用Tokenzier将每个部分编码为数字向量 tokenizer = Tokenizer() tokenizer.fit_on_texts(protocols + domains + paths) protocol_seqs = tokenizer.texts_to_sequences(protocols) domain_seqs = tokenizer.texts_to_sequences(domains) path_seqs = tokenizer.texts_to_sequences(paths) # 填充序列并将其转换为numpy数组 max_length = max([len(seq) for seq in protocol_seqs + domain_seqs + path_seqs]) protocol_seqs = pad_sequences(protocol_seqs, maxlen=max_length, padding='post') domain_seqs = pad_sequences(domain_seqs, maxlen=max_length, padding='post') path_seqs = pad_sequences(path_seqs, maxlen=max_length, padding='post') url_features = np.hstack((protocol_seqs, domain_seqs, path_seqs)) # 对特征向量进行编码以用于分类 le = LabelEncoder() url_labels = le.fit_transform(labels) ohe = OneHotEncoder() url_labels = ohe.fit_transform(url_labels.reshape(-1, 1)).toarray() # 构建图像分类器 image_model = Sequential() image_model.add(Conv1D(filters=32, kernel_size=3, padding='same', activation='relu', input_shape=(100, 100, 3))) image_model.add(MaxPooling1D(pool_size=2)) image_model.add(Conv1D(filters=64, kernel_size=3, padding='same', activation='relu')) image_model.add(MaxPooling1D(pool_size=2)) image_model.add(Conv1D(filters=128, kernel_size=3, padding='same', activation='relu')) image_model.add(MaxPooling1D(pool_size=2)) image_model.add(Flatten()) image_model.add(Dense(128, activation='relu')) # 构建网址特征分类器 url_model = Sequential() url_model.add(Embedding(input_dim=len(tokenizer.word_index)+1, output_dim=32, input_length=max_length*3)) url_model.add(Conv1D(filters=32, kernel_size=3, padding='same', activation='relu')) url_model.add(MaxPooling1D(pool_size=2)) url_model.add(Conv1D(filters=64, kernel_size=3, padding='same', activation='relu')) url_model.add(MaxPooling1D(pool_size=2)) url_model.add(Conv1D(filters=128, kernel_size=3, padding='same', activation='relu')) url_model.add(MaxPooling1D(pool_size=2)) url_model.add(Flatten()) url_model.add(Dense(128, activation='relu')) # 合并两个模型 merged = concatenate([image_model.output, url_model.output]) # 添加全连接层 merged = Dense(64, activation='relu')(merged) merged = Dropout(0.5)(merged) merged = Dense(len(ohe.categories_[0]), activation='softmax')(merged) # 构建最终模型 model = Model(inputs=[image_model.input, url_model.input], outputs=merged) # 编译模型 model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy']) # 定义回调函数 checkpoint = ModelCheckpoint('best_model.h5', monitor='val_accuracy', verbose=1, save_best_only=True, mode='max') early_stop = EarlyStopping(monitor='val_accuracy', patience=5, verbose=1, mode='max') # 拟合模型 model.fit([images, url_features], url_labels, validation_split=0.2, epochs=50, batch_size=32, callbacks=[checkpoint, early_stop]) ``` 在这个实现中,我们首先将网址拆分为其组成部分并将每个部分编码为数字向量。然后,我们将这些特征向量与图像特征向量组合起来,通过一系列卷积和池化层进行多模态分类。最终,我们将全连接层添加到模型中,并使用softmax激活函数进行分类。我们还定义了一些回调函数来在训练期间保存最佳模型和尽早停止训练以避免过度拟合。 请注意,这只是一个可能的实现,具体实现细节可能因数据集和任务而异。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值