Cascaded-fcn: модель тестовая задача

Созданный на 10 апр. 2017  ·  19Комментарии  ·  Источник: IBBM/Cascaded-FCN

Привет, я протестировал вашу выпущенную модель, мой код относится к вашему ноутбуку. мой код

`caffe.set_mode_gpu()
caffe.set_device(2)
net_liver = caffe.Net('/home/zhou/zou/Cascaded-FCN/models/cascadedfcn/step1/step1_deploy.prototxt', '/home/zhou/zou/Cascaded-FCN/models/cascadedfcn/step1/step1_weights. caffemodel', caffe.TEST)

img=read_dicom_series("../train_image/3Dircadb1.17/PATIENT_DICOM/")
lbl=read_liver_lesion_masks("../train_image/3Dircadb1.17/MASKS_DICOM/")
С = 90
img_p = step1_preprocess_img_slice(img[...,S])
lbl_p = preprocess_lbl_slice(lbl[...,S])
net_liver.blobs['данные'].data[0,0,...] = img_p
pred = net_liver.forward()['вероятность'][0,1] > 0,5
plt.figure(figsize=(3*5,10))
plt.subplot(1, 3, _1)
plt.title('CT')
plt.imshow(img_p[92:-92,92:-92], 'серый')
plt.subplot(1, 3, 2)
plt.title('GT')
plt.imshow (lbl_p, 'серый')
plt.subplot(1, 3, 3)
plt.title('пред')
plt.imshow(пред, 'серый')`

но результат очень плохой, как это
result

Самый полезный комментарий

Я думаю, что выпущенная модель неверна, когда я самостоятельно обучаю свою собственную модель и использую приведенный выше код, она работает хорошо, и результат хороший.
3dircadb1 1 68

@RenieWell @mohamed-ezz

Все 19 Комментарий

Есть ли какой-нибудь трюк, которым я пренебрег?

Результат выглядит странно. Прежде чем вносить изменения, убедитесь, что вы можете запустить блокнот как есть и получить правильные результаты.

Код такой же, как вы показываете в блокноте, поэтому я не могу найти, где код неправильный, можете ли вы дать мне несколько советов? Спасибо

Я столкнулся с той же проблемой с вами, вы узнали? Я был бы признателен, если бы вы могли поделиться своим выходом. @manutdzou

Я думаю, что выпущенная модель неверна, когда я самостоятельно обучаю свою собственную модель и использую приведенный выше код, она работает хорошо, и результат хороший.
3dircadb1 1 68

@RenieWell @mohamed-ezz

Это отличные новости @manutdzou . Вы можете написать запрос на вытягивание и предложить свою обученную модель публике. Просто загрузите свою модель на общедоступный файлообменник и измените файл readme, указав ссылку и свое имя.

Ничего себе, я получил тот же странный результат, что и ваш первый результат. Тогда я уверен, что эта выпущенная модель не так хороша. В любом случае, я пересобираю U-Net на TensorFlow, результат моего прогноза не очень хороший, но и не странный.

@manutdzou . Привет, ребята, не могли бы вы поделиться своим кодом?
Спасибо большое.

Всем привет,
Я только что обновил файл Readme и добавил образы докеров, которые плавно запускают наш код.
Подробнее о том, как запустить образ докера, см. в файле Readme.
Ожидаемый результат должен выглядеть так, как показано на этой распечатке.
С наилучшими пожеланиями,
Патрик
cascaded_unet_inference.pdf.pdf

@PatrickChrist Привет, Патрик, спасибо за отличную работу, но когда я пытаюсь использовать предварительно обученную модель, я обнаруживаю, что nvidia-docker сложно установить, и не могли бы вы поделиться правильной предварительно обученной моделью без использования nvidia-docker.

@zakizhou Я думаю, что, поскольку это проблема воспроизводимости, Docker — наш лучший способ добиться этого.

nvidia-docker нужен только в том случае, если вы хотите обрабатывать файлы на графическом процессоре. Однако вы можете просто использовать docker , если у вас все в порядке с работой на процессоре.

Если вы используете дистрибутив Linux, с какими проблемами вы сталкиваетесь при установке nvidia-docker ?

Модели также размещены в https://github.com/IBBM/Cascaded-FCN/tree/master/models/cascadedfcn , вы можете использовать их в своей хост-среде (без Docker).

@mohamed-ezz спасибо за ваш ответ, я использую Ubuntu без графического процессора, действительно, я пробовал docker вместо nvidia-docker , но, к сожалению, когда я попытался импортировать предварительно обученную модель кофе, ядро ​​jupyter блокнот сброшен, и я не понимаю, почему. Как и то, что @manutdzou сказал в этом выпуске, предварительно обученная модель здесь https://github.com/IBBM/Cascaded-FCN/tree/master/models/cascadedfcn плохо работает с образцом. Я установил caffe с помощью conda. Как вы думаете, проблема возникла из-за неправильной версии caffe?

Да, это, вероятно, кофейная версия. Пожалуйста, используйте образ докера.

4 июля 2017 г., 17:45, «Цзе Чжоу» [email protected] написал:

@mohamed-ezz https://github.com/mohamed-ezz спасибо за ваш ответ, я
используя ubuntu без gpu, действительно, я пробовал docker вместо
nvidia-docker, но, к сожалению, когда я попытался импортировать предварительно обученную модель кофе,
ядро ноутбука jupyter сброшено, и я не понимаю, почему. Как что
@manutdzou https://github.com/manutdzou сказал в этом выпуске, что
предварительно обученная модель здесь https://github.com/IBBM/Cascaded-FCN/tree/master/
models/cascadedfcn плохо работает с образцом изображения. я установил кофе
с conda, как вы думаете, это неправильная версия caffe, которая вызвала это
проблема?


Вы получаете это, потому что вас упомянули.
Ответьте на это письмо напрямую, просмотрите его на GitHub
https://github.com/IBBM/Cascaded-FCN/issues/13#issuecomment-312908109 ,
или заглушить тему
https://github.com/notifications/unsubscribe-auth/ADqENQMhAJvhyvV1SZ5ApQelMqNhBlTMks5sKl39gaJpZM4M4ckQ
.

@mohamed-ezz Хорошо, я бы попробовал эту модель на сервере с графическим процессором, еще раз спасибо!

Нет необходимости в графическом процессоре, вместо этого просто используйте докер с изображением в README.md.
нвидиа-докер.

4 июля 2017 г., 18:59, «Цзе Чжоу» [email protected] написал:

@mohamed-ezz https://github.com/mohamed-ezz Хорошо, я бы попробовал модель на
сервер с gpu, еще раз спасибо!


Вы получаете это, потому что вас упомянули.
Ответьте на это письмо напрямую, просмотрите его на GitHub
https://github.com/IBBM/Cascaded-FCN/issues/13#issuecomment-312919887 ,
или заглушить тему
https://github.com/notifications/unsubscribe-auth/ADqENQh6pIiGyQYTbKSOx_2reMDlja3Cks5sKm-GgaJpZM4M4ckQ
.

Я выпустил версию модели правой печени и поражения в Baidu , можно использовать эту модель вот так

`импортировать sys, os
sys.path.insert(0, '/home/zhou/zou/caffe_ws/python')
sys.path.insert(0,'/home/zhou/zou/Cascaded-FCN/lib')
импортировать numpy как np
из matplotlib импортировать pyplot как plt
импортное кафе

result_path = "/home/zhou/zou/Cascaded-FCN/code/result/"
если нет os.path.exists(result_path):
os.makedirs (результат_путь)

im_list = open('test_lesion_list.txt', 'r').read().splitlines()

caffe.set_mode_gpu()
caffe.set_device(0)
net_liver = caffe.Net('deploy.prototxt', 'liver.caffemodel', caffe.TEST)
net_lesion = caffe.Net('deploy.prototxt', 'lesion.caffemodel', caffe.TEST)

печень = 1
поражение = 2
для i в диапазоне (0, len (im_list)):
im = np.load(im_list[i].split(' ')[0])
маска = np.load(im_list[i].split(' ')[1])
in_ = np.array(im, dtype=np.float32)
in_expand = in_[np.newaxis, ...]
blob = in_expand[np.newaxis, :, :, :]

net_liver.blobs['data'].reshape(*blob.shape)
net_liver.blobs['data'].data[...] = blob
net_liver.forward()
output_liver = net_liver.blobs['prob'].data[0].argmax(axis=0)

net_lesion.blobs['data'].reshape(*blob.shape)
net_lesion.blobs['data'].data[...] = blob
net_lesion.forward()
output_lesion = net_lesion.blobs['prob'].data[0].argmax(axis=0)

output = output_liver
ind_1 = np.where(output_liver ==0)
output_lesion[ind_1] = 255
ind_2 = np.where(output_lesion ==0)
output[ind_2] = 2

plt.figure(figsize=(3*5,10))
plt.subplot(1, 3, 1)
plt.title('CT')
plt.imshow(im[92:-92,92:-92], 'gray')
plt.subplot(1, 3, 2)
plt.title('GT')
plt.imshow(mask, 'gray')
plt.subplot(1, 3, 3)
plt.title('pred')
plt.imshow(output, 'gray')
path = result_path + im_list[i].split(' ')[0].split('/')[-1][0:-3] +'jpg'
plt.savefig(path)
plt.close()

`
показан какой-то результат

3dircadb1 17 85
3dircadb1 17 80
@mohamed-ezz @RenieWell @mjiansun @PatrickChrist @PiaoLiangHXD

слой {
имя: "данные"
тип: "Ввод"
сверху: "данные"
input_param { форма: { затемнение: 1 затемнение: 1 затемнение: 572 затемнение: 572 } }
}

слой {
имя: "conv_d0a-b"
тип: "Свертка"
внизу: "данные"
сверху: "d0b"
параметр {
лр_мульт: 1
распад_мульт: 1
}
параметр {
лр_мульт: 2
распад_мульт: 0
}
convolution_param {
номер_выхода: 64
блокнот: 0
размер_ядра: 3
weight_filler {
тип: "ксавьер"
}
двигатель: КАФЕ
}
}

слой {
имя: "relu_d0b"
тип: "РеЛУ"
внизу: "d0b"
сверху: "d0b"
}
слой {
имя: "conv_d0b-c"
тип: "Свертка"
внизу: "d0b"
сверху: "d0c"
параметр {
лр_мульт: 1
распад_мульт: 1
}
параметр {
лр_мульт: 2
распад_мульт: 0
}
convolution_param {
номер_выхода: 64
блокнот: 0
размер_ядра: 3
weight_filler {
тип: "ксавьер"
}
двигатель: КАФЕ
}
}

слой {
имя: "relu_d0c"
тип: "РеЛУ"
внизу: "d0c"
сверху: "d0c"
}
слой {
имя: "pool_d0c-1a"
тип: "Пул"
внизу: "d0c"
сверху: "d1a"
pooling_param {
бассейн: МАКС.
размер_ядра: 2
шаг: 2
}
}
слой {
имя: "conv_d1a-b"
тип: "Свертка"
внизу: "d1a"
сверху: "d1b"
параметр {
лр_мульт: 1
распад_мульт: 1
}
параметр {
лр_мульт: 2
распад_мульт: 0
}
convolution_param {
номер_выхода: 128
блокнот: 0
размер_ядра: 3
weight_filler {
тип: "ксавьер"
}
двигатель: КАФЕ
}
}

слой {
имя: "relu_d1b"
тип: "РеЛУ"
внизу: "d1b"
сверху: "d1b"
}
слой {
имя: "conv_d1b-c"
тип: "Свертка"
внизу: "d1b"
сверху: "d1c"
параметр {
лр_мульт: 1
распад_мульт: 1
}
параметр {
лр_мульт: 2
распад_мульт: 0
}
convolution_param {
номер_выхода: 128
блокнот: 0
размер_ядра: 3
weight_filler {
тип: "ксавьер"
}
двигатель: КАФЕ
}
}

слой {
имя: "relu_d1c"
тип: "РеЛУ"
внизу: "d1c"
сверху: "d1c"
}
слой {
имя: "pool_d1c-2a"
тип: "Пул"
внизу: "d1c"
сверху: "d2a"
pooling_param {
бассейн: МАКС.
размер_ядра: 2
шаг: 2
}
}
слой {
имя: "conv_d2a-b"
тип: "Свертка"
внизу: "d2a"
сверху: "d2b"
параметр {
лр_мульт: 1
распад_мульт: 1
}
параметр {
лр_мульт: 2
распад_мульт: 0
}
convolution_param {
номер_выхода: 256
блокнот: 0
размер_ядра: 3
weight_filler {
тип: "ксавьер"
}
двигатель: КАФЕ
}
}

слой {
имя: "relu_d2b"
тип: "РеЛУ"
внизу: "d2b"
сверху: "d2b"
}
слой {
имя: "conv_d2b-c"
тип: "Свертка"
внизу: "d2b"
вверху: "d2c"
параметр {
лр_мульт: 1
распад_мульт: 1
}
параметр {
лр_мульт: 2
распад_мульт: 0
}
convolution_param {
номер_выхода: 256
блокнот: 0
размер_ядра: 3
weight_filler {
тип: "ксавьер"
}
двигатель: КАФЕ
}
}

слой {
имя: "relu_d2c"
тип: "РеЛУ"
внизу: "d2c"
вверху: "d2c"
}
слой {
имя: "pool_d2c-3a"
тип: "Пул"
внизу: "d2c"
сверху: "d3a"
pooling_param {
бассейн: МАКС.
размер_ядра: 2
шаг: 2
}
}
слой {
имя: "conv_d3a-b"
тип: "Свертка"
внизу: "d3a"
сверху: "d3b"
параметр {
лр_мульт: 1
распад_мульт: 1
}
параметр {
лр_мульт: 2
распад_мульт: 0
}
convolution_param {
номер_выхода: 512
блокнот: 0
размер_ядра: 3
weight_filler {
тип: "ксавьер"
}
двигатель: КАФЕ
}
}

слой {
имя: "relu_d3b"
тип: "РеЛУ"
внизу: "d3b"
сверху: "d3b"
}
слой {
имя: "conv_d3b-c"
тип: "Свертка"
внизу: "d3b"
сверху: "d3c"
параметр {
лр_мульт: 1
распад_мульт: 1
}
параметр {
лр_мульт: 2
распад_мульт: 0
}
convolution_param {
номер_выхода: 512
блокнот: 0
размер_ядра: 3
weight_filler {
тип: "ксавьер"
}
двигатель: КАФЕ
}
}

слой {
имя: "relu_d3c"
тип: "РеЛУ"
внизу: "d3c"
сверху: "d3c"
}

слой {
имя: "pool_d3c-4a"
тип: "Пул"
внизу: "d3c"
сверху: "d4a"
pooling_param {
бассейн: МАКС.
размер_ядра: 2
шаг: 2
}
}
слой {
имя: "conv_d4a-b"
тип: "Свертка"
внизу: "d4a"
сверху: "d4b"
параметр {
лр_мульт: 1
распад_мульт: 1
}
параметр {
лр_мульт: 2
распад_мульт: 0
}
convolution_param {
номер_выхода: 1024
блокнот: 0
размер_ядра: 3
weight_filler {
тип: "ксавьер"
}
двигатель: КАФЕ
}
}

слой {
имя: "relu_d4b"
тип: "РеЛУ"
внизу: "d4b"
сверху: "d4b"
}
слой {
имя: "conv_d4b-c"
тип: "Свертка"
внизу: "d4b"
сверху: "d4c"
параметр {
лр_мульт: 1
распад_мульт: 1
}
параметр {
лр_мульт: 2
распад_мульт: 0
}
convolution_param {
номер_выхода: 1024
блокнот: 0
размер_ядра: 3
weight_filler {
тип: "ксавьер"
}
двигатель: КАФЕ
}
}

слой {
имя: "relu_d4c"
тип: "РеЛУ"
внизу: "d4c"
сверху: "d4c"
}

слой {
имя: "upconv_d4c_u3a"
тип: "Деконволюция"
внизу: "d4c"
вверху: "u3a"
параметр {
лр_мульт: 1
распад_мульт: 1
}
параметр {
лр_мульт: 2
распад_мульт: 0
}
convolution_param {
номер_выхода: 512
блокнот: 0
размер_ядра: 2
шаг: 2
weight_filler {
тип: "ксавьер"
}
}
}

слой {
имя: "relu_u3a"
тип: "РеЛУ"
внизу: "u3a"
вверху: "u3a"
}
слой {
имя: "crop_d3c-d3cc"
тип: "Обрезка"
внизу: "d3c"
внизу: "u3a"
сверху: "d3cc"

}
слой {
имя: "concat_d3cc_u3a-b"
тип: "Конкат"
внизу: "u3a"
внизу: "d3cc"
вверху: "u3b"
}
слой {
имя: "conv_u3b-c"
тип: "Свертка"
внизу: "u3b"
вверху: "u3c"
параметр {
лр_мульт: 1
распад_мульт: 1
}
параметр {
лр_мульт: 2
распад_мульт: 0
}
convolution_param {
номер_выхода: 512
блокнот: 0
размер_ядра: 3
weight_filler {
тип: "ксавьер"
}
двигатель: КАФЕ
}
}
слой {
имя: "relu_u3c"
тип: "РеЛУ"
внизу: "u3c"
вверху: "u3c"
}
слой {
имя: "conv_u3c-d"
тип: "Свертка"
внизу: "u3c"
вверху: "u3d"
параметр {
лр_мульт: 1
распад_мульт: 1
}
параметр {
лр_мульт: 2
распад_мульт: 0
}
convolution_param {
номер_выхода: 512
блокнот: 0
размер_ядра: 3
weight_filler {
тип: "ксавьер"
}
двигатель: КАФЕ
}
}
слой {
имя: "relu_u3d"
тип: "РеЛУ"
внизу: "u3d"
вверху: "u3d"
}
слой {
имя: "upconv_u3d_u2a"
тип: "Деконволюция"
внизу: "u3d"
вверху: "u2a"
параметр {
лр_мульт: 1
распад_мульт: 1
}
параметр {
лр_мульт: 2
распад_мульт: 0
}
convolution_param {
номер_выхода: 256
блокнот: 0
размер_ядра: 2
шаг: 2
weight_filler {
тип: "ксавьер"
}
}
}
слой {
имя: "relu_u2a"
тип: "РеЛУ"
внизу: "u2a"
вверху: "u2a"
}
слой {
имя: "crop_d2c-d2cc"
тип: "Обрезка"
внизу: "d2c"
внизу: "u2a"
сверху: "d2cc"

}
слой {
имя: "concat_d2cc_u2a-b"
тип: "Конкат"
внизу: "u2a"
внизу: "d2cc"
вверху: "u2b"
}
слой {
имя: "conv_u2b-c"
тип: "Свертка"
внизу: "u2b"
вверху: "u2c"
параметр {
лр_мульт: 1
распад_мульт: 1
}
параметр {
лр_мульт: 2
распад_мульт: 0
}
convolution_param {
номер_выхода: 256
блокнот: 0
размер_ядра: 3
weight_filler {
тип: "ксавьер"
}
двигатель: КАФЕ
}
}
слой {
имя: "relu_u2c"
тип: "РеЛУ"
внизу: "u2c"
вверху: "u2c"
}
слой {
имя: "conv_u2c-d"
тип: "Свертка"
внизу: "u2c"
вверху: "u2d"
параметр {
лр_мульт: 1
распад_мульт: 1
}
параметр {
лр_мульт: 2
распад_мульт: 0
}
convolution_param {
номер_выхода: 256
блокнот: 0
размер_ядра: 3
weight_filler {
тип: "ксавьер"
}
двигатель: КАФЕ
}
}
слой {
имя: "relu_u2d"
тип: "РеЛУ"
внизу: "u2d"
вверху: "u2d"
}
слой {
имя: "upconv_u2d_u1a"
тип: "Деконволюция"
внизу: "u2d"
вверху: "u1a"
параметр {
лр_мульт: 1
распад_мульт: 1
}
параметр {
лр_мульт: 2
распад_мульт: 0
}
convolution_param {
номер_выхода: 128
блокнот: 0
размер_ядра: 2
шаг: 2
weight_filler {
тип: "ксавьер"
}
}
}
слой {
имя: "relu_u1a"
тип: "РеЛУ"
внизу: "у1а"
вверху: "u1a"
}
слой {
имя: "crop_d1c-d1cc"
тип: "Обрезка"
внизу: "d1c"
внизу: "у1а"
вверху: "d1cc"

}
слой {
имя: "concat_d1cc_u1a-b"
тип: "Конкат"
внизу: "у1а"
внизу: "d1cc"
вверху: "u1b"
}
слой {
имя: "conv_u1b-c"
тип: "Свертка"
внизу: "u1b"
вверху: "u1c"
параметр {
лр_мульт: 1
распад_мульт: 1
}
параметр {
лр_мульт: 2
распад_мульт: 0
}
convolution_param {
номер_выхода: 128
блокнот: 0
размер_ядра: 3
weight_filler {
тип: "ксавьер"
}
двигатель: КАФЕ
}
}
слой {
имя: "relu_u1c"
тип: "РеЛУ"
внизу: "u1c"
вверху: "u1c"
}
слой {
имя: "conv_u1c-d"
тип: "Свертка"
внизу: "u1c"
вверху: "u1d"
параметр {
лр_мульт: 1
распад_мульт: 1
}
параметр {
лр_мульт: 2
распад_мульт: 0
}
convolution_param {
номер_выхода: 128
блокнот: 0
размер_ядра: 3
weight_filler {
тип: "ксавьер"
}
двигатель: КАФЕ
}
}
слой {
имя: "relu_u1d"
тип: "РеЛУ"
внизу: "u1d"
вверху: "u1d"
}
слой {
имя: "upconv_u1d_u0a_NEW"
тип: "Деконволюция"
внизу: "u1d"
сверху: "u0a"
параметр {
лр_мульт: 1
распад_мульт: 1
}
параметр {
лр_мульт: 2
распад_мульт: 0
}
convolution_param {
номер_выхода: 64
блокнот: 0
размер_ядра: 2
шаг: 2
weight_filler {
тип: "ксавьер"
}
}
}
слой {
имя: "relu_u0a"
тип: "РеЛУ"
внизу: "u0a"
сверху: "u0a"
}
слой {
имя: "crop_d0c-d0cc"
тип: "Обрезка"
внизу: "d0c"
внизу: "u0a"
сверху: "d0cc"

}
слой {
имя: "concat_d0cc_u0a-b"
тип: "Конкат"
внизу: "u0a"
внизу: "d0cc"
вверху: "u0b"
}
слой {
имя: "conv_u0b-c_New"
тип: "Свертка"
внизу: "u0b"
сверху: "u0c"
параметр {
лр_мульт: 1
распад_мульт: 1
}
параметр {
лр_мульт: 2
распад_мульт: 0
}
convolution_param {
номер_выхода: 64
блокнот: 0
размер_ядра: 3
weight_filler {
тип: "ксавьер"
}
двигатель: КАФЕ
}
}
слой {
имя: "relu_u0c"
тип: "РеЛУ"
внизу: "u0c"
сверху: "u0c"
}
слой {
имя: "conv_u0c-d_New"
тип: "Свертка"
внизу: "u0c"
сверху: "u0d"
параметр {
лр_мульт: 1
распад_мульт: 1
}
параметр {
лр_мульт: 2
распад_мульт: 0
}
convolution_param {
номер_выхода: 64
блокнот: 0
размер_ядра: 3
weight_filler {
тип: "ксавьер"
}
двигатель: КАФЕ
}
}
слой {
имя: "relu_u0d"
тип: "РеЛУ"
внизу: "u0d"
сверху: "u0d"
}
слой {
имя: "conv_u0d-score_New"
тип: "Свертка"
внизу: "u0d"
наивысший балл"
параметр {
лр_мульт: 1
распад_мульт: 1
}
параметр {
лр_мульт: 2
распад_мульт: 0
}
convolution_param {
номер_выхода: 2
блокнот: 0
размер_ядра: 1
weight_filler {
тип: "ксавьер"
}
двигатель: КАФЕ
}
}

слой {
Название: "Проб"
тип: "Софтмакс"
внизу: "оценка"
сверху: "проблема"
}

Отличная работа @manutdzou
Спасибо за вашу поддержку. Не могли бы вы зафиксировать свою работу в этом репо?
У нас может быть папка model-zoo/manutdzou, в которой вы размещаете свой код в виде блокнота, а ваш prototxt и ссылки на baidu в виде текстового файла? Другие пользователи обязательно оценят. Если у вас есть документ о вашей работе, мы также можем добавить это.

Хорошо, если мой код и модель работают хорошо, я буду рад внести изменения в этот репозиторий!

发自网易邮箱大师
07.07.2017 17:33, Патрик Крист написал:

Отличная работа @manutdzou
Спасибо за вашу поддержку. Не могли бы вы зафиксировать свою работу в этом репо?
У нас может быть папка model-zoo/manutdzou, в которой вы размещаете свой код в виде блокнота, а ваш prototxt и ссылки на baidu в виде текстового файла? Другие пользователи обязательно оценят. Если у вас есть документ о вашей работе, мы также можем добавить это.


Вы получаете это, потому что вас упомянули.
Ответьте на это письмо напрямую, просмотрите его на GitHub или отключите ветку.

Была ли эта страница полезной?
0 / 5 - 0 рейтинги