Exercício – Modificar os aplicativos de exemplo do DeepStream

Concluído

Agora que você já executou um aplicativo de exemplo do DeepStream, modifique os exemplos para obter um comportamento diferente.

  1. Vamos começar exibindo a estrutura da configuração do exemplo em um editor de texto. Faremos uma cópia da configuração do exemplo usada na seção anterior e vamos ver algumas configurações que podemos alterar. Execute estes comandos:

    cd /opt/nvidia/deepstream/deepstream-6.0/samples/configs/deepstream-app
    sudo cp source4_1080p_dec_infer-resnet_tracker_sgie_tiled_display_int8.txt source4_1080p_dec_infer-resnet_tracker_sgie_tiled_display_int8_modified.txt
    sudo vi source4_1080p_dec_infer-resnet_tracker_sgie_tiled_display_int8_modified.txt
    

    Observação

    Aqui estão algumas dicas para usar o vi ao editar o arquivo source4_1080p_dec_infer-resnet_tracker_sgie_tiled_display_int8_modified.txt:

    • Pressione a tecla i para colocar o editor no modo Inserir. Assim, você poderá fazer alterações.
    • Pressione Esc para sair do modo Inserir e retornar ao modo Normal.
    • Para salvar e encerrar, digite :x e pressione Enter.
    • Salve o arquivo, digite :w e pressione Enter.
    • Para fechar, digite :quit e pressione Enter.
  2. Observe as várias seções de configuração e como elas contribuem para o aplicativo em geral. Essas seções são demarcadas com colchetes ([]). Por exemplo, [application], [tiled-display], [source0] e [sink0]. Essas partes são explicadas em detalhes na seção Grupos de Configuração da documentação do SDK do DeepStream.

    Por exemplo, para alterar a entrada para usar um fluxo de vídeo RTSP em vez de um arquivo de vídeo local, altere [tiled-display] e [source0]:

    [tiled-display]
    enable=1
    rows=2
    columns=2
    width=1280
    height=720
    gpu-id=0
    #(0): nvbuf-mem-default - Default memory allocated, specific to particular platform
    #(1): nvbuf-mem-cuda-pinned - Allocate Pinned/Host cuda memory, applicable for Tesla
    #(2): nvbuf-mem-cuda-device - Allocate Device cuda memory, applicable for Tesla
    #(3): nvbuf-mem-cuda-unified - Allocate Unified cuda memory, applicable for Tesla
    #(4): nvbuf-mem-surface-array - Allocate Surface Array memory, applicable for Jetson
    nvbuf-memory-type=0
    
    [source0]
    enable=1
    #Type - 1=CameraV4L2 2=URI 3=MultiURI 4=RTSP
    type=3
    uri=file://../../streams/sample_1080p_h264.mp4
    num-sources=4
    #drop-frame-interval=2
    gpu-id=0
    # (0): memtype_device   - Memory type Device
    # (1): memtype_pinned   - Memory type Host Pinned
    # (2): memtype_unified  - Memory type Unified
    cudadec-memtype=0
    

    Depois, faça as alterações a seguir. (Observe as alterações nos campos rows, columns, type, uri e num-sources).

    [tiled-display]
    enable=1
    rows=1
    columns=1
    width=1280
    height=720
    gpu-id=0
    #(0): nvbuf-mem-default - Default memory allocated, specific to particular platform
    #(1): nvbuf-mem-cuda-pinned - Allocate Pinned/Host cuda memory, applicable for Tesla
    #(2): nvbuf-mem-cuda-device - Allocate Device cuda memory, applicable for Tesla
    #(3): nvbuf-mem-cuda-unified - Allocate Unified cuda memory, applicable for Tesla
    #(4): nvbuf-mem-surface-array - Allocate Surface Array memory, applicable for Jetson
    nvbuf-memory-type=0
    
    [source0]
    enable=1
    #Type - 1=CameraV4L2 2=URI 3=MultiURI 4=RTSP
    type=4
    uri=rtsp://wowzaec2demo.streamlock.net/vod/mp4:BigBuckBunny_115k.mov
    num-sources=1
    #drop-frame-interval=2
    gpu-id=0
    # (0): memtype_device   - Memory type Device
    # (1): memtype_pinned   - Memory type Host Pinned
    # (2): memtype_unified  - Memory type Unified
    cudadec-memtype=0
    
    
  3. Execute a configuração alterada usando estes comandos:

    cd /opt/nvidia/deepstream/deepstream-6.0/samples/configs/deepstream-app
    deepstream-app -c source4_1080p_dec_infer-resnet_tracker_sgie_tiled_display_int8_modified.txt
    

Experimente fazer isto

Observe as diversas configurações do exemplo incluídas no SDK do DeepStream. Como você pode alterar esses exemplos para criar um sistema de segurança doméstico inteligente? Suponha que você tenha várias câmeras RTSP que atendem feeds por meio de pontos de extremidade RTSP exclusivos. Você poderia criar um aplicativo do DeepStream que use esses fluxos de vídeo ao vivo como entrada e aplicar inferência para detectar pessoas e veículos?

Próximas etapas

Para concluir este módulo e ganhar seu troféu, faça a última verificação de conhecimentos.