SoICT Hackathon 2024 là sân chơi do Trường CNTT-TT, Đại học BKHN phối hợp với các đối tác tổ chức dành cho các bạn sinh viên và học viên cao học khắp cả nước nhằm thúc đẩy đam mê tìm tòi phát triển các kỹ thuật AI và ứng dụng để giải quyết các bài toán thực tế phục vụ cuộc sống và có ích cho cộng đồng, xã hội. Dữ liệu cung cấp trong cuộc thi là các dữ liệu thực tế, phần lớn đến từ kết quả hợp tác nghiên cứu giữa Trường CNTT-TT và các đơn vị đối tác. Với tổng giá trị giải thưởng hơn 150 triệu đồng tiền mặt, SoICT Hackathon 2024 hứa hẹn sẽ là một sân chơi đầy hấp dẫn và bổ ích cho các bạn sinh viên.
I. Giới thiệu chung
Đối tượng tham gia là các bạn hiện đang là sinh viên hoặc học viên cao học khắp cả nước. Các bạn vừa bảo vệ ĐATN kỳ 20232 (kỳ 2 năm học 2023-2024) cũng thuộc đối tượng dự thi.
Cuộc thi gồm các track nội dung như sau:
Cuộc thi gồm hai giai đoạn: vòng sơ khảo và vòng chung kết.
Tại vòng sơ khảo, các đội sẽ đề xuất ý tưởng và phát triển các giải pháp để giải quyết bài toán theo yêu cầu của từng track. Các đội có kết quả tốt nhất vòng sơ khảo sẽ được lựa chọn vào vòng tiếp theo.
Tại vòng chung kết, các đội tập trung trực tiếp tại Trung tâm BKAI. Các đội cũng phải chuẩn bị slides và báo cáo kỹ thuật về giải pháp của mình để nộp và trình bày cho Ban Giám Khảo. Căn cứ trên kết quả và chi tiết giải pháp của các đội, Ban giám khảo sẽ đánh giá kết quả cuối cùng để quyết định giải thưởng.
II. Cách thức đăng ký
Bước 1: Gửi đơn đăng ký
Mỗi đội không quá 5 thành viên. Mỗi đội có thể đăng ký dự thi nhiều hơn một track. Mỗi cá nhân có thể tham gia nhiều hơn một đội (nhưng bắt buộc các đội đó không được thi đấu cùng một track).
Các đội điền hồ sơ đăng ký theo Biểu mẫu và nộp theo form Tại đây.
Bước 2: Tham gia nhóm zalo và like fanpage của BKAI để cập nhật thông tin và trao đổi với BTC
Tất cả các thành viên của đội cần tham gia vào nhóm zalo (https://zalo.me/g/dpgorz496) và theo dõi Facebook event page của cuộc thi để cập nhật và trao đổi các nội dung liên quan tới cuộc thi.
Bước 3: Tạo Team và đăng ký tài khoản trên hệ thống thi
- Đối với các track Traffic Vehicle Detection và Legal Document Retrieval (NAVER): mỗi thành viên đăng ký một tài khoản trên hệ thống aihub.ml và tham gia vào track dự thi. Đội trưởng vào tab Team tạo một đội với tên giống chính xác như tên trong đơn đăng ký gửi BTC. Lưu ý khi tạo team phải chọn mục Allow Requests. Các thành viên khác vào tab Team để tạo request tham gia vào Team do đội trưởng tạo. Cuối cùng đội trưởng cần phê duyệt các thành viên của đội. Chi tiết có thể tham khảo thêm tại Hướng dẫn này (Phần Competition teams).
- Đối với track Container Shipping Route Coordination (TIKI): BTC sẽ tạo tài khoản trên hệ thống Hustack và gửi cho các đội dựa vào thông tin đăng ký.
- Đối với track AI-Powered Applications (SAMSUNG): Không cần thực hiện bước này.
III. Các mốc thời gian dự kiến
- Hạn đăng ký hồ sơ: 23h59 ngày 15/11/2024
- Hạn nộp danh sách các mô hình pre-trained (đối với các track NAVER): 17/11/2024. Nộp mô hình pre-trained TẠI ĐÂY
- Vòng sơ khảo: diễn ra online tới hết ngày 22/11/2024
- Vòng chung khảo online: ngày 01/12/2024 (đối với NAVER và TIKI) để chọn 5 đội xuất sắc nhất vào vòng chung kết.
- Vòng chung kết: 21/12/2024 tại Trung tâm BKAI, Toà Nhà B1, Trường CNTT&TT, Đại học BKHN
IV. Cơ cấu giải thưởng
Mỗi track có cơ cấu giải thưởng như sau:
- 01 Giải Nhất trị giá 20 triệu tiền mặt
- 01 Giải Nhì trị giá 10 triệu tiền mặt
- 01 Giải Ba trị giá 5 triệu tiền mặt
- 02 Giải Khuyến khích mỗi giải trị giá 2 triệu tiền mặt
V. Quy tắc đối với track Traffic Vehicle Detection và Legal Document Retrieval (NAVER)
Hai track này thi đấu theo hình thức tương tự các cuộc thi trên Kaggle. Sau đây là một số quy tắc chung dành cho cả hai track. Các quy tắc riêng được mô tả chi tiết tại link của mỗi track.
- Quy tắc chi tiết Traffic Vehicle Detection
- Quy tắc chi tiết Legal Document Retrieval
5.1. Dữ liệu huấn luyện
- Các đội chỉ được phép sử dụng dữ liệu thật (real data) do BTC cung cấp để huấn luyện các mô hình. Không được phép dùng thêm dữ liệu thật từ nguồn khác. Không được phép sử dụng tập test (cả public test lẫn private test) dưới bất kỳ hình thức nào để huấn luyện mô hình.
- Các đội có thể sử dụng các chiến lược tăng cường dữ liệu (data augmentation) từ các tập dữ liệu do BTC cung cấp. Các đội cũng có thể sử dụng các phương pháp để tạo dữ liệu tổng hợp (synthetic data) hỗ trợ huấn luyện các mô hình.
5.2. Sử dụng mô hình pre-trained
- Các đội được phép sử dụng các mô hình pre-trained nhưng phải chỉ rõ cho BTC các mô hình pre-trained mà đội sử dụng. Các mô hình pre-trained sau đó sẽ được chia sẽ cho tất cả các đội tham gia cùng sử dụng.
- Các mô hình pre-trained phải được công khai và được huấn luyện cho mục đích chung. Không được phép sử dụng mô hình pre-trained được huấn luyện trực tiếp cho bài toán tương tự như mô tả trong cuộc thi. Chi tiết được quy định cụ thể trong link của mỗi track.
- Nộp mô hình pre-trained TẠI ĐÂY
5.3. Nộp kết quả
- Không được chỉnh sửa file kết quả do mô hình của đội sinh ra bằng cách gán nhãn thủ công các dữ liệu trong tập test (bao gồm public test lẫn private test) để nộp cho BTC.
- Giai đoạn sơ khảo (public test): mỗi đội được phép nộp tối đa 10 lần mỗi ngày. Trong giai đoạn chung kết (private test) được phép nộp tối đa 5 lần mỗi ngày.
- Các đội lọt vào vòng chung kết bắt buộc phải nộp báo cáo kỹ thuật và source code (đóng gói docker) để BTC đánh giá tính đúng đắn của giải pháp và công bố kết quả cuối cùng.
- Link nộp kết quả vòng sơ loại: NỘP TẠI ĐÂY
VI. Quy tắc đối với track AI-Powered Applications (SAMSUNG)
Trong hai track này, các đội thi đấu theo hình thức Hackathon thông thường. Quy tắc và thể lệ cụ thể mô tả dưới đây.
6.1. Các cá nhân/tập thể dự thi gửi hồ sơ dự thi, gồm có:
– Đơn đăng ký dự thi;
– Bản mô tả ý tưởng/sản phẩm thể hiện tính cấp thiết, điểm nổi bật trong ý tưởng hoặc giải pháp công nghệ, kết quả đạt được khi ứng dụng ý tưởng/sản phẩm vào thực tế.
– Video/ảnh chụp thuyết minh giới thiệu về ý tưởng/sản phẩm (nếu có).
6.2. Vòng hồ sơ
Hạn nộp hồ sơ đến hết ngày 15/11/2024: Hội đồng chuyên môn duyệt hồ sơ để chọn các đội đủ điều kiện trình bày trước BGK Vòng sơ khảo.
6.3. Vòng sơ khảo
15/11/2024-22/11/2024: Ban giám khảo tổ chức chấm sơ khảo để lựa chọn dự kiến 7-10 ý tưởng/sản phẩm xuất sắc nhất vào Vòng Chung kết.
Các đội thi ở xa có thể trình bày và phỏng vấn trực tuyến.
6.4. Vòng chung kết và trao giải
– Các đội thi tập trung tại tầng 10 Trung tâm BKAI từ sáng để hoàn thiện sản phẩm dự thi, cũng như chuẩn bị demo và bài trình bày sản phẩm;
– Buổi chiều các đội thi trình bày sản phẩm (có kết hợp demo) trước Ban giám khảo;
– Thời gian trình bày trước Ban giám khảo từ 10-15 phút;
– Ban giám khảo tiến hành chấm và xếp giải nhất, nhì, ba và giải khuyến khích.
– Kết quả được công bố tại Lễ trao giải và khen thưởng các cá nhân/tập thể dự thi đạt giải.
6.5. Các bài toán gợi ý
6.5.1. Các Topic chính:
- Vision AI-Powered Applications
Below is suggestion themes including but not limited to:
– Face Recognition
– Object Tracking
– Detecting Product Defects
– Video Stabilization
– Image Inpainting
– Image/Video Generation and Editing
- Large Language Model Applications
– Conversational agent: Chatbot
– Content generation: Automated writing, Real time Summarization, etc
– Data analysis: Natural Language Queries, Predict/forecast trends, etc
– Media & Entertainment: Voice action/dubbing, Audiobook, Music Synthesis, etc
6.5.2. Requirements:
Author needs to provide documentation and a demo application of the project.
About document the author need to:
– Define problems that authors resolve(Market Trend, Motivation, Problem Definition).
– Introduce related methods that can solve the problem.
– Describe details of the method that the author uses to solve the problem (Model architecture, Datasets information, Experiment result).
– Show conclusion of project (Contribution of project, Remaining problems).
About demo application the author need to:
– Show system design, application demonstration, implemented code.
– Porting application running on mobile is plus point
VII. Quy tắc đối với track Container Shipping Route Coordination (TIKI)
Các đội lập trình để giải quyết một bài toán NP-hard theo hình thức lập trình thi đấu và nộp code trực tiếp lên hệ thống để tự động chấm điểm.
Bài toán: Điều phối lộ trình vận chuyển container
Ngữ cảnh bài toán
Đầu kéo, rơ mooc và container rỗng nằm rải rác ở các bãi (DEPOT) khác nhau. Đầu kéo (TRUCK) cần được lập lộ trình xuất phát từ bãi đỗ, vận chuyển container và kết thúc hành trình tại bãi đỗ. Một TRUCK có thể chở được tối đa 02 container loại 20ft và 01 container loại 40ft. Để vận chuyển container, đầu kéo bắt buộc phải đi lấy rơ mooc (TRAILER) trước và sau khi dùng xong đem trả rơ mooc về bãi. Trong một số trường hợp, TRUCK tới điểm hạ container có thể tháo cả rơ mooc kèm container (do thiếu xe nâng) và đi lấy rơ mooc khác để phục vụ yêu cầu khác.
Có 04 loại yêu cầu vận chuyển container:
- INBOUND_FULL (IF): chở 1 container đầy từ cảng (PORT) về kho khách hàng (WAREHOUSE) để dỡ hàng nhập khẩu.
- INBOUND_EMPTY (IE): chở 1 container rỗng từ WAREHOUSE hoặc PORT về DEPOT để lưu kho.
- OUTBOUND_EMPTY (OE): chở 1 container rỗng từ DEPOT tới WAREHOUSE hoặc PORT để bốc hàng xuất khẩu
- OUTBOUND_FULL (OF): chở 1 container đầy từ WAREHOUSE tới PORT để xuất khẩu.
Các dữ liệu đầu vào:
- Mỗi yêu cầu vận chuyển container gồm các thông tin sau: điểm lấy/trả, loại container (20ft hoặc 40ft), thời gian để lấy/trả container.
- Thời gian di chuyển từ 1 địa điểm đến 1 địa điểm khác là biết trước. Thời gian tác nghiệp việc lấy và gắn rơ mooc và đầu kéo và thời gian tháo rơ mooc khỏi đầu kéo cũng được biết trước.
Mục tiêu của bài toán Cần lập kế hoạch cho các đầu kéo đi lấy rơ-mooc rồi vận chuyển các container theo yêu cầu của khách hàng với mục tiêu hoàn thành công việc (phục vụ hết tất cả các yêu cầu vận chuyển) sớm nhất. Các đầu kéo xuất phát từ bãi của mình, đi lấy rơ mooc ở 1 bãi duy nhất, phục vụ các yêu cầu vận chuyển container và quay về bãi của mình. Thời điểm hoàn thành công việc của mỗi đầu kéo được tính là thời điểm đầu kéo đã phục vụ xong hết các nhiệm vụ vận chuyển được giao và quay trở lại bãi nơi đầu kéo này xuất phát. Mục tiêu của bài toán bao gồm 2 thành phần (cần được tối thiểu hóa):
- F1: Thời điểm hoàn thành tất cả yêu cầu vận chuyển là thời điểm hoàn thành công việc muộn nhất trong số thời điểm hoàn thành của các đầu kéo được giao thực hiện công việc.
- F2: Tổng thời gian di chuyển (không tính thời gian phục vụ tháo lắp container, rơ mooc tại các địa điểm) của các đầu kéo.
Hai thành phần F1 và F2 (trong đó F1 được ưu tiên hơn F2) được tổng hợp thành 1 hàm duy nhất F = 𝞪*F1 + F2 (𝞪 là một hằng số lớn)
Tiêu chí đánh giá. BTC sẽ cung cấp các bộ dữ liệu test (testcase). Với mỗi testcase, các đội sẽ được tính điểm số (score) tùy thuộc vào giá trị của hàm F (hàm F càng nhỏ thì score càng lớn). Điểm số của mỗi đội sẽ được xác định bằng tổng điểm số của đội đó ứng với các testcase.
Ví dụ có 3 đầu kéo 1, 2, 3 được vận hành để phục vụ các yêu cầu vận chuyển. Thời điểm các đầu kéo 1, 2, 3 hoàn thành công việc và quay về bãi tương ứng là 10000, 12000, 8000. Thời gian di chuyển của đầu kéo 1, 2, 3 tương ứng là 9000, 10000, 6000. Khi đó:
- F1 = max(10000, 12000, 8000) = 12000
- F2 = 9000 + 10000 + 6000 = 25000
- F = 𝞪* 12000 + 25000
Score (điểm) của một phương án được định nghĩa bằng 1000000000 – F (score càng lớn thì phương án tìm được càng tốt).
Input
- Dòng 1: chứa Points N: trong đó N là số lượng điểm (các địa điểm đánh số từ 1, 2, . . ., N)
- Dòng 2: DISTANCES N^2:
- N2 dòng tiếp theo, mỗi dòng ghi 3 số nguyên: i j d trong đó d là thời gian di chuyển từ địa điểm i đến địa điểm j (1 <= i, j <= N)
- Dòng tiếp theo ghi: TRAILER p d trong đó p là địa điểm nơi chứa rơ mooc (1 <= p <= N) và d là thời gian cần để gắn rơ-mooc vào đầu kéo
- Dòng tiếp theo ghi: TRUCK m, trong đó m là số đầu kéo
- M dòng tiếp theo, mỗi dòng ghi: 2 số nguyên dương i và p trong đó <id> là định danh của đầu kéo (<id> = 1, 2, …, m) và p là địa điểm nơi đầu kéo <id> đang đỗ
- Khối tiếp theo là khối thông tin yêu cầu vận chuyển, khối bao gồm các dòng, mỗi dòng là thông tin của 1 yêu cầu vận chuyển với định dạng:
REQ <id> <size> <p1> <pickup_action> <pickup_duration> <p2> <drop_action> <drop_duration>
trong đó <id> là định danh của yêu cầu vận chuyển (đánh số 1, 2, … )
- <size> là kích thước container với 2 giá trị là 20 và 40
- <p1>: địa điểm lấy container
- <pickup_action>: là string mô tả hành động lấy container với 2 giá trị
- PICKUP_CONTAINER: chỉ lấy container
- PICKUP_CONTAINER_TRAILER: container đã nằm sẵn trên rơ-mooc rồi, chỉ cần đầu kéo đến vào kéo rơ-mooc chứa container đi thôi
- <pickup_duration>: thời gian diễn ra hoạt động lấy container hoặc gắn rơ-mooc
- <p2>: địa điểm trả container
- <drop_action>: string mô tả hành động trả container với 2 giá trị:
- DROP_CONTAINER: chỉ hạ container xuống, còn rơ-mooc thì vẫn gắn vào đầu kéo, đầu kéo kéo theo rơ-mooc có thể đi phục vụ yêu cầu vận chuyển khác
- DROP_CONTAINER_TRAILER: tháo rơ-mooc khỏi đầu kéo (địa điểm nhận container không có thiết bị hạ container, nên phải tháo và để lại rơ-mooc, container vẫn nằm trên rơ-mooc để bốc dỡ hoặc nạp hàng)
- <drop_duration>: khoảng thời gian diễn ra hoạt động trả container
Khối thông tin yêu cầu vận chuyển được kết thúc bới #
Output
Dòng đầu tiên ghi ROUTES m, trong đó m là số lượng đầu kéo được phân lộ trình thực hiện phục vụ yêu cầu vận chuyển
Tiếp theo là m khối, mỗi khối chứa thông tin về lộ trình bao gồm chuỗi các địa điểm và hành động tương ứng, mỗi địa điểm và hành động tại địa điểm đó với định dạng:
<point_id> <action> <request_id>
trong đó
- <point_id> là số thứ tự địa điểm (từ 1 đến N),
- <action> là trong mô tả hành động tại địa điểm đó bao gồm các giá trị:
- PICKUP_CONTAINER_TRAILER: găn rơ-mooc có container nằm trên vào đầu kéo
- PICKUP_CONTAINER: nhận container (điều kiện đầu kéo đã có sẵn rơ-mooc rồi)
- DROP_CONTAINER: hạ container (rơ-mooc vẫn gắn vào đầu kéo)
- DROP_CONTAINER_TRAILER: tháo rơ-mooc kèm container ra khỏi đầu kéo
- STOP: dừng tại bãi đậu tương ứng của đầu kéo. Với <action> là STOP thì sau đó sẽ không có <request_id>
- <request_id>: số nguyên thể hiện định dang của yêu cầu vận chuyển
Mỗi khối được kết thúc bởi ký tự #
Link nộp kết quả vòng sơ loại: NỘP TẠI ĐÂY