Cách dùng Watermark trong deep learning cũng không dễ dàng với tất cả mọi người. Cách dùng watermark mình đã trình bày ý tưởng của paper "Embedding Watermarks into Deep Neural Networks (2017)" rồi đó bạn. Xin lỗi nếu nó hơi khó hiểu. Source của paper này đây https://github.com/yu4u/dnn-watermark . Nó chính là code hiện thực hóa để xuất của nhóm tác giả để sử dụng watermark. Ngoài ra các paper của reference cũng rất hay.
@Nobita1234 sử dụng Driver sẽ không giúp tiết kiệm lines of code được bao nhiêu đâu, quan trọng là nó an toàn và phù hợp để làm việc với UI hơn thôi. Việc bạn sử dụng Observable hay Subject để bind lên UI không có gì là sai cả, nhưng lúc đó bạn sẽ phải care nhiều thứ hơn như là:
Liệu rằng mình đã observe trên MainScheduler chưa?
Liệu observable emit ra lỗi thì sẽ xử lý như thế nào?
Liệu kết quả của observable của bạn có bị bind ở nhiều chỗ không vì nếu bind nhiều lần trên 1 observable thì nó chạy nhiều lần (với case là một observable của api thì sẽ không tốt về performance chút nào), ...
Và khi bạn dùng Driver thì bạn sẽ không phải care đến những thứ này nữa, tất nhiên để convert từ observable sang driver sẽ mất thêm thao tác, nhưng tựu chung lại bạn sẽ giải quyết được vấn đề mà trên.
@cknguyen Đúng rồi bạn. Do mình ít khi nào dùng Driver vì nhiều thứ bất tiện. Thường chỉ dùng Observable và Subject.
Cái bind(to:) sẽ bị fatalError/error chỉ bị trong RxRelay, trong Subject ko thấy nói tới (https://github.com/ReactiveX/RxSwift/blob/main/RxCocoa/Common/Observable+Bind.swift).
Đúng là tiết kiệm được dòng .subscribeOn(Main) nhưng phải thêm asObservable() cho Trait thì cũng như không.
Chúng ta bảo vệ các mô hình Deep learning như thế nào?
Đặt vấn đề
Yêu cầu khi sử dụng Watermark
Bảo toàn chất lượng
Độ mạnh mẽ của watermark
Các trường hợp có thể áp dụng watermark
Bảo vệ watermark khỏi tấn công
Các paper nghiên cứu về kỹ thuật watermarking được nghiên cứu gần đây
References
-> theo mình hiểu thì "sử dụng Watermark" khá là dễ dàng với tất cả mọi người, nên mình chỉ thấy bạn nói về yêu cầu khi sử dụng, độ mạnh mẽ của watermark, mà ko thấy nói về cách dùng nó.
THẢO LUẬN
@cknguyen cám ơn bạn nhé, để mình đọc thêm về Trait và thử convert app sang Driver xem.
minh thấy có cơ chế HLS là sao bạn ha
Đây là bài viết của anh kwkt https://viblo.asia/s/bao-khoa-hoc-trong-vong-5-phut-rLZDX4YnZk0 Có 1 số bài về watermark, 1 số bài về attack.
Cách dùng Watermark trong deep learning cũng không dễ dàng với tất cả mọi người. Cách dùng watermark mình đã trình bày ý tưởng của paper "Embedding Watermarks into Deep Neural Networks (2017)" rồi đó bạn. Xin lỗi nếu nó hơi khó hiểu. Source của paper này đây https://github.com/yu4u/dnn-watermark . Nó chính là code hiện thực hóa để xuất của nhóm tác giả để sử dụng watermark. Ngoài ra các paper của reference cũng rất hay.
@Nobita1234 sử dụng Driver sẽ không giúp tiết kiệm
lines of code
được bao nhiêu đâu, quan trọng là nó an toàn và phù hợp để làm việc với UI hơn thôi. Việc bạn sử dụng Observable hay Subject đểbind
lên UI không có gì là sai cả, nhưng lúc đó bạn sẽ phải care nhiều thứ hơn như là:bind
ở nhiều chỗ không vì nếubind
nhiều lần trên 1 observable thì nó chạy nhiều lần (với case là một observable của api thì sẽ không tốt về performance chút nào), ...Và khi bạn dùng Driver thì bạn sẽ không phải care đến những thứ này nữa, tất nhiên để convert từ observable sang driver sẽ mất thêm thao tác, nhưng tựu chung lại bạn sẽ giải quyết được vấn đề mà trên.
Cụ thể bạn có thể tham khảo READ ME này https://github.com/ReactiveX/RxSwift/blob/main/Documentation/Traits.md, phần Driver có phân tích vấn đề khi sử dụng observable bind, và convert nó sang Driver.
@cknguyen Đúng rồi bạn. Do mình ít khi nào dùng Driver vì nhiều thứ bất tiện. Thường chỉ dùng Observable và Subject. Cái bind(to:) sẽ bị fatalError/error chỉ bị trong RxRelay, trong Subject ko thấy nói tới (https://github.com/ReactiveX/RxSwift/blob/main/RxCocoa/Common/Observable+Bind.swift). Đúng là tiết kiệm được dòng .subscribeOn(Main) nhưng phải thêm asObservable() cho Trait thì cũng như không.
Cám ơn bạn đã theo dõi, khi nào có thời gian mình sẽ thử nghĩ về series K8S nhé
Series và bài viết rất hay. Hy vọng bạn sẽ ra thêm series về k8s. Thanks nhiều
bạn đang nói về điều gì vậy?
|Bài viết được lấy cảm hứng từ loạt bài về watermark của tác giả kwkt.
Mình click vào link thấy dẫn lại vào chính bài của bạn. bạn sửa lại giúp mình nhé. Thanks bạn.
Chúng ta bảo vệ các mô hình Deep learning như thế nào?
-> theo mình hiểu thì "sử dụng Watermark" khá là dễ dàng với tất cả mọi người, nên mình chỉ thấy bạn nói về yêu cầu khi sử dụng, độ mạnh mẽ của watermark, mà ko thấy nói về cách dùng nó.
“Trait không emit erors” nói là lợi thế mình cũng không biết là đúng hay không nữa :v .
Theo mình nó chỉ là đặc điểm của Trait thôi và đặc điểm này của nó sẽ khiến nó phù hợp và phát huy trong từng use-case cụ thể.
Ví dụ trong trường hợp bạn muốn bind data vào một UI thì việc sử dụng Driver(Trait) sẽ lợi thế hơn
Nếu dùng Observable (cái này có thể emit ra lỗi) để bind vào UI thì khi Observable của bạn emit ra error lúc này chương trình sẽ gặp vấn đề.
"In case error occurs in debug mode,
fatalError
will be raised. In case error occurs in release mode,error
will be logged."Đoạn trên này là mình lấy từ comment của function "bind(to:_)" ở trong RxCocoa/RxSwift
Còn nếu dùng Driver (một dạng của Trait cũng không emit lỗi) drive vào UI, lúc này sẽ không vấn đề gì cả.
@longvt1912 axios global ko hiểu là thế nào bạn?
import nó vào thôi mà
Vẫn là vấn đề chạy với user none root. Bản chất là chúng ta phải biết được container chạy ở config nào, mount ở thư mục nào bằng cách:
Phần Mounts:
Như vậy các bạn có thể thấy là Source là absolute path.
Khi gitlab-runner chạy thì absolute path sẽ được gán ở đâu? Thông thường là thư mục:
Các bạn có thể in ra bằng cách thêm vào .gitlab-ci.yml
Do vậy để set chính xác mình nghĩ nên tạo absolute path trước và mount nó trong docker-compose.yml
Và set chown cho user muốn chạy service này.
Cho mình hỏi là lợi thế của việc “Trait không emit erors” là gì vậy bạn?
Hay lắm bạn ơi. Sẽ tiếp tục theo dõi các bài viết về flutter của bạn.
cho e hỏi, liệu có thể thay thế đoạn đổi chỗ phần tử bằng 1 hàm swap viết ở ngoài được ko ạ
Đoạn
bị lỗi chỗ — provider, phải là -- provider nhé thớt
@benkyou bạn xài $emit trong watch thử xem
Dùng cái này để bắn thông báo về PR thì đỡ phải code nữa chủ thớt: https://cw-forwarder.sun-asterisk.vn