# IDEA -Training Model
## b1: tạo page train model
- điền name model
- điền mô tả cơ bản
- chọn thumbnail
- chọn chế độ công khai hoặc riêng tư/ hiện thị code hoặc k.
- chọn các key cho model: bản quyền, task, ...
## b2: playground: chọn model để training có 2 option:
1. chọn model có sẳn: đây là các model do hệ thống cung cấp, chúng ta có thể cung cấp tất cả các model cơ bản như :
+ **image-classification**: vgg[16, 19], resnet[18, 34, 50, 101, 152], ResNeXt[50, 101], SE-ResNet [18, 34, 50, 101, 152], SE-ResNeXt [50, 101], SE-Net [154], DenseNet [121, 169, 201], Inception ResNet V2, Inception V3, Xception, NASNet [large, mobile], MobileNet, MobileNet v2.
+ **obj-detection**: R-CNN, Fast R-CNN, Faster R-CNN, YOLOv1, YOLOv2, YOLOv3, YOLOv4, YOLOv5, SSD, EfficientDet.
+ **segmentation**: SegNet, U-Net, FCN, DeepLab, Gated-SCNN, Mask R-CNN
+ Note:
+ sao này có thể làm nhiều hơn với LSTM, Natural Language Processing, ...
+ có thể dev 2 version tensorflow và pytorch cho từng model.
+ chọn 2 loại hình thức train fine tune và train scracth
+ các model trên được train trên các bộ dataset mặt định trc ( gần giống như dành cho mục đích học tập):
+ vd: vgg16 có thể train trên nhiều bộ dataset: animals(2-3 labels), vehicle(2-3 labels), traffic signs(2-3 labels), ...
+ về giá thì có thể set giá cho từng model, khi họ chọn fine tune thì mình có thể thêm giá cho weight đã được train trc đó.
2. cho phép người dùng train model mà họ tự build
+ train model mà họ tự build (scracth) với weight bằng 0
+ train model mà họ tự build nhưng có weight khởi tạo (finetune)
+ Note: cả 2 trường hợp điều phải yêu cầu họ phải tuân thủ input - output (format code mẫu) do mình cũng cấp.
## b3: chọn bộ dataset
1. với option 1-b2, khi mà họ chọn 1 model bất kì mình có thể recommend 1 số bộ dataset animals, vehicle, traffic signs ( đi kèm thông tin về bộ dataset đó có gì: số lượng hình ảnh, labels, kích cơ hình ảnh, ..., giá).
2. với option 2-b2, cho họ 2 option:
2.1 họ sử dụng các bộ dataset có sẳn của mình (thu phí đã quy định)
2.2 họ tự upload bộ dataset của riêng họ (thu phí cao hơn):
+ idea: cung cấp cho ng dùng 1 không gian để họ upload data đồng thời yêu cầu họ điền thông tin về bộ data đó: sl ảnh, labels, size ảnh, ... để mình đối chiếu và ước lượng tiền khi họ upload bộ dataset như vậy.
+ note lại với người dùng, sao khi quá trình train thành công, sẽ đưa ra thông báo bộ dataset này
+ 2.2.1: bộ dataset này sẽ bị xóa, lần sao train lại sẽ phải upload lại.
+ 2.2.2: chuyển bộ dataset này thành 1 Dataset thật thụ bên page Dataset với author là user đó và sẽ bị tính phí. vì bây giờ format của bộ dataset này khác vs dataset web public.
## b4: training
1. với option 1-b2:
- fine tune: khi họ chọn chế độ này tức là họ có chọn thêm weight đã được train trước đó. tiếp tục train trên 1 bộ dataset mới mà họ chọn. cho họ điền param để train như vòng lập ( sao mỗi vòng lập có lưu weight không), lr, batch size ( cái này tính phí được), phần cứng (nên có bảng thống kê từng phần cứng sẽ có giá/h) ---> ước lượng thời gian train model đó ---> ra được cái giá cuối cùng.
- scracth: tương tự như fine tune về cách tính phí nhưng trừ ra phí weight
- Note:
- đến bước này về giao diện đã có thể thoát ra vòng tròn bảng chọn, hiển thị thành 1 tabel trong page ban đầu tạo ra. để quá trình train k làm hạn chế trải nghiệm web, đồng thời khi đang train cũng có thể dừng lại hoặc tiếp tục train. dù gì cũng tính phí theo thời gian. sẽ có 1 phần bảng infor hiện thì weight được lưu lại trong quá trình train cho phép người dùng download về.
- nếu ban đầu người dùng chọn public sản phẩm train này của họ thì ở bảng weight cho thêm button để xác định có weight nào được công khai từ đó thu lợi cho người dùng. còn nếu thuần túy ng dùng chỉ muốn lợi dụng web để train thì bỏ qua bước thu lợi này.
2. với option 2-b2:
- sẽ có 2 trường hợp khi train k có weight và có weight, người dùng đều phải set param train.