' A' _ F8 X( o3 H 我们经常会用到一些开源数据集或第三方标注的数据,需要根据实际需求对其进行格式转换(如VOC格式转化为DOTA格式,或DOTA格式转化为ESRI Shapefile格式等)和可视化操作,以便进行标注风格和标注质量检查以及进一步的更新修改。
# k. a7 H4 ]4 t6 }$ t* L/ L 新发布的GeoLabel1.2.9版本(2021年11月14日发布),新增了各种标注格式的转换功能,该功能结合“导入”功能使用,可实现各种格式样本的统一处理。
; C/ b( [& v$ H4 Q% Z' O' ^ 1 总体说明/ w4 W# K( n7 ^
在界面中完成转换参数设置,即可开始自动化转换。当前提供三种转换: : Y! k# X- e4 Y+ |9 W) b
1) 矢量到栅格的转换
0 R% B8 t( c- k, p3 x. T 2) 矢量到文本(xml、txt)的转换
0 P g, Q- S& L/ K6 f4 x! w 3) 文本(xml、txt)到矢量的转换 6 V) r0 o# [* p; ], m% P
各种数据标注在转换过程中没有精度损失,各种格式完全等价。
# p+ G0 K# W3 l6 W
# H1 c! D- L- B# w 新增功能在软件中的位置 8 i% Q8 s/ V, P) r, o) ]# l2 F
2 \0 c6 w; N7 @9 `0 a
0 V& @; p& d% t- U, C: k 格式转换配置界面 - [# A6 ~! W1 z* `3 d8 @
: A0 s7 I# p' J
2 当前支持的转换类型
8 m$ s6 K3 ]' ]; C$ J2 h8 `% [ b 1)Shapefile转栅格
- B/ b! B1 L( G ?1 p9 b& v Shapefile转栅格是GeoLabel分割、变化检测、目标检测流程均提供的功能,但如果Shapefile格式的样本不是基于GeoLabel制作完成的或者工程文件已不存在,就需要用本功能完成相应的转换操作。
: t" X8 z! A' C- a& |# G5 w$ s 2)Shapefile转文本 ! W# C4 y5 l, Z' Q$ Y' D! z. B
当前已集成Shapefile转VOC、Shapefile转glVOC和Shapefile转DOTA三种转换类型。其中VOC和glVOC为xml格式,DOTA为txt格式。
; |/ a7 D5 f% U5 T4 ]5 m3 m 3)文本转shapefile a) f% I4 t; f& l
当前已集成VOC转shpefile、glVOC转shapefile和DOTA转shapefile三种转换类型。
( C" j2 b+ J9 q: W% f; `1 f2 D 3 与导入功能的配合使用0 k# ^ _0 C" Q! Y3 u
3.1 原始标注为Shapefile格式 \. V2 [! \0 O1 i; _* E& L
如果我们是将空的样本分发给不同的人进行众包标注,那整体处理流程可以描述为: 5 D) n! E* I& Q
1)空样本生成
7 d/ |. g' I5 |" t3 s# l 在GeoLabel中通过选点等操作完成空样本的生成,并分成多份。 ) Q; }# e+ v$ k' h4 l
2)分头标注
8 s. l/ f" S6 f1 q! p- d1 [5 Y 每个标注人员领取相应的空样本进行标注,标注人员可以使用任何工具进行标注,如ArcGIS。当然,希望标注人员也使用GeoLabel进行标注,只需在“工程-导入”菜单中导入领取到的样本,即可使用GeoLabel提供的便捷标注功能进行快速标注。 E2 O$ b& b/ M; K9 M$ l$ I% b i/ y$ H
3)检查和修改
- L& A" [4 H5 n) Y" o- k 当标注人员完成相应标注任务并提交后,汇总人员可以在GeoLabel中通过“工程-导入”菜单导入标注完成的样本,快速逐个查看样本标注质量,在此可以对标注质量进行评价,也可直接进行修改。 # B- R3 `6 ^% }" ?: T& i
4)格式转换
* e) k6 O- \ W2 G$ \; b 当检查确认所有样本均满足要求后,即可通过相应的格式转换功能完成相应格式的样本生成,包括;转换为VOC格式、转换为glVOC格式(支持旋转框)、DOTA格式、栅格格式等。 ' q# ]! H- A$ n8 A6 N- C2 p
3.2 原始标注为文本(txt、xml)格式
0 C! m8 @3 Z8 b5 y" b& q 如果我们拿到的标注文件格式为文本格式,主要有txt、xml、json等(json当前还没提供支持,可根据需求添加),目标检测类的数据集基本上是这类格式。这类格式的问题主要是没有通用的工具能把这种格式的样本方便地可视化出来,更不用说编辑了。 7 g# t W+ m8 S1 l: Y
对于这种情形,典型处理流程如下: . y, i0 |% U7 [# e# Z; }
1)文本转矢量 5 m3 w) v2 U2 P `# v
GeoLabel采用Shapefile矢量格式数据作为中间格式,基于矢量格式进行可视化和修改,故首先将文本格式转换为矢量格式。
* b8 W: m/ X3 i2 d) J 2)可视化和检查修改 9 p9 ?' C8 X/ t0 B
通过“工程-导入”功能导入矢量格式样本进行可视化检查,对不符合当前样本要求的可以进行修改更新。 4 e: ~" s. U `6 U7 Q4 t! ?; D
3)矢量转文本
/ f2 A( ]4 b6 v/ K+ \$ L 由于最终需要的还是文本格式的样本,故需要将矢量格式转回文本格式。前面已经说过,GeoLabel中所有格式转换是等价的,即从文本格式转换为矢量格式再到矢量格式转换为文本格式,主体信息是没有变化的,特别是标注位置是没有产生任何偏移的。
- y- F" \$ \5 \ 4 舰船检测数据集示例$ K: z' c, B, A/ d: Y9 ]; J
以SSDD舰船检测数据集为例,SSDD数据集包括两个文件夹,一个存放jpg格式的图像块,一个存放xml格式的标注,如下图所示:
0 ] m0 h- }# m7 r! s$ `, O/ x % z: n/ P3 m z% F
SSDD数据集原始样式
2 r; F% P K) N2 t h. t$ U
( S( K, R$ `/ S5 i0 A 4.1 VOC格式转换为矢量格式并可视化 ) T& W* [7 \7 r6 ~5 B l
/ R0 I, F) x1 f/ y
SSDD数据集可视化
9 @0 o0 x) T- T! ^) i4 \! C' u1 F 4 }/ N( m' D+ N, x4 @0 e
4.2 矢量转VOC 5 A- _. v9 O9 s" J
转换后的格式与原始xml格式的基本信息完全相同,去除了一些非关键信息(如果需要,可以修改并保留)。 原始格式<annotation verified="no">6 h- a# L7 |! h9 i5 b8 I% d% u
<filename>000006_voc</filename>
1 B9 h1 S! j8 c" o/ _9 L8 ~$ {! A <size>& E# ?( ]6 P9 v" |: N, E' v% n
<width>501</width>
' R3 }. ?) Z0 k* B8 V. M" y. E- i <height>357</height>& n/ q, ~3 D. R- ?
<depth>3</depth>
# P$ W9 A, X) C) P- o8 J* ] </size>
" u. j( z# T& |: n <object>
0 e, L, X! Q, p2 S <id>ship</id>
1 Q; z8 L7 r, W# k- w <name>ship</name>
2 \. H! T1 l0 c3 w# S) K" K; Z, y. ] <bndbox>& X( x) `/ K- P4 j4 Q: N, {* r+ m
<xmin>101</xmin>
5 x+ D/ E7 [ E0 A6 ^ <ymin>136</ymin>5 j: x; f1 h1 G: }: K3 e' c# @
<xmax>181</xmax>" y: I u! d& f# L" R! G$ O5 N2 J
<ymax>185</ymax>
+ X7 V; a+ ?: Q/ O </bndbox>, H/ \1 x4 ^" D" u. v/ ^: a
</object>
3 X8 D" T; h. ^ S+ x7 K3 C <object>+ W6 R# Q/ q3 s6 d4 Z* L
<id>ship</id>
' D4 w" ~9 S! b) @) p( X$ ?; L <name>ship</name>
# K: U; M4 M" w- w) u1 K <bndbox>1 X4 X# J7 S9 s5 U+ L- T* b
<xmin>343</xmin>
# c: K- L9 j+ F <ymin>153</ymin>; N, i; Y' K# I3 \" u; Y& F; e- J7 T' Y
<xmax>396</xmax>3 w5 ^' ~1 x% M" |$ R; E7 Q5 x* B- y- C
<ymax>180</ymax>3 X, z# z+ ?1 _ C/ |
</bndbox>
3 D6 J0 [2 a( K </object>- `; h8 ^ I: D- F, F
<object>& W" | o; ]2 ~% O' j) p2 T2 D: f
<id>ship</id>8 ~6 a+ c/ z) [; R3 M, q8 X
<name>ship</name>$ L' S5 K$ j4 @7 x
<bndbox>
) h) T! O( I0 I- f# E( h4 D" e! s <xmin>266</xmin>
q' l N( Y/ _ e' b" o/ V <ymin>242</ymin>
0 }4 ]) G6 b' x. l( ~/ B <xmax>279</xmax>" Q# r& C$ z, Y) N* Y: r( i
<ymax>302</ymax>8 Q$ V; y" S, `; Y
</bndbox>5 p/ g+ j. n5 }! `; Z) f+ o: n
</object>
$ M4 g, M3 g9 N y6 r </annotation>转换后的格式<annotation verified="no">
; t( Q7 P5 k3 } <filename>000001_voc</filename>9 X: V7 S m, \
<size>
9 C5 _8 g: F2 V4 s* k <width>416</width>8 t* [& ]+ P" E/ }+ U) H
<height>323</height>& h- j# y, W; q' ]: l
<depth>3</depth>
. V' G: f7 g4 F7 \( ~9 m. d </size>
* W% u8 x0 S* T* \) V/ L$ Y6 v <object>
/ R$ G& I/ T1 V3 o9 A <id>ship</id>
: c1 y& ~; z' q. g& ? <name>ship</name>
: G4 A( @+ r3 S% q2 O9 D <bndbox>
0 n; Q% ]" e$ q6 @! @9 @ <xmin>208</xmin>
$ r7 }5 w. E* i) G+ L& l <ymin>50</ymin>
) a4 n, _7 k( P/ J& T R+ ] a4 R) \ <xmax>273</xmax>' n$ B1 t+ b' L" g% h5 w W
<ymax>151</ymax>
" e4 k/ @6 ]# ?7 O" ] </bndbox>4 V+ o( O4 v% r9 U1 N
</object>9 M. C- y3 e% O8 }; t. i
</annotation>( m1 p- s7 O% b X) S
4.3 转换为其他格式
5 R+ Z! p- W5 q4 v2 K 除了转换回原始格式,还可以shapefile格式为中间格式,转换为其他的格式,包括: 转换为glvoc格式<annotation verified="no"> s$ u5 |8 y0 {: i
<filename>000006_glvoc</filename>" G: O0 `! B4 b; }3 k
<size> N+ R/ Y+ W7 |: Q! c
<width>501</width>
" d9 D( K0 V& n2 n' J <height>357</height>
( c1 X- E4 X5 p: X+ R <depth>3</depth>
; j" t$ N& I* d6 M6 |; Z </size>7 p% z: _ O3 c- B
<object>
1 N2 `. W( {( V( F; h$ T <id>ship</id>; X1 L0 w& v$ A* K2 l" f
<name>ship</name>
& R' {- T5 c, c5 \ ]' S$ } <bndbox point_number="4">
' P, A4 {+ W2 Q! H7 f) x* n <point>101,136</point>, w3 K, K- @2 j! B
<point>181,136</point>
/ _* N. F$ I _+ J) X9 B <point>181,185</point>1 P0 v# ?3 M4 i- m- B9 T! _) L- d
<point>101,185</point>( m7 [% o* ~1 |* {6 j
</bndbox>
' P C% c' \; `4 D3 n$ e! c9 s B; I </object>
) H8 O5 G2 l J7 N. X: x <object>
& S. Y) k8 n R+ E% N) p* p <id>ship</id>
9 a' ?- T+ J+ s <name>ship</name>" A; y3 j: s" J, b1 \/ y/ m
<bndbox point_number="4">: s( F9 X/ ^1 S" k" [ U
<point>343,153</point>
. g8 C2 N+ V+ z7 J e& ]0 V8 ]/ c <point>396,153</point>
* b* c3 X7 G: F3 r# v <point>396,180</point>, } M) G8 _8 U& o7 i, ~" b9 \1 E3 P, `/ P
<point>343,180</point>
: k7 K0 k5 }: a9 P. [" e# T- R! a; X </bndbox>3 x8 x. O1 T4 E1 f# N8 z
</object>' J8 g: i$ I" C% K- R1 C8 l
<object>, q5 G6 C2 F$ k+ Z0 m# }
<id>ship</id>
; w0 w% b3 ?; n3 J6 E: c; z <name>ship</name>
( l% l, i" J) \, `' l <bndbox point_number="4">2 u2 Z. |, A2 B o8 s1 Q
<point>266,242</point>+ H- j, z$ j! ^* K
<point>279,242</point>
. r- }% C! O8 [) K8 \$ t <point>279,302</point>
: ~1 e- {3 h# W <point>266,302</point>: ^, m0 j3 y, u# g# Y7 b
</bndbox>( o2 E5 l& R9 F/ `
</object>
, K) \; Z) \; f2 l" v; w) P </annotation>转换为dota格式imagesource:unknown
4 M" A0 `! ^6 i: W gsd:1
1 A6 [2 R5 f4 i" d5 ~+ x 101 136 181 136 181 185 101 185 ship 0 ship
7 Y/ ?8 e1 P0 Y4 ~ 343 153 396 153 396 180 343 180 ship 0 ship
0 M) }) ~2 Q( N4 K: T 266 242 279 242 279 302 266 302 ship 0 ship转换为栅格格式5 k! f" f" V* a( d3 h% K4 i
, V# T% ]1 `1 {, F+ C1 g, S0 ~ 舰船目标栅格化 # v {4 Q/ E" b7 ^
( Y) F# D, y+ S( { 5 1.2.9版本更新的其他主要内容
0 g* ~9 q3 _8 i) x0 r% L* { 1) 支持创建没有坐标参考的Shapefile矢量文件,匹配没有坐标参考的通用影像。与历史版本中对无坐标影像的支持进行整合,GeoLabel已完整具备通用图像(不仅是遥感影像)的标注功能。 ' _/ z) [8 c( l- M
2) 对批量样本生成功能中添加“基于没有坐标参考的影像和标注的样本批量生成”。
% y9 l* F3 r8 @2 c: `9 f. B 3) GeoLabel1.2.8版本生成的voc、glvoc、dota格式有半个像素的误差,已修复。 + U6 u- R9 I/ ]# o3 D3 z! p) b; g) o
6 其他
; P( s, h5 G7 X, `& x4 m: B 关注可获得软件下载地址、全套视频教程和最新的软件更新推送。 . x/ ~. w1 I5 W5 e- S: K6 K/ s2 v2 ?
7 n! E" d% j- G4 l, U
# B2 o' Z" C+ l+ v1 u3 z
. ^$ ~, z& c$ Y' S+ x% L0 O
3 p4 R+ ^- _% x6 T% s0 ~/ d1 B |