darknet之VSCode單步調試

1. How

  • 參考這篇博客
  • launch.json內容如下
    • {
      // Use IntelliSense to learn about possible attributes.
      // Hover to view descriptions of existing attributes.
      // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
      "version": "0.2.0",
      "configurations": [
          {
              "name": "region",
              "type": "cppdbg",
              "request": "launch",
              "program": "${workspaceFolder}/darknet",
              "args": ["detector", "train", "${workspaceFolder}/data/candle.data", "${workspaceFolder}/cfg/candle11-tr.cfg", "${workspaceFolder}/yolov2-tiny.conv.11"],
              "stopAtEntry": false,
              "cwd": "${workspaceFolder}",
              "environment": [],
              "externalConsole": false,
              "MIMode": "gdb",
              "preLaunchTask": "make",
              "setupCommands": [
                  {
                      "description": "Enable pretty-printing for gdb",
                      "text": "-enable-pretty-printing",
                      "ignoreFailures": true
                  }
              ]
          }
      ]}
      
  • 修改Makefile,在CFLAGS最後加-g

2. 訓練流程

  • darknet.c調用detector.c的run_detector
  • run_detector調用train_detector
  • train_detector調用parser.c的parse_network_cfg,實際調用parse_network_cfg_custom
    • parse_network_cfg_custom調用解析網絡層的函數,以region層爲例,調用parse_region
    • parse_region調用region_layer.c的make_region_layer,並設置anchor
  • train_detector調用data.c的load_data
  • train_detector調用network.c的train_network_waitkey(只用1個GPU時)
    • train_network_waitkey調用train_network_datum
    • train_network_datum調用forward_network和backward_network
  • train_detector調用validate_detector_map(需要的時候)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章