Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

update UI + latest yolov5 sources #15

Merged
merged 32 commits into from
May 7, 2021
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
32 commits
Select commit Hold shift + click to select a range
980a554
merge latest version done, not tested
mkolomeychenko Apr 29, 2021
5aae1c8
split tabs with radio buttons
mkolomeychenko Apr 29, 2021
ee16e3f
models table -wip
mkolomeychenko Apr 29, 2021
dc8e78c
models table -wip
mkolomeychenko Apr 29, 2021
a878179
start split html template to parts
mkolomeychenko Apr 30, 2021
236e62d
ui refactoring
mkolomeychenko Apr 30, 2021
db61ef4
compile-template wip - paths confusion
mkolomeychenko Apr 30, 2021
2eae9b2
compile wip
mkolomeychenko Apr 30, 2021
3455a45
train/val splits
mkolomeychenko Apr 30, 2021
9591dd1
keep/ignore unlabeled images
mkolomeychenko Apr 30, 2021
89bddaa
models table
mkolomeychenko Apr 30, 2021
71c5710
training hyperparameters
mkolomeychenko May 4, 2021
88cb140
UI templates - done
mkolomeychenko May 4, 2021
5aacc66
unlabeled count in UI
mkolomeychenko May 5, 2021
e014b75
add adam optimizer
mkolomeychenko May 5, 2021
dfd58b1
convert_project to detection - works
mkolomeychenko May 5, 2021
0aec05b
start train/val splits
mkolomeychenko May 5, 2021
0072702
splits wip
mkolomeychenko May 5, 2021
8478e17
splits done, only simple tests
mkolomeychenko May 6, 2021
d65e4bc
splits validation
mkolomeychenko May 6, 2021
6bb0c91
data preprocessing - not tested
mkolomeychenko May 6, 2021
0433ae3
download weights - wip
mkolomeychenko May 7, 2021
55abdb5
init_script_arguments - not tested
mkolomeychenko May 7, 2021
050407a
init_script_arguments - not tested
mkolomeychenko May 7, 2021
88930f9
prepare weights - wip
mkolomeychenko May 7, 2021
2ab8ed1
not tested
mkolomeychenko May 7, 2021
3355946
add metrics period
mkolomeychenko May 7, 2021
6182567
set output
mkolomeychenko May 7, 2021
8b361b3
artifacts dirs
mkolomeychenko May 7, 2021
d790a2f
train_batches_uploaded flag
mkolomeychenko May 7, 2021
5aad4b1
pre-release for debug
mkolomeychenko May 7, 2021
52893b5
update config
mkolomeychenko May 7, 2021
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
training hyperparameters
  • Loading branch information
mkolomeychenko committed May 4, 2021
commit 71c571019f03a5992e9e2b751b4c2652e60b64ee
1 change: 1 addition & 0 deletions supervisely/train/src/gui.html
Original file line number Diff line number Diff line change
Expand Up @@ -34,4 +34,5 @@
{% include 'supervisely/train/src/ui/training_classes.html' %}
{% include 'supervisely/train/src/ui/train_val_split.html' %}
{% include 'supervisely/train/src/ui/model_architectures.html' %}
{% include 'supervisely/train/src/ui/traning_hyperparameters.html' %}
</div>
18 changes: 1 addition & 17 deletions supervisely/train/src/sly_init_ui.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@

import sly_train_globals as globals
import sly_metrics as metrics
from models_description import get_models_list
#from models_description import get_models_list


empty_gallery = {
Expand All @@ -15,22 +15,6 @@
}


def init_training_hyperparameters(state):
state["epochs"] = 10
state["batchSize"] = 16
state["imgSize"] = 640
state["multiScale"] = False
state["singleClass"] = False
state["device"] = '0'
state["workers"] = 8 # 0 - for debug
state["activeTabName"] = "General"
state["hyp"] = {
"scratch": globals.scratch_str,
"finetune": globals.finetune_str,
}
state["hypRadio"] = "scratch"


def init_start_state(state):
state["started"] = False
state["activeNames"] = []
Expand Down
49 changes: 0 additions & 49 deletions supervisely/train/src/ui/model_architectures.html
Original file line number Diff line number Diff line change
Expand Up @@ -33,27 +33,6 @@
</tr>
</tbody>
</table>

<!-- <el-table-->
<!-- class="ultra-table"-->
<!-- :data="data.models"-->
<!-- style="width: 100%"-->
<!-- >-->
<!-- <el-table-column label="Model" prop="model" sortable>-->
<!-- <template scope="scope">-->
<!-- <el-radio class="radio" v-model="state.selectedModel" :label="scope.row.model">-->
<!-- {{scope.row.model}}-->
<!-- </el-radio>-->
<!-- </template>-->
<!-- </el-table-column>-->
<!-- <el-table-column label="In size (pixels)" prop="size pixels" sortable></el-table-column>-->
<!-- <el-table-column label="mAP_val 0.5:0.95" prop="mAP_val 0.5_0.95" sortable></el-table-column>-->
<!-- <el-table-column label="mAP_test 0.5:0.95" prop="mAP_test 0.5_0.95" sortable></el-table-column>-->
<!-- <el-table-column label="mAP_val 0.5" prop="mAP_val 0.5" sortable></el-table-column>-->
<!-- <el-table-column label="speed v100 (ms)" prop="speed v100 (ms)" sortable></el-table-column>-->
<!-- <el-table-column label="params (M)" prop="params (M)" sortable></el-table-column>-->
<!-- <el-table-column label="FLOPS 640 (B)" prop="FLOPS 640 (B)" sortable></el-table-column>-->
<!-- </el-table>-->
</el-tab-pane>
<el-tab-pane name="custom">
<el-radio slot="label" v-model="state.weightsInitialization" label="custom">
Expand All @@ -64,32 +43,4 @@
</sly-field>
</el-tab-pane>
</el-tabs>
<!-- <sly-field title="Weights initialization" description="Define how model is initialized before training">-->
<!-- <el-radio-group class="mb15" v-model="state.modelWeightsOptions">-->
<!-- <el-radio :label="1">Pretrained on COCO</el-radio>-->
<!-- <el-radio :label="2">From custom model</el-radio>-->
<!-- &lt;!&ndash; <el-radio :label="3" :disabled="true">Resume training (not implemented yet)</el-radio>&ndash;&gt;-->
<!-- &lt;!&ndash;<el-radio :label="3">Random (not recommended)</el-radio>&ndash;&gt;-->
<!-- </el-radio-group>-->
<!-- <div v-show="state.modelWeightsOptions === 1">-->
<!-- <sly-field title="Model size" description="more params => better performance and slower inference time">-->
<!-- <el-select v-model="state.modelSize"-->
<!-- style="width:250px;"-->
<!-- @change="() => state.pretrainedWeights = `${state.modelSize}.pt`">-->
<!-- <el-option-->
<!-- v-for="item in data.modelSizes"-->
<!-- :key="item.label"-->
<!-- :label="`${item.label} (${item.params} params)`"-->
<!-- :value="item.label">-->
<!-- </el-option>-->
<!-- </el-select>-->
<!-- </sly-field>-->
<!-- &lt;!&ndash;<el-input v-model="state.pretrainedWeights" :disabled="true" style="width:250px;"></el-input>&ndash;&gt;-->
<!-- </div>-->
<!-- <div v-show="state.modelWeightsOptions === 2">-->
<!-- <sly-field title="Path to file" description="Copy path in Team Files">-->
<!-- <el-input v-model="state.weightsPath" placeholder="Path to .pt file in Team Files"></el-input>-->
<!-- </sly-field>-->
<!-- </div>-->
<!-- </sly-field>-->
</sly-card>
9 changes: 1 addition & 8 deletions supervisely/train/src/ui/model_architectures.py
Original file line number Diff line number Diff line change
Expand Up @@ -115,14 +115,7 @@ def get_table_columns():
def init(data, state):
data["models"] = get_models_list()
data["modelColumns"] = get_table_columns()
# data["modelSizes"] = [
# {"label": "yolov5s", "config": "yolov5s.yaml", "params": "7.3M"},
# {"label": "yolov5m", "config": "yolov5m.yaml", "params": "21.4M"},
# {"label": "yolov5l", "config": "yolov5l.yaml", "params": "47.0M"},
# {"label": "yolov5x", "config": "yolov5x.yaml", "params": "87.7M"},
# ]
# state["modelSize"] = data["modelSizes"][0]["label"]
state["selectedModel"] = None
state["selectedModel"] = "YOLOv5s"
state["weightsInitialization"] = "coco"
state["pretrainedWeights"] = "" #f'{data["modelSizes"][0]["label"]}.pt'

Expand Down
52 changes: 1 addition & 51 deletions supervisely/train/src/ui/old.html
Original file line number Diff line number Diff line change
Expand Up @@ -3,57 +3,7 @@



<sly-card class="mt15"
title="5. Traning hyperparameters"
subtitle="Define basic settings and advanced options (learning rate, augmentations, ...)">
<el-tabs v-model="state.activeTabName">
<el-tab-pane label="General" name="General">
<sly-field title="Number of epochs">
<el-input-number v-model="state.epochs" :min="1" :max="10000"></el-input-number>
</sly-field>
<sly-field title="Batch size"
description="total batch size for all GPUs. Use the largest batch size your GPU allows.
For example: 16 / 24 / 40 / 64 (batch sizes shown for 16 GB devices)">
<el-input-number v-model="state.batchSize" :min="6"></el-input-number>
</sly-field>
<sly-field title="Input image size (in pixels)"
description="Image is resized to square">
<el-input-number v-model="state.imgSize" :min="64"></el-input-number>
</sly-field>
<sly-field title="Multi-scale"
description="Vary image size +/- 50%">
<el-checkbox v-model="state.multiScale">Multi-scale</el-checkbox>
</sly-field>
<sly-field title="Single class"
description="Train multi-class data as single-class (merge all classes to a single one)">
<el-checkbox v-model="state.singleClass">Single class</el-checkbox>
</sly-field>
<sly-field title="Device"
description="Cuda device, i.e. 0 or 0,1,2,3 or cpu, or keep empty to select automatically">
<el-input v-model="state.device" style="width:250px;"></el-input>
</sly-field>
<sly-field title="Number of workers"
description="Maximum number of dataloader workers, use 0 for debug">
<el-input-number v-model="state.workers" :min="0"></el-input-number>
</sly-field>
</el-tab-pane>
<el-tab-pane label="Advanced" name="Advanced">
<div class="fflex">
<div class="mr15">Training hyperparameters templates:</div>
<el-radio-group v-model="state.hypRadio">
<el-radio label="scratch">scratch</el-radio>
<el-radio label="finetune">finetune</el-radio>
</el-radio-group>
<el-button class="ml15" type="default" size="small" @click="command('restore_hyp')">Restore
Defaults
</el-button>
</div>
<div class="mb15">Edit settings in YAML format:</div>
<sly-editor v-model="state.hyp[state.hypRadio]"
:options="{height: '565px', mode: 'ace/mode/yaml'}"></sly-editor>
</el-tab-pane>
</el-tabs>
</sly-card>


<sly-card class="mt15"
title="6. Training progress"
Expand Down
2 changes: 1 addition & 1 deletion supervisely/train/src/ui/train_val_split.html
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@
<el-tab-pane name="tags">
<el-radio slot="label" v-model="state.splitMethod" label="tags">
Based on image tags
<div>Images already should have assigned train or val tag</div>
<div>Images should have assigned train or val tag</div>
</el-radio>
<sly-field title="Notice 1: How to create train/val splits based on tags"
description="Option 1: use app 'Assign train/val tags to images' from Ecosystem. Option 2: manually assign
Expand Down
60 changes: 60 additions & 0 deletions supervisely/train/src/ui/traning_hyperparameters.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
<sly-card class="mt15"
title="5. Traning hyperparameters"
subtitle="Define general settings and advanced configuration (learning rate, augmentations, ...)">
<sly-field title="Number of epochs">
<el-input-number v-model="state.epochs" :min="1" :max="10000"></el-input-number>
</sly-field>
<sly-field title="Batch size"
description="total batch size for all GPUs. Use the largest batch size your GPU allows.
For example: 16 / 24 / 40 / 64 (batch sizes shown for 16 GB devices)">
<el-input-number v-model="state.batchSize" :min="6"></el-input-number>
</sly-field>
<sly-field title="Input image size (in pixels)"
description="Image is resized to square">
<el-input-number v-model="state.imgSize" :min="64"></el-input-number>
</sly-field>
<sly-field title="Multi-scale"
description="Vary image size +/- 50%">
<el-checkbox v-model="state.multiScale">Multi-scale</el-checkbox>
</sly-field>
<sly-field title="Single class"
description="Train multi-class data as single-class (merge all classes to a single one)">
<el-checkbox v-model="state.singleClass">Single class</el-checkbox>
</sly-field>
<sly-field title="Device"
description="Cuda device, i.e. 0 or 0,1,2,3 or cpu, or keep empty to select automatically">
<el-input v-model="state.device" style="width:250px;"></el-input>
</sly-field>
<sly-field title="Number of workers"
description="Maximum number of dataloader workers, use 0 for debug">
<el-input-number v-model="state.workers" :min="0"></el-input-number>
</sly-field>

<sly-field title="Additional configuration"
description="Tune learning rate, augmentations and others or just keep default values">
<el-tabs type="border-card" class="el-tabs-cards" v-model="state.hypRadio">
<el-tab-pane name="scratch">
<el-radio slot="label" v-model="state.hypRadio" label="scratch">
Scratch mode
<div>Recommended hyperparameters for training from scratch</div>
</el-radio>
<el-button class="ml15" type="text" @click="command('restore_hyp')">
Restore Defaults
</el-button>
<sly-editor v-model="state.hyp[state.hypRadio]"
:options="{height: '525px', mode: 'ace/mode/yaml'}"></sly-editor>
</el-tab-pane>
<el-tab-pane name="finetune">
<el-radio slot="label" v-model="state.hypRadio" label="finetune">
Finetune mode
<div>Recommended hyperparameters for model finutuning</div>
</el-radio>
<el-button class="ml15" type="text" @click="command('restore_hyp')">
Restore Defaults
</el-button>
<sly-editor v-model="state.hyp[state.hypRadio]"
:options="{height: '525px', mode: 'ace/mode/yaml'}"></sly-editor>
</el-tab-pane>
</el-tabs>
</sly-field>
</sly-card>
18 changes: 18 additions & 0 deletions supervisely/train/src/ui/traning_hyperparameters.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
import supervisely_lib as sly
import supervisely.train.src.sly_train_globals as g


def init(state):
state["epochs"] = 10
state["batchSize"] = 16
state["imgSize"] = 640
state["multiScale"] = False
state["singleClass"] = False
state["device"] = '0'
state["workers"] = 8 # 0 - for debug
state["activeTabName"] = "General"
state["hyp"] = {
"scratch": g.scratch_str,
"finetune": g.finetune_str,
}
state["hypRadio"] = "scratch"
4 changes: 3 additions & 1 deletion supervisely/train/src/ui/ui.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,12 @@
import supervisely.train.src.ui.training_classes as training_classes
import supervisely.train.src.ui.train_val_split as train_val_split
import supervisely.train.src.ui.model_architectures as model_architectures
import supervisely.train.src.ui.traning_hyperparameters as traning_hyperparameters


def init(data, state):
input_project.init(data)
training_classes.init(g.api, data, state, g.project_id, g.project_meta)
train_val_split.init(g.project_info, g.project_meta, data, state)
model_architectures.init(data, state)
model_architectures.init(data, state)
traning_hyperparameters.init(state)