Training model cho ứng dụng android

Chào các tiền bối, chẵng là e đang làm một cái app về xử lý ảnh, sử dụng deep learning để biến đổi style ảnh.
Em dùng Tensorflow để training ra Checkpoint (ckpt) model, rồi freezing thành protobuff để sử dụng trên Android.

Code của e dựa vào repo này ạ:

E đang gặp phải một vấn đề lớn, đó là khi tạo graph để freeze model, e phải định batch size và shape cho input node và output node. Nhưng nếu làm như vậy thì trên android chỉ có thể truyền vào sử dụng 1 kích cở duy nhất (đúng với size đã định lúc write graph) ngoài ra nó sẽ báo lỗi không đồng nhất size.

Các tiền bối ai có kinh nghiệm cho vụ này giúp đỡ e với.
Liệu có thể tạo input node và output node mà không quy định size như sample của tensorflow đã tạo hay không ạ?

Câu hỏi quá rộng. Chi tiết hơn đi bạn.

Hi Acenter Ha.
Ùm đúng rồi. Cái mạng bạn tạo ra và luyện cho nó thì cơ bản là không đổi được. Mình cũng làm một cái nhận dạng ảnh thì họ resize ảnh đầu vào để cho phù hợp được dữ liệu ra kết hợp với ảnh gốc để cho ra kết qủa.

Dạ nó ơi rườm ra, em xin trình bày như sau ạ.

E sử dụng các nguyên liệu sau để tiến hành training model:

  1. VGG19 http://www.vlfeat.org/matconvnet/models/beta16/imagenet-vgg-verydeep-19.mat
  2. Content image của coco2014
  3. Một ảnh để làm style
    -> Kết quả của quá trình Training em có được Checkpoint mode:
  • checkpoint.meta
  • checkpoint.index
  • checkpoint.data-00000-of-00001
    Với bộ checkpoint này, em có thể biến đổi style cho bất cứ ảnh nào và trả về đúng size của ảnh đã cho vào (trên python thôi)

Tại đây, em cần chuyển Checkpoint model này sang Graph model (protobuff) để sử dụng trên Android.
Trở lại câu hỏi ở trên, khi tạo graph (pb.txt) em phải cho size của input node, rồi transform ra size output node.
Giả dụ e cho size là [1, 512, 512, 3] thì ảnh đầu vào và ảnh đầu ra của e nó cũng sẽ về đúng 512x512.

Em muốn hỏi cách làm thế nào để không quy định input đầu vào và làm thế nào để ảnh đầu ra không thay đổi.
Trong sample của Tensorflow có Model stylize_quantized.pb, truyền vào size nào cũng được, và trả về đúng size ảnh gốc.

Không biết là cách của tensorflow nó như thế nào nữa.

Tiền bối đã xem Sample của thằng Tensorflow dành cho Android chưa ạ.
Trong sample Stylize, nó sử dụng cái model stylize_quantized.pb, e thử cho input size bất kỳ nó đều chấp nhận và trả về ảnh đúng với size gốc cả.

Chẵng hiểu nó đã dùng cách gì nữa ạ.

Hi Acenter Ha.
Mình không dùng Tensor.


Hình như họ cũng cắt ảnh lại. Bạn có link demo hay tài liệu không ?

Hình như bạn làm paper này á
https://arxiv.org/abs/1802.06474

Code:

E xem rồi tiền bối ạ, trong sample của nó đang cắt, nhưng e lấy file graph của nó về, thử không cắt ảnh, đưa size ảnh gốc vào nó vẫn chạy ngon ạ.

Cái e làm chính xác là Neural style transfer ạ.

Hi Acenter Ha.
Nếu bạn đã là được thì cũng sẽ biết cách chuyển dữ liệu tham số data vào như nào nên cứ từ từ tìm hiểu thôi,

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?