Giter Site home page Giter Site logo

model_nottrashcar's Introduction

End To End model for HAUI.notTrashCar

Model Architecture

  • Base on NVIDIA end-to-end CNN

Preview

  • Summary of the model architectures
_________________________________________________________________
Layer (type)                 Output Shape              Param #
=================================================================
batch_normalization_1 (Batch (None, 66, 200, 3)        264
_________________________________________________________________
conv2d_1 (Conv2D)            (None, 31, 98, 24)        1824
_________________________________________________________________
conv2d_2 (Conv2D)            (None, 14, 47, 36)        21636
_________________________________________________________________
conv2d_3 (Conv2D)            (None, 5, 22, 48)         43248
_________________________________________________________________
conv2d_4 (Conv2D)            (None, 3, 20, 64)         27712
_________________________________________________________________
conv2d_5 (Conv2D)            (None, 1, 18, 64)         36928
_________________________________________________________________
flatten_1 (Flatten)          (None, 1152)              0
_________________________________________________________________
dense_1 (Dense)              (None, 1164)              1342092
_________________________________________________________________
dense_2 (Dense)              (None, 100)               116500
_________________________________________________________________
dense_3 (Dense)              (None, 50)                5050
_________________________________________________________________
dense_4 (Dense)              (None, 10)                510
_________________________________________________________________
dense_5 (Dense)              (None, 2)                 22
=================================================================
Total params: 1,595,786
Trainable params: 1,595,654
Non-trainable params: 132
_________________________________________________________________

Data

  • Hiện tại đang lấy dựa trên simulator của udacity, download here
  • Chỉ cần tải về giải nén and run python3 main.py.

model_nottrashcar's People

Contributors

buingochai avatar lamhoangtung avatar

Stargazers

Nguyễn Viết Trí avatar Nguyễn Sỹ Tùng avatar li avatar

Watchers

James Cloos avatar  avatar Huy Dao avatar

Forkers

noticeable

model_nottrashcar's Issues

Code thừa ?

Hi, t thấy một số chỗ có code thừa không biết để làm gì, m sửa liền nhé:

https://github.com/BuiNgocHai/end_to_end/blob/3d7007d307a95d7af308a00d3ccef78962a202e2/auto_rc.py#L17

Ở chỗ này biến seq_length có tác dụng là gì ? Tại sao lại set bằng 0 ở đây ?

https://github.com/BuiNgocHai/end_to_end/blob/3d7007d307a95d7af308a00d3ccef78962a202e2/auto_rc.py#L68-L70

Tại sao model = X ??? Nếu đúng logic của code này thì X là một layer các tensor nằm ngay trước lớp ouput ?? Vậy tại sao nó có thể là model ?

https://github.com/BuiNgocHai/end_to_end/blob/3d7007d307a95d7af308a00d3ccef78962a202e2/common.py#L14-L34

Chỗ này vẫn còn code để overfit trên 1 batch, không nên push code test lên repo như thế này. Btw, nên để nó thành 1 argument có thể pass vào được, ví dụ như test_overfit_single_batch=False, rồi sửa lại một chút trong hàm để sau này dễ dàng test đc.

https://github.com/BuiNgocHai/end_to_end/blob/3d7007d307a95d7af308a00d3ccef78962a202e2/common.py#L42

https://github.com/BuiNgocHai/end_to_end/blob/3d7007d307a95d7af308a00d3ccef78962a202e2/common.py#L58

Param seq_length còn chả dùng đến trong hàm, tại sao lại sinh ra nó ? Copy code cũng cần hiểu rõ nội dung, ý nghĩa nhé.

https://github.com/BuiNgocHai/end_to_end/blob/3d7007d307a95d7af308a00d3ccef78962a202e2/common.py#L118-L119

Có define Early Stop nhưng trong callbacks list lại không cho vào. Nếu như không thường dùng Early Stop mà vẫn muốn để nó ở đấy để xài khi cần thì nên làm 1 cái param early_stop=False vào đầu hàm get_common_callbacks() rồi if một chút trong hàm để sau này dễ dùng.

Toàn lỗi vặt thôi, nhiều nhưng không hề tốn não. Sửa lẹ nhé ;_;

Thiếu mọi chỉnh sửa cần cho FPT Simulator

Hơi buồn chút vì trông cái implement này giống như 1 bản straight copy từ đâu đó để áp lên cái Udacity Simulator vậy. Cái simulator này cũng okie thôi nhưng có một vấn đề là nó còn đơn giản hơn nhiều so với cái của FPT and nó đã được solve đi solve lại rất nhiều. T chưa thấy có biến đổi nào để chuẩn bị adopt với data upcoming của Duy. Đơn giản nhất như về output format cũng không valid, input format của mình là single camera frame, không có left, right.

Team mình cần hạn chế làm lại những gì họ đã làm. Tập trung vào làm cái cần làm. Trong trường hợp này là làm model cho cái simulator của FPT, not của Udacity. Kể cả nó là cho Udacity thì m nên pick ra những kiến trúc tốt rồi so sánh với nhau, đẹp trai hơn nữa thì train lại rồi so sánh để sau này dễ lên kế hoạch test (không cần thiết lắm)

T expect m nên break down code nhỏ ra 1 chút nữa. Những gì liên quan đến data có thể bỏ riêng ra 1 file. Ngoài ra m nên thử suy nghĩ trước một số phiên bản khác nhau của model, viết 1 file common các thông số chung cho các phiên bản, rồi tạo config hoặc viết nhiều model khác nhau để sắp tới việc train và test được diễn ra thuận lợi. Also chỗ split train test nên đặt chung 1 cái random_states để mỗi lần chia data được giống nhau cho dễ so sánh nhé.

Hết tết rồi cố gắng nhé ;_;.

Chiến lược training mới ?

Okey. Tình hình là như mình train khá nhiều lần có thể thấy val_loss không có cải thiện nhiều, hoặc chưa sát đến mức có thể sử dụng tốt trên thực tế được. Vậy nguyên nhân của tình trạng này là do đâu:
Hãy thử ngâm cứu chút:

  • Loss vẫn giảm đều, val_loss giật cục: Có bug trong model or data, model không thể học được gì có nghĩa
  • Loss vẫn giảm đều, val_loss cũng giảm đều nhưng chênh lệch xa với loss: Khá là khó xác định trong case này, có thể là model đã overfit, có thể là model underfit, chưa học đủ.

Hiện tại mình đang kẹt ở case 2. Đứng ở góc nhìn của t, t cho rằng trường hợp này là underfit. Tại sao ? CNN trong trường hợp này đang được train lại từ đầu hoàn toàn, không hề có bất kì một chút kiến thức nào về thế giới visual. Vậy nên để có thể hiểu được các pattern và feature cần thiết cũng cần một lượng data lớn trong thời gian trainning dài. Đặc biệt là với kiến trúc CNN đơn giản và cổ điển như mình, tốc độ trainning chắc chắn sẽ chậm. Data hiện tại của mình tuy nhiều nhưng lại được normalize khá mạnh, có rất nhiều các loại nhiễu, augmentation, …. để chống overfit trong khi model còn chưa kịp fit. Hãy cứ giả sử là model đang bị underfit thâi thì giờ cần phải làm gì ? Chắc chắn là cần một chiến lược trainning tốt hơn … Hãy lo chống overfit khi model bắt đầu có hiện tượng overfit ??? Đại loại vậy.

Nếu vậy thì chiến lược train sẽ thay đổi thành thế này:

  • Train một model CNN trên một dataset sạch đẹp, có thể coi là dễ. Có rất nhẹ augmentation hoặc thậm chí là không có.
  • Finetune model với các data bị augment rất nặng

Làm cách nào để biết khi nào thì train xong stage 1 của plan trên: Khi thấy model bắt đầu overfit
Làm gì nếu model không overfit được: Mạng quá đơn giản, cần kiến trúc mạng phức tạp hơn.

Có gì cứ thoải mái góp ý nha.

Có một cách rất đơn giản để kiểm chứng ý nghĩ trên đó là thay toàn bộ CNN bằng 1 mạng CNN nhẹ 1 chút, đã có pretrain sẵn trên Imagenet chẳng hạn. Sau đó freeze hết CNN lại và chỉ train Dense Layers xem tốc độ converge và khả năng converge của model đó với data như thế nào là sẽ rõ. ( Cách này chắc chắn không bỏ lên xe thật chạy được vì những mạng này chắc chắn sẽ quá nặng )

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.