如何在CVAT中裁剪标注区域并将VGG16提取的特征导出为CSV文件
CVAT标注区域裁剪与特征导出CSV解决方案
1. CVAT中批量裁剪多边形标注区域
不用手动逐张裁剪,优先用导出标注+脚本批量处理的方案,效率更高:
- 第一步导出标注:在CVAT任务页点击「导出数据集」,格式选择
COCO 1.0,勾选「保存图像」后导出,解压后可以得到所有原图和包含多边形标注信息的annotations/instances_default.json文件。 - 第二步批量抠图:用Python或MATLAB读入标注文件,取每个标注条目里的
segmentation多边形坐标,生成对应mask后和原图做与运算,就能把标注区域抠出来,非标注区域统一填充为黑色即可,抠出的区域无需保存到本地,直接送入特征提取流程即可。 - 如果你只有少量标注需要裁剪,可以直接在CVAT标注界面右键点击对应标注,选择「裁剪标注」直接导出单张裁剪图。
2. 提取VGG16特征并导出Weka兼容的CSV文件
你原有的MATLAB特征提取代码稍作修改就能直接输出符合要求的CSV,Weka要求CSV首行为特征名+类别标签名,每一行对应一个标注样本的所有特征值和对应类别:
% 加载预训练VGG16模型 net = vgg16; % 这里假设你已经批量读取了所有抠出的标注区域,存在cropImgs cell数组中,对应类别标签存在labels数组中 sample_num = length(cropImgs); % VGG16的pool5层输出拉平后是7*7*512=25088维 feature_dim = 25088; feature_matrix = zeros(sample_num, feature_dim + 1); for i = 1:sample_num % 统一缩放为VGG16要求的224*224输入尺寸 img_resized = imresize(cropImgs{i}, [224 224]); % 提取pool5层特征 feat_map = activations(net, img_resized, 'pool5'); % 特征拉平为一维向量 feature_matrix(i, 1:end-1) = feat_map(:)'; % 最后一列存类别标签 feature_matrix(i, end) = labels(i); end % 生成CSV列名,前25088列为特征名,最后一列为类别列 col_names = [cellstr("f" + 1:feature_dim), {"class"}]; % 转成table后导出CSV feat_table = array2table(feature_matrix, 'VariableNames', col_names); writetable(feat_table, 'animal_feature_dataset.csv');
导出的CSV可以直接导入Weka平台,用于决策树、SVM、RCNN等算法的训练。
内容的提问来源于stack exchange,提问作者Naser.Sadeghi
相关产品推荐
相关产品推荐

