Toggle navigation
Toggle navigation
This project
Loading...
Sign in
2020-1-capstone-design1
/
PET_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-06-01 17:35:25 +0900
Browse Files
Options
Browse Files
Download
Email Patches
Plain Diff
Commit
f7a5b7fdd2c6c482ad658b7da5f485627fc50876
f7a5b7fd
1 parent
79377ae6
fixed markdown
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
31 additions
and
1 deletions
ReadMe.md
ReadMe.md
View file @
f7a5b7f
...
...
@@ -13,59 +13,89 @@
-
2015104213 장수창
### 준비 사항
tensorflow-android 라이브러리의 최신 버전이 (2020.06.01 기준) 1.13.1입니다.
따라서 android implementation까지 구현하는 경우에는
상위 버전과 호환이 되도록 라이브러리를 빌드하거나, 학습 혹은 pb 파일 생성 또한 tensorflow v1.13.1 이하로 진행하셔야 합니다.
annotation에는 labelImg 툴을 이용하여 xml을 생성하였습니다.
학습에는 TFrecord 형태로 저장된 파일을 사용합니다.
데이터 하나의 형식은 {data index, image binary, image width, image height, boxes}이며
boxes의 형식은 {label1, xmin, ymin, xmax, ymax, label2, xmin, ...}입니다.
TFRecord 파일 작성은 code/tfrecord_writer.py를 참고하시기 바랍니다.
tfrecord_writer.py에서 입력으로 받는 txt 파일은
각 라인마다 {data index, image path, image width, image height, boxes} 형태로 저장되어 있습니다.
txt 파일 생성은 code/annotation_xml_parser.py를 참고하시기 바랍니다.
이 학습에서는 train/eval/test 데이터셋을 구분하여 사용합니다.
txt 파일에 대한 데이터셋 분리는 code/dataset_splitter.py를 참고하기시 바랍니다.
annotation_xml_parser.py에서 입력으로 받는 xml 파일은
labelImg 툴로 생성된 Pascal VOC format XML 파일을 기준으로 합니다.
학습을 위해서 anchor 파일이 필요합니다.
anchor 파일 생성에는 code/yolov3/get_kmeans.py를 참고하시기 바랍니다.
출력된 anchor를 code/yolov3/args.py의 anchor_path에 맞는 위치에 저장하시면 됩니다.
이 학습에서는 pretrained model을 불러와 fine tuning을 이용합니다.
따라서 pretrained model 파일을 준비해야 합니다.
pretrained model은
[
링크
](
https://pjreddie.com/media/files/yolov3.weights
)
에서 다운로드할 수 있습니다.
이 파일은 darknet weights 파일이므로, tensorflow model로 변환하려면 code/yolov3/convert_weights.py를 참고하시기 바랍니다.
(git에는 이미 변환된 yolov3.ckpt만이 업로드되어 있습니다. 다른 데이터셋 혹은 다른 용도로 학습을 진행하려면 새로 생성하셔야 합니다.)
학습에는 train.py (train/eval dataset)를, 평가에는 eval.py (test dataset)를 사용하시면 됩니다.
학습에 사용하는 파일의 경로 및 hyper parameter 설정은 args.py를 참고하시기 바랍니다.
평가에 대한 경로 설정은 eval.py에서 할 수 있습니다.
data/trained에 임시 테스트용 trained model 파일이 업로드되어 있습니다.
android implementation을 하는 경우에는 학습된 모델에 대한 pb 파일을 생성해야 합니다.
code/pb/pbCreator.py를 참고하시기 바랍니다. (code/yolov3/test_single_image.py를 약간 수정한 파일입니다)
android에서는 freeze된 model만 사용할 수 있습니다.
code/pb/freeze_pb.py를 참고하시기 바랍니다.
android_App/assets에 pb file을 저장한 후, DetectorActivity.java에서 YOLO_MODEL_FILE의 값을 알맞게 수정하시면 됩니다.
이 학습 코드로 생성된 모델의 input, output node name은
각각 input_data, {yolov3/yolov3_head/feature_map_1,yolov3/yolov3_head/feature_map_2,yolov3/yolov3_head/feature_map_3} 입니다.
모델의 node name 참고에는 Netron 프로그램을 사용하였습니다.
#### Reference
학습 코드는
[
링크
](
https://github.com/wizyoung/YOLOv3_TensorFlow
)
를 기반으로 작셩하였습니다.
변경점은 code/yolov3/changes.txt를 참고하시기 바랍니다.
...
...
Please
register
or
login
to post a comment