BR112020006869A2 - processador de sinal de imagem para processamento de imagens - Google Patents

processador de sinal de imagem para processamento de imagens Download PDF

Info

Publication number
BR112020006869A2
BR112020006869A2 BR112020006869-1A BR112020006869A BR112020006869A2 BR 112020006869 A2 BR112020006869 A2 BR 112020006869A2 BR 112020006869 A BR112020006869 A BR 112020006869A BR 112020006869 A2 BR112020006869 A2 BR 112020006869A2
Authority
BR
Brazil
Prior art keywords
image data
patch
data
raw image
stride
Prior art date
Application number
BR112020006869-1A
Other languages
English (en)
Inventor
Hau Hwang
Tushar Sinha PANKAJ
Vishal Gupta
Jisoo Lee
Original Assignee
Qualcomm Incorporated
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Qualcomm Incorporated filed Critical Qualcomm Incorporated
Publication of BR112020006869A2 publication Critical patent/BR112020006869A2/pt

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T3/00Geometric image transformations in the plane of the image
    • G06T3/40Scaling of whole images or parts thereof, e.g. expanding or contracting
    • G06T3/4046Scaling of whole images or parts thereof, e.g. expanding or contracting using neural networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/084Backpropagation, e.g. using gradient descent
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T3/00Geometric image transformations in the plane of the image
    • G06T3/40Scaling of whole images or parts thereof, e.g. expanding or contracting
    • G06T3/4015Image demosaicing, e.g. colour filter arrays [CFA] or Bayer patterns
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/048Activation functions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2200/00Indexing scheme for image data processing or generation, in general
    • G06T2200/28Indexing scheme for image data processing or generation, in general involving image processing hardware

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Artificial Intelligence (AREA)
  • Evolutionary Computation (AREA)
  • Computational Linguistics (AREA)
  • Molecular Biology (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Health & Medical Sciences (AREA)
  • Data Mining & Analysis (AREA)
  • General Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Image Analysis (AREA)
  • Image Processing (AREA)
  • Ultra Sonic Daignosis Equipment (AREA)
  • Closed-Circuit Television Systems (AREA)

Abstract

Técnicas e sistemas são fornecidos para processar dados de imagem com o uso de uma ou mais redes neurais. Por exemplo, um patch de dados de imagem brutos pode ser obtido. O patch pode incluir um subconjunto de pixels de um quadro de dados de imagem brutos, e o quadro pode ser capturado com o uso de um ou mais sensores de imagem. O patch de dados de imagem brutos inclui um único componente de cor para cada pixel do subconjunto de pixels. Pelo menos uma rede neural pode ser aplicada ao patch de dados de imagem brutos para determinar uma pluralidade de valores de componente de cor para um ou mais pixels do subconjunto de pixels. Um patch de dados de imagem de saída pode, então ser gerado com base na aplicação da pelo menos uma rede neural ao patch de dados de imagem brutos. O patch de dados de imagem de saída inclui um subconjunto de pixels de um quadro de dados de imagem de saída, e também inclui a pluralidade de valores de componente de cor para um ou mais pixels do subconjunto de pixels do quadro de dados de imagem de saída. A aplicação da pelo menos uma rede neural faz com que o patch de dados de imagem de saída inclua menos pixels que o patch de dados de imagem brutos. Múltiplos patches do quadro podem ser processados por pelo menos uma rede neural a fim de gerar uma imagem de saída final. Em alguns casos, os patches do quadro podem ser sobrepostos, de modo que a imagem de saída final contenha uma imagem completa.

Description

“PROCESSADOR DE SINAL DE IMAGEM PARA PROCESSAMENTO DE IMAGENS” REFERÊNCIA CRUZADA A PEDIDOS RELACIONADOS
[0001] Este pedido reivindica o benefício do pedido de patente provisório nº U.S. 62/571.182, depositado em 11 de outubro de 2017, que está aqui incorporada a título de referência, em sua totalidade e para todos os propósitos.
CAMPO
[0002] A presente revelação se refere, de modo geral, a processamento de imagem e, mais especificamente, a técnicas e sistemas para realizar processamento de imagem com o uso de um processador de sinal de imagem.
BREVE SUMÁRIO
[0003] Em alguns exemplos, técnicas e sistemas são descritos para realizar processamento de imagem. Processadores de sinal de imagem (ISPs) tradicionais têm blocos discretos separados que abordam as várias partições do espaço de problema baseado em imagem. Por exemplo, um ISP típico tem blocos funcionais discretos em que, cada um, aplica uma operação específica aos dados de sensor de câmera brutos para criar uma imagem de saída final. Tais blocos funcionais podem incluir blocos para remoção de mosaico, redução de ruído (remoção de ruído), processamento de cor, mapeamento de tom, entre muitas outras funções de processamento de imagem. Cada um desses blocos funcionais contém muitos parâmetros ajustados manualmente, resultando em um ISP com um grande número de parâmetros ajustados manualmente (por exemplo, mais de
10.000) que precisam ser reajustados de acordo com a preferência de ajuste de cada cliente. Tal ajuste manual é muito demorado e dispendioso.
[0004] É descrito no presente documento um ISP de aprendizado de máquina que usa sistemas e métodos de aprendizado de máquina para derivar o mapeamento de dados de imagem brutos capturados por um ou mais sensores de imagem para uma imagem de saída final. Em alguns exemplos, dados de imagem brutos podem incluir uma única cor ou um valor de escala de cinza para cada localização de pixel. Por exemplo, um sensor com uma matriz de filtro de cor Bayer padrão (ou outra matriz de filtro de cor adequada) com um dos filtros vermelho, verde ou azul em cada localização de pixel pode ser usado para capturar dados de imagem brutos com uma única cor por localização de pixel. Em alguns casos, um dispositivo pode incluir múltiplos sensores de imagem para capturar os dados de imagem brutos processados pelo ISP de aprendizado de máquina. A imagem de saída final pode conter dados de imagem processados derivados dos dados de imagem brutos. O ISP de aprendizado de máquina pode usar uma rede neural de filtros convolucionais (por exemplo, redes neurais convolucionais (CNNs)) para a tarefa ISP. A rede neural do ISP de aprendizado de máquina pode incluir vários blocos de filtros convolucionais similares ou repetitivos com um alto número de canais (por exemplo, uma ordem de magnitude maior que o número de canais em uma imagem RGB ou YCbCr). As funções de ISP de aprendizado de máquina como uma única unidade, em vez de ter blocos funcionais individuais que estão presentes em um ISP tradicional.
[0005] A rede neural do ISP pode incluir uma camada de entrada, múltiplas camadas ocultas e uma camada de saída. A camada de entrada inclui os dados de imagem brutos de um ou mais sensores de imagem. As camadas ocultas podem incluir filtros convolucionais que podem ser aplicados aos dados de entrada, ou às saídas de camadas ocultas anteriores para gerar mapas de recurso. Os filtros das camadas ocultas podem incluir pesos usados para indicar uma importância dos nós dos filtros. Em alguns casos, a rede neural pode ter uma série de muitas camadas ocultas, com camadas iniciais determinando características de nível simples e baixo dos dados de entrada de imagem, e camadas posteriores construindo uma hierarquia de características mais complexas e abstratas. A rede neural pode, então gerar a imagem de saída final (que compõe a camada de saída) com base nos recursos de alto nível determinados.
[0006] De acordo com pelo menos um exemplo, é fornecido um método de processamento de dados de imagem com o uso de uma ou mais redes neurais. O método inclui obter um patch de dados de imagem brutos. O patch de dados de imagem brutos inclui um subconjunto de pixels de um quadro de dados de imagem brutos que é do com o uso de um ou mais sensores de imagem. O patch de dados de imagem brutos inclui um único componente de cor para cada pixel do subconjunto de pixels. O método inclui adicionalmente aplicar pelo menos uma rede neural ao patch de dados de imagem brutos para determinar uma pluralidade de valores de componente de cor para um ou mais pixels do subconjunto de pixels. O método inclui adicionalmente gerar um patch de dados de imagem de saída com base na aplicação da pelo menos uma rede neural ao patch de dados de imagem brutos. O patch de dados de imagem de saída inclui um subconjunto de pixels de um quadro de dados de imagem de saída. O patch de dados de imagem de saída também inclui a pluralidade de valores de componente de cor para um ou mais pixels do subconjunto de pixels do quadro de dados de imagem de saída. A aplicação da pelo menos uma rede neural faz com que o patch de dados de imagem de saída inclua menos pixels que o patch de dados de imagem brutos.
[0007] Em outro exemplo, é fornecido um aparelho para processar dados de imagem com o uso de uma ou mais redes neurais que inclui uma memória configurada para armazenar dados de vídeo e um processador. O processador é configurado para e pode obter um patch de dados de imagem brutos. O patch de dados de imagem brutos 30 inclui um subconjunto de pixels de um quadro de dados de imagem brutos que é do com o uso de um ou mais sensores de imagem. O patch de dados de imagem brutos inclui um único componente de cor para cada pixel do subconjunto de pixels. O processador é adicionalmente configurado para e pode aplicar pelo menos uma rede neural ao patch de dados de imagem brutos para determinar uma pluralidade de valores de componente de cor para um ou mais pixels do subconjunto de pixels. O processador é adicionalmente configurado para e pode gerar um patch de dados de imagem de saída com base na aplicação da pelo menos uma rede neural ao patch de dados de imagem brutos. O patch de dados de imagem de saída inclui um subconjunto de pixels de um quadro de dados de imagem de saída. O patch de dados de imagem de saída também inclui a pluralidade de valores de componente de cor para um ou mais pixels do subconjunto de pixels do quadro de dados de imagem de saída. A aplicação da pelo menos uma rede neural faz com que o patch de dados de imagem de saída inclua menos pixels que o patch de dados de imagem brutos.
[0008] Em outro exemplo, é fornecido um meio legível por computador não transitório que tem armazenado no mesmo instruções que, quando executadas por um ou mais processadores, fazem com que o um ou mais processadores: obtenham um patch de dados de imagem brutos, sendo que o patch de dados de imagem brutos inclui um subconjunto de pixels de um quadro de dados de imagem brutos capturado com o uso de um ou mais sensores de imagem, em que o patch de dados de imagem brutos inclui um único componente de cor para cada pixel do subconjunto de pixels; apliquem pelo menos uma rede neural ao patch de dados de imagem brutos para determinar uma pluralidade de valores de componente de cor para um ou mais pixels do subconjunto de pixels; e gerem um patch de dados de imagem de saída com base na aplicação da pelo menos uma rede neural ao patch de dados de imagem brutos, sendo que o patch de dados de imagem de saída inclui um subconjunto de pixels de um quadro de dados de imagem de saída. O patch de dados de imagem de saída também inclui a pluralidade de valores de componente de cor para um ou mais pixels do subconjunto de pixels do quadro de dados de imagem de saída. A aplicação da pelo menos uma rede neural faz com que o patch de dados de imagem de saída inclua menos pixels que o patch de dados de imagem brutos.
[0009] Em outro exemplo, é fornecido um aparelho para processar dados de imagem com o uso de uma ou mais redes neurais. O aparelho inclui meios para obter um patch de dados de imagem brutos. O patch de dados de imagem brutos inclui um subconjunto de pixels de um quadro de dados de imagem brutos capturados com o uso de um ou mais sensores de imagem. O patch de dados de imagem brutos inclui um único componente de cor para cada pixel do subconjunto de pixels. O aparelho inclui adicionalmente meios para aplicar pelo menos uma rede neural ao patch de dados de imagem brutos para determinar uma pluralidade de valores de componente de cor para um ou mais pixels do subconjunto de pixels. O aparelho inclui adicionalmente meios para gerar um patch de dados de imagem de saída com base na aplicação da pelo menos uma rede neural ao patch de dados de imagem brutos. O patch de dados de imagem de saída inclui um subconjunto de pixels de um quadro de dados de imagem de saída. O patch de dados de imagem de saída também inclui a pluralidade de valores de componente de cor para um ou mais pixels do subconjunto de pixels do quadro de dados de imagem de saída. A aplicação da pelo menos uma rede neural faz com que o patch de dados de imagem de saída inclua menos pixels que o patch de dados de imagem brutos.
[0010] Em alguns aspectos, o quadro de dados de imagem brutos inclui dados de imagem do um ou mais sensores de imagem filtrados por uma matriz de filtro de cor. Em alguns exemplos, a matriz de filtro de cor inclui uma matriz de filtro de cor Bayer.
[0011] Em alguns aspectos, a aplicação da pelo menos uma rede neural ao patch de dados de imagem brutos inclui aplicar um ou mais filtros convolucionais com stride ao patch de dados de imagem brutos para gerar dados de resolução reduzida representativos do patch de dados de imagem brutos. Por exemplo, um filtro convolucional com stride pode incluir um filtro convolucional com um stride maior que um. Cada filtro convolucional com stride do um ou mais filtros convolucionais com stride inclui uma matriz de pesos.
[0012] Em alguns aspectos, cada filtro convolucional com stride do um ou mais filtros convolucionais com stride inclui uma pluralidade de canais. Cada canal da pluralidade de canais inclui uma matriz de pesos diferente.
[0013] Em alguns aspectos, o um ou mais filtros convolucionais com stride incluem uma pluralidade de filtros convolucionais com stride. Em alguns exemplos, a pluralidade de filtros convolucionais com stride inclui: um primeiro filtro convolucional com stride que tem uma primeira matriz de pesos, em que a aplicação do primeiro filtro convolucional com stride ao patch de dados de imagem brutos gera um primeiro conjunto de dados ponderados representativos do patch de dados de imagem brutos, sendo que o primeiro conjunto de dados ponderados tem uma primeira resolução; e um segundo filtro convolucional com stride que tem uma segunda matriz de pesos, em que a aplicação do segundo filtro convolucional com stride gera um segundo conjunto de dados ponderados representativos do patch de dados de imagem brutos, sendo que o segundo conjunto de dados ponderados tem uma segunda resolução que é de uma resolução menor que a primeira resolução.
[0014] Em alguns aspectos, os métodos, aparelhos e o meio legível por computador descritos acima compreendem adicionalmente: escalonar ascendentemente o segundo conjunto de dados ponderados que tem a segunda resolução para a primeira resolução; e gerar dados ponderados combinados representativos do patch de dados de imagem brutos combinando-se o segundo conjunto ascendentemente escalonados de dados ponderados com o primeiro conjunto de dados ponderados que tem a primeira resolução.
[0015] Em alguns aspectos, os métodos, aparelhos e o meio legível por computador descritos acima compreendem adicionalmente aplicar um ou mais filtros convolucionais aos dados ponderados combinados para gerar dados de recurso representativos do patch de dados de imagem brutos. Cada filtro convolucional do um ou mais filtros convolucionais inclui uma matriz de pesos.
[0016] Em alguns aspectos, os métodos, aparelhos e o meio legível por computador descritos acima compreendem adicionalmente: escalonar ascendentemente os dados de recurso para uma resolução completa, e gerar dados de recurso combinados representativos do patch de dados de imagem brutos combinando-se os dados de recurso ascendentemente —“escalonados com dados de recurso de resolução completa, sendo que os dados de recurso de resolução completa são gerados aplicando-se um filtro convolucional a uma versão de resolução completa do patch de dados de imagem brutos.
[0017] Em alguns aspectos, a geração do patch de dados de imagem de saída inclui aplicar um filtro convolucional final aos dados de recurso ou aos dados de recurso combinados para gerar os dados de imagem de saída.
[0018] Em alguns aspectos, os métodos,
aparelhos e o meio legível por computador descritos acima compreendem adicionalmente obter dados adicionais para aumentar o patch de dados de imagem brutos obtidos, sendo que os dados adicionais incluem pelo menos um ou mais dos dados de tom, dados de distância radial ou dados de ganho de balanço de branco automático (AWB).
[0019] Em alguns aspectos, a pluralidade de componentes de cor por pixel incluem um componente de cor vermelha por pixel, um componente de cor verde por pixel e um componente de cor azul por pixel.
[0020] Em alguns aspectos, a pluralidade de componentes de cor por pixel inclui um componente de cor luma por pixel, um primeiro componente de cor croma por pixel e um segundo componente de cor croma por pixel.
[0021] Em alguns aspectos, a pelo menos uma rede neural realiza conjuntamente múltiplas funções de processador de sinal de imagem (ISP).
[0022] Em alguns aspectos, a pelo menos uma rede neural inclui pelo menos uma rede neural convolucional (CNN).
[0023] Em alguns aspectos, a pelo menos uma rede neural inclui uma pluralidade de camadas. Em alguns aspectos, a pluralidade de camadas é conectada a uma representação dimensional alta do patch de dados de imagem brutos.
[0024] Este sumário não se destina a identificar recursos principais ou essenciais do assunto reivindicado, nem se destina a ser usado isoladamente para determinar o escopo do assunto reivindicado. O assunto deve ser entendido com referência às porções adequadas de todo o relatório descritivo desta patente, qualquer um ou todos os desenhos e cada reivindicação.
[0025] O que foi anteriormente mencionado, juntamente com outros recursos e modalidades, se tornará mais evidente mediante a referência ao relatório descritivo, reivindicações e desenhos anexos a seguir.
BREVE DESCRIÇÃO DOS DESENHOS
[0026] O arquivo de patente ou pedido contém pelo menos um desenho executado em cores. Cópias desta patente ou publicação de pedido de patente com desenho (ou desenhos) colorido serão fornecidas pelo Escritório mediante solicitação e o pagamento da taxa necessária.
[0027] Modalidades ilustrativas da presente invenção são descritas em detalhes abaixo com referência às seguintes Figuras de desenho:
[0028] A Figura 1 é um diagrama de blocos que ilustra um exemplo de um processador de sinal de imagem, de acordo com alguns exemplos;
[0029] A Figura 2 é um diagrama de blocos que ilustra um exemplo de um processador de sinal de imagem de aprendizado de máquina, de acordo com alguns exemplos;
[0030] A Figura 3 é um diagrama de blocos que ilustra um exemplo de uma rede neural, de acordo com alguns exemplos;
[0031] A Figura 4 é um diagrama que ilustra um exemplo de treinamento de um sistema de rede neural de um processador de sinal de imagem de aprendizado de máquina, de acordo com alguns exemplos;
[0032] A Figura 5 é um diagrama de blocos que ilustra um exemplo de uma rede neural convolucional, de acordo com alguns exemplos;
[0033] A Figura 6 é um diagrama que ilustra um exemplo de uma rede neural convolucional do processador de sinal de imagem de aprendizado de máquina, de acordo com alguns exemplos;
[0034] A Figura 7 é um diagrama que ilustra um exemplo de uma entrada multidimensional para a rede neural do processador de sinal de imagem de aprendizado de máquina, de acordo com alguns exemplos;
[0035] A Figura 8 é um diagrama que ilustra um exemplo de filtros convolucionais multicanais de uma rede neural, de acordo com alguns exemplos;
[0036] A Figura 9 é um diagrama que ilustra um exemplo de um patch de imagem bruto, de acordo com alguns exemplos;
[0037] A Figura 10 é um diagrama que ilustra um exemplo de um filtro 2x2 de uma rede neural convolucional com stride de uma camada oculta na rede neural do processador de sinal de imagem de aprendizado de máquina, de acordo com alguns exemplos;
[0038] A Figura 11A a Figura 11E são diagramas que ilustram um exemplo de aplicação do filtro 2x2 da rede neural convolucional com stride ao patch de imagem, de acordo com alguns exemplos;
[0039] A Figura 12A é um diagrama que ilustra um exemplo de uma saída de imagem processada a partir do processador de sinal de imagem de aprendizado de máquina, de acordo com alguns exemplos;
[0040] A Figura 12B é um diagrama que ilustra outro exemplo de uma saída de imagem processada a partir do processador de sinal de imagem de aprendizado de máquina, de acordo com alguns exemplos;
[0041] A Figura 12C é um diagrama que ilustra outro exemplo de uma saída de imagem processada a partir do processador de sinal de imagem de aprendizado de máquina, de acordo com alguns exemplos; e
[0042] A Figura 13 é um fluxograma que ilustra um exemplo de um processo para processar dados de imagem com o uso de uma ou mais redes neurais, de acordo com algumas modalidades.
DESCRIÇÃO DETALHADA
[0043] Determinados aspectos e modalidades desta revelação são fornecidos abaixo. Alguns desses aspectos e modalidades podem ser aplicados independentemente e alguns deles podem ser aplicados em combinação conforme pode ser evidente para aqueles versados na técnica. Na descrição a seguir, para os propósitos de explicação, detalhes específicos são apresentados a fim de fornecer um entendimento completo de modalidades da invenção. Entretanto, será evidente que várias modalidades podem ser praticadas sem esses detalhes específicos. As Figuras e a descrição não se destinam a ser restritivas.
[0044] A descrição subsequente fornece apenas modalidades exemplificativas, e não se destina a limitar o escopo, aplicabilidade ou configuração da revelação. Em vez disso, a descrição subsequente das modalidades exemplificativas irá dotar aqueles versados na técnica de uma descrição capacitante para implementar uma modalidade exemplificativa. Deve-se compreender que várias alterações podem ser realizadas na função e disposição de elementos sem que se afaste do espírito e escopo da invenção conforme apresentada nas reivindicações anexas.
[0045] Detalhes específicos são fornecidos na descrição a seguir para fornecer um entendimento completo das modalidades. Entretanto, será entendido por aqueles de habilidade comum na técnica que as modalidades podem ser praticadas sem esses detalhes específicos. Por exemplo, circuitos, sistemas, redes, processos e outros componentes podem ser mostrados como componentes sob a forma de diagrama de blocos a fim de não obscurecer as modalidades com detalhes desnecessários. Em outros casos, circuitos, processos, algoritmos, estruturas e técnicas bem conhecidos podem ser mostrados sem detalhes desnecessários a fim de evitar o obscurecimento das modalidades.
[0046] Além disso, nota-se que modalidades individuais podem ser descritas como um processo que é mostrado como um fluxograma, um diagrama de fluxo, um diagrama de fluxo de dados, um diagrama estrutural ou um diagrama de blocos. Embora um fluxograma possa descrever as operações como um processo sequencial, muitas das operações podem ser realizadas em paralelo ou simultaneamente. Além disso, a ordem das operações pode ser reorganizada. Um processo é terminado quando suas operações são concluídas, porém pode haver etapas adicionais não incluídas em uma Figura. Um processo pode corresponder a um método, uma função, um procedimento, uma sub-rotina, um subprograma, etc. Quando um processo corresponde a uma função, sua terminação pode corresponder a um retorno da função para a função de chamada ou para a função principal.
[0047] O termo “meio legível por computador”
inclui, porém sem limitação, dispositivos de armazenamento portáteis ou não portáteis, dispositivos de armazenamento óptico e vários outros meios capazes de armazenar, conter ou portar instruções e/ou dados. Um meio legível por computador pode incluir um meio não transitório no qual dados podem ser armazenados e que não inclui ondas portadoras e/ou sinais eletrônicos transitórios que se propagam de modo sem fio ou através de conexões com fio. Exemplos de um meio não transitório podem incluir, porém sem limitação, um disco ou fita magnética, mídia de armazenamento óptico, tal como disco compacto (CD) ou disco versátil digital (DVD), memória flash, memória ou dispositivos de memória. Um meio legível por computador pode ter armazenado no mesmo código e/ou instruções executáveis por máquina que podem representar um procedimento, uma função, um subprograma, um programa, uma rotina, uma sub-rotina, um módulo, um pacote de software, uma classe, ou qualquer combinação de instruções, estruturas de dados ou instruções de programa. Um segmento de código pode ser acoplado a outro segmento de código ou um circuito de hardware ao passar e/ou receber informações, dados, argumentos, parâmetros ou conteúdos de memória. Informações, argumentos, parâmetros, dados, etc. podem ser passados, encaminhados ou transmitidos através de quaisquer meios adequados incluindo compartilhamento de memória, passagem de mensagem, passagem de token, transmissão de rede ou similares.
[0048] Além disso, as modalidades podem ser implementadas por hardware, software, firmware, middleware, microcódigo, linguagens de descrição de hardware Ou qualquer combinação dos mesmos. Quando implementado em software, firmware, middleware ou microcódigo, o código de programa ou segmentos de código para realizar as tarefas necessárias (por exemplo, um produto de programa de computador) podem ser armazenados em um meio legível por computador ou legível por máquina. Um processador (ou processadores) pode realizar as tarefas necessárias.
[0049] O processamento de sinal de imagem é necessário para processar dados de imagem brutos capturados por um sensor de imagem para produzir uma imagem de saída que pode ser usada para vários propósitos, tais como para renderização e exibição, codificação de vídeo, visão de computador, armazenamento, entre outros usos. Um processador de sinal de imagem (ISP) típico obtém dados de imagem brutos, processa os dados de imagem brutos e produz uma imagem de saída processada.
[0050] A Figura 1 é um diagrama que ilustra um exemplo de um ISP padrão 108. Conforme mostrado, um sensor de imagem 102 captura dados de imagem brutos. Os fotodiodos do sensor de imagem 102 capturam tons de cinza variados (ou monocromáticos). Um filtro de cor pode ser aplicado ao sensor de imagem para fornecer dados de entrada brutos filtrados por cor 104 (por exemplo, que têm um padrão Bayer). O ISP 108 tem blocos funcionais discretos em que, cada um, aplica uma operação específica aos dados de sensor de câmera brutos para criar a imagem de saída final. Por exemplo, blocos funcionais podem incluir blocos dedicados à remoção de mosaico, redução de ruído (remoção de ruído), processamento de cor, mapeamento de tom, entre muitos outros. Por exemplo, um bloco funcional de remoção de mosaico do ISP 108 pode auxiliar na geração de uma imagem colorida de saída 109 com o uso dos dados de entrada brutos filtrados por cor 104 interpolando-se a cor e o brilho de pixels com o uso de pixels adjacentes. Esse processo de remoção de mosaico pode ser usado pelo ISP 108 para avaliar os dados de cor e brilho de um determinado pixel, e para comparar esses valores com os dados dos pixels vizinhos. O ISP 108 pode, então usar o algoritmo de remoção de mosaico para produzir uma valor de cor e brilho adequado para o pixel. O ISP 108 pode realizar várias outras funções de processamento de imagem antes de fornecer a imagem colorida de saída final 109, tal como redução de ruído, nitidez, mapeamento de tom e/ou conversão entre espaços de cor, autofoco, gama, exposição, balanço de branco, entre muitas outras funções de processamento de imagem possíveis.
[0051] Os blocos funcionais do ISP 108 exigem vários parâmetros de ajuste 106 que são ajustados manualmente para atender determinadas especificações. Em alguns casos, mais de 10.000 parâmetros precisam ser ajustados e controlados por um determinado ISP. Por exemplo, para otimizar a imagem colorida de saída 109, de acordo com determinadas especificações, os algoritmos para cada bloco funcional precisam ser otimizados ajustando-se os parâmetros de ajuste 106 dos algoritmos. Novos blocos funcionais também precisam ser continuamente adicionados para lidar com diferentes casos que surgem no espaço. O grande número de parâmetros ajustados manualmente leva a requisitos de suporte muito demorados e dispendiosos para um ISP.
[0052] É descrito no presente documento um ISP de aprendizado de máquina que usa sistemas e métodos de aprendizado de máquina para realizar múltiplas funções ISP de uma maneira conjunta. A Figura 2 é um diagrama que ilustra um exemplo de um ISP de aprendizado de máquina 200. O ISP de aprendizado de máquina 200 pode incluir uma interface de entrada 201 que pode receber dados de imagem brutos a partir de um sensor de imagem 202. Em alguns casos, o sensor de imagem 202 pode incluir uma matriz de fotodiodos que podem capturar um quadro 204 de dados de imagem brutos. Cada fotodiodo pode representar “uma localização de pixel e pode gerar um valor de pixel para essa localização de pixel. Dados de imagem brutos a partir de fotodiodos podem incluir uma única cor ou valor de escala de cinza para cada localização de pixel no quadro
204. Por exemplo, uma matriz de filtro de cor pode ser integrada ao sensor de imagem 202 ou pode ser usada em conjunto com o sensor de imagem 202 (por exemplo, colocada sobre os fotodiodos) para converter as informações monocromáticas em valores de cor.
[0053] Um exemplo ilustrativo de uma matriz de filtro de cor inclui uma matriz de filtro de cor padrão Bayer (ou matriz de filtro de cor Bayer), que permite que o sensor de imagem 202 capture um quadro de pixels que tem um padrão Bayer com um dos filtros vermelho, verde ou azul em cada localização de pixel. Por exemplo, o patch de imagem bruto 206 a partir do quadro 204 de dados de imagem brutos tem um padrão Bayer baseado em uma matriz de filtro de cor Bayer que é usada com o sensor de imagem 202. O padrão Bayer inclui um filtro vermelho, um filtro azul e um filtro verde, conforme mostrado no padrão do patch de imagem bruto 206 mostrado na Figura 2. O filtro de cor Bayer opera ao filtrar a luz entrante. Por exemplo, os fotodiodos com a parte verde do padrão passam através das informações de cor verde (metade dos pixels), os fotodiodos com a parte vermelha do padrão passam através das informações de cor vermelha (um quarto dos pixels), e os fotodiodos com a parte azul do padrão passam através das informações de cor azul (um quarto dos pixels).
[0054] Em alguns casos, um dispositivo pode incluir múltiplos sensores de imagem (que pode ser similar ao sensor de imagem 202), em cujo caso as operações ISP de aprendizado de máquina descritas no presente documento podem ser aplicadas aos dados de imagem brutos obtidos pelos múltiplos sensores de imagem. Por exemplo, um dispositivo com múltiplas câmeras pode capturar dados de imagem com o uso das múltiplas câmeras, e o ISP de aprendizado de máquina 200 pode aplicar operações ISP aos dados de imagem brutos a partir das múltiplas câmeras. Em um exemplo ilustrativo, um telefone celular com câmera dupla, computador do tipo tablet ou outro dispositivo pode ser usado para capturar imagens maiores com ângulos mais largos (por exemplo, com um campo de visão mais largo (FOV)), capturar mais quantidade de luz (resultando em mais nitidez, clareza, entre outros benefícios), para gerar vídeo 360 graus (por exemplo, realidade virtual) e/ou para realizar outra funcionalidade aperfeiçoada que aquela obtida por um dispositivo de câmera única.
[0055] Oo patch de imagem bruto 206 é fornecido e recebido pela interface de entrada 201 para processamento pelo ISP de aprendizado de máquina 200. O ISP de aprendizado de máquina 200 pode usar um sistema de rede neural 203 para a tarefa ISP. Por exemplo, a rede neural do sistema de rede neural 203 pode ser treinada para derivar diretamente o mapeamento de dados de treinamento de imagem brutos capturados por sensores de imagem para imagens de saída finais. Por exemplo, a rede neural pode ser treinada com o uso de exemplos de várias entradas de dados brutos (por exemplo, com padrões filtrados por cor) e também com o uso de exemplos das imagens de saída correspondentes que são desejadas. Com o uso dos dados de treinamento, oO sistema de rede neural 203 pode aprender um mapeamento da entrada bruta que é necessário para obter as imagens de saída, após o que o ISP 200 pode produzir imagens de saída similares àquelas produzidas por um ISP tradicional.
[0056] A rede neural do ISP 200 pode incluir uma camada de entrada, múltiplas camadas ocultas e uma camada de saída. A camada de entrada inclui os dados de imagem brutos (por exemplo, o patch de imagem bruto 206 ou um quadro completo de dados de imagem brutos) obtidos pelo sensor de imagem 202. As camadas ocultas podem incluir filtros que podem ser aplicados aos dados de imagem brutos e/ou às saídas de camadas ocultas anteriores. Cada um dos filtros das camadas ocultas pode incluir pesos usados para indicar uma importância dos nós dos filtros. Em um exemplo ilustrativo, um filtro pode incluir um filtro convolucional 3 x 3 que é convolucionado ao redor de uma matriz de entrada, com cada entrada no filtro 3 x 3 tendo um valor de peso exclusivo. Em cada iteração convolucional (ou stride) do filtro 3 x 3 aplicado à matriz de entrada, um único valor de recurso de saída ponderado pode ser produzido. A rede neural pode ter uma série de muitas camadas ocultas, com camadas iniciais determinando características de baixo nível de uma entrada, e camadas posteriores construindo uma hierarquia de características mais complexas. As camadas ocultas da rede neural do ISP 200 são conectadas a uma representação dimensional alta dos dados. Por exemplo, as camadas podem incluir diversos blocos de convoluções repetitivas com um alto número de canais (dimensões). Em alguns casos, o número de canais pode ser uma ordem de magnitude maior que o número de canais em uma imagem RGB ou YCbCr. Exemplos ilustrativos fornecidos abaixo incluem convoluções repetitivas com 64 canais cada, fornecendo uma estrutura de rede não linear e hierárquica que produz detalhes de imagem de qualidade. Por exemplo, conforme descrito em mais detalhes no presente documento, um n número de canais (por exemplo, 64 canais) se refere a ter uma representação n dimensional (por exemplo, e4- dimensional) dos dados em cada localização de pixel. Conceitualmente, o n número de canais representa “mn recursos” (por exemplo, 64 recursos) na localização de pixel.
[0057] O sistema de rede neural 203 obtém as várias funções ISP múltiplas de uma maneira conjunta. Um parâmetro particular da rede neural aplicada pelo sistema de rede neural 203 não tem analógico explícito em um ISP tradicional, e, inversamente, um bloco funcional particular de um sistema ISP tradicional não tem correspondência explícita no ISP de aprendizado de máquina. Por exemplo, oO ISP de aprendizado de máquina realiza as funções de processamento de sinal como uma única unidade, em vez de ter blocos funcionais individuais que um ISP típico pode conter para realizar as várias funções. Detalhes adicionais da rede neural aplicada pelo sistema de rede neural 203 são descritos abaixo.
[0058] Em alguns exemplos, o ISP de aprendizado de máquina 200 também inclui um mecanismo de pré-processamento opcional 207 para aumentar os dados de entrada. Tais dados de entrada adicionais (ou dados de aumento) podem incluir, por exemplo, dados de tom, dados de distância radial, dados de ganho de balanço de branco automático (AWB), uma combinação dos mesmos, ou quaisquer outros dados adicionais que possam aumentar os pixels dos dados de entrada. Ao suplementar os pixels de entrada brutos, a entrada se torna um conjunto de valores multidimensionais para cada localização de pixel dos dados de imagem brutos.
[0059] Com base nos recursos de alto nível determinados, o sistema de rede neural 203 pode gerar uma saída RGB 208 com base no patch de imagem bruto 206. A saída RGB 208 inclui um componente de cor vermelha, um componente de cor verde e um componente de cor azul por pixel. O espaço de cor RGB é usado como um exemplo neste pedido. Uma pessoa de habilidade comum na técnica irá observar que outros espaços de cor também podem ser usados, tais como componentes de cor luma e croma (YCbCr ou YUV), ou outros componentes de cor adequados. A saída RGB 208 pode ser emitida a partir da interface de saída 205 do ISP de aprendizado de máquina 200 e usada para gerar um patch de imagem na imagem de saída final 209 (que compõe a camada de saída). Em alguns casos, a matriz de pixels na saída RGB 208 pode incluir uma dimensão menor que aquela do patch de imagem bruto de entrada 206. Em um exemplo ilustrativo, o patch de imagem bruto 206 pode conter uma matriz 128 x 128 de pixels de imagem brutos (por exemplo, em um padrão Bayer), enquanto a aplicação dos filtros convolucionais repetitivos do sistema de rede neural 203 faz com que a saída RGB 208 inclua uma matriz de pixels 8 x 8. O tamanho de saída da saída RGB 208 que é menor que o patch de imagem bruto 206 é um subproduto de aplicação dos filtros convolucionais e projeta o sistema de rede neural 203 para não preencher os dados processados através de cada um dos filtros convolucionais. Pelo fato de ter múltiplas camadas convolucionais, o tamanho de saída é cada vez mais reduzido. Em tais casos, os patches do quadro 204 de dados de imagem brutos de entrada podem ser sobrepostos, de modo que a imagem de saída final 209 contenha uma imagem completa. A imagem de saída final resultante 209 contém dados de imagem processados derivados dos dados de entrada brutos pelo sistema de rede neural 203. A imagem de saída final 209 pode ser renderizada para exibição, usada para compactação (ou codificação), armazenada, Ou usada para quaisquer outros propósitos baseados em imagem.
[0060] A Figura 3 é um exemplo ilustrativo de uma rede neural 300 que pode ser usada pelo sistema de rede neural 203 do ISP de aprendizado de máquina 200. Uma camada de entrada 310 inclui dados de entrada. Os dados de entrada da camada de entrada 310 podem incluir dados que representam os pixels de imagem brutos de um quadro de entrada de imagem bruto. A rede neural 300 inclui múltiplas camadas ocultas 312a, 312b a 312n. As camadas ocultas 312a, 312b a 312n incluem “n” número de camadas de ocultas, em que “n” é um número inteiro maior ou igual a um. O número de camadas ocultas pode feito para incluir tantas camadas quanto forem necessárias para a determinada aplicação. A rede neural 300 inclui adicionalmente uma camada de saída 314 que fornece uma saída resultante do processamento realizado pelas camadas ocultas 312a, 312b a 312n. Em um exemplo ilustrativo, a camada de saída 314 pode fornecer uma matriz de pixels de saída processada que pode ser usada para uma imagem de saída (por exemplo, como um patch na imagem de saída ou como a imagem de saída completa).
[0061] A rede neural 300 é uma rede neural multicamada de filtros interconectados. Cada filtro pode ser treinado para aprender um recurso representativo dos dados de entrada. Informações associadas aos filtros são compartilhadas entre as diferentes camadas e cada camada retém informações à medida que as informações são processadas. Em alguns casos, a rede neural 300 pode incluir uma rede de alimentação direta, em cujo caso não há conexões de retroalimentação, em que as saídas da rede são retroalimentadas em si mesmas. Em alguns casos, a rede 300 pode incluir uma rede neural recorrente, que pode ter loops que permitem que as informações sejam portadas através de nós enquanto leem a entrada.
[0062] Em alguns casos, informações podem ser trocadas entre as camadas através de interconexões nó a nó entre as várias camadas. Em alguns casos, a rede pode incluir uma rede neural convolucional, que pode não vincular cada nó em uma camada a cada outro nó na próxima camada. Em redes em que as informações são trocadas entre camadas, os nós da camada de entrada 310 podem ativar um conjunto de nós na primeira camada oculta 312a. Por exemplo, conforme mostrado, cada um dos nós de entrada da camada de entrada 310 pode ser conectado a cada um dos nós da primeira camada oculta 312a. Os nós da camada oculta 312 podem transformar as informações de cada nó de entrada aplicando-se funções de ativação (por exemplo, filtros) a essas informações. As informações derivadas da transformação podem, então ser passadas e podem ativar os nós da próxima camada oculta 312b, que pode realizar suas próprias funções designadas. As funções exemplificativas incluem funções convolucionais, escalonamento descendente, escalonamento ascendente, transformação de dados e/ou quaisquer outras funções adequadas. A saída da camada oculta 312b pode, então ativar nós da próxima camada oculta, e assim por diante. A saída da última camada oculta 312n pode ativar um ou mais nós da camada de saída 314, que fornece uma imagem de saída processada. Em alguns casos, embora os nós (por exemplo, nó 316) na rede neural 300 sejam mostrados como tendo múltiplas linhas de saída, um nó tem uma única saída e todas as linhas mostradas como sendo emitidas a partir de um nó representam o mesmo valor de saída.
[0063] Em alguns casos, cada nó ou interconexão entre nós pode ter um peso que é um conjunto de parâmetros derivados do treinamento da rede neural 300. Por exemplo, uma interconexão entre nós pode representar informações aprendidas sobre os nós interconectados. A interconexão pode ter um peso numérico ajustável que pode ser ajustado (por exemplo, com base em um conjunto de dados de treinamento), que permite que a rede neural 300 seja adaptável a entradas e capaz de aprender à medida que cada vez mais dados são processados.
[0064] A rede neural 300 é pré-treinada para processar os recursos dos dados na camada de entrada 310 com o uso das diferentes camadas ocultas 312a, 312b a 312n, a fim de fornecer a saída através da camada de saída 314. Novamente com referência à Figura 4, uma rede neural (por exemplo, rede neural 300) implementada por um sistema de rede neural 403 de um ISP de aprendizado de máquina pode ser pré-treinada para processar entradas de dados de imagem brutos e emitir imagens de saída processadas. Os dados de treinamento incluem entradas de dados de imagem brutos 406 e imagens de saída de referência 411 que correspondem às entradas de dados de imagem brutos 406. Por exemplo, uma imagem de saída das imagens de saída de referência 411 pode incluir uma imagem de saída final que foi previamente gerada por um ISP padrão (baseado em não aprendizado de máquina) com o uso de uma entrada de dados de imagem brutos. As imagens de saída de referência 411 podem, em alguns casos, incluir imagens processadas com o uso do sistema de rede neural 403. As entradas de dados de imagem brutos 406 e as imagens de saída de referência 411 podem ser inseridas no sistema de rede neural 403, e a rede neural (por exemplo, rede neural 300) pode determinar o mapeamento de cada conjunto de dados de imagem brutos (por exemplo, cada patch de dados de imagem brutos filtrados por cor, cada quadro de dados de imagem brutos filtrados por cor ou similares) para cada imagem de saída final correspondente ajustando-se os pesos dos vários filtros convolucionais de camada oculta.
[0065] Em alguns casos, a rede neural 300 pode ajustar os pesos dos nós com o uso de um processo de treinamento chamado de retropropagação. A retropropagação pode incluir uma passagem direta, uma função de perda, uma passagem inversa e uma atualização de peso. A passagem direta, função de perda, passagem inversa, e a atualização de parâmetro é realizada para uma iteração de treinamento. o processo pode ser repetido por um determinado número de iterações para cada conjunto de imagens de treinamento até a rede 300 ser treinada bem o bastante, de modo que os pesos das camadas sejam precisamente ajustados.
[0066] A passagem direta pode incluir passagem através da rede 300 um quadro ou patch de dados de imagem brutos e uma imagem de saída ou patch de saída correspondente que foi gerado com base nos dados de imagem brutos. Os pesos dos vários filtros das camadas ocultas podem ser inicialmente aleatorizados antes de a rede neural 300 ser treinada. A imagem de entrada de dados brutos pode incluir, por exemplo, uma matriz multidimensional de números que representam os pixels de imagem brutos filtrados por cor da imagem. Em um exemplo, a matriz pode incluir uma matriz 128 x 128 x 11 de números com 128 fileiras e 128 colunas de localizações de pixel e 11 valores de entrada por localização de pixel. Tal exemplo é descrito em mais detalhes abaixo em relação à Figura 7.
[0067] Para uma primeira iteração de treinamento para a rede 300, a saída pode incluir valores que não dão preferência a nenhum recurso ou nó particular devido ao fato de que os pesos são aleatoriamente selecionados na inicialização. Por exemplo, se a saída for uma matriz com vários componentes de cor por localização de pixel, a imagem de saída pode mostrar uma representação de cor imprecisa da entrada. Com os pesos iniciais, a rede 300 é incapaz de determinar recursos de baixo nível e, desse modo, não pode efetuar uma determinação precisa de quais podem ser os valores de cor. Uma função de perda pode ser usada para analisar o erro na saída. Qualquer definição de função de perda adequada pode ser usada. Um exemplo de uma função de perda inclui um erro quadrático médio (MSE). O é Etotar = 2 : 2 MSE é definido como n (saída alvo), que calcula a média das diferença quadráticas (a resposta real menos a resposta prevista (saída), ao quadrado). O termo n é o número de valores na soma. A perda pode ser ajustada para ser igual ao valor de Etotas.
[0068] A perda (ou erro) será alta para os primeiros dados de treinamento (dados de imagem brutos e imagens de saída correspondentes) uma vez que os valores reais serão muitos diferentes da saída prevista. O objetivo de treinamento é minimizar a quantidade de perda, de modo que a saída prevista seja igual ao rótulo de treinamento. A rede neural 300 pode realizar uma passagem inversa determinando-se quais entradas (pesos) contribuíram mais com a perda da rede, e pode ajustar os pesos de modo que a perda diminua e seja eventualmente minimizada.
[0069] Em alguns casos, uma derivada (ou outra função adequada) da perda em relação aos pesos (indicada como dL/dW, em que W são os pesos em uma camada particular) pode ser computada para determinar os pesos que contribuíram mais com a perda da rede. Após a derivada ser computada, uma atualização de peso pode ser realizada atualizando-se todos os pesos dos filtros. Por exemplo, os pesos podem ser atualizados de modo que eles alterem na direção oposta do gradiente. A atualização de peso pode ser 1 w=w-nÊ as indicada como dWw, em que w indica um peso, w, indica o peso inicial, e ! indica uma taxa de aprendizado. A taxa de aprendizado pode ser ajustada em qualquer valor adequado, com uma alta taxa de aprendizado que inclui atualizações de peso maiores e um valor mais baixo que indica atualizações de peso menores.
[0070] A rede neural (por exemplo, rede neural 300) usada pelo ISP de aprendizado de máquina pode incluir uma rede neural convolucional (CNN). A Figura 5 é um diagrama que ilustra um diagrama de alto nível de uma CNN 500. A entrada inclui os dados de imagem brutos 510, que podem incluir um patch de um quadro de dados de imagem brutos ou um quadro de dados de imagem brutos completo. As camadas ocultas da CNN incluem uma camada convolucional multicanal 512a e uma unidade de ativação (por exemplo, uma camada não linear, unidade linear exponencial (ELU), ou outra função adequada). Por exemplo, os dados de imagem brutos podem ser passados através da série de camadas ocultas “convolucionais multicanais e uma unidade de ativação por camada convolucional para obter uma imagem de saída 514 na camada de saída.
[0071] A primeira camada da CNN 500 inclui a camada convolucional 512a. A camada convolucional 512a analisa os dados de imagem brutos 510. Cada nó da camada convolucional 512a é conectado a uma região de nós (pixels) da imagem de entrada chamada de um campo receptivo. A camada convolucional 512a pode ser considerada como um ou mais filtros (cada filtro correspondendo a um mapa de recurso diferente), sendo que cada iteração convolucional de um filtro é um nó ou neurônio da camada convolucional 512a. Por exemplo, a região da imagem de entrada que um filtro cobre em cada iteração convolucional pode ser o campo receptivo para o filtro. Em um exemplo ilustrativo, se a imagem de entrada inclui uma matriz 28 x 28, e cada filtro (e campo receptivo correspondente) for uma matriz 5 x 5, então haverá nós 24 x 24 na camada convolucional 512a. Cada conexão entre um nó e um campo receptivo para esse nó aprende um peso e, em alguns casos, uma tendência geral de modo que cada nó aprenda a analisar seu campo receptivo local particular na imagem de entrada. Cada nó da camada convolucional 512a terá os mesmos pesos e tendências (chamado de peso compartilhado e uma tendência compartilhada). Por exemplo, o filtro tem uma matriz de pesos (números) e uma profundidade chamada de um canal. Exemplos fornecidos abaixo incluem profundidades de filtro de 64 canais.
[0072] A natureza convolucional da camada convolucional 512a ocorre devido a cada nó da camada convolucional que é aplicada ao seu campo receptivo correspondente. Por exemplo, um filtro da camada convolucional 512a pode começar no canto esquerdo superior da matriz de imagem de entrada e pode convolucionar ao redor da imagem de entrada. Conforme observado acima, cada iteração convolucional do filtro pode ser considerada um nó da camada convolucional 512a. Em cada iteração convolucional, os valores do filtro são multiplicados por um número correspondente dos valores de pixel originais da imagem (por exemplo, a matriz de filtro 5 x 5 é multiplicada por uma matriz 5 x 5 de valores de pixel de entrada no campo esquerdo superior da matriz de imagem de entrada). As multiplicações de cada iteração convolucional podem ser somadas (ou, de outro modo, combinadas) para obter uma soma total para essa iteração ou nó. O processo é continuado em uma próxima localização na imagem de entrada de acordo com o campo receptivo de um próximo nó na camada convolucional 512a. Por exemplo, um filtro pode ser movido por uma quantidade de stride para o próximo campo receptivo. A quantidade de stride pode ser definida como 1, 8 ou outra quantidade adequada, e pode ser diferente para cada camada oculta. Por exemplo, se a quantidade de stride for definida como 1, o filtro será movido para a direita por 1 pixel em cada iteração convolucional. o processamento do filtro em cada localização exclusiva do volume de entrada produz um número que representa os resultados de filtro para aquela localização, resultando em um valor de soma total que é determinado para cada nó da camada convolucional oculta 512a.
[0073] O mapeamento a partir da camada de entrada para a camada convolucional 512a (ou a partir de uma camada convolucional para uma próxima camada convolucional) é chamado de um mapa de recurso (ou um canal conforme descrito em mais detalhes abaixo). Um mapa de recurso inclui um valor para cada nó que representa os resultados de filtro em cada localização do volume de entrada. Por exemplo, cada nó de um mapa de recurso pode incluir um valor de dados de recurso ponderado. O mapa de recurso pode incluir uma matriz que inclui os vários valores de soma totais que resultam de cada iteração do filtro no volume de entrada. Por exemplo, o mapa de recurso irá incluir uma matriz 24 x 24 se um filtro 5 x 5 for aplicado a cada pixel (uma quantidade de passo de 1) de uma imagem de entrada 28 x 28. A camada convolucional 512a pode incluir vários mapas de recurso a fim de identificar múltiplos recursos em uma imagem. O exemplo mostrado na Figura 5 inclui três mapas de recurso. Com o uso de três mapas de recurso (ou canais), a camada convolucional 512a pode fornecer uma representação tridimensional dos dados em cada localização de pixel da imagem de saída final 514.
[0074] Em alguns exemplos, uma unidade de ativação 512b pode ser aplicada após cada camada convolucional 512a. A unidade de ativação 512b pode ser usada para introduzir não linearidade a um sistema que computou operações lineares. Um exemplo ilustrativo de uma camada não linear é uma camada de unidade linear retificada (ReLU). Outro exemplo é uma ELU. Uma camada RelU pode aplicar a função f(x) = max(0, x) a todos os valores no volume de entrada, que altera todas as ativações negativas para 0. A RelU pode, desse modo, aumentar as propriedades não lineares da rede 500 sem afetar os campos receptivos da camada convolucional 512a.
[0075] A Figura 6 é um diagrama que ilustra um exemplo mais detalhado de uma rede neural convolucional 600 de um ISP de aprendizado de máquina. A entrada para a rede 600 é um patch de imagem bruto 621 (por exemplo, que tem um padrão Bayer) a partir de um quadro de dados de imagem brutos, e a saída inclui um patch RGB de saída 630 (ou um patch que tem outras representações de componente de cor, tal como YUV). Em um exemplo ilustrativo, a rede adota patches de imagem brutos de pixel 128 x 128 como entrada e produz patches RGB 8 x 8 x 3 como uma saída final. Com base na natureza convolucional dos vários filtros convolucionais aplicados pela rede 600, muitas das localizações de pixel fora da matriz 8 x 8 a partir do patch de imagem bruto 621 são consumidas pela rede 600 para obter o patch de saída final 8 x 8. Tal redução nos dados a partir da entrada para a saída ocorre devido à quantidade de contexto necessária para entender as informações vizinhas para processar um pixel. Ter o patch de imagem bruto de entrada maior 621 com todas as informações e contexto vizinhos é útil para o processamento e produção do patch RGB de saída menor 630.
[0076] Em alguns exemplos, com base na redução em localizações de pixel a partir da entrada para a saída, os patches de imagem brutos 128 x 128 são projetados de modo que eles se sobreponham na imagem de entrada bruta. Em tais exemplos, as saídas 8 x 8 não são sobrepostas. Por exemplo, para um primeiro patch de imagem bruto 128 x 128 no canto esquerdo superior do quadro de imagem bruto, um primeiro patch de saída RGB 8 x 8 é produzido. Um próximo patch 128 x 128 no quadro de imagem bruto será 8 pixels à direita do último patch 128 x 128 e, desse modo, será sobreposto com o último patch de pixel 128 x 128. O próximo patch 128 x 128 será processado pela rede 600 para produzir um segundo patch de saída RGB 8 x 8. O segundo patch RGB 8 x 8 será colocado próximo ao primeiro patch de saída RGB 8 x 8 (produzido com o uso do patch de imagem bruto 128 x 128) na imagem de saída final completa. Tal processo pode ser realizado até os patches 8 x 8 que compõem uma imagem de saída completa serem produzidos.
[0077] Entradas adicionais 622 também podem ser fornecidas em conjunto com o patch de imagem bruto 621. Por exemplo, as entradas adicionais 622 podem ser fornecidas pelo mecanismo de pré-processamento 207 para o sistema de rede neural 203. As entradas adicionais 622 podem incluir quaisquer dados suplementares adequados que possam aumentar as informações de cor fornecidas pelo patch de imagem bruto 621, tais como dados de tom, dados de distância radial, dados de ganho de balanço de branco automático (AWB), uma combinação dos mesmos, ou quaisquer outros dados adicionais que possam aumentar os pixels dos dados de entrada. Ao suplementar os pixels de entrada brutos, a entrada se torna um conjunto de valores multidimensionais para cada localização de pixel dos dados de imagem brutos.
[0078] A Figura 7 é um diagrama que ilustra um exemplo de um conjunto de entradas multidimensional para um patch de imagem bruto 731. O exemplo mostrado na Figura 7 inclui uma entrada de dimensão 128 x 128 x 11. Por exemplo, há 11 entradas totais (dimensões) fornecidas para cada localização de pixel no patch de imagem bruto 731. As 11 dimensões de entrada incluem quatro dimensões para as cores, incluindo uma dimensão para valores vermelhos 732a, duas dimensões para valores verdes 733a e valores verdes 734a, e uma dimensão para valores azuis 735a. Há dois valores verdes 733a e 734a devido ao padrão Bayer que tem uma cor verde em cada fileira, e apenas um valor vermelho 732a e um valor azul 735a devido ao padrão Bayer que tem cada uma das cores vermelha e azul em todas as outras fileiras. Por exemplo, conforme mostrado, as fileiras ímpares do patch de imagem bruto 731 incluem cores vermelha e verde em todos os outros pixels, e as fileiras pares incluem cores verde e azul em todos os outros pixels. O espaço branco entre os pixels em cada dimensão de cor (os valores vermelhos 732a, valores verdes 733a, 734a, e valores azuis 735a) mostra um layout espacial dessas cores a partir do patch de imagem bruto 731. Por exemplo, se todos os valores vermelhos 732a, os valores verdes 733a e 734a, e os valores azuis 735a forem combinados em conjunto, o resultado pode ser o patch de imagem bruto 731.
[0079] A entrada inclui adicionalmente uma dimensão para a medida de distância radial relativa 736, que indica as distâncias dos pixels a partir do centro do patch ou quadro. Em alguns exemplos, a distância radial é a distância normalizada a partir do centro da imagem. Por exemplo, os pixels nos quatro cantos da imagem podem ter uma distância igual a 1,0, enquanto o pixel no centro da imagem pode ter uma distância igual a O. Em tais exemplos, todos os outros pixels podem ter distâncias entre 0 e 1 com base na distância daqueles pixels a partir do pixel central. Tais informações de distância radial podem ajudar a suplementar os dados de pixel, uma vez que o comportamento do sensor de imagem pode ser diferente no centro de uma imagem versus os cantos da imagem. Por exemplo, os cantos e bordas de uma imagem podem ser mais ruidosos que os pixels no centro, uma vez que há mais luz caindo dos cantos da lente de sensor de imagem, em cujo caso mais ganho e/ou redução de ruído pode ser aplicada aos pixels de canto. A entrada também inclui quatro dimensões para a raiz quadrada das cores. Por exemplo, uma dimensão de raiz quadrada vermelha 732b, duas dimensões de raiz quadrada verde 733b e 734b, e uma dimensão de raiz quadrada azul 735b são fornecidas. O uso das raízes quadradas das cores vermelha, verde e azul ajuda a correlacionar melhor o tom dos pixels. As duas últimas dimensões são para o ganho de todo o patch, incluindo uma dimensão para ganho de balanço de branco automático vermelho (AWB) 737 e uma dimensão para o ganho AWB azul 738. O AWB ajusta os ganhos de diferentes componentes de cor (por exemplo R, G e B) em relação uns aos outros a fim de tornar os objetos brancos brancos. os dados adicionais ajudam a rede neural convolucional 600 a entender como renderizar os patches RGB de saída finais.
[0080] Voltando à Figura 6, e com o uso do exemplo da Figura 7 para propósitos ilustrativos, os dados de entrada 128 x 128 x 11 são fornecidos para a rede neural convolucional 600 para processamento. os filtros convolucionais da rede 600 fornecem um mapeamento funcional do volume de entrada do patch de imagem bruto 128 x 128 621 para o patch RGB de saída 8 x 8 630. Por exemplo, a rede 600 opera para aplicar os vários pesos de filtro convolucional ajustados durante o estágio de treinamento aos recursos de entrada de diferentes maneiras para finalmente acionar o patch RGB de saída 8x8 630. Os filtros convolucionais incluem a CNNlIl com stride 623, a CNN2 com stride 624, a CNN3 com stride 625, a CNN 631, a CNN 632, a
CNN 633, a CNN 626, a CNN 627, a CNN 628 e a CNN 629. Os filtros convolucionais fornecem uma estrutura hierárquica que ajuda a remover ruído, melhorar a nitidez, produzir imagens com detalhes finos, entre outros benefícios. Por exemplo, os vários filtros convolucionais incluem blocos de convoluções repetitivos com cada filtro convolucional tendo um alto número de canais. O número de canais de cada filtro convolucional pode ser uma ordem de magnitude maior que o número de canais em uma imagem RGB ou YCbCr. Em um exemplo ilustrativo, cada uma dentre a CNNl 623 a CNN7 629 pode incluir 64 canais, com cada canal tendo valores de peso diferentes em cada um dos nós das matrizes de filtro. Por exemplo, cada um dos canais para um determinado filtro convolucional (por exemplo, para CNN7 629) pode incluir as mesmas dimensões de matriz (por exemplo, um filtro 3 x 3, um filtro 2 x 2, ou outra dimensão adequada) porém com pesos diferentes sendo aplicados à mesma entrada. Em um exemplo ilustrativo, filtros de tamanho 2 x 2 podem ser usados para a CNN1 com stride 623, a CNN2 com stride 624, e a CNN3 com stride 625 em suas camadas, e filtros de tamanho 3 x 3 podem ser usados para a CNN4 626, a CNN5 627, a CNNG 628, a CNN7 629, a CNN8 631, a CNN9 632 e a CNNIO 633 em suas camadas.
[0081] Cada canal de cada filtro convolucional (por exemplo, uma das CNNs mostradas na Figura 7) tem pesos que representam uma dimensão ou recurso de uma imagem. A pluralidade de canais incluídos para cada filtro convolucional ou a CNN fornecer altas representações dimensionais dos dados em cada pixel (com cada canal fornecendo uma dimensão adicional). À medida que o patch de imagem bruto 621 é passado através de vários canais de filtro convolucional da rede 600, os pesos são aplicados para transformar essas altas representações dimensionais à medida que os dados se movem através da rede, e para produzir eventualmente o patch RGB de saída final 630. Em um exemplo ilustrativo, um canal de uma das CNNs de filtro convolucional pode incluir informações para descobrir uma borda vertical em uma localização de pixel. Um próximo canal pode incluir informações em uma borda horizontal em cada localização de pixel. Um próximo canal pode incluir informações para descobrir a borda diagonal. Outros canais podem incluir informações relacionadas à cor, ruído, iluminação, brancura e/ou quaisquer outros recursos adequados de uma imagem. Cada canal pode representar uma dimensão de um pixel, e pode fornecer informações no pixel que a rede 600 é capaz de gerar. Em alguns casos, os filtros convolucionais que trabalham nas resoluções inferiores (CNNl 623, CNN2 624 e CNN3 625), conforme descrito em mais detalhes abaixo, incluem informações relacionadas a representações em maior escala dos dados, tais como cores de frequência mais baixa para uma área geral, ou outro recurso de nível mais alto. Os outros filtros convolucionais (CNN4 626, CNN5 627, CNN6 628 e CNN7 629) incluem informações sobre representações em escala menor dos dados.
[0082] O conceito de canais é descrito em relação à Figura 8. A Figura 8 é um diagrama que ilustra uma estrutura exemplificativa de uma rede neural que inclui um conjunto repetitivo de filtros convolucionais 802, 804 e
806. O filtro convolucional 802 inclui uma primeira CNN
(mostrada como CNN1l na Figura 8) que inclui 20 canais de filtros 3 x 3 com um stride igual a 1 (sem preenchimento)
Em cada canal, um filtro tem um conjunto 3 x 3 diferente de pesos que são predeterminados durante o treinamento da rede neural.
A entrada para o filtro convolucional 802 inclui um volume de dados de imagem 16 x 16 x 3. Por exemplo, a entrada pode incluir um primeiro patch 16 x 16 de valores verdes, um segundo patch 16 x 16 de valores vermelhos, e um terceiro patch 16 x 16 de valores azuis.
O filtro 3 x 3 para cada canal de saída (para cada um dos 20 canais) é convolucionalmente aplicado (com um stride igual a 1) na entrada nas várias localizações espaciais (os campos receptivos) na matriz de entrada 16 x 16, e também através de toda a profundidade de entrada para cada cor.
Por exemplo, a matriz 3 x 3 para um primeiro canal é convolucionalmente aplicada na primeira profundidade de entrada (a matriz 16 x 16 de valores verdes), a segunda profundidade de entrada (a matriz 16 x 16 de valores vermelhos) e, então a terceira profundidade de entrada (a matriz 16 x 16 de valores azuis), resultando em 27 parâmetros para o primeiro canal de saída.
Tal aplicação convolucional dos filtros 3 x 3 é aplicada 20 vezes no total ao volume de entrada, uma vez para cada um dos canais de saída.
A aplicação dos filtros 3 x 3 x 20 ao volume de entrada resulta em 540 parâmetros (3 x 3 x 3 x 20) que são determinados nesse conjunto para produzir o volume de saída 14 x 14 x 20 que é usado como entrada pelo filtro convolucional 804. Por exemplo, cada canal da saída é computado aplicando-se o filtro 3 x 3 a cada profundidade do volume de entrada (por exemplo, as profundidades vermelha, verde e azul). Portanto, a primeira saída de canal precisa de multiplicações e parâmetros 3 x 3 x 3. Esse resultado é somado para criar a primeira saída de canal. Um conjunto de filtros separados é, então usado para gerar a segunda saída de canal, então isso significa outras multiplicações 3 x 3 x 3 com um conjunto de parâmetros diferente. Para finalizar o número total de canais (20 canais), são necessários parâmetros 3 x 3 x 3 x 20.
[0083] O volume 14 x 14 x 20 inclui 14 fileiras e 14 colunas de valores devido à aplicação convolucional dos filtros 3 x 3. Por exemplo, os filtros 3 x 3 têm um stride de 1, o que significa que os filtros podem ser passados para cada localização de pixel (por exemplo, de modo que cada localização de pixel se situe no canto esquerdo superior da matriz) para as primeiras 14 fileiras e 14 colunas de pixels na matriz 16 x 16 (da entrada) antes que a matriz de filtro alcance o final do bloco. O resultado é uma matriz 14 x 14 de valores ponderados para cada um dos 20 canais.
[0084] P filtro convolucional 804 inclui uma segunda CNN (mostrada como CNN2 na Figura 8) que inclui 12 canais de filtros 5 x 5 com e que tem um stride de 1. A entrada para o filtro convolucional 804 inclui o volume 14 x 14 x 20 que é emitido a partir do filtro convolucional
802. O filtro 5 x 5 para cada um dos 12 canais é convolucionalmente aplicado aos volume 14 x 14 x 20. A aplicação dos 12 canais dos filtros 5 x 5 ao volume de entrada resulta em 6.000 parâmetros (5 x 5 x 20 x 12). Com base no uso do preenchimento, o resultado é o volume de saída 14 x 14 x 12 que é usado como entrada pelo filtro convolucional 806.
[0085] O filtro convolucional 806 inclui uma terceira CNN (mostrada como CNN3 na Figura 8) que inclui 3 canais de filtros 7 x 7 que têm um stride de 1 (sem preenchimento). A entrada para o filtro convolucional 806 inclui o volume 14 x 14 x 12 emitido a partir do filtro convolucional 804. O filtro 7 x 7 para cada um dos 3 canais é convolucionalmente aplicado ao volume 14 x 14 x 12 para gerar o patch 8 x 8 x 3 de valores de cor para uma imagem de saída 808. Por exemplo, o patch 8 x 8 x 3 pode incluir uma matriz 8 x 8 de pixels para a cor vermelha, uma matriz 8 x 8 de pixels para a cor verde e uma matriz 8 x 8 de pixels para a cor azul. A aplicação dos três filtros 7 x 7 ao volume de entrada resulta em 1.764 parâmetros (7 x 7 x 12 x 3). Os parâmetros totais para tal rede são 8.304 parâmetros.
[0086] Voltando à Figura 6, o patch de imagem bruto 621 se situa na resolução completa. A estrutura da rede neural convolucional 600 é de modo que os filtros convolucionais operem em resoluções diferentes do patch de imagem bruto 621. Uma abordagem escalonada pode ser usada para combinar diferentes resoluções de dados ponderados que representam os dados brutos do patch de imagem bruto 621. Uma arquitetura hierárquica pode ser útil para processamento espacial. A redução de ruído pode ser usada como um exemplo ilustrativo, em cujo caso existem ruídos de baixa frequência e ruídos de alta frequência. Para remover eficazmente ruídos de baixa frequência (ruído que cobre uma grande área da imagem), Kkernels espaciais muito grandes são necessários. Se uma versão de resolução reduzida da imagem estiver presente (por exemplo, resolução 1/64, resolução 1/16, resolução 1/4, ou similares), então um filtro menor pode ser usado na resolução reduzida para aplicar eficazmente um kernel espacial muito grande (por exemplo, um filtro 3 x 3 na 1/64º resolução é aproximadamente um kernel (3*8)x(3*8)). O fato de a rede 600 operar em resoluções mais baixas permite, desse modo, um processamento eficiente de frequências mais baixas. Esse processo pode ser repetido combinando-se as informações do processamento de frequência mais baixa/resolução mais baixa com a próxima resolução mais alta para trabalhar nos dados na próxima frequência/resolução. Por exemplo, com o uso da abordagem escalonada com resoluções diferentes, os valores ponderados resultantes das resoluções diferentes podem ser combinados e, em alguns casos, o resultado combinado pode, então ser combinado com outra resolução de dados ponderados que representam o patch de imagem bruto 621. Isso pode ser iterado até a resolução completa (ou outra resolução desejada) ser formada.
[0087] Os filtros convolucionais com stride (por exemplo, CNNs com stride) podem ser projetados para gerar as saídas ponderadas de resolução reduzida que representam os dados do patch de imagem bruto 621. Diferentes tamanhos de matrizes de filtro podem ser usados para os filtros convolucionais com stride, e cada um dos filtros convolucionais com stride inclui um valor de stride maior que l1. Exemplos de resoluções nas quais a rede 600 pode operar incluem resolução 1/64, resolução 1/16 resolução 1/4, resolução completa ou qualquer outra resolução adequada.
[0088] A Figura 9, a Figura 10 e a Figura 11A a Figura 11E ilustram a aplicação de uma CNN com stride. Por exemplo, a Figura 9 é um diagrama que ilustra um exemplo de um patch de imagem bruto 900. O patch de imagem bruto 900 inclui uma matriz de pixels M x N, em que Me N são valores inteiros. O valor de Me o valor de N podem ser iguais ou podem ser valores diferentes. No exemplo mostrado na Figura 9, o valor de M é igual a 8, e o valor de N é igual a 8, tornando o patch de imagem bruto 900 uma matriz 8 x 8 de 64 pixels de imagem brutos. Os pixels do patch de imagem 900 são sequencialmente numerados de O a 63. Em alguns casos, os pixels de imagem brutos do patch de imagem bruto 900 podem se situar em um padrão Bayer (não mostrado) ou outro padrão adequado. A Figura 10 é um diagrama que ilustra um exemplo de um filtro convolucional x x y 1000 de uma CNN com stride em uma rede neural de um ISP de aprendizado de máquina. O filtro 1000 ilustrado na Figura tem um valor x de 2 e um valor y de 2, tornando o filtro 1000 um filtro 2 x 2 com pesos wO, wl, w2 e wi. O filtro 1000 tem um stride de 2, o que significa que o filtro 100 é aplicado de uma maneira convolucional ao patch de imagem bruto 900 mostrado na Figura 9 com uma quantidade de passo de 2.
[0089] A Figura 11A a Figura 11E são diagramas que ilustram um exemplo de aplicação do filtro 2 x 2 1000 ao patch de imagem bruto 900. Conforme mostrado na Figura 11A, o filtro 1000 é aplicado primeiro aos pixels mais à esquerda superior do patch de imagem bruto 900. Por exemplo, os pesos wO0O, wl, w2 e wàô3 do filtro 1000 são aplicados aos pixels 0, 1, 8 e 9 do patch de imagem bruto
900. Conforme mostrado na Figura 11B, o peso w0O é multiplicado pelo valor de pixel O, o peso ul é multiplicado pelo valor de pixel 1, o peso w2 é multiplicado pelo valor de pixel 8 e o peso wôi é multiplicado pelo valor de pixel 9. Os valores (mostrados como valor WO0O* (0), valor Wl* (1), valor W2* (8), valor W3* (9)) que resultam das multiplicações podem, então ser somados (ou de outro modo combinados) para gerar uma saída A para aquele nó ou iteração do filtro 1000.
[0090] O processo de filtragem para a CNN com stride é continuado em uma próxima localização no patch de imagem bruto 900 ao mover o filtro 1000 pela quantidade de stride de 2 para o próximo campo receptivo. Devido ao fato de que a quantidade de stride da CNN com stride é definida como 2, o filtro 1000 é movido para a direita por dois pixels, conforme mostrado na Figura 11C. Quando movidos para a direita por dois pixels, os pesos wO0O, wl, w2 e wi do filtro 1000 são aplicados aos pixels 2, 3, 10 e 11 do patch de imagem bruto 900. Por exemplo, conforme mostrado na Figura 11D, o peso wO é multiplicado pelo valor de pixel 2, o peso wl é multiplicado pelo valor de pixel 3, o peso w2 é multiplicado pelo valor de pixel 10 e o peso wi é multiplicado pelo valor de pixel 11. Os valores (mostrados como valor WO0O* (2), valor Wl* (3), valor W2* (10), valor W3* (11)) que resultam das multiplicações podem, então ser somados (ou de outro modo combinados) para gerar uma saída B para aquele nó ou iteração do filtro 1000.
[0091] Um processo similar pode ser aplicado até o filtro 1000 ter sido convolucionado ao redor de todo o patch de imagem bruto 900. A Figura 11E mostra um mapa de recurso 1100 que resulta do filtro 1000 que é aplicado ao patch de imagem bruto 900. O mapa de recurso 1100 inclui os valores de soma total A a O que resultam de cada iteração do filtro 1000 no patch de imagem bruto. O mapa de recurso 1100 representa um conjunto de valores de dados de recurso ponderados de resolução reduzida que fornecem uma representação multidimensional (quando múltiplos canais são usados) dos dados em cada pixel do patch de imagem bruto
900. Devido ao fato de que o stride da CNN com stride é definido como um valor de 2, o mapa de recurso 1100 tem uma resolução reduzida de 4 x 4, fornecendo uma representação ponderada de resolução 1/2 do patch de imagem bruto 900.
[0092] Voltando à Figura 6, os filtros convolucionais com stride da rede neural convolucional 600 incluem uma CNN1l com stride 623, CNN2 com stride 624 e uma CNN3 com stride 625. A CNNlIl com stride 623 pode incluir vários canais de filtros convolucionais que operam para gerar matrizes de mapa de recurso que contêm valores de dados “ponderados (chamados de dados de recurso) que representam os dados de imagem brutos do patch de imagem bruto 621. As matrizes de mapa de recurso geradas pela CNN1 com stride 623 são uma representação ponderada de resolução 1/64 do patch de imagem bruto 621. Os valores ponderados representativos dos dados de recurso podem ser obtidos convolucionando-se a matriz de filtro de pesos da CNN1 623 através do volume de entrada 128 x 128 x 11 de um modo que reduza a dimensionalidade da entrada em 1/8 em cada uma das direções vertical e horizontal (resultando em uma redução de resolução total de 1/64). Por exemplo, a matriz de entrada de valores 128 x 128 (com uma profundidade de 11)
pode ser reduzida à matriz de mapa de recurso 16 x 16 de valores de dados de recurso ponderados.
Diferentes tamanhos de matrizes de filtro e diferentes quantidades de stride podem ser usadas para a CNNl com stride 623 a fim de reduzir a resolução pela quantidade desejada.
Em um exemplo ilustrativo, a CNN1 623 pode aplicar primeiro uma matriz de filtro 2 x 2 com um stride de 2 ao volume 128 x 128 x 11 de dados de imagem brutos para gerar matrizes 64 x 64 de valores ponderados.
Outra matriz de filtro 2 x 2 pode ser aplicada às matrizes 64 x 64 de valores ponderados para gerar matrizes 32 x 32 e, então outra matriz de filtro 2 x 2 pode ser aplicada às matrizes 32 x 32 para gerar as matrizes de mapa de recurso 16 x 16 de valores ponderados.
Em outro exemplo ilustrativo, a CNNl 623 pode aplicar matrizes 8 x 8 com um stride de 8 ao patch de imagem bruto de entrada 128 x 128 621 a fim de reduzir as matrizes de 128 x 128 para 16 x 16. Qualquer outra matriz de filtro de tamanho e quantidade de stride podem ser usadas para gerar matrizes de valores ponderados que são 1/64 do tamanho do patch de imagem bruto 621. Conforme observado anteriormente, a CNN1 com stride 623 tem uma pluralidade de canais (por exemplo, 64 ou outro valor) e, desse modo irá aplicar todas as 64 matrizes de filtro diferentes que têm matrizes de pesos diferentes.
No exemplo de 64 canais, o resultado será 64 matrizes 16 x 16 diferentes de valores ponderados, cada matriz 16 x 16 representando um recurso diferente do patch de imagem bruto 621. Em alguns exemplos, a escolha do número de canais para cada uma das CNNs pode ser diferente.
Por exemplo, cada CNN pode ter um número de canais distinto.
Em alguns exemplos, todas as CNNs podem ter o mesmo número de canais.
[0093] O resultado da CNNl com stride 623 é um conjunto de resoluções reduzidas de valores de dados de recurso ponderados que fornecem uma representação multidimensional dos recursos do patch de imagem bruto 621. Por exemplo, os valores de dados de recurso ponderados fornecem representações multidimensionais dos dados em cada pixel do patch de imagem bruto 621. Em casos em que cada filtro convolucional tem 64 canais, a CNNl com stride 623 gera 64 matrizes de mapa de recurso 16 x 16 de valores ponderados. Após a CNNl com stride 623, que realiza convoluções com stride conforme descrito acima, uma CNN8 631 é fornecida para processar a saída da CNN1 623. A CNN8 631 pode incluir uma série de convoluções com um stride igual a 1. Por exemplo, as 64 matrizes 16 x 16 a partir de CNN1l 623 podem ser reduzidas para 64 matrizes 8 x 8 pela CNN8 631. As matrizes 8 x 8 a partir da CNN8 631 pode, então ser sobreamostradas para um tamanho de 16 x 16 antes de serem combinadas com as matrizes da CNN9 632, conforme descrito abaixo. Um benefício de subamostragem dos dados e, então, sobreamostragem dos data é otimizar o requisito de computação. Por exemplo, o resultado subamostrado é processado pela CNN8 631 a fim de reunir informações na resolução mais baixa. Se os dados não forem subamostrados primeiro, o uso de filtros maiores pode ser necessário para obter um resultado similar na resolução mais alta.
[0094] Em paralelo com a CNN1 com stride 623, uma CNN2 com stride de resolução 1/16 624 produz 64 matrizes de mapa de recurso de resolução 1/16 de valores ponderados. Em um exemplo ilustrativo, a CNN 2 624 pode aplicar primeiro uma matriz de filtro 2 x 2 com um stride de 2 ao volume 128 x 128 x 11 de dados de imagem brutos (associados ao patch de imagem bruto 621) para gerar matrizes 64 x 64 de valores de dados de recurso ponderados. Outra matriz de filtro 2 x 2 pode ser aplicada à matriz 64 x 64 de valores ponderados para gerar uma matriz de mapa de recurso 32 x 32 de valores de dados de recurso. Em outro exemplo ilustrativo, uma matriz 4 x 4 pode ser aplicada a um stride de 4 ao patch de imagem bruto de entrada 128 x 128 621 para reduzir a matriz de 128 x 128 para 32 x 32. Qualquer outra matriz de filtro de tamanho e quantidade de stride pode ser usada para gerar uma matriz de mapa de recurso de valores de dados de recurso ponderados que é 1/16 o tamanho do patch de imagem bruto 621. A CNN2 com stride 624 tem uma pluralidade de canais (por exemplo, 64 ou outro valor adequado), e irá aplicar todas as 64 matrizes de filtro diferentes. Quando 64 canais forem usados, o resultado será 64 matrizes 32 x 32 diferentes de valores ponderados, com cada matriz representando uma representação diferente dos dados do patch de imagem bruto 621 na resolução de um quarto.
[0095] Após a CNN2 com stride 624, uma CNN9 632 é fornecida para processar a saída da CNN2 624. A CNN9 632 é similar à CNN8 631, e pode incluir uma série de convoluções com um stride igual a 1. Por exemplo, as matrizes de tamanho 32 x 32 da CNN2 624 podem ser reduzidas para matrizes 16 x 16 pela CNN9 632. Conforme mostrado, as 64 matrizes de mapa de recurso de valores de dados de recurso ponderados da CNN8 631 são combinadas com a 64 matrizes de mapa de recurso 16 x 16 de valores de dados de recurso ponderados da CNN9 632. Conforme observado acima, as matrizes de tamanho 1l6xl6 da CNNl 623 podem ser reduzidas a matrizes 8 x 8 pela CNN8 631. Para combinar as matrizes 8 x 8 de resolução mais baixa com as matrizes 16 x 16 maiores, os dados de resolução mais baixos precisam ser sobreamostrados de modo que os valores nas matrizes da CNN8 631 e da CNN9 632 possam ser combinados. Em alguns exemplos, as matrizes 8 x 8 da CNN8 631 podem ser sobreamostradas aumentando-se a matriz para um tamanho 16 x 16 e, então duplicando-se os valores das matrizes 8 x 8 horizontal e verticalmente, de modo que a matriz 16 x 16 ascendentemente escalonada tenha valores em cada nó. Os valores ponderados das matrizes 16 x 16 ascendentemente escalonadas podem, então ser adicionados aos valores ponderados das matrizes 16 x 16 da CNN9 632 para produzir as matrizes 16 x 16 combinadas de valores ponderados. Devido ao número de canais de cada filtro convolucional (por exemplo, CNN8 631 e CNN9 632) ser igual, o número de dimensões (que corresponde ao número de canais) se alinham para serem adicionadas em conjunto.
[0096] As 64 matrizes de mapa de recurso 16 x 16 combinadas de valores ponderados (com base na combinação das matrizes da CNN8 631 e da CNN9 632) são, então processadas pela CNN4 626. A CNN4 626, a CNN5 627, a CNNG6 628 e a CNN7 629 podem incluir um mesmo número de canais (com pesos representando dimensões de dados diferentes), tais como os 64 canais usados nos exemplos acima. A CNN4 626, a CNN5 627, a CNN6 628 e a CNN7 629 também têm um stride igual a 1 e, desse modo, não são chamadas de filtros com stride. Por exemplo, a CNN4 626, a CNN5 627, a CNN6 628 e a CNN7 629 podem incluir 64 canais de filtros 3 x 3 que têm um stride de 1.
[0097] Conforme observado acima, as 64 matrizes de mapa de recurso 16 x 16 combinadas de valores ponderados são processadas pela CNN4 626. A CNN4 626 processa essas matrizes 16 x 16 com uma série de camadas convolucionais (com stride igual a 1) até as matrizes serem reduzidas para 8 x 8. A saída da CNN4 626 é, então sobreamostrada de 8 x 8 para 16 x 16 matrizes dimensionais antes de serem combinadas com as matrizes da CNN10 633.
[0098] A CNN3 com stride 625 processa o patch de imagem bruto 621 de um modo que reduza a resolução de 128 x 128 para 64 x 64. Em um exemplo ilustrativo, a CNN3 625 pode aplicar uma matriz de filtro 2 x 2 com um stride de 2 ao volume 128 x 128 x 11 de dados de imagem brutos para gerar matrizes de mapa de recurso 64 x 64 de valores de dados de recurso ponderados. Após a CNN3 com stride 625, uma CNN10 633 é fornecida para processar a saída da CNN3
625. A CNN1I0 633 pode incluir uma série de convoluções com um stride igual a 1, similar à CNN8 631 e à CNN9 632. Por exemplo, as matrizes de tamanho 64 x 64 da CNN3 625 podem ser reduzidas para matrizes 16 x 16 pela CNNIO 633. Conforme mostrado, as 64 matrizes de mapa de recurso 16 x 16 de valores de dados de recurso ponderados da CNN10 633 são, então combinadas com as 64 matrizes de mapa de recurso 16 x 16 ascendentemente escalonadas da CNN4 626.
[0099] As matrizes de mapa de recurso 16 x 16 combinadas são, então processadas pela CNN5 627 para produzir conjuntos de matrizes adicionalmente ponderadas. A saída da CNN5 627 é sobreamostrada para resolução completa e as matrizes de mapa de recurso de resolução completa com valores de dados de recurso de resolução completa ponderados são combinadas com um conjunto de matrizes de mapa de recurso resolução completa emitidas a partir da CNN6 628. A CNN6 628 opera na versão de resolução completa do patch de imagem bruto 621. A resolução completa CNN6 628 pode ser usada de modo que a rede 600 possa gerar uma saída RGB de pixel de resolução completa. A resolução completa pode ser usada em casos em que se deseja ou é importante que a aplicação forneça uma imagem em resolução completa. A resolução completa CNN6 628 é necessária para produzir a resolução de imagem completa na saída. Para aplicações que precisam apenas de uma imagem de resolução parcial, a camada de resolução completa (CNN6 628) pode ser removida ou omitida da rede 600.
[0100] As matrizes de mapa de recurso de resolução completa combinadas são, então processadas pela CNN7 629 para produzir o patch RGB de saída final 630 que se baseia no patch de imagem bruto 621. O patch RGB de saída 630 pode ser determinado com base nos dados ou recursos —multidimensionais determinados pelos filtros convolucionais diferentes da rede neural convolucional 600. Com o uso do exemplo acima, os filtros convolucionais da rede 600 fornecem um mapeamento funcional (com base nos vários pesos dos filtros convolucionais) do volume de entrada do patch de imagem bruto 128 x 128 621 para o patch RGB de saída 8 x 8 630. Em alguns exemplos, o patch RGB de saída 630 inclui um componente de cor vermelha, um componente de cor verde e um componente de cor azul por pixel. Uma pessoa de habilidade comum na técnica irá observar que espaços de cor diferentes de RGB também podem ser usados, tais como componentes de cor luma e croma (YCbCr ou YUV) (por exemplo, em cujo caso a pluralidade de componentes de cor por pixel inclui um componente de cor luma por pixel, um primeiro componente de cor croma por pixel, e um segundo componente de cor croma por pixel), ou outros componentes de cor adequados. Em alguns exemplos (não mostrados na Figura 6), a saída pode ser um patch de imagem monocromático, em que a rede 600 realiza redução de ruído, mapeamento de tom, ou outra função baseada em ISP.
[0101] Conforme descrito acima, a matriz de pixels no patch RGB de saída 630 pode incluir uma dimensão menor que a dimensão do patch de imagem bruto de entrada
621. Com o uso do exemplo acima, o patch de imagem bruto 206 pode incluir uma matriz 128 x 128 de pixels de imagem brutos (por exemplo, em um padrão Bayer), e a aplicação dos filtros convolucionais repetitivos da rede 600 faz com que o patch RGB de saída 630 inclua 3 dimensões de matrizes 8 x 8 de pixels. Uma dimensão é para as cores vermelhas de cada pixel, uma dimensão é para as cores verdes de cada pixel, e uma dimensão é para as cores azuis de cada pixel. A Figura 12A é um diagrama que ilustra um exemplo de um patch de imagem de saída 1200A que inclui uma matriz 8 x 8 dos componentes de cor vermelha RO a R63 do patch RGB de saída
630. A Figura 12B é um diagrama que ilustra um exemplo de um patch de imagem de saída 1200B que inclui uma matriz 8 x 8 dos componentes de cor verde GO a G63 do patch RGB de saída 630. A Figura 12C é um diagrama que ilustra um exemplo de um patch de imagem de saída 1200C que inclui uma matriz 8 x 8 dos componentes de cor azul BO a B63 do patch
RGB de saída 630.
[0102] Conforme observado acima, os patches de um quadro entrada de dados de imagem brutos podem ser definidos de modo que eles sejam sobrepostos, o que permite que a imagem de saída completa contenha uma imagem completa mesmo em vista da redução na dimensionalidade da entrada para a saída. A imagem de saída final resultante contém patches de imagem de saída processados derivados dos dados de entrada brutos pela rede neural convolucional 600. Os patches de imagem de saída são dispostos próximos uns aos outros de uma maneira não sobreposta para produzir a imagem de saída final (por exemplo, o primeiro patch de imagem de saída, seguido pelo segundo patch de imagem de saída, e assim por diante). A imagem de saída final pode ser renderizada para exibição, usada para compactação (ou codificação), armazenada, ou usada para quaisquer outros propósitos baseados em imagem.
[0103] Em alguns casos, o patch de imagem bruto de resolução completa 621 pode ser cortado antes de ser processado por um ou mais dos filtros convolucionais da rede neural convolucional 600. Por exemplo, para obter a saída de dimensão reduzida (por exemplo, para passar de uma entrada 128 x 128 para uma saída 8 x 8), mais camadas convolucionais são necessárias para processar as entradas maiores da resolução completa. O patch de imagem bruto 621 pode ser cortado removendo-se alguns dos pixels nas bordas do patch de imagem bruto 621 antes de aplicar os filtros convolucionais no patch 621. O corte é opcional em cada filtro convolucional com base nas necessidades da rede 600. Em um exemplo ilustrativo, o patch de imagem bruto 621 pode ser cortado para a resolução completa CNN6 628 descrita acima que produz uma matriz de mapa de recurso de resolução completa. Por exemplo, devido ao fato de que o patch RGB de saída final 630 se situa em uma dimensão reduzida (por exemplo, uma matriz 8 x 8), todas as entradas de localização de pixel para a entrada de resolução completa 128 x 128 podem não ser necessárias para fornecer o contexto de nível de pixel para o centro 8 x 8 do patch de imagem bruto 621. A vizinhança de pixels no patch de imagem bruto de resolução completa 621 que provavelmente causa impacto nos detalhes da saída 8 x 8 final está mais perto do conjunto de pixels 8 x 8 ao redor do centro do patch de imagem bruto 621. Em tais casos, o patch de imagem bruto 621 pode ser cortado de modo que uma vizinhança menos de pixels circunde a porção 8 x 8 central do patch de imagem bruto 621. Em um exemplo ilustrativo, uma matriz de pixels 32 x 32 ao redor do centro pode ser cortada do patch de imagem bruto de resolução completa 621.
[0104] Em alguns casos, a rede 600 pode ser projetada para evitar normalização e agrupamento de lotes e é projetada para não ter preenchimento. Por exemplo, a rede 600 intencionalmente não tem camadas de normalização de lotes e camadas de agrupamento, e não tem preenchimento, em alguns casos. O agrupamento pode ser excluído da rede 600 devido ao fato de que camadas de agrupamento podem causar interrupção na resolução de uma imagem. Para funções de processamento de sinal de imagem, um resultado altamente detalhado é desejado em uma resolução particular, em cujo caso o agrupamento não é útil. As camadas de normalização também podem ser removidas. Nas camadas diferentes, a norma de lote que é tipicamente realizada em algumas escalas de rede e desloca os dados na camada particular para fornecer uma faixas de dados melhor para as próximas camadas serem processadas. Tais camadas de normalização podem ser úteis para problemas de classificação, devido ao fato de que os sistemas de classificação tentam descobrir se um recurso ou classe particular está presente, portanto, se a saída de dados de uma camada for escalonada e deslocada, o resultado ainda é preservado, devido ao fato de que os dados são escalonados e deslocados pela mesma quantidade. Entretanto, para o problema de regressão que a rede neural ISP de aprendizado de máquina realiza para passar de uma entrada de valor contínua para uma saída de valor contínua, a forma em que diferentes pixels são deslocados e escalonados em relação uns aos outros não pode ser arbitrária. Por exemplo, as cores da imagem precisam ser bem preservadas, os diferentes detalhes em um patch de imagem precisam ser preservados para fazer sentido no esquema maior de toda a imagem, entre outros. Por essas e outras razões, as camadas de normalização podem ser omitidas da rede 600.
[0105] A rede 600 também não incluir uma camada totalmente conectada, e, em vez disso, usa uma CNN (CNN7 629) como a última camada na rede 600. Uma vantagem da rede totalmente convolucional (sem nenhuma camada totalmente conectada) é que a rede não é limitada por tamanho. Por exemplo, as CNNs são translacionalmente invariáveis. Devido ao fato de que o processamento na rede 600 é translacionalmente invariável, os mesmos filtros aprendidos podem ser aplicados em tamanhos de entrada maiores ou menores. Por exemplo, se um tamanho de entrada precisa ser 256 x 256, os mesmos parâmetros da rede 128 x 128 da Figura 6 podem ser usados. Outra vantagem da rede totalmente convolucional rede é que as camadas totalmente conectadas têm muito mais parâmetros e computação em comparação com o uso apenas de camadas convolucionais, conforme mostrado na Figura 6. Por exemplo, se uma camada totalmente conectada fosse gerar o patch RGB de saída 630, o número de parâmetros poderia ser muito maior do que se apenas CNNs fossem usadas, conforme mostrado na Figura 6.
[0106] Conforme observado acima, os patches RGB de saída são organizados lado a lado em conjunto para produzir a imagem de saída final. Uma vez que nenhum preenchimento é realizado nos dados, costuras na imagem de saída final podem ser evitadas. Por exemplo, o preenchimento dos dados pode criar informações artificiais nas bordas, o que, por sua vez, pode causar costuras. A rede usa as operações de filtragem para tornar a largura e/ou altura maior, o que permite que a rede trabalhe nos dados reais da imagem, em vez de no preenchimento dos dados.
[0107] Com o uso de aprendizado de máquina para realizar as funções ISP, o ISP se torna personalizável. Por exemplo, diferentes funcionalidades podem ser desenvolvidas e aplicadas apresentando-se exemplos de dados direcionados e alterando os pesos de rede através de treinamento. O ISP baseado em aprendizado de máquina também pode obter retorno rápido para atualizações, em comparação com os ISPs conectados diretamente ou baseados em heurística. Ademais, um ISP baseado em aprendizado de máquina remove a tarefa demorada de ajuste dos parâmetros de ajuste que são necessários para ISPs padrão. Por exemplo, há uma quantidade significativa de esforço e pessoal usados para gerenciar as infraestruturas ISP. Um desenvolvimento holístico pode ser usado para o ISP de aprendizado de máquina, durante o qual o sistema de ponta a ponta é diretamente otimizado e criado. Esse desenvolvimento holístico está em contraste com o desenvolvimento de peça por peça dos blocos funcionais de ISPs padrão. A inovação de imageamento também pode ser acelerada com base no ISP de aprendizado de máquina. Por exemplo, um ISP de aprendizado de máquina personalizável desbloqueia muitas possibilidade de inovação, permitindo que os desenvolvedores e engenheiros conduzam, desenvolvam e adaptem mais rapidamente soluções para trabalhar com sensores, lentes, matrizes de câmera inovadores, entre outros avanços.
[0108] A Figura 13 é um fluxograma que ilustra um exemplo de um processo 1300 para processar dados de imagem com o uso de uma ou mais redes neurais com o uso das técnicas descritas no presente documento. No bloco 1302, o processo 1300 inclui obter um patch de dados de imagem brutos. O patch de dados de imagem brutos inclui um subconjunto de pixels de um quadro de dados de imagem brutos capturados com o uso de um ou mais sensores de imagem. O patch de dados de imagem brutos inclui um único componente de cor para cada pixel do subconjunto de pixels. Em alguns exemplos, o quadro de dados de imagem brutos inclui dados de imagem do um ou mais sensores de imagem filtrados por uma matriz de filtro de cor. A matriz de filtro de cor pode incluir qualquer filtro de cor adequado,
tal como uma matriz de filtro de cor Bayer. Por exemplo, um sensor de imagem com uma matriz de filtro de cor Bayer padrão (ou outra matriz de filtro de cor adequada) com um dos filtros vermelho, verde ou azul em cada localização de pixel pode ser usado para capturar dados de imagem brutos com uma única cor por localização de pixel. Em um exemplo ilustrativo, com o uso dos exemplos acima, um patch de dados de imagem brutos pode incluir um patch de pixels 128 x 128 a partir de um quadro ou imagem de entrada de dados brutos. Em alguns casos, múltiplos patches de um quadro ou imagem de entrada de dados brutos podem ser processados por pelo menos uma rede neural. Os patches de imagem brutos podem ser sobrepostos no quadro de entrada de dados brutos. Em alguns exemplos, o processo 1300 inclui obter dados adicionais para aumentar o patch de dados de imagem brutos obtido. Os dados adicionais podem incluir pelo menos um ou mais dos dados de tom, dados de distância radial ou dados de ganho de balanço de branco automático (AWB).
[0109] No bloco 1304, o processo 1300 inclui aplicar pelo menos uma rede neural ao patch de dados de imagem brutos para determinar uma pluralidade de valores de componente de cor para um ou mais pixels do subconjunto de pixels. No bloco 1306, o processo 1300 inclui gerar um patch de dados de imagem de saída com base na aplicação da pelo menos uma rede neural ao patch de dados de imagem brutos. A pelo menos uma rede neural pode ser aplicada a outros patches do quadro de entrada de dados brutos. O patch de dados de imagem de saída inclui um subconjunto de pixels de um quadro de dados de imagem de saída. O patch também inclui a pluralidade de valores de componente de cor para um ou mais pixels do subconjunto de pixels do quadro de dados de imagem de saída. A pelo menos uma rede neural é projetada para reduzir a quantidade de dados do patch de dados de imagem brutos de entrada. Por exemplo, a aplicação da pelo menos uma rede neural faz com que o patch de dados de imagem de saída inclua menos pixels (ou localizações de pixel) que o patch de dados de imagem brutos. Por exemplo, com o uso dos exemplos acima que usam um patch de entrada 128 x 128 de dados de entrada brutos, um patch de imagem de saída pode incluir um patch de pixels 8 x 8 que fará parte de uma imagem de saída. Conforme observado acima, oS patches do quadro entrada de dados de imagem brutos podem ser definidos de modo que eles sejam sobrepostos, o que permite que a imagem de saída contenha uma imagem completa mesmo em vista da redução na dimensionalidade da entrada para a saída. Os patches de imagem de saída podem ser dispostos próximos uns aos outros de uma maneira não sobreposta para produzir a imagem de saída final. A imagem de saída final pode ser renderizada para exibição, usada para compactação (ou codificação), armazenada, ou usada para quaisquer outros propósitos baseados em imagem.
[0110] Em algumas implementações, a aplicação da pelo menos uma rede neural ao patch de dados de imagem brutos inclui aplicar um ou mais filtros convolucionais com stride ao patch de dados de imagem brutos para gerar dados de resolução reduzida representativos do patch de dados de imagem brutos. Por exemplo, um filtro convolucional com stride pode incluir um filtro convolucional com um stride maior que um. Cada filtro convolucional com stride do um ou mais filtros convolucionais com stride inclui uma matriz de pesos. Exemplos de filtros convolucionais com stride incluem a CNN] com stride 623, a CNN2 com stride 624 e a CNN3 com stride 625 descritas acima em relação à Figura 6. Em alguns exemplos, cada filtro convolucional com stride do um ou mais filtros convolucionais com stride pode incluir uma pluralidade de canais. Cada canal da pluralidade de canais inclui uma matriz de pesos diferente. Os canais são altas representações dimensionais dos dados em cada pixel. Por exemplo, com o uso da pluralidade de canais, a rede neural pode transformar essas altas representações dimensionais à medida que os dados se movem através da rede neural.
[0111] Conforme observado acima, o um ou mais filtros convolucionais com stride podem incluir uma pluralidade de filtros convolucionais com stride. Por exemplo, a pluralidade de filtros convolucionais com stride inclui um primeiro filtro convolucional com stride que tem uma primeira matriz de pesos e um segundo filtro convolucional com stride que tem uma segunda matriz de pesos. A aplicação do primeiro filtro convolucional com stride ao patch de dados de imagem brutos gera um primeiro conjunto de dados ponderados representativos do patch de dados de imagem brutos. O primeiro conjunto de dados ponderados tendo uma primeira resolução. A aplicação do segundo filtro convolucional com stride gera um segundo conjunto de dados ponderados representativos do patch de dados de imagem brutos. O segundo conjunto de dados ponderados tem uma segunda resolução que é de uma resolução menor que a primeira resolução. Em alguns casos, o segundo filtro convolucional com stride pode ser aplicado ao patch de dados de imagem brutos para gerar o segundo conjunto de dados ponderados. Tal exemplo é mostrado na Figura 6, em que a CNN2 com stride 624 é um exemplo do primeiro filtro convolucional com stride e a CNNIl com stride 623 é um exemplo do segundo filtro convolucional com stride. Em outros casos, o segundo filtro convolucional com stride pode gerar o segundo conjunto de dados ponderados a partir de uma saída de outro filtro convolucional. Em um exemplo ilustrativo, o primeiro conjunto de dados ponderados que tem a resolução pode ser formado pelo primeiro filtro convolucional com stride, e o segundo filtro convolucional com stride pode ser concatenado após o primeiro filtro convolucional com stride para formar o segundo conjunto de dados ponderados que tem a segunda resolução.
[0112] Em alguns casos, o processo 1300 inclui escalonar ascendentemente o segundo conjunto de dados ponderados que tem a segunda resolução para a primeira resolução, e gerar dados ponderados combinados representativos do patch de dados de imagem brutos combinando-se fo) segundo conjunto ascendentemente escalonados de dados ponderados com o primeiro conjunto de dados ponderados que tem a primeira resolução. Com o uso do exemplo acima, a saída de dados da CNN1Il com stride 623 (como o segundo filtro convolucional com stride) pode ser sobreamostrada de modo que os valores a CNN1 com stride 623 possam ser combinados com a saída de dados da CNN2 com stride 624 (como o primeiro filtro convolucional com stride). Em alguns casos, um primeiro filtro convolucional com um stride igual a 1 pode ser colocado na rede após o primeiro filtro convolucional com stride e um segundo filtro convolucional com um stride igual a 1 pode ser colocado na rede após o segundo filtro convolucional com stride. Em tais casos, a matriz de saída de dados do segundo filtro convolucional com um stride igual a 1 pode ser ascendentemente escalonada, e a matriz de saída ascendentemente escalonada pode ser combinada com a matriz de saída do primeiro filtro convolucional com um stride igual a 1. Um exemplo do primeiro filtro convolucional com um stride igual a 1 é a CNN9 632 mostrada na Figura 6, e um exemplo do segundo filtro convolucional com um stride igual a 1 é a CNN8 631.
[0113] Em alguns exemplos, o processo 1300 pode incluir aplicar um ou mais filtros convolucionais aos dados ponderados combinados para gerar dados de recurso representativos do patch de dados de imagem brutos. Cada filtro convolucional do um ou mais filtros convolucionais inclui uma matriz de pesos. Cada um dos filtros convolucionais também pode incluir um stride de 1, em cujo caso os filtros convolucionais não são filtros com stride (não têm um stride maior que 1).
[0114] Em alguns casos, o processo 1300 pode incluir escalonar ascendentemente os dados de recurso para uma resolução completa, e gerar dados de recurso combinados representativos do patch de dados de imagem brutos combinando-se os dados de recurso ascendentemente escalonados com dados de recurso de resolução completa. Os dados de recurso de resolução completa são gerados aplicando-se um filtro convolucional a uma versão de resolução completa do patch de dados de imagem brutos.
[0115] Em alguns exemplos, a geração do patch de dados de imagem de saída inclui aplicar um filtro convolucional final aos dados de recurso ou aos dados de recurso combinados para gerar os dados de imagem de saída. Em alguns casos, a pelo menos uma rede neural não inclui uma camada totalmente conectada. Por exemplo, uma camada totalmente conectada não é usada antes ou após o filtro convolucional final. Em alguns casos, a pelo menos uma rede neural não inclui nenhuma camada de agrupamento. Por exemplo, uma camada de agrupamento não é usada antes ou após o filtro convolucional final.
[0116] Em alguns casos, a pluralidade de componentes de cor por pixel incluem um componente de cor vermelha por pixel, um componente de cor verde por pixel e um componente de cor azul por pixel. Em alguns casos, a pluralidade de componentes de cor por pixel inclui um componente de cor luma por pixel, um primeiro componente de cor croma por pixel e um segundo componente de cor croma por pixel.
[0117] Em alguns casos, a pelo menos uma rede neural realiza conjuntamente múltiplas funções de processador de sinal de imagem (ISP). Em alguns exemplos, a pelo menos uma rede neural inclui pelo menos uma rede neural convolucional (CNN). Em alguns casos, a pelo menos uma rede neural inclui uma pluralidade de camadas. Em alguns aspectos, a pluralidade de camadas é conectada a uma representação dimensional alta do patch de dados de imagem brutos.
[0118] Em alguns exemplos, o processo 1300 pode ser realizado por um dispositivo de computação ou um aparelho, tal como o ISP de aprendizado de máquina 200 mostrado na Figura 2. Em alguns casos, o dispositivo ou aparelho de computação pode incluir um processador, microprocessador, microcomputador, ou outro componente de um dispositivo que é configurado para realizar as etapas do processo 1300. Em alguns exemplos, o dispositivo Ou aparelho de computação pode incluir uma câmera configurada para capturar dados de vídeo (por exemplo, uma sequência de vídeo) que inclui quadros de vídeo. Em alguns casos, o dispositivo de computação pode incluir um dispositivo de câmera que pode incluir um codec de vídeo. Em alguns exemplos, uma câmera ou outro dispositivo de captura que captura os dados de vídeo é separado do dispositivo de computação, em cujo caso o dispositivo de computação recebe os dados de vídeo capturados. O dispositivo de computação pode incluir adicionalmente uma interface de rede configurada para comunicar os dados de vídeo. A interface de rede pode ser configurada para comunicar dados baseados em Protocolo de Internet (IP), ou qualquer outro tipo de dados adequado.
[0119] O processo 1300 é ilustrado como diagramas de fluxo lógicos, cuja operação representa uma sequência de operações que podem ser implementadas em hardware, instruções de computador ou uma combinação dos mesmos. No contexto de instruções de computador, as operações representam instruções executáveis por computador armazenadas em uma ou mais mídias legíveis por computador que, quando executadas por um ou mais processadores, realizam as operações citadas. Geralmente, as instruções executáveis por computador incluem rotinas, programas, objetos, componentes, estruturas de dados, e similares que realizam funções particulares ou implementam tipos de dados particulares. A ordem na qual as operações são descritas não pretende ser interpretada como uma limitação, e qualquer número de operações descritas pode ser combinado em qualquer ordem e/ou em paralelo para implementar os processos.
[0120] Adicionalmente, o processo 1300 pode ser realizado sob o controle de um ou mais sistemas de computador configurados com instruções executáveis e pode ser implementado como código (por exemplo, instruções executáveis, um ou mais programas de computador, ou um ou mais aplicativos) que executa coletivamente em um ou mais processadores, por hardware, ou combinações dos mesmos. Conforme observado acima, o código pode ser armazenado em um meio de armazenamento legível por computador ou legível por máquina, por exemplo, sob a forma de um programa de computador que compreende uma pluralidade de instruções executáveis por um ou mais processadores. O meio de armazenamento legível por computador ou legível por máquina pode ser não transitório.
[0121] Na descrição anteriormente mencionada, os aspectos do pedido são descritos com referência às modalidades específicas do mesmo, porém aqueles versados na técnica irão reconhecer que a invenção não se limita a isso. Desse modo, embora modalidades ilustrativas do pedido tenham sido descritas em detalhes no presente documento, deve-se compreender que os conceitos inventivos podem ser, de outro modo incorporados e empregados de maneira variada, e que as reivindicações anexas se destinam a ser construídas de modo a incluir tais variações, exceto conforme limitadas pela técnica anterior. Vários recursos e aspectos da invenção descrita acima podem ser usados de maneira individual ou conjunta. Ademais, as modalidades podem ser utilizadas em qualquer número de ambientes e aplicações além daquelas descritas no presente documento sem que se afaste do espírito e escopo mais amplo do relatório descritivo. O relatório descritivo e os desenhos devem ser, consequentemente, considerados como ilustrativos em vez de restritivos. Para propósitos ilustrativos, os métodos foram descritos em uma ordem particular. Deve-se observar que em modalidades alternativas, os métodos podem ser realizados em uma ordem diferente daquela descrita.
[0122] Quando os componentes são descritos como sendo “configurados para” realizar determinadas operações, tal configuração pode ser realizada, por exemplo, projetando-se circuitos eletrônicos ou outro hardware para realizar a operação, programando-se circuitos eletrônicos programáveis (por exemplo, microprocessadores, ou outros circuitos eletrônicos adequados) para realizar a operação, ou qualquer combinação dos mesmos. Uma pessoa de habilidade comum na técnica irá observar que os símbolos menor que (“<”) e maior que (“>”) ou terminologia usada no presente documento podem ser substituídos por símbolos menor ou igual a (“<<”) e maior que ou igual a (“2”), respectivamente, sem que se afaste do escopo desta descrição.
[0123] Os vários blocos lógicos, módulos, circuitos e etapas de algoritmo ilustrativos descritos em conexão com as modalidades reveladas no presente documento podem ser implementados como hardware eletrônico, software de computador, firmware, ou combinações dos mesmos. Para ilustrar claramente essa intercambialidade de hardware e software, vários componentes, blocos, módulos, circuitos e etapas ilustrativos foram descritos acima geralmente em termos de sua funcionalidade. A possibilidade de tal funcionalidade ser implementada como hardware ou software, depende da aplicação particular e das restrições de projeto impostas ao sistema geral. Os elementos versados na técnica podem implementar a funcionalidade descrita de várias maneira para cada aplicação particular, porém tais decisões de implementação não devem ser interpretadas como causando um afastamento do escopo da presente invenção.
[0124] As técnicas descritas no presente documento também podem ser implementadas em hardware eletrônico, software de computador, firmware, ou qualquer combinação dos mesmos. Tais técnicas podem ser implementadas em qualquer um dentre uma variedade de dispositivos, tais como computadores de propósito geral, aparelhos de dispositivo de comunicação sem fio ou dispositivos de circuito integrado com múltiplos usos, incluindo aplicação em aparelhos de dispositivo de comunicação sem fio e outros dispositivos. Quaisquer recursos descritos como módulos ou componentes podem ser implementados em conjunto em um dispositivo lógico integrado ou separadamente como dispositivos discretos, porém interoperáveis. Se implementadas em software, as técnicas podem ser realizadas, pelo menos em parte, por um meio de armazenamento de dados legível por computador que compreende código de programa que inclui instruções que, quando executadas, realizam um ou mais dos métodos descritos acima. O meio de armazenamento de dados legível por computador pode formar parte de um produto de programa de computador que pode incluir materiais de embalagem. O meio legível por computador pode compreender memória ou mídia de armazenamento de dados, tal como memória de acesso aleatório (RAM), tal como memória de acesso aleatório dinâmica síncrona (SDRAM), memória somente de leitura (ROM), memória de acesso aleatório não volátil (NVRAM), memória .“somente de leitura programável eletricamente apagável (EEPROM), memória FLASH, mídia de armazenamento de dados magnético ou óptico e similares. As técnicas de maneira adicional ou alternativa, podem ser realizadas, pelo menos em parte, por um meio de comunicação legível por computador que porta ou comunica código de programa sob a forma de instruções ou estruturas de dados que podem ser acessadas, lidas e/ou executadas por um computador, tais como sinais ou ondas propagados.
[0125] o código de programa pode ser executado por um processador, que pode incluir um ou mais processadores, tais como processadores de sinal digital (DSPs), microprocessadores de propósito geral, circuitos integrados de aplicação específica (ASICsS), arranjos lógicos programáveis em campo (FPGAs) ou outros conjuntos de circuitos lógicos integrados ou discretos equivalentes. Tal processador pode ser configurado para realizar qualquer uma das técnicas descritas nesta revelação. Um processador de propósito geral pode ser um microprocessador; porém na alternativa, o processador pode ser qualquer processador, controlador, microcontrolador ou máquina de estado convencional. Um processador também pode ser implementado como uma combinação de dispositivos de computação, por exemplo, uma combinação de um DSP e um microprocessador, uma pluralidade de microprocessadores, um ou mais microprocessadores em conjunto com um núcleo DSP ou qualquer outra tal configuração.
Consequentemente, o termo “processador”, conforme usado no presente documento pode se referir a qualquer uma das estruturas anteriormente mencionadas, qualquer combinação de estruturas anteriormente mencionadas, ou qualquer outra estrutura ou aparelho adequado para implementação das técnicas descritas no presente documento.
Além disso, em alguns aspectos, a funcionalidade descrita no presente documento pode ser fornecida dentro de módulos de software dedicados ou módulos de hardware configurados para codificação Ou decodificação, ou incorporados em uma codificador- decodificador de vídeo combinado (CODEC).

Claims (30)

REIVINDICAÇÕES
1. Método de processamento de dados de imagem com o uso de uma ou mais redes neurais, sendo que o método compreende: obter um patch de dados de imagem brutos, sendo que o patch de dados de imagem brutos inclui um subconjunto de pixels de um quadro de dados de imagem brutos capturado com o uso de um ou mais sensores de imagem, em que o patch de dados de imagem brutos inclui um único componente de cor para cada pixel do subconjunto de pixels, aplicar pelo menos uma rede neural ao patch de dados de imagem brutos para determinar uma pluralidade de valores de componente de cor para um ou mais pixels do subconjunto de pixels, e gerar um patch de dados de imagem de saída com base na aplicação da pelo menos uma rede neural ao patch de dados de imagem brutos, sendo que o patch de dados de imagem de saída inclui um subconjunto de pixels de um quadro de dados de imagem de saída e inclui a pluralidade de valores de componente de cor para um ou mais pixels do subconjunto de pixels do quadro de dados de imagem de saída, em que a aplicação da pelo menos uma rede neural faz com que o patch de dados de imagem de saída inclua menos pixels que o patch de dados de imagem brutos.
2. Método, de acordo com a reivindicação 1, em que o quadro de dados de imagem brutos inclui dados de imagem a partir do um ou mais sensores de imagem filtrados por uma matriz de filtro de cor.
3. Método, de acordo com a reivindicação 2, em que a matriz de filtro de cor inclui uma matriz de filtro de cor Bayer.
4, Método, de acordo com a reivindicação 1, em que aplicar a pelo menos uma rede neural ao patch de dados de imagem brutos inclui: aplicar um ou mais filtros convolucionais com stride ao patch de dados de imagem brutos para gerar dados de resolução reduzida representativos do patch de dados de imagem brutos, sendo que cada filtro convolucional com stride do um ou mais filtros convolucionais com stride inclui uma matriz de pesos.
5. Método, de acordo com a reivindicação 4, em que cada filtro convolucional com stride do um ou mais filtros convolucionais com stride inclui uma pluralidade de canais, em que cada canal da pluralidade de canais inclui uma matriz de pesos diferente.
6. Método, de acordo com a reivindicação 4, em que o um ou mais filtros convolucionais com stride incluem uma pluralidade de filtros convolucionais com stride, sendo que a pluralidade de filtros convolucionais com stride inclui: um primeiro filtro convolucional com stride que tem uma primeira matriz de pesos, em que a aplicação do primeiro filtro convolucional com stride ao patch de dados de imagem brutos gera um primeiro conjunto de dados ponderados representativos do patch de dados de imagem brutos, sendo que o primeiro conjunto de dados ponderados tem uma primeira resolução; e um segundo filtro convolucional com stride que tem uma segunda matriz de pesos, em que a aplicação do segundo filtro convolucional com stride gera um segundo conjunto de dados ponderados representativos do patch de dados de imagem brutos, sendo que o segundo conjunto de dados ponderados tem uma segunda resolução que é de uma resolução menor que a primeira resolução.
7. Método, de acordo com a reivindicação 6, que compreende adicionalmente: escalonar ascendentemente o segundo conjunto de dados ponderados que tem a segunda resolução para a primeira resolução; e gerar dados ponderados combinados representativos do patch de dados de imagem brutos combinando-se o segundo conjunto ascendentemente escalonados de dados ponderados com o primeiro conjunto de dados ponderados que tem a primeira resolução.
8. Método, de acordo com a reivindicação 7, que compreende adicionalmente: aplicar um ou mais filtros convolucionais aos dados ponderados combinados para gerar dados de recurso representativos do patch de dados de imagem brutos, sendo que cada filtro convolucional do um ou mais filtros convolucionais inclui uma matriz de pesos.
9. Método, de acordo com a reivindicação 8, que compreende adicionalmente: escalonar ascendentemente os dados de recurso para uma resolução completa, e gerar dados de recurso combinados representativos do patch de dados de imagem brutos combinando-se os dados de recurso ascendentemente escalonados com dados de recurso de resolução completa, sendo que os dados de recurso de resolução completa são gerados aplicando-se um filtro convolucional a uma versão de resolução completa do patch de dados de imagem brutos.
10. Método, de acordo com a reivindicação 9, em que gerar o patch de dados de imagem de saída inclui: aplicar um filtro convolucional final aos dados de recurso ou aos dados de recurso combinados para gerar os dados de imagem de saída.
11. Método, de acordo com a reivindicação 1, que compreende adicionalmente: obter dados adicionais para aumentar o patch de dados de imagem brutos obtido, sendo que os dados adicionais incluem pelo menos um ou mais dos dados de tom, dados de distância radial ou dados de ganho de balanço de branco automático (AWB).
12. Método, de acordo com a reivindicação 1, em que a pelo menos uma rede neural inclui uma pluralidade de camadas, e em que a pluralidade de camadas é conectada a uma alta representação dimensional do patch de dados de imagem brutos.
13. Aparelho para processamento de dados de imagem com o uso de uma ou mais redes neurais que compreende: uma memória configurada para armazenar dados de imagem; e um processador configurado para: obter um patch de dados de imagem brutos, sendo que o patch de dados de imagem brutos inclui um subconjunto de pixels de um quadro de dados de imagem brutos capturado com o uso de um ou mais sensores de imagem, em que o patch de dados de imagem brutos inclui um único componente de cor para cada pixel do subconjunto de pixels; aplicar pelo menos uma rede neural ao patch de dados de imagem brutos para determinar uma pluralidade de valores de componente de cor para um ou mais pixels do subconjunto de pixels; e gerar um patch de dados de imagem de saída com base na aplicação da pelo menos uma rede neural ao patch de dados de imagem brutos, sendo que o patch de dados de imagem de saída inclui um subconjunto de pixels de um quadro de dados de imagem de saída e inclui a pluralidade de valores de componente de cor para um ou mais pixels do subconjunto de pixels do quadro de dados de imagem de saída, em que a aplicação da pelo menos uma rede neural faz com que o patch de dados de imagem de saída inclua menos pixels que o patch de dados de imagem brutos.
14. Aparelho, de acordo com a reivindicação 13, em que o quadro de dados de imagem brutos inclui dados de imagem a partir do um ou mais sensores de imagem filtrados por uma matriz de filtro de cor.
15. Aparelho, de acordo com a reivindicação 14, em que a matriz de filtro de cor inclui uma matriz de filtro de cor Bayer.
16. Aparelho, de acordo com a reivindicação 13, em que aplicar a pelo menos uma rede neural ao patch de dados de imagem brutos inclui: aplicar um ou mais filtros convolucionais com stride ao patch de dados de imagem brutos para gerar dados de resolução reduzida representativos do patch de dados de imagem brutos, sendo que cada filtro convolucional com stride do um ou mais filtros convolucionais com stride inclui uma matriz de pesos.
17. Aparelho, de acordo com a reivindicação 16, em que cada filtro convolucional com stride do um ou mais filtros convolucionais com stride inclui uma pluralidade de canais, em que cada canal da pluralidade de canais inclui uma matriz de pesos diferente.
18. Aparelho, de acordo com a reivindicação 16, em que o um ou mais filtros convolucionais com stride incluem uma pluralidade de filtros convolucionais com stride, sendo que a pluralidade de filtros convolucionais com stride inclui: um primeiro filtro convolucional com stride que tem uma primeira matriz de pesos, em que a aplicação do primeiro filtro convolucional com stride ao patch de dados de imagem brutos gera um primeiro conjunto de dados ponderados representativos do patch de dados de imagem brutos, sendo que o primeiro conjunto de dados ponderados tem uma primeira resolução; e um segundo filtro convolucional com stride que tem uma segunda matriz de pesos, em que a aplicação do segundo filtro convolucional com stride gera um segundo conjunto de dados ponderados representativos do patch de dados de imagem brutos, sendo que o segundo conjunto de dados ponderados tem uma segunda resolução que é de uma resolução menor que a primeira resolução.
19. Aparelho, de acordo com a reivindicação 18, em que o processador é adicionalmente configurado para: escalonar ascendentemente o segundo conjunto de dados ponderados que tem a segunda resolução para a primeira resolução, e gerar dados ponderados combinados representativos do patch de dados de imagem brutos combinando-se o segundo conjunto ascendentemente escalonados de dados ponderados com o primeiro conjunto de dados ponderados que tem a primeira resolução.
20. Aparelho, de acordo com a reivindicação 19, em que o processador é adicionalmente configurado para: aplicar um ou mais filtros convolucionais aos dados ponderados combinados para gerar dados de recurso representativos do patch de dados de imagem brutos, sendo que cada filtro convolucional do um ou mais filtros convolucionais inclui uma matriz de pesos.
21. Aparelho, de acordo com a reivindicação 20, em que o processador é adicionalmente configurado para: escalonar ascendentemente os dados de recurso para uma resolução completa, e gerar dados de recurso combinados representativos do patch de dados de imagem brutos combinando-se os dados de recurso ascendentemente escalonados com dados de recurso de resolução completa, sendo que os dados de recurso de resolução completa são gerados aplicando-se um filtro convolucional a uma versão de resolução completa do patch de dados de imagem brutos.
22. Aparelho, de acordo com a reivindicação 21, em que gerar o patch de dados de imagem de saída inclui: aplicar um filtro convolucional final aos dados de recurso ou aos dados de recurso combinados para gerar os dados de imagem de saída.
23. Aparelho, de acordo com a reivindicação 13, em que o processador é adicionalmente configurado para:
obter dados adicionais para aumentar o patch de dados de imagem brutos obtido, sendo que os dados adicionais incluem pelo menos um ou mais dos dados de tom, dados de distância radial ou dados de ganho de balanço de branco automático (AWB).
24. Aparelho, de acordo com a reivindicação 13, em que a pelo menos uma rede neural inclui uma pluralidade de camadas, e em que a pluralidade de camadas é conectada a uma alta representação dimensional do patch de dados de imagem brutos.
25. Aparelho, de acordo com a reivindicação 13, que compreende adicionalmente uma câmera para capturar imagens.
26. Meio legível por computador não transitório que tem armazenado no mesmo instruções que, quando executadas por um ou mais processadores, fazem com que o um ou mais processadores: obtenham um patch de dados de imagem brutos, sendo que o patch de dados de imagem brutos inclui um subconjunto de pixels de um quadro de dados de imagem brutos capturado com o uso de um ou mais sensores de imagem, em que o patch de dados de imagem brutos inclui um único componente de cor para cada pixel do subconjunto de pixels; apliquem pelo menos uma rede neural ao patch de dados de imagem brutos para determinar uma pluralidade de valores de componente de cor para um ou mais pixels do subconjunto de pixels; e gerem um patch de dados de imagem de saída com base na aplicação da pelo menos uma rede neural ao patch de dados de imagem brutos, sendo que o patch de dados de imagem de saída inclui um subconjunto de pixels de um quadro de dados de imagem de saída e inclui a pluralidade de valores de componente de cor para um ou mais pixels do subconjunto de pixels do quadro de dados de imagem de saída, em que a aplicação da pelo menos uma rede neural faz com que o patch de dados de imagem de saída inclua menos pixels que o patch de dados de imagem brutos.
27. Meio legível por computador não transitório, de acordo com a reivindicação 26, em que o quadro de dados de imagem brutos inclui dados de imagem a partir do um ou mais sensores de imagem filtrados por uma matriz de filtro de cor.
28. Meio legível por computador não transitório, de acordo com a reivindicação 26, em que aplicar a pelo menos uma rede neural ao patch de dados de imagem brutos inclui: aplicar um ou mais filtros convolucionais com stride ao patch de dados de imagem brutos para gerar dados de resolução reduzida representativos do patch de dados de imagem brutos, sendo que cada filtro convolucional com stride do um ou mais filtros convolucionais com stride inclui uma matriz de pesos.
29. Meio legível por computador não transitório de acordo com a reivindicação 28, em que cada filtro convolucional com stride do um ou mais filtros convolucionais com stride inclui uma pluralidade de canais, em que cada canal da pluralidade de canais inclui uma matriz de pesos diferente.
30. Meio legível por computador não transitório,
de acordo com à reivindicação 28, em que o um ou mais filtros convolucionais com stride incluem uma pluralidade de filtros convolucionais com stride, sendo que a pluralidade de filtros convolucionais com stride inclui:
um primeiro filtro convolucional com stride que tem uma primeira matriz de pesos, em que a aplicação do primeiro filtro convolucional com stride ao patch de dados de imagem brutos gera um primeiro conjunto de dados ponderados representativos do patch de dados de imagem brutos, sendo que o primeiro conjunto de dados ponderados tem uma primeira resolução; e um segundo filtro convolucional com stride que tem uma segunda matriz de pesos, em que a aplicação do segundo filtro convolucional com stride gera um segundo conjunto de dados ponderados representativos do patch de dados de imagem brutos, sendo que o segundo conjunto de dados ponderados tem uma segunda resolução que é de uma resolução menor que a primeira resolução.
BR112020006869-1A 2017-10-11 2018-10-05 processador de sinal de imagem para processamento de imagens BR112020006869A2 (pt)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201762571182P 2017-10-11 2017-10-11
US62/571,182 2017-10-11
US15/993,223 US10643306B2 (en) 2017-10-11 2018-05-30 Image signal processor for processing images
US15/993,223 2018-05-30
PCT/US2018/054764 WO2019074804A1 (en) 2017-10-11 2018-10-05 IMAGE SIGNAL PROCESSOR DESIGNED TO PROCESS IMAGES

Publications (1)

Publication Number Publication Date
BR112020006869A2 true BR112020006869A2 (pt) 2020-10-06

Family

ID=65993285

Family Applications (1)

Application Number Title Priority Date Filing Date
BR112020006869-1A BR112020006869A2 (pt) 2017-10-11 2018-10-05 processador de sinal de imagem para processamento de imagens

Country Status (8)

Country Link
US (1) US10643306B2 (pt)
EP (1) EP3695375A1 (pt)
KR (1) KR20200058440A (pt)
CN (2) CN117350917A (pt)
AU (1) AU2018346909B2 (pt)
BR (1) BR112020006869A2 (pt)
CA (1) CA3075544A1 (pt)
WO (1) WO2019074804A1 (pt)

Families Citing this family (54)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10366328B2 (en) * 2017-09-19 2019-07-30 Gyrfalcon Technology Inc. Approximating fully-connected layers with multiple arrays of 3x3 convolutional filter kernels in a CNN based integrated circuit
US10360470B2 (en) * 2016-10-10 2019-07-23 Gyrfalcon Technology Inc. Implementation of MobileNet in a CNN based digital integrated circuit
US10489887B2 (en) 2017-04-10 2019-11-26 Samsung Electronics Co., Ltd. System and method for deep learning image super resolution
US11263782B2 (en) 2017-10-11 2022-03-01 Qualcomm Incorporated Image signal processor for processing images
US10945033B2 (en) * 2018-03-14 2021-03-09 Idomoo Ltd. System and method to generate a customized, parameter-based video
US10636123B2 (en) * 2018-05-15 2020-04-28 Wipro Limited Method and device for de-noising images
KR102516366B1 (ko) * 2018-05-30 2023-03-31 삼성전자주식회사 특징 데이터 획득 방법 및 장치
US10803565B2 (en) * 2018-07-10 2020-10-13 Intel Corporation Low-light imaging using trained convolutional neural networks
KR20200028168A (ko) * 2018-09-06 2020-03-16 삼성전자주식회사 컨볼루셔널 뉴럴 네트워크를 이용하는 컴퓨팅 장치 및 그 동작 방법
US20200137380A1 (en) * 2018-10-31 2020-04-30 Intel Corporation Multi-plane display image synthesis mechanism
US10904637B2 (en) * 2018-12-17 2021-01-26 Qualcomm Incorporated Embedded rendering engine for media data
US11853812B2 (en) * 2018-12-20 2023-12-26 Here Global B.V. Single component data processing system and method utilizing a trained neural network
US10997690B2 (en) * 2019-01-18 2021-05-04 Ramot At Tel-Aviv University Ltd. Method and system for end-to-end image processing
US10509991B1 (en) 2019-03-18 2019-12-17 Capital One Services, Llc Detection of images in relation to targets based on colorspace transformation techniques and utilizing infrared light
US10496862B1 (en) 2019-03-18 2019-12-03 Capital One Services, Llc Detection of images in relation to targets based on colorspace transformation techniques and utilizing ultraviolet light
US10534948B1 (en) 2019-03-18 2020-01-14 Capital One Services, Llc Optimizing detection of images in relation to targets based on colorspace transformation techniques
US10496911B1 (en) 2019-03-18 2019-12-03 Capital One Services, Llc Detection of images in relation to targets based on colorspace transformation techniques and utilizing ultraviolet and infrared light
CN111986278B (zh) * 2019-05-22 2024-02-06 富士通株式会社 图像编码装置、概率模型生成装置和图像压缩系统
US11126895B2 (en) * 2019-05-22 2021-09-21 Lawrence Livermore National Security, Llc Mimicking of corruption in images
WO2020251337A1 (ko) * 2019-06-13 2020-12-17 엘지이노텍 주식회사 카메라 장치 및 카메라 장치의 이미지 생성 방법
DE102019209282A1 (de) * 2019-06-26 2020-12-31 Robert Bosch Gmbh Verfahren zum Erhalten einer Infrarotdarstellung einer Bildsituation und Recheneinheit, System und Computerprogramm zu dessen Durchführung
US10614635B1 (en) 2019-07-25 2020-04-07 Capital One Services, Llc Augmented reality system with color-based fiducial marker
US11049286B2 (en) * 2019-07-31 2021-06-29 Hewlett Packard Enterprise Development Lp Deep neural network color space optimization
KR102213765B1 (ko) * 2019-08-09 2021-02-08 엘지이노텍 주식회사 이미지 센서, 카메라 모듈 및 카메라 모듈을 포함하는 광학 기기
US10833852B1 (en) 2019-10-03 2020-11-10 Capital One Services, Llc Encoded data along tape based on colorspace schemes
US10715183B1 (en) 2019-10-25 2020-07-14 Capital One Services, Llc Data encoding with error-correcting code pursuant to colorspace schemes
US10867226B1 (en) 2019-11-04 2020-12-15 Capital One Services, Llc Programmable logic array and colorspace conversions
DE102019129760A1 (de) 2019-11-05 2021-05-06 Eyyes Gmbh Verfahren zur Verarbeitung von Eingangsdaten
US10762371B1 (en) 2019-11-14 2020-09-01 Capital One Services, Llc Object detection techniques using colorspace conversions
WO2021112550A1 (en) 2019-12-02 2021-06-10 Samsung Electronics Co., Ltd. System and method for generating multi-exposure frames from single input
US10944914B1 (en) * 2019-12-02 2021-03-09 Samsung Electronics Co., Ltd. System and method for generating multi-exposure frames from single input
KR20210097448A (ko) * 2020-01-30 2021-08-09 삼성전자주식회사 영상 데이터 처리 방법 및 영상 데이터 처리 방법을 수행하는 센서 장치
US11423305B2 (en) * 2020-02-26 2022-08-23 Deere & Company Network-based work machine software optimization
US11436491B2 (en) * 2020-03-13 2022-09-06 Microsoft Technology Licensing, Llc System and method for improving convolutional neural network-based machine learning models
US11282240B2 (en) 2020-04-23 2022-03-22 Saudi Arabian Oil Company Generation and implementation of multi-layer encoded data images
US11983846B2 (en) * 2020-05-13 2024-05-14 Qualcomm Incorporated Machine learning based image adjustment
US11620476B2 (en) * 2020-05-14 2023-04-04 Micron Technology, Inc. Methods and apparatus for performing analytics on image data
US11302036B2 (en) * 2020-08-19 2022-04-12 Capital One Services, Llc Color conversion between color spaces using reduced dimension embeddings
KR102418536B1 (ko) * 2020-09-01 2022-07-08 광주과학기술원 이미지 센서 및 이미지 센서를 사용하는 이미지 인식장치
EP4222968A1 (en) * 2020-10-01 2023-08-09 Beijing Dajia Internet Information Technology Co., Ltd. Video coding with neural network based in-loop filtering
WO2022092555A1 (ko) * 2020-10-27 2022-05-05 삼성전자 주식회사 노이즈 저감 처리된 이미지 데이터를 생성하는 방법 및 이를 수행하는 전자 장치
CN112329634B (zh) * 2020-11-05 2024-04-02 华中师范大学 课堂行为识别方法、装置、电子设备及存储介质
RU2764395C1 (ru) * 2020-11-23 2022-01-17 Самсунг Электроникс Ко., Лтд. Способ и устройство для совместного выполнения дебайеризации и устранения шумов изображения с помощью нейронной сети
KR20220082547A (ko) 2020-12-10 2022-06-17 에스케이하이닉스 주식회사 이미지 센싱 장치
US11785068B2 (en) 2020-12-31 2023-10-10 Synaptics Incorporated Artificial intelligence image frame processing systems and methods
US20220303515A1 (en) * 2021-03-17 2022-09-22 Mediatek Inc. High Sensitivity Color Image Generation Using Hybrid Sensor
CN113301221B (zh) * 2021-03-19 2022-09-09 西安电子科技大学 一种深度网络相机图像处理方法及终端
US11778305B2 (en) * 2021-06-18 2023-10-03 Qualcomm Incorporated Composite image signal processor
FR3124671B1 (fr) * 2021-06-25 2023-07-07 Fond B Com Procédés de décodage et de codage d’une image, dispositifs et signal associés
CN113341842B (zh) * 2021-06-28 2022-04-22 山东科技大学 一种堆场喷雾除尘智能控制系统
US11967047B2 (en) * 2021-09-30 2024-04-23 Kwai Inc. Methods and devices for joint sensor and pixel domain denoising
CN113933111B (zh) * 2021-09-30 2022-08-19 南京大学 一种实现图像尺寸放大的上采样装置及其方法
WO2023229591A1 (en) * 2022-05-25 2023-11-30 Innopeak Technology, Inc. Real scene super-resolution with raw images for mobile devices
KR102664214B1 (ko) * 2022-12-14 2024-05-10 고려대학교 산학협력단 질감 보존을 위한 자가-잔차 학습 기반 자가 감독 노이즈 제거 장치 및 방법

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100200215B1 (ko) * 1996-04-08 1999-06-15 윤종용 상관 신경 회로망을 이용한 납땜 검사 장치 및방법
US6594382B1 (en) * 1999-11-04 2003-07-15 The United States Of America As Represented By The Secretary Of The Navy Neural sensors
US6735579B1 (en) * 2000-01-05 2004-05-11 The United States Of America As Represented By The Secretary Of The Navy Static memory processor
EP1789923A1 (en) * 2004-08-11 2007-05-30 Aureon Laboratories, Inc. Systems and methods for automated diagnosis and grading of tissue images
WO2008005426A2 (en) * 2006-06-30 2008-01-10 University Of South Florida Computer-aided pathological diagnosis system
US9626766B2 (en) 2014-02-28 2017-04-18 Microsoft Technology Licensing, Llc Depth sensing using an RGB camera
US20160239706A1 (en) 2015-02-13 2016-08-18 Qualcomm Incorporated Convolution matrix multiply with callback for deep tiling for deep convolutional neural networks
WO2016207875A1 (en) 2015-06-22 2016-12-29 Photomyne Ltd. System and method for detecting objects in an image
US9633282B2 (en) 2015-07-30 2017-04-25 Xerox Corporation Cross-trained convolutional neural networks using multimodal images
US20170124409A1 (en) * 2015-11-04 2017-05-04 Nec Laboratories America, Inc. Cascaded neural network with scale dependent pooling for object detection
US10460231B2 (en) 2015-12-29 2019-10-29 Samsung Electronics Co., Ltd. Method and apparatus of neural network based image signal processor
US9760827B1 (en) * 2016-07-22 2017-09-12 Alpine Electronics of Silicon Valley, Inc. Neural network applications in resource constrained environments
CN106709532B (zh) * 2017-01-25 2020-03-10 京东方科技集团股份有限公司 图像处理方法和装置
CN106991646B (zh) * 2017-03-28 2020-05-26 福建帝视信息科技有限公司 一种基于密集连接网络的图像超分辨率方法
CN107169927B (zh) * 2017-05-08 2020-03-24 京东方科技集团股份有限公司 一种图像处理系统、方法及显示装置

Also Published As

Publication number Publication date
KR20200058440A (ko) 2020-05-27
WO2019074804A1 (en) 2019-04-18
EP3695375A1 (en) 2020-08-19
CA3075544A1 (en) 2019-04-18
CN117350917A (zh) 2024-01-05
US10643306B2 (en) 2020-05-05
US20190108618A1 (en) 2019-04-11
CN111194458B (zh) 2023-10-13
AU2018346909B2 (en) 2023-01-12
AU2018346909A1 (en) 2020-03-26
CN111194458A (zh) 2020-05-22

Similar Documents

Publication Publication Date Title
BR112020006869A2 (pt) processador de sinal de imagem para processamento de imagens
US10614603B2 (en) Color normalization for a multi-camera system
US11263782B2 (en) Image signal processor for processing images
CN103973958B (zh) 图像处理方法及设备
US9639945B2 (en) Depth-based application of image effects
US9305375B2 (en) High-quality post-rendering depth blur
EP3602483A1 (en) Machine-learning based technique for fast image enhancement
CN109598673A (zh) 图像拼接方法、装置、终端及计算机可读存储介质
CN106797437A (zh) 使用多个图像的高动态范围图像合成
CN101543056A (zh) 使用多曝光模式的图像稳定化
WO2018196704A1 (zh) 双核对焦图像传感器及其对焦控制方法和成像装置
EP3247107B1 (en) Method and device for obtaining a hdr image by graph signal processing
US20210374527A1 (en) Information processing apparatus, information processing method, and storage medium
CN105812649A (zh) 一种摄像方法和装置
CN109801279A (zh) 图像中的目标检测方法及装置、电子设备、存储介质
CN108665415A (zh) 基于深度学习的图像质量提升方法及其装置
CN108122218A (zh) 基于颜色空间的图像融合方法与装置
CN105578077A (zh) 成像方法、成像装置及电子装置
CN102447833B (zh) 图像处理设备和用于控制图像处理设备的方法
KR102565989B1 (ko) 다중 스케일 네트워크 기반의 가시광 이미지 및 적외선 이미지 병합 장치 및 방법
US20220405972A1 (en) An imaging sensor, an image processing device and an image processing method
US20170018062A1 (en) Image processing devices and image processing methods
US8331684B2 (en) Color and intensity based meaningful object of interest detection
CN109961083A (zh) 用于将卷积神经网络应用于图像的方法和图像处理实体
US20240155248A1 (en) Method and apparatus for generating high-dynamic-range image, and electronic device

Legal Events

Date Code Title Description
B350 Update of information on the portal [chapter 15.35 patent gazette]