hit-haui / model_nottrashcar Goto Github PK
View Code? Open in Web Editor NEWEnd to end model for notTrashCar in 2019 FPT Driverless Car Challenge
End to end model for notTrashCar in 2019 FPT Driverless Car Challenge
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é ;_;.
Nâng input từ 3D lên 4D, dim cuối cho ảnh depth nhé =)). Cam ngoài RGB có cả depth nha
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:
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:
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 )
@BuiNgocHai tự search cái model của Donkey Car rồi implement lại vào trong repo của mình nhá. Nó cũng dùng Keras thôi dễ lắm.
Làm xong trong mai luôn nhá
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é:
Ở chỗ này biến seq_length
có tác dụng là gì ? Tại sao lại set bằng 0 ở đây ?
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 ?
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é.
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é ;_;
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.