Forum

Author Topic: Стабильный краш Фотоскана  (Read 10976 times)

Slava_Gr

  • Newbie
  • *
  • Posts: 37
    • View Profile
Стабильный краш Фотоскана
« on: January 12, 2014, 08:59:42 AM »
Уважаемые господа!

Столкнулся с ситуацией стабильного краша фотоскана на этапе классификации точек плотного облака.
Проект 1720 кадров 25 Мпикс, выравнивание с высоким качеством, плотное облако построено с очень высоким качеством. Запускаю классификацию точек с параметрами 15 град, 3 метра, 30 метров и через пару минут пулачаю стабильный крэш (сделано несколько попыток), в логе присутствует только запись о инициализации классификации, шкала процесса остается на 0.
Рабочая станция - 2xIntel Xeon E5 2970 v2, 256 Gb Ram, Nvidia Gforce 780, Nvidia Quadro K5000, Win 8.1 Prof. Photoscan v1 rel, Prof build 1795

В начале процесса ресурс монитор показывает занятость немногим более 80 Гиг ОЗУ, далее по ресурс монитору происходит занятие памяти до 160 Гиг и наступает краш, загрузка процессоров не превышает 10%.

В чем может быть проблема?

Alexey Pasumansky

  • Agisoft Technical Support
  • Hero Member
  • *****
  • Posts: 9894
    • View Profile
Re: Стабильный краш Фотоскана
« Reply #1 on: January 12, 2014, 11:46:59 AM »
Добрый день,

Уточните, пожалуйста, сколько точек в плотном облаке.
Best regards,
Alexey Pasumansky,
AgiSoft LLC

Slava_Gr

  • Newbie
  • *
  • Posts: 37
    • View Profile
Re: Стабильный краш Фотоскана
« Reply #2 on: January 12, 2014, 12:20:34 PM »
Добрый день,

Уточните, пожалуйста, сколько точек в плотном облаке.

если я правильно интерпретирую данные логфайла (см скр.шот), то это более 5 млрд точек



Alexey Pasumansky

  • Agisoft Technical Support
  • Hero Member
  • *****
  • Posts: 9894
    • View Profile
Re: Стабильный краш Фотоскана
« Reply #3 on: January 13, 2014, 12:35:46 PM »
Здравствуйте,

Спасибо за дополнительную информацию.

Похоже, что Вы достигли предела индексирования точек плотного облака для классификации - в настоящее время этот предел составляет около 2 млрд. точек.
В качестве текущего решения можем посоветовать разбивать проект на блоки, либо использовать Высокое качество построения плотного облака вместо Наивысшего. Последнее рекомендуется только в исключительных случаях, когда качество исходных снимков очень хорошее. Обычно это достигается только в случаех ближней фотограмметрии, а не аэрофото.

Эффективное разрешение геометрии модели при этом будет в два раза хуже эффективного разрешения исходных кадров.
Best regards,
Alexey Pasumansky,
AgiSoft LLC

Slava_Gr

  • Newbie
  • *
  • Posts: 37
    • View Profile
Re: Стабильный краш Фотоскана
« Reply #4 on: January 13, 2014, 04:21:18 PM »
Здравствуйте,

Спасибо за дополнительную информацию.

Похоже, что Вы достигли предела индексирования точек плотного облака для классификации - в настоящее время этот предел составляет около 2 млрд. точек.
В качестве текущего решения можем посоветовать разбивать проект на блоки, либо использовать Высокое качество построения плотного облака вместо Наивысшего. Последнее рекомендуется только в исключительных случаях, когда качество исходных снимков очень хорошее. Обычно это достигается только в случаех ближней фотограмметрии, а не аэрофото.

Эффективное разрешение геометрии модели при этом будет в два раза хуже эффективного разрешения исходных кадров.

Хм, грустно.
Тогда прошу пояснить следующее.
Мне нужна полная модель объекта, и этот не самый большой - есть объекты по 2500-3500 снимков, если я разобью объект на блоки, то смогу ли я потом собрать эти блоки в одну модель? Как это сделать?
Мне важно сохранить уровень разрешения, поэтому вариант снижения качества не очень подходит.
Ограничение в 2 млрд точек это текущее ограничение фотоскана или это вызвано какими то иными ограничениями?
Если это ограничение фотоскана, то предполагается ли его устранение и когда?

Slava_Gr

  • Newbie
  • *
  • Posts: 37
    • View Profile
Re: Стабильный краш Фотоскана
« Reply #5 on: January 13, 2014, 04:23:48 PM »
Здравствуйте,

Спасибо за дополнительную информацию.

Похоже, что Вы достигли предела индексирования точек плотного облака для классификации - в настоящее время этот предел составляет около 2 млрд. точек.
В качестве текущего решения можем посоветовать разбивать проект на блоки, либо использовать Высокое качество построения плотного облака вместо Наивысшего. Последнее рекомендуется только в исключительных случаях, когда качество исходных снимков очень хорошее. Обычно это достигается только в случаех ближней фотограмметрии, а не аэрофото.

Эффективное разрешение геометрии модели при этом будет в два раза хуже эффективного разрешения исходных кадров.

Вопрос вдогонку - если я побью объект на блоки, то потребуется ли новое выравнивание и новое построение плотного облака?
Уж очень не хочется повторять процесс в 2-3 суток продолжительностью.

И хотелось бы понять или прочесть где то какие есть ограничения по обработке массивов данных?

Slava_Gr

  • Newbie
  • *
  • Posts: 37
    • View Profile
Re: Стабильный краш Фотоскана
« Reply #6 on: January 13, 2014, 04:33:47 PM »
Здравствуйте,

Спасибо за дополнительную информацию.

Похоже, что Вы достигли предела индексирования точек плотного облака для классификации - в настоящее время этот предел составляет около 2 млрд. точек.
В качестве текущего решения можем посоветовать разбивать проект на блоки, либо использовать Высокое качество построения плотного облака вместо Наивысшего. Последнее рекомендуется только в исключительных случаях, когда качество исходных снимков очень хорошее. Обычно это достигается только в случаех ближней фотограмметрии, а не аэрофото.

Эффективное разрешение геометрии модели при этом будет в два раза хуже эффективного разрешения исходных кадров.

Кстати: чему верить - в логфайле количество точек 5 млрд, в окне плотного облака - 5 млрд, а вот в панели проекта количество точек плотного облака указано только 690 млн!

Alexey Pasumansky

  • Agisoft Technical Support
  • Hero Member
  • *****
  • Posts: 9894
    • View Profile
Re: Стабильный краш Фотоскана
« Reply #7 on: January 13, 2014, 04:38:34 PM »
Добрый вечер,

Ограничение вызвано текущими параметрами программы. Возможно, в следующих обновлениях этот порог будет увеличен. Пока что мы не сталкивались с аналогичными проблемами классификации плотного облака на основе Наивысшего качества, обычно для экспорта ЦМР большинству достаточно Среднего качества, и только иногда используют Высокое.

Что касается разбиения на блоки, то выравнять можно один раз все фотографии, а затем отстраивать плотное облако для отдельных фрагментов (внутри ограничивающего объёма), например, дублирую исходный блок нужное число раз и изменяя рабочую область. Чтобы рабочая область для каждого блока не приходилось задавать вручную, можно воспользоваться скриптом, который будет на основе оригинального блока (с выравниванием) создавать "сетку" из блоков.
Далее можно будет в режиме пакетной обработки отстроить плотное облако и модель для каждого блока, затем можно будет объединить все "сеточные" блоки в один (соответствующий пункт в меню "Обработка"). Возможно, правильнее будет отстроить и классифицировать плотное облако для мелких блоков, затем объединить, а уже потом отстроить модель на основе общего облака, чтобы избежать возможных проблем на стыках блоков.

Приложите, пожайлуйста, скриншот, на котором 690 миллионов точек вместо 5 миллиардов.
Best regards,
Alexey Pasumansky,
AgiSoft LLC

Slava_Gr

  • Newbie
  • *
  • Posts: 37
    • View Profile
Re: Стабильный краш Фотоскана
« Reply #8 on: January 13, 2014, 04:55:13 PM »

Приложите, пожайлуйста, скриншот, на котором 690 миллионов точек вместо 5 миллиардов.
Скрин сделал как раз с изображением плотного облака

Алексей, нельзя ли где то взять упомянутый Вами скрипт? Я пока не большой специалист в их написании.


Alexey Pasumansky

  • Agisoft Technical Support
  • Hero Member
  • *****
  • Posts: 9894
    • View Profile
Re: Стабильный краш Фотоскана
« Reply #9 on: January 13, 2014, 05:06:10 PM »
Спасибо большое за скриншот! Для числа точек в плотном облаке на панели проект то же самое ограничение (для отображения числа).

вот пример скрипта, который дублирует исходный (активный) блок нужное число раз, создавая сетку из рабочих областей. По умолчанию, сетка 3 х 3, но в качестве аргумента в окне запуска скрипта можно использовать другое натуральное число:


Code: [Select]
## Splits active chunk into user defined grid of sub-chunks (images are kept but bounding box is split
#argument - grid size

#compatibility PhotoScan Professional 1.0.0


import PhotoScan
import math, sys

doc = PhotoScan.app.document
chunk = doc.activeChunk

def dist(v0, v1):
"""
Calculate distance between two points defined as vectors
"""

distance = (v1 - v0)
return distance.norm() #**2

parts = 3   #parts of the model, 3 by default
if len(sys.argv) > 1:   
parts = int(sys.argv[1])
print("Script started...")

region = chunk.region
r_center = region.center
r_rotate = region.rot
r_size = region.size

r_vert = list()

limits =  [[+10e+10, -10e+10],[+10e+10, -10e+10],[+10e+10, -10e+10]] #x,y,z

if not chunk.transform:
chunk.transform = PhotoScan.Matrix().diag([1,1,1,1])
m = PhotoScan.Matrix().diag([1,1,1,1])
T = chunk.transform
else:
T = chunk.transform
if chunk.crs:
origin = T * PhotoScan.Vector( [0,0,0,1] )
origin.size = 3
m = chunk.crs.localframe(origin)
else:
m = PhotoScan.Matrix().diag([1,1,1,1])

m = m * T
s = math.sqrt(m[0,0] * m[0,0] + m[0,1] * m[0,1] + m[0,2] * m[0,2]) #scale factor
R = PhotoScan.Matrix( [[m[0,0], m[0,1], m[0,2]], [m[1,0], m[1,1], m[1,2]], [m[2,0], m[2,1], m[2,2]]])
R = R * (1. / s)

for i in range(8):   #finding bounding box corners and limits

r_vert.append(PhotoScan.Vector([r_size[0] * ((i & 1) - 0.5), 0.5 * r_size[1] * ((i & 2) - 1), 0.25 * r_size[2] * ((i & 4) - 2)]))
r_vert[i] = r_center + r_rotate.t() * r_vert[i]

r_vert[i].size = 4
r_vert[i].w = 1
v_t = m * r_vert[i]
v_t /= v_t.w
v_t.size = 3
r_vert[i] = v_t

if r_vert[i][0] <= limits[0][0]:
limits[0][0] = r_vert[i][0]
if r_vert[i][0] >= limits[0][1]:
limits[0][1] = r_vert[i][0]

if r_vert[i][1] <= limits[1][0]:
limits[1][0] = r_vert[i][1]
if r_vert[i][1] >= limits[1][1]:
limits[1][1] = r_vert[i][1]

if r_vert[i][2] <= limits[2][0]:
limits[2][0] = r_vert[i][2]
if r_vert[i][2] >= limits[2][1]:
limits[2][1] = r_vert[i][2]

x_size = abs(limits[0][1] - limits[0][0]) / s
y_size = abs(limits[1][1] - limits[1][0]) / s
z_size = abs(limits[2][1] - limits[2][0]) / s

x_scale = x_size / parts   
y_scale = y_size / parts   
z_scale = z_size

offset = PhotoScan.Vector([min(limits[0]), min(limits[1]), min(limits[2])])
offset.size = 4
offset.w = 1
offset = m.inv() * offset
offset.size = 3

for j in range(1, parts + 1):  #creating new chunks and adjusting bounding box
for i in range(1, parts + 1):
new_chunk = chunk.copy()
new_chunk.label = "Chunk "+ str(i)+ "\\" + str(j)
new_chunk.model = None
doc.chunks.add(new_chunk)

new_region = PhotoScan.Region()
new_rot = R.t()
new_center = PhotoScan.Vector([(i - 0.5) * x_scale, (j - 0.5) * y_scale, 0.5 * z_scale])
new_center = offset + new_rot * new_center
new_size = PhotoScan.Vector([x_scale, y_scale, z_scale])
new_region.size = new_size
new_region.center = new_center
new_region.rot = new_rot

new_chunk.region = new_region

print("Script finished...")
PhotoScan.app.update()
Best regards,
Alexey Pasumansky,
AgiSoft LLC

Slava_Gr

  • Newbie
  • *
  • Posts: 37
    • View Profile
Re: Стабильный краш Фотоскана
« Reply #10 on: January 13, 2014, 05:23:45 PM »
Спасибо большое за скриншот! Для числа точек в плотном облаке на панели проект то же самое ограничение (для отображения числа).

Не понял, т.е. в окне проекта отображается не истинное число точек плотного облака, а какая то другая цифра?

Alexey Pasumansky

  • Agisoft Technical Support
  • Hero Member
  • *****
  • Posts: 9894
    • View Profile
Re: Стабильный краш Фотоскана
« Reply #11 on: January 13, 2014, 05:38:40 PM »
Истинное число точек (N) отображается в окне модели - около пяти миллиардов.
В окне проекта это число взято по модулю 2^30, т.к. произошло переполнение переменной, отвечающей за визуализацию на панели Проект (там, где 700 миллионов).
Best regards,
Alexey Pasumansky,
AgiSoft LLC

Slava_Gr

  • Newbie
  • *
  • Posts: 37
    • View Profile
Re: Стабильный краш Фотоскана
« Reply #12 on: January 13, 2014, 06:07:15 PM »
Спасибо большое за скриншот! Для числа точек в плотном облаке на панели проект то же самое ограничение (для отображения числа).

вот пример скрипта, который дублирует исходный (активный) блок нужное число раз, создавая сетку из рабочих областей. По умолчанию, сетка 3 х 3, но в качестве аргумента в окне запуска скрипта можно использовать другое натуральное число:


Алексей, подскажите пожалуйста, если я захочу разбить проект не на 9 блоков, а на 4, то я должен буду казать в качестве аргумента 2 или 4?

Alexey Pasumansky

  • Agisoft Technical Support
  • Hero Member
  • *****
  • Posts: 9894
    • View Profile
Re: Стабильный краш Фотоскана
« Reply #13 on: January 13, 2014, 06:10:10 PM »
В качестве аргумента нужно будет передать 2 - это задаёт деление по каждой из сторон, т.е. 2 х 2.
Best regards,
Alexey Pasumansky,
AgiSoft LLC

Slava_Gr

  • Newbie
  • *
  • Posts: 37
    • View Profile
Re: Стабильный краш Фотоскана
« Reply #14 on: January 13, 2014, 06:12:16 PM »
В качестве аргумента нужно будет передать 2 - это задаёт деление по каждой из сторон, т.е. 2 х 2.
Спасибо!
Будем пробовать.

Еще раз уточню алгоритм для себя:
1. Разбили проект на блоки (де факто там, как я увидел происходит перемещение рабочей области?)
2. Построили плотное облако для каждой области (блока)
3. Провели классификацию точек в каждом блоке
4. Объединили классифицированные облака в одно облако
5. Построили модель для объединенного облака

Так?
« Last Edit: January 13, 2014, 06:15:55 PM by Slava_Gr »