예제 ([TensorFlow] Slim을 써보자 - 예제) 를 돌려 봤으니 이제 내가 필요한 데이터를 이용하여 학습을 해 보자
어느정도 사용하다 보면 자기만의 코드가 만들어 지겠지만 지금은 slim을 처음 이용하는 단계이니
주어진 예제를 기반으로 수정하여 사용 해 보자.
dataset을 만드는데 관련된 코드는 (slim path)/datasets 에 있다.
=======================================================
1. image 분류 및 정리
학습에 사용하고자 하는 이미지를 class 별로 정리하기
root folder의 이름은 (class name)_photos 로 설정하고 하위 각 폴더의 이름이 class의 label이 된다.
custom_photos (root forder)
- forder1 (class1)
image101.jpg
image102.jpg
...
- fordel2 (class2)
image201.jpg
image202.jpg
...
...
- fordelN (classN)
imageN01.jpg
imageN02.jpg
즉, 위와 같은 구조로 데이터를 정리 하면 된다.
본 예시에서는 데이터셋 이름은 custom / 각 class 별로 100장 / 총 9개 class 가 있다고 가정
2. datasets 폴더에 custom DB를 위한 파일 복사
download_and_convert_flowers.py 파일과 flowers.py 파일의 복사본을 만들고
flowers 대신 사용하고자 하는 DB이름으로 수정
download_and_convert_flowers.py --> download_and_convert_custom.py
flowers.py --> custom.py
3. custom.py 파일 수정
일단 기본 예제인 만큼 각 class에 대한 영상이 고르게 분포되어 있다고 가정된것인가.. 여긴 코드확인필요
파라미터를 퍼센트로 주는 것이 아니라 영상 장수로 선언하게 되어있다.
추후 코드 확인 후 수정할 것.
$ _FILE_PATTERN = 'custom_%s_*.tfrecord'
$ SPLITS_TO_SIZES = {'train': 810, 'validation': 90} # 전체의 10%를 validation set으로 이용
$ _NUM_CLASSES = 9 # 총 class 개수
4. download_and_convert_custom.py 파일 수정
$ # The number of images in the validation set.
$ _NUM_VALIDATION = 90 # 3번에서 설정한 수와 동일하게 설정
$ # The number of shards per dataset split.
$ _NUM_SHARDS = 1 # 만들어진 tfrecord 파일을 몇개로 나눌건지에 대한 설정.
# 다른 함수나 파라미터에 있는 이름도 원하는 이름으로 수정
$ def _get_dataset_filename(dataset_dir, split_name, shard_id):
$ output_filename = 'custom_%s_%05d-of-%05d.tfrecord' % (
$ split_name, shard_id, _NUM_SHARDS)
$ return os.path.join(dataset_dir, output_filename)
$ custom_root = os.path.join(dataset_dir, 'custom_photos')
$ directories = []
$ class_names = []
$ for filename in os.listdir(custom_root):
$ path = os.path.join(custom_root, filename)
$ if os.path.isdir(path):
$ directories.append(path)
$ class_names.append(filename)
5. dataset_factory.py 파일에 custom set 추가
$ from datasets import custom
$ datasets_map = {
$ 'cifar10': cifar10,
$ 'flowers': flowers,
$ 'imagenet': imagenet,
$ 'mnist': mnist,
$ 'custom': custom,
$ }
6. download_and_convert_data.py 파일 수정
download_and_convert_data.py 파일에서 custom 파일에 연결하기 위한 코드 추가.
$ from datasets import download_and_convert_custom
$ elif FLAGS.dataset_name == 'custom':
download_and_convert_custom.run(FLAGS.dataset_dir)
7. download_and_convert_data.py 파일 이용하여 custom dataset 만들기
$ python download_and_convert_data.py \
--dataset_name=custom \
--dataset_dir=./datasets/custom
'전공관련 > Deep Learning' 카테고리의 다른 글
[TensorFlow] Slim을 써보자 - custom preprocessing을 설정하자 (0) | 2017.12.06 |
---|---|
[TensorFlow] Slim을 써보자 - custom architecture를 만들자 (0) | 2017.12.06 |
[TensorFlow] Slim을 써보자 - 예제 (0) | 2017.12.06 |
YOLO 를 이용하여 custom detector를 학습하는 방법 (0) | 2017.11.14 |
[Caffe] Faster R-CNN을 학습하던 중 발생한 문제 및 해결 (0) | 2017.03.21 |