Toggle navigation
Toggle navigation
This project
Loading...
Sign in
2020-1-capstone-design1
/
Spin_Project1
Go to a project
Toggle navigation
Toggle navigation pinning
Projects
Groups
Snippets
Help
Project
Activity
Repository
Pipelines
Graphs
Issues
0
Merge Requests
0
Wiki
Snippets
Network
Create a new issue
Builds
Commits
Issue Boards
Authored by
이동찬
2020-04-22 21:48:29 +0900
Browse Files
Options
Browse Files
Download
Email Patches
Plain Diff
Commit
8df0bf42cd572e4d18792c8e32ac6f3b86cebc74
8df0bf42
1 parent
b09123e2
add python code for making csv to tfrecord
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
91 additions
and
0 deletions
for_dataset/csv_to_tfrecord.py
for_dataset/csv_to_tfrecord.py
0 → 100644
View file @
8df0bf4
from
__future__
import
division
from
__future__
import
print_function
from
__future__
import
absolute_import
import
os
import
io
import
pandas
as
pd
import
tensorflow
as
tf
from
PIL
import
Image
from
object_detection.utils
import
dataset_util
from
collections
import
namedtuple
,
OrderedDict
flags
=
tf
.
app
.
flags
flags
.
DEFINE_string
(
'csv_input'
,
''
,
'Path to the CSV input'
)
flags
.
DEFINE_string
(
'output_path'
,
''
,
'Path to output TFRecord'
)
flags
.
DEFINE_string
(
'image_dir'
,
''
,
'Path to images'
)
FLAGS
=
flags
.
FLAGS
# TO-DO replace this with label map
def
class_text_to_int
(
row_label
):
if
row_label
==
'fire'
:
return
1
else
:
None
def
split
(
df
,
group
):
data
=
namedtuple
(
'data'
,
[
'filename'
,
'object'
])
gb
=
df
.
groupby
(
group
)
return
[
data
(
filename
,
gb
.
get_group
(
x
))
for
filename
,
x
in
zip
(
gb
.
groups
.
keys
(),
gb
.
groups
)]
def
create_tf_example
(
group
,
path
):
with
tf
.
gfile
.
GFile
(
os
.
path
.
join
(
path
,
'{}'
.
format
(
group
.
filename
)),
'rb'
)
as
fid
:
encoded_jpg
=
fid
.
read
()
encoded_jpg_io
=
io
.
BytesIO
(
encoded_jpg
)
image
=
Image
.
open
(
encoded_jpg_io
)
width
,
height
=
image
.
size
filename
=
group
.
filename
.
encode
(
'utf8'
)
image_format
=
b
'jpg'
xmins
=
[]
xmaxs
=
[]
ymins
=
[]
ymaxs
=
[]
classes_text
=
[]
classes
=
[]
for
index
,
row
in
group
.
object
.
iterrows
():
xmins
.
append
(
row
[
'xmin'
]
/
width
)
xmaxs
.
append
(
row
[
'xmax'
]
/
width
)
ymins
.
append
(
row
[
'ymin'
]
/
height
)
ymaxs
.
append
(
row
[
'ymax'
]
/
height
)
classes_text
.
append
(
row
[
'class'
]
.
encode
(
'utf8'
))
classes
.
append
(
class_text_to_int
(
row
[
'class'
]))
tf_example
=
tf
.
train
.
Example
(
features
=
tf
.
train
.
Features
(
feature
=
{
'image/height'
:
dataset_util
.
int64_feature
(
height
),
'image/width'
:
dataset_util
.
int64_feature
(
width
),
'image/filename'
:
dataset_util
.
bytes_feature
(
filename
),
'image/source_id'
:
dataset_util
.
bytes_feature
(
filename
),
'image/encoded'
:
dataset_util
.
bytes_feature
(
encoded_jpg
),
'image/format'
:
dataset_util
.
bytes_feature
(
image_format
),
'image/object/bbox/xmin'
:
dataset_util
.
float_list_feature
(
xmins
),
'image/object/bbox/xmax'
:
dataset_util
.
float_list_feature
(
xmaxs
),
'image/object/bbox/ymin'
:
dataset_util
.
float_list_feature
(
ymins
),
'image/object/bbox/ymax'
:
dataset_util
.
float_list_feature
(
ymaxs
),
'image/object/class/text'
:
dataset_util
.
bytes_list_feature
(
classes_text
),
'image/object/class/label'
:
dataset_util
.
int64_list_feature
(
classes
),
}))
return
tf_example
def
main
(
_
):
writer
=
tf
.
python_io
.
TFRecordWriter
(
FLAGS
.
output_path
)
path
=
os
.
path
.
join
(
FLAGS
.
image_dir
)
examples
=
pd
.
read_csv
(
FLAGS
.
csv_input
)
grouped
=
split
(
examples
,
'filename'
)
for
group
in
grouped
:
tf_example
=
create_tf_example
(
group
,
path
)
writer
.
write
(
tf_example
.
SerializeToString
())
writer
.
close
()
output_path
=
os
.
path
.
join
(
os
.
getcwd
(),
FLAGS
.
output_path
)
print
(
'Successfully created the TFRecords: {}'
.
format
(
output_path
))
if
__name__
==
'__main__'
:
tf
.
app
.
run
()
\ No newline at end of file
Please
register
or
login
to post a comment