@@ -19,6 +19,15 @@ def login(args):
19
19
roboflow .login (force = args .force )
20
20
21
21
22
+ def train (args ):
23
+ rf = roboflow .Roboflow ()
24
+ workspace = rf .workspace (args .workspace ) if args .workspace else rf .workspace ()
25
+ project = workspace .project (args .project )
26
+ version = project .version (args .version_number )
27
+ model = version .train (modelType = args .modelType , checkpoint = args .checkpoint )
28
+ print (model )
29
+
30
+
22
31
def _parse_url (url ):
23
32
regex = r"(?:https?://)?(?:universe|app)\.roboflow\.(?:com|one)/([^/]+)/([^/]+)(?:/dataset)?(?:/(\d+))?|([^/]+)/([^/]+)(?:/(\d+))?" # noqa: E501
24
33
match = re .match (regex , url )
@@ -198,6 +207,7 @@ def _argparser():
198
207
subparsers = parser .add_subparsers (title = "subcommands" )
199
208
_add_login_parser (subparsers )
200
209
_add_download_parser (subparsers )
210
+ _add_train_parser (subparsers )
201
211
_add_upload_parser (subparsers )
202
212
_add_import_parser (subparsers )
203
213
_add_infer_parser (subparsers )
@@ -310,6 +320,37 @@ def _add_upload_parser(subparsers):
310
320
upload_parser .set_defaults (func = upload_image )
311
321
312
322
323
+ def _add_train_parser (subparsers ):
324
+ train_parser = subparsers .add_parser ("train" , help = "Train a model for a dataset version" )
325
+ train_parser .add_argument (
326
+ "-w" ,
327
+ dest = "workspace" ,
328
+ help = "specify a workspace url or id (will use default workspace if not specified)" ,
329
+ )
330
+ train_parser .add_argument (
331
+ "-p" ,
332
+ dest = "project" ,
333
+ help = "project_id to train the model for" ,
334
+ )
335
+ train_parser .add_argument (
336
+ "-v" ,
337
+ dest = "version_number" ,
338
+ type = int ,
339
+ help = "version number to train" ,
340
+ )
341
+ train_parser .add_argument (
342
+ "-t" ,
343
+ dest = "modelType" ,
344
+ help = "type of the model to train (e.g., rfdetr-nano, yolov8n)" ,
345
+ )
346
+ train_parser .add_argument (
347
+ "--checkpoint" ,
348
+ dest = "checkpoint" ,
349
+ help = "checkpoint to resume training from" ,
350
+ )
351
+ train_parser .set_defaults (func = train )
352
+
353
+
313
354
def _add_import_parser (subparsers ):
314
355
import_parser = subparsers .add_parser ("import" , help = "Import a dataset from a local folder" )
315
356
import_parser .add_argument (
0 commit comments