source activate python3 git clone https://github.com/paddygoat/darknet cd darknet make conda install -c anaconda opencv yolov3.cfg (236 MB COCO Yolo v3) - requires 4 GB GPU-RAM: https://pjreddie.com/media/files/yolov3.weights To train on Linux: $ ./darknet detector train data/obj.data yolo-obj.cfg darknet53.conv.74 wget -P /home/ubuntu/darknet/build/x64 https://pjreddie.com/media/files/darknet53.conv.74 cd darknet/build/x64 ./darknet detector train data/obj.data yolo-obj.cfg darknet53.conv.74 ubuntu@ip-172-31-25-87:~/darknet$ ./darknet detector train data/obj.data yolo-obj.cfg darknet53.conv.74 yolo-obj Couldn't open file: yolo-obj.cfg ubuntu@ip-172-31-25-87:~/darknet$ ./darknet detector train data/obj.data cfg/yolo-obj.cfg darknet53.conv.74 Loading weights from darknet53.conv.74...Couldn't open file: darknet53.conv.74 wget -P /home/ubuntu/darknet https://pjreddie.com/media/files/darknet53.conv.74 cd darknet ./darknet detector train data/obj.data cfg/yolo-obj.cfg darknet53.conv.74 Total BFLOPS 65.290 Allocate additional workspace_size = 200.40 MB Loading weights from darknet53.conv.74... seen 64 Done! Learning Rate: 0.001, Momentum: 0.9, Decay: 0.0005 If error occurs - run training with flag: -dont_show (average loss:1907): Gtk-WARNING **: cannot open display: (python3) ubuntu@ip-172-31-25-87:~/darknet$ to see the mAP & Loss-chart during training on remote server without GUI, use command: ./darknet detector train data/obj.data cfg/yolo-obj.cfg darknet53.conv.74 ./darknet detector train data/obj.data cfg/yolo-obj.cfg darknet53.conv.74 -dont_show -mjpeg_port 8090 -map then open URL http://54.190.27.97:8090 in Chrome/Firefox browser) source activate python3 cd darknet ./darknet detector train data/obj.data cfg/yolo-obj.cfg darknet53.conv.74 -dont_show ./darknet detector train data/obj.data cfg/yolo-obj.cfg darknet53.conv.74 -dont_show -mjpeg_port 8090 -map Can't open label file. (This can be normal only if you use MSCOCO): data/obj/AB00001.txt Wrong annotation: class_id = 2. But class_id should be [from 0 to 0] Only for small datasets sometimes better to decrease learning rate, for 4 GPUs set learning_rate = 0.00025 (i.e. learning_rate = 0.001 / GPUs). In this case also increase 4x times burn_in = and max_batches = in your cfg-file. I.e. use burn_in = 4000 instead of 1000. 8.1. For training with mAP (mean average precisions) calculation for each 4 Epochs (set valid=valid.txt or train.txt in obj.data file ???? test = test.txt ??? Note: If you changed width= or height= in your cfg-file, then new width and height must be divisible by 32. wget -P /home/ubuntu/darknet/data https://github.com/paddygoat/darknet/blob/master/data/obj.data wget -P /home/ubuntu/darknet/data https://github.com/paddygoat/darknet/blob/master/data/test.txt wget -P /home/ubuntu/darknet/data/cfg https://github.com/paddygoat/darknet/blob/master/cfg/yolo-obj.cfg ./darknet detector train data/obj.data cfg/yolo-obj.cfg darknet53.conv.74 -dont_show -gpus 0,1,2,3 AWS p3.2xlarge only has one Tesla V100 GPU !!!!!! ./darknet detector train data/obj.data cfg/yolo-obj.cfg darknet53.conv.74 -dont_show -mjpeg_port 8090 -map http://54.245.40.222:8090 Region 94 Avg IOU: -nan, Class: -nan, Obj: -nan, No Obj: 0.355157, .5R: -nan, .75R: -nan, count: 0 Region 106 Avg IOU: -nan, Class: -nan, Obj: -nan, No Obj: 0.242947, .5R: -nan, .75R: -nan, count: 0 Region 82 Avg IOU: 0.409650, Class: 0.478970, Obj: 0.430828, No Obj: 0.384286, .5R: 0.250000, .75R: 0.000000, count: 8 use $ nvidia-smi to check GPUs $ watch -n0.1 nvidia-smi delete old jpgs and txts in darknet/data/obj wget -P /home/ubuntu/darknet/data https://github.com/paddygoat/darknet/blob/master/build/darknet/x64/data/obj.data wget -P /home/ubuntu/darknet/data https://github.com/paddygoat/darknet/blob/master/build/darknet/x64/data/obj.names wget -P /home/ubuntu/darknet/data https://github.com/paddygoat/darknet/blob/master/build/darknet/x64/data/train.txt wget -P /home/ubuntu/darknet/data https://github.com/paddygoat/darknet/blob/master/build/darknet/x64/data/valid.txt wget -P /home/ubuntu/darknet/data https://github.com/paddygoat/darknet/blob/master/build/darknet/x64/data/test.txt https://www.kaggle.com/tegwyntwmffat/slug-detect/downloads/slug_images_and_txt_files_01.tar.gz cd darknet/data/obj tar -xvzf slug_images_and_txt_files_01.tar.gz ./darknet detector train data/obj.data cfg/yolo-obj.cfg darknet53.conv.74 -dont_show -mjpeg_port 8090 -map Tensor Cores are disabled until the first 3000 iterations are reached. (next mAP calculation at 1000 iterations) 149: 52.033905, 95.407059 avg loss, 0.000000 rate, 4.756684 seconds, 9536 images MJPEG-stream sent. Loaded: 0.000027 seconds Region 82 Avg IOU: 0.423813, Class: 0.523438, Obj: 0.195280, No Obj: 0.209835, .5R: 0.333333, .75R: 0.111111, count: 9 Region 94 Avg IOU: -nan, Class: -nan, Obj: -nan, No Obj: 0.103330, .5R: -nan, .75R: -nan, count: 0 Region 106 Avg IOU: -nan, Class: -nan, Obj: -nan, No Obj: 0.044443, .5R: -nan, .75R: -nan, count: 0 Region 82 Avg IOU: 0.438981, Class: 0.656168, Obj: 0.202069, No Obj: 0.208572, .5R: 0.375000, .75R: 0.000000, count: 8 darknet/backup/yolo-obj_last.weights darknet/backup/yolo-obj_1000.weights http://54.245.40.222:8090 ./darknet detector train data/obj.data cfg/yolo-obj.cfg backup/yolo-obj_1000.weights -dont_show -mjpeg_port 8090 -map //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// source activate python3 conda install -c conda-forge tensorflow git clone https://github.com/mystic123/tensorflow-yolo-v3.git cd tensorflow-yolo-v3 git checkout ed60b90 source activate python3 cd tensorflow-yolo-v3 git checkout ed60b90 python3 convert_weights.py --class_names /home/ubuntu/darknet/data/coco.names.txt --size 416 --data_format NHWC --weights_file /home/ubuntu/darknet/backup/yolo-obj_1000.weights --output_graph /home/ubuntu/darknet/backup ......... Seemed to do something useful !!!! python3 convert_weights_pb.py --class_names /home/ubuntu/darknet/data/coco.names.txt --size 416 --data_format NHWC --weights_file /home/ubuntu/darknet/backup/yolo-obj_1000.weights .................. WORKED! RESULTS: (python3) ubuntu@ip-172-31-25-87:~/tensorflow-yolo-v3$ python3 convert_weights.py --class_names /home/ubuntu/darknet/data/coco.names.txt --size 416 --data_format NHWC --weights_file /home/ubuntu/darknet/backup/yolo-obj_1000.weights --output_graph /home/ubuntu/darknet/backup 2019-03-11 10:41:59.937583: I tensorflow/core/platform/cpu_feature_guard.cc:141] Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2 FMA Model saved in path: ./saved_model/model.ckpt (python3) ubuntu@ip-172-31-25-87:~/tensorflow-yolo-v3$ RESULTS: (python3) ubuntu@ip-172-31-25-87:~/tensorflow-yolo-v3$ python3 convert_weights_pb.py --class_names /home/ubuntu/darknet/data/coco.names.txt --size 416 --data_format NHWC --weights_file /home/ubuntu/darknet/backup/yolo-obj_1000.weights 2019-03-11 10:47:47.185367: I tensorflow/core/platform/cpu_feature_guard.cc:141] Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2 FMA 1330 ops written to frozen_darknet_yolov3_model.pb. (python3) ubuntu@ip-172-31-25-87:~/tensorflow-yolo-v3$ coco.names.txt must contain 'person' only for one class. frozen model was found in /home/ubuntu/tensorflow-yolo-v3/ (.pb file) ////////////////////////////////////////////////////////////////////////////////////////////////// 0. source activate python3 1. Upload new yolo-obj.cfg file to 'cfg' directory 2. delete 'obj' folder in darknet/data/ 3. Upload slug_images_and_txt_files_02.tar.gz to darknet/data/ 4. cd darknet/data/ 5. tar -xvzf slug_images_and_txt_files_02.tar.gz ...... This will extract image and txt files to a new 'obj' folder 6. delete darknet/backup/yolo-obj_1000.weights 7. cd && cd darknet/ 8. ./darknet detector train data/obj.data cfg/yolo-obj.cfg backup/yolo-obj_1000.weights -dont_show -mjpeg_port 8090 -map ..... or....... ./darknet detector train data/obj.data cfg/yolo-obj.cfg -dont_show -mjpeg_port 8090 -map ...... or ........ ./darknet detector train data/obj.data cfg/yolo-obj.cfg backup/yolo-obj_last.weights -dont_show -mjpeg_port 8090 -map http://34.215.134.36:8090 ...... open in chrome only. 9. cd tensorflow-yolo-v3 10. python3 convert_weights.py --class_names /home/ubuntu/darknet/data/coco.names.txt --size 416 --data_format NHWC --weights_file /home/ubuntu/darknet/backup/yolo-obj_11000.weights --output_graph /home/ubuntu/darknet/backup ......... Seemed to do something useful !!!! 11. python3 convert_weights_pb.py --class_names /home/ubuntu/darknet/data/coco.names.txt --size 416 --data_format NHWC --weights_file /home/ubuntu/darknet/backup/yolo-obj_11000.weights 12. delete tensorflow-yolo-v3/frozen_darknet_yolov3_model.pb 13.cd && cd /opt/intel/computer_vision_sdk_2018.5.455/deployment_tools/model_optimizer/extensions/front/tf/ 14.sudo chmod 777 yolo_v3.json 15.ls -l yolo_v3.json 16. Edit yolo_v3.json accordingly. 17. cd && cd /opt/intel/computer_vision_sdk_2018.5.455/deployment_tools/model_optimizer/ 18. python3 mo_tf.py --input_model /home/ubuntu/tensorflow-yolo-v3/frozen_darknet_yolov3_model.pb --tensorflow_use_custom_operations_config /opt/intel/computer_vision_sdk_2018.5.455/deployment_tools/model_optimizer/extensions/front/tf/yolo_v3.json --input_shape=[1,416,416,3] --data_type=FP16 19. saved bin and xml at /opt/intel/computer_vision_sdk_2018.5.455/deployment_tools/model_optimizer/ 20. cd && cd darknet/ && ./darknet detector test data/obj.data cfg/yolo-obj.cfg /home/ubuntu/darknet/backup/yolo-obj_11000.weights /home/ubuntu/darknet/data/obj/AA00502.jpg /home/ubuntu/darknet/data/obj/AA00501.jpg /home/ubuntu/darknet/data/obj/AA00500.jpg /home/ubuntu/darknet/data/obj/AA00499.jpg /home/ubuntu/darknet/data/obj/AA00498.jpg /home/ubuntu/darknet/data/obj/AA00497.jpg /home/ubuntu/darknet/data/obj/AA00001.jpg /home/ubuntu/darknet/data/obj/AA00307.jpg /home/ubuntu/darknet/data/obj/AA00207.jpg /home/ubuntu/darknet/data/obj/AA00107.jpg /home/ubuntu/darknet/data/obj/AA00007.jpg /home/ubuntu/darknet/data/obj/AB00497.jpg /home/ubuntu/darknet/data/obj/AB00001.jpg /home/ubuntu/darknet/data/obj/AB00307.jpg /home/ubuntu/darknet/data/obj/AB00207.jpg /home/ubuntu/darknet/data/obj/AB00107.jpg /home/ubuntu/darknet/data/obj/AB00007.jpg /home/ubuntu/darknet/Test/test001.jpg /home/ubuntu/darknet/Test/test002.jpg /home/ubuntu/darknet/Test/test003.jpg Loading weights from /home/ubuntu/darknet/backup/yolo-obj_11000.weights... seen 64 Done! Enter Image Path: /home/ubuntu/darknet/Test/test002.jpg /home/ubuntu/darknet/Test/test002.jpg: Predicted in 37.062000 milli-seconds. person: 61% (predictions:2080): Gtk-WARNING **: cannot open display: (python3) ubuntu@ip-172-31-25-87:~/darknet$