From d502dea9a451c290f602ba18bc61f4f79c51be0c Mon Sep 17 00:00:00 2001 From: Alexey <AlexeyAB@users.noreply.github.com> Date: Mon, 04 Jun 2018 10:55:27 +0000 Subject: [PATCH] Update Readme.md --- README.md | 19 ++++++++++++------- 1 files changed, 12 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index 3ca3412..40289e9 100644 --- a/README.md +++ b/README.md @@ -218,7 +218,7 @@ More information about training by the link: http://pjreddie.com/darknet/yolo/#train-voc - **Note:** If during training you see `nan` values in some lines then training goes well, but if `nan` are in all lines then training goes wrong. + **Note:** If during training you see `nan` values for `avg` (loss) field - then training goes wrong, but if `nan` is in some other lines - then training goes well. ## How to train with multi-GPU: @@ -317,15 +317,15 @@ * Also you can get result earlier than all 45000 iterations. - **Note:** If during training you see `nan` values in some lines then training goes well, but if `nan` are in all lines then training goes wrong. + **Note:** If during training you see `nan` values for `avg` (loss) field - then training goes wrong, but if `nan` is in some other lines - then training goes well. ### How to train tiny-yolo (to detect your custom objects): Do all the same steps as for the full yolo model as described above. With the exception of: -* Download default weights file for yolov2-tiny-voc: http://pjreddie.com/media/files/yolov2-tiny-voc.weights -* Get pre-trained weights yolov2-tiny-voc.conv.13 using command: `darknet.exe partial cfg/yolov2-tiny-voc.cfg yolov2-tiny-voc.weights yolov2-tiny-voc.conv.13 13` -* Make your custom model `yolov2-tiny-obj.cfg` based on `cfg/yolov2-tiny-voc.cfg` instead of `yolov3.cfg` -* Start training: `darknet.exe detector train data/obj.data yolov2-tiny-obj.cfg yolov2-tiny-voc.conv.13` +* Download default weights file for yolov3-tiny: https://pjreddie.com/media/files/yolov3-tiny.weights +* Get pre-trained weights `yolov3-tiny.conv.15` using command: `darknet.exe partial cfg/yolov3-tiny.cfg yolov3-tiny.weights yolov3-tiny.conv.15 15` +* Make your custom model `yolov3-tiny-obj.cfg` based on `cfg/yolov3-tiny_obj.cfg` instead of `yolov3.cfg` +* Start training: `darknet.exe detector train data/obj.data yolov3-tiny-obj.cfg yolov3-tiny.conv.15` For training Yolo based on other models ([DenseNet201-Yolo](https://github.com/AlexeyAB/darknet/blob/master/build/darknet/x64/densenet201_yolo.cfg) or [ResNet50-Yolo](https://github.com/AlexeyAB/darknet/blob/master/build/darknet/x64/resnet50_yolo.cfg)), you can download and get pre-trained weights as showed in this file: https://github.com/AlexeyAB/darknet/blob/master/build/darknet/x64/partial.cmd If you made you custom model that isn't based on other models, then you can train it without pre-trained weights, then will be used random initial weights. @@ -349,7 +349,7 @@ 2. Once training is stopped, you should take some of last `.weights`-files from `darknet\build\darknet\x64\backup` and choose the best of them: -For example, you stopped training after 9000 iterations, but the best result can give one of previous weights (7000, 8000, 9000). It can happen due to overfitting. **Overfitting** - is case when you can detect objects on images from training-dataset, but can't detect ojbects on any others images. You should get weights from **Early Stopping Point**: +For example, you stopped training after 9000 iterations, but the best result can give one of previous weights (7000, 8000, 9000). It can happen due to overfitting. **Overfitting** - is case when you can detect objects on images from training-dataset, but can't detect objects on any others images. You should get weights from **Early Stopping Point**:  @@ -421,6 +421,11 @@ * for training with a large number of objects in each image, add the parameter `max=200` or higher value in the last layer [region] in your cfg-file + * General rule - you should keep relative size of objects in the Training and Testing datasets the same: + + * `train_network_width * train_obj_width / train_image_width ~= detection_network_width * detection_obj_width / detection_image_width` + * `train_network_height * train_obj_height / train_image_height ~= detection_network_height * detection_obj_height / detection_image_height` + * to speedup training (with decreasing detection accuracy) do Fine-Tuning instead of Transfer-Learning, set param `stopbackward=1` in one of the penultimate convolutional layers before the 1-st `[yolo]`-layer, for example here: https://github.com/AlexeyAB/darknet/blob/0039fd26786ab5f71d5af725fc18b3f521e7acfd/cfg/yolov3.cfg#L598 2. After training - for detection: -- Gitblit v1.10.0