KR102324889B1 - Method and system for executing open-source programs written for personal computer on low-powered devices using artificial neural network - Google Patents

Method and system for executing open-source programs written for personal computer on low-powered devices using artificial neural network Download PDF

Info

Publication number
KR102324889B1
KR102324889B1 KR1020200077800A KR20200077800A KR102324889B1 KR 102324889 B1 KR102324889 B1 KR 102324889B1 KR 1020200077800 A KR1020200077800 A KR 1020200077800A KR 20200077800 A KR20200077800 A KR 20200077800A KR 102324889 B1 KR102324889 B1 KR 102324889B1
Authority
KR
South Korea
Prior art keywords
neural network
electronic device
artificial neural
input data
data
Prior art date
Application number
KR1020200077800A
Other languages
Korean (ko)
Inventor
엄성민
한지희
Original Assignee
(주)데이터리퍼블릭
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 (주)데이터리퍼블릭 filed Critical (주)데이터리퍼블릭
Priority to KR1020200077800A priority Critical patent/KR102324889B1/en
Application granted granted Critical
Publication of KR102324889B1 publication Critical patent/KR102324889B1/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/76Adapting program code to run in a different environment; Porting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/61Installation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/451Execution arrangements for user interfaces
    • G06N3/0454
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means

Abstract

A system for performing a certain algorithm may include a first electronic device and a second electronic device for performing a certain algorithm. The first electronic device performs learning on a first artificial neural network by applying first input data of a predetermined algorithm and first output data of an algorithm with respect to the first input data as an input and an output of the first artificial neural network, respectively, to determine weight values of the first artificial neural network and transmit the determined weight values to the second electronic device through a wired or wireless communication interface. The second electronic device stores a second artificial neural network having the same structure as the first artificial neural network and calculates the second output data of the second artificial neural network with respect to the second input data using the weight values to perform a certain algorithm on the second input data.

Description

인공 신경망을 이용하여 PC용 오픈소스 프로그램을 저전력 장치에서 실행시킬 수 있는 방법 및 시스템{METHOD AND SYSTEM FOR EXECUTING OPEN-SOURCE PROGRAMS WRITTEN FOR PERSONAL COMPUTER ON LOW-POWERED DEVICES USING ARTIFICIAL NEURAL NETWORK}METHOD AND SYSTEM FOR EXECUTING OPEN-SOURCE PROGRAMS WRITTEN FOR PERSONAL COMPUTER ON LOW-POWERED DEVICES USING ARTIFICIAL NEURAL NETWORK

본 발명은 저전력 장치에서의 알고리즘 수행 방법 및 시스템에 관한 것으로, 보다 구체적으로는 수행을 위해 고사양의 메모리와 프로세서를 필요로 하는 알고리즘을 인공 신경망을 활용하여 저전력 장치에서도 간편하게 수행하기 위한 방법 및 시스템에 관한 것이다.The present invention relates to a method and system for performing an algorithm in a low-power device, and more particularly, to a method and system for easily performing an algorithm that requires a high-spec memory and a processor in a low-power device using an artificial neural network to perform it. it's about

자율 주행이나 차량 제어 자동화 등을 위해 차량으로부터 수집되는 데이터에 인공지능 기술 등을 적용하여 유의미한 결과를 도출하는 연구가 활발히 수행되고 있다. 현재 이러한 인공지능이나 빅데이터의 최신 연구 오픈 소스코드는 대부분 파이선(Python) 언어 기반으로 구현되어 있다. Research to derive meaningful results by applying artificial intelligence technology to data collected from vehicles for autonomous driving or vehicle control automation is being actively conducted. Currently, most of the latest research open source codes for artificial intelligence or big data are implemented based on the Python language.

그러나, 차량 데이터 수집 장치와 같은 소형 장치나 모바일 장치는 일반적으로 메모리 용량이 작고, 저전력에서 구동되는 저성능 프로세서가 탑재되므로 인공지능 또는 빅데이터 알고리즘을 구현하기 위한 오픈소스 코드(예를 들어, 파이선 코드)를 장치에서 바로 구동시키기는 쉽지 않다. 따라서, 외부에서 개발되고 테스트된 알고리즘을 소형 장치에서 구동시키기 위해서는, 파이선 등과 같은 프로그래밍 코드로 기 구현된 알고리즘을 소형 장치에서 구동이 가능한 임베디드 C(Embedded C) 또는 어셈블리어(Assembly Language)로 변환하는 작업을 거쳐야 한다. 이러한 변환 또는 포팅(porting) 작업은 많은 개발 인력, 비용, 시간이 투입되므로 연구 개발의 효율성을 저하시키는 원인이 된다. However, since a small device or mobile device such as a vehicle data collection device generally has a small memory capacity and is equipped with a low-performance processor running at low power, open source code (e.g., Python code) is not easy to run directly on the device. Therefore, in order to run an externally developed and tested algorithm on a small device, an algorithm previously implemented in programming code such as Python is converted into Embedded C or Assembly Language that can be operated on a small device. must go through This conversion or porting operation takes a lot of development manpower, cost, and time, and thus reduces the efficiency of R&D.

외부에서 개발하고 테스트한 소정의 알고리즘 수행 코드를 별도의 코드의 변환이나 포팅(porting) 작업 없이 인공 신경망을 활용하여 소형 장치에서 수행 가능하도록 하기 위한 방법 및 시스템이 제공될 수 있다. A method and system for enabling execution of a predetermined algorithm execution code developed and tested externally in a small device using an artificial neural network without a separate code conversion or porting operation may be provided.

본 실시 예가 이루고자 하는 기술적 과제는 상기된 바와 같은 기술적 과제로 한정되지 않으며, 이하의 실시 예들로부터 또 다른 기술적 과제들이 유추될 수 있다.The technical task to be achieved by the present embodiment is not limited to the technical task as described above, and other technical tasks may be inferred from the following embodiments.

시스템은 제1전자 장치, 및 소정의 알고리즘을 수행하기 위한 제2전자 장치를 포함하고, 상기 제1전자 장치는 상기 소정의 알고리즘의 제1입력 데이터와 상기 제1입력 데이터에 대한 상기 알고리즘의 제1출력 데이터를 각각 제1인공 신경망의 입력과 출력으로 적용하여 상기 제1인공 신경망에 대한 학습을 수행함으로써 상기 제1인공 신경망의 가중치 값들을 결정하고, 유선 또는 무선 통신 인터페이스를 통해 상기 결정된 가중치 값들을 상기 제2전자 장치로 전달하고, 상기 제2전자 장치는 상기 제1인공 신경망과 동일한 구조의 제2인공 신경망을 저장하고, 상기 가중치 값들을 이용하여 제2입력 데이터에 대한 상기 제2인공 신경망의 제2출력 데이터를 연산함으로써 상기 제2입력 데이터에 상기 소정의 알고리즘을 수행할 수 있다.The system includes a first electronic device and a second electronic device for performing a predetermined algorithm, wherein the first electronic device includes first input data of the predetermined algorithm and a first input data of the algorithm on the first input data. By applying the first output data as input and output of the first artificial neural network, respectively, learning for the first artificial neural network is performed to determine the weight values of the first artificial neural network, and the determined weight value through a wired or wireless communication interface to the second electronic device, the second electronic device stores a second artificial neural network having the same structure as the first artificial neural network, and the second artificial neural network for second input data using the weight values The predetermined algorithm may be performed on the second input data by calculating the second output data of .

상기 제1입력 데이터와 상기 제1출력 데이터 각각은, 상기 소정의 알고리즘을 수행하도록 프로그래밍 코드로 구현되는 함수, API, 라이브러리, 또는 모듈에 대한 입력 값과 출력 값일 수 있다.Each of the first input data and the first output data may be an input value and an output value for a function, API, library, or module implemented as programming code to perform the predetermined algorithm.

상기 제2전자 장치는 차량 데이터를 수집하고 수집된 상기 차량 데이터에 상기 소정의 알고리즘을 수행하기 위한 단말기이고, 상기 제1전자 장치는 상기 제2전자 장치의 외부에 위치하는 서버 컴퓨터일 수 있다.The second electronic device may be a terminal for collecting vehicle data and performing the predetermined algorithm on the collected vehicle data, and the first electronic device may be a server computer located outside the second electronic device.

상기 단말기에는 상기 제2입력 데이터에 대한 상기 제2인공 신경망의 상기 제2출력 데이터를 연산하기 위한 실행 파일이 저장되고, 상기 제2입력 데이터는 상기 차량 데이터를 포함하고, 상기 단말기는 상기 실행 파일을 이용하여 상기 차량 데이터에 상기 소정의 알고리즘을 수행할 수 있다. An executable file for calculating the second output data of the second artificial neural network with respect to the second input data is stored in the terminal, the second input data includes the vehicle data, and the terminal includes the executable file can be used to perform the predetermined algorithm on the vehicle data.

상기 제1인공 신경망의 용량은 상기 제2전자 장치에 저장될 수 있도록 기준 용량보다 작을 수 있다.A capacity of the first artificial neural network may be smaller than a reference capacity to be stored in the second electronic device.

고급 언어로 구현되는 소정의 알고리즘을 저성능 장치에서 수행 가능하도록 하기 위해 필요한 정보를 획득하기 위한 장치는, 상기 소정의 알고리즘의 입력 데이터에 연산을 수행하여 상기 소정의 알고리즘의 출력 데이터를 획득하기 위한 순환 인공 신경망을 저장하기 위한 메모리, 상기 입력 데이터를 상기 순환 인공 신경망을 이용하여 연산한 결과와 상기 입력 데이터에 상기 소정의 알고리즘을 수행한 결과가 동일해지도록 상기 순환 인공 신경망에 대한 학습을 수행함으로써 상기 순환 인공 신경망의 가중치 값들을 결정하기 위한 프로세서, 및 상기 가중치 값들을 외부에 위치한 상기 저성능 장치로 전송하기 위한 통신부를 포함하고, 상기 순환 인공 신경망의 구조는 상기 저성능 장치의 성능과 용량에 따라 결정되고, 상기 입력 데이터와 상기 출력 데이터 각각은 상기 소정의 알고리즘을 수행하도록 파이선 코드로 구현된 함수, API, 라이브러리, 또는 모듈에 대한 입력 값과 출력 값일 수 있다.An apparatus for obtaining information necessary for enabling a predetermined algorithm implemented in a high-level language to be executed in a low-performance device includes: performing an operation on input data of the predetermined algorithm to obtain output data of the predetermined algorithm; By performing learning on the recurrent neural network so that a memory for storing the recurrent neural network and a result of calculating the input data using the recurrent neural network and the result of performing the predetermined algorithm on the input data are the same a processor for determining weight values of the recurrent neural network, and a communication unit for transmitting the weight values to the low-performance device located outside, wherein the structure of the recurrent neural network depends on the performance and capacity of the low-performance device is determined, and each of the input data and the output data may be an input value and an output value for a function, API, library, or module implemented in Python code to perform the predetermined algorithm.

외부에서 개발하고 테스트한 알고리즘 수행 코드를 별도의 코드 변환이나 포팅(porting) 작업 없이 인공 신경망을 활용하여 소형 장치에서 수행 가능하도록 하기 위한 방법 및 시스템이 제공될 수 있다. 본 명세서에 개시된 방법 및 시스템에 따라, 연구 개발 과정에서 불필요한 시간과 비용이 감소되고 효율성이 향상될 수 있다.A method and system for enabling an externally developed and tested algorithm execution code to be executed in a small device using an artificial neural network without a separate code conversion or porting operation may be provided. According to the method and system disclosed herein, unnecessary time and cost in the research and development process can be reduced and efficiency can be improved.

도1은 일 실시 예에 따라, 소형 장치에서 소정의 알고리즘을 수행하기 위한 시스템을 나타낸다.
도2는 일 실시 예에 따라, 입력 데이터에 연산을 수행함으로써 출력 데이터를 획득하기 위한 인공 신경망을 나타낸다.
도3은 일 실시 예에 따라, 인공 신경망으로 구현될 수 있는 파이선 코드를 나타낸다.
도4는 일 실시 예에 따라, 고급 언어로 구현되는 소정의 알고리즘을 저성능 장치에서 수행 가능하도록 하기 위해 필요한 정보를 획득하는 장치의 블록도를 나타낸다.
1 shows a system for performing a predetermined algorithm in a small device, according to an embodiment.
2 illustrates an artificial neural network for obtaining output data by performing an operation on input data, according to an embodiment.
3 illustrates a Python code that may be implemented as an artificial neural network, according to an embodiment.
4 is a block diagram of an apparatus for obtaining information necessary to enable a low-performance apparatus to execute a predetermined algorithm implemented in a high-level language, according to an embodiment.

아래에서, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자들(이하, 통상의 기술자들)이 본 발명을 용이하게 실시할 수 있도록, 첨부되는 도면들을 참조하여 몇몇 실시 예가 명확하고 상세하게 설명될 것이다.Below, some embodiments will be described clearly and in detail with reference to the accompanying drawings so that those of ordinary skill in the art to which the present invention pertains (hereinafter, those skilled in the art) can easily practice the present invention. will be.

도1은 일 실시 예에 따라, 소형 장치에서 소정의 알고리즘을 수행하기 위한 시스템을 나타낸다.1 shows a system for performing a predetermined algorithm in a small device, according to an embodiment.

도1을 참조하면, 시스템(1000)은 제1전자 장치(1200)와 제2전자 장치(1400)를 포함할 수 있다.Referring to FIG. 1 , a system 1000 may include a first electronic device 1200 and a second electronic device 1400 .

제1전자 장치(1200)와 제2전자 장치(1400)는 각각 컴퓨터, 스마트폰, 태블릿 PC, 데이터 처리 장치, 임베디드 소프트웨어가 탑재된 장치, 단말기 등을 포함할 수 있다. 예를 들어, 제1전자 장치(1200)는 서버 컴퓨팅 장치이고, 제2전자 장치(1400)는 임베디드 소프트웨어가 탑재된 차량 데이터 수집 장치일 수 있다. 제1전자 장치(1200)는 제2전자 장치(1400)의 외부에 위치할 수 있다.Each of the first electronic device 1200 and the second electronic device 1400 may include a computer, a smart phone, a tablet PC, a data processing device, a device equipped with embedded software, a terminal, and the like. For example, the first electronic device 1200 may be a server computing device, and the second electronic device 1400 may be a vehicle data collection device loaded with embedded software. The first electronic device 1200 may be located outside the second electronic device 1400 .

제2전자 장치(1400)는 제1전자 장치(1200)보다 낮은 사양의 메모리와 프로세서가 탑재된 소형 전자 장치(또는, 저전력 장치)일 수 있다. 소형 전자 장치에는 임베디드 소프트웨어(Embedded Software)가 설치될 수 있으며, 메모리 용량이 크지 않고 저전력에서 동작하는 저성능 프로세서가 탑재될 수 있다. 이러한 소형 전자 장치는 특정 목적이나 기능을 수행하기 위한 컴퓨팅 장치로서, 소형화되어 이동이 편리하나 메모리 용량은 크지 않으며 상대적으로 낮은 성능의 프로세서가 탑재되는 것이 일반적이다. The second electronic device 1400 may be a small electronic device (or a low-power device) in which a memory and a processor of a lower specification than that of the first electronic device 1200 are mounted. Embedded software may be installed in the small electronic device, and a low-performance processor that does not have a large memory capacity and operates at low power may be mounted. Such a small electronic device is a computing device for performing a specific purpose or function, and although it is miniaturized and easy to move, the memory capacity is not large and a processor of relatively low performance is generally mounted.

예를 들어, 제2전자 장치(1400)에는 임베디드 리눅스(Embedded Linux), 라즈베리 파이(rasberry pi), 아두이노(Arduino), 구글사의 안드로이드(Andriod), 애플사의 ios, 혹은 기타 저전력/저성능 컴퓨팅 장비에 사용되는 운영체제가 탑재될 수 있다. 또는, 제2전자 장치(1400)는 사물인터넷(Internet Of Things; IoT) 기기일 수 있다. 사물인터넷 기기는 접근 가능한 유선 또는 무선 인터페이스를 가지며, 유선 또는 무선 인터페이스를 통하여 적어도 하나 이상의 다른 기기와 통신하여, 데이터를 송신 또는 수신하는 기기를 포함할 수 있다.For example, the second electronic device 1400 includes Embedded Linux, Raspberry pi, Arduino, Google's Android, Apple's ios, or other low-power/low-performance computing. An operating system used in the device may be loaded. Alternatively, the second electronic device 1400 may be an Internet of Things (IoT) device. The IoT device may include a device that has an accessible wired or wireless interface, communicates with at least one other device through a wired or wireless interface, and transmits or receives data.

이에 반해, 제1전자 장치(1200)는 일반적인 목적을 수행하기 위한 범용 컴퓨터 장치일 수 있다. 제1전자 장치(1200)는 하드 디스크와 같은 대용량의 메모리가 탑재되어 있을 수 있다. 제1전자 장치(1200)는 제2전자 장치(1400)에 비해 메모리 용량이 크고 고성능의 프로세서가 탑재되어 있다. 따라서, 제1전자 장치(1200)는 제2전자 장치(1400)에 비해 복잡도가 높은 알고리즘을 구현할 수 있고 대량의 데이터를 처리하기 적합하다. 일 실시 예에 따라, 제1전자 장치(1200)는 다양한 형태의 중앙 집중적 컴퓨터 기기 또는 분산적 컴퓨팅 기기로 이루어진 서버일 수 있다. In contrast, the first electronic device 1200 may be a general-purpose computer device for performing a general purpose. The first electronic device 1200 may be equipped with a large-capacity memory such as a hard disk. The first electronic device 1200 has a larger memory capacity than the second electronic device 1400 and includes a high-performance processor. Accordingly, the first electronic device 1200 can implement an algorithm having a higher complexity than the second electronic device 1400 and is suitable for processing a large amount of data. According to an embodiment, the first electronic device 1200 may be a server including various types of centralized computing devices or distributed computing devices.

제1전자 장치(1200)와 제2전자 장치(1400)는 유선 또는 무선 통신 인터페이스를 통해 서로 접속될 수 있다. 무선 통신 인터페이스는 Wi-Fi(Wireless Fidelity)와 같은 무선 근거리 통신망(Wireless Local Area Network; WLAN), 블루투스(Bluetooth)와 같은 무선 개인 통신망(Wireless Personal Area Network; WPAN), 무선 USB(Wireless Universal Serial Bus), 지그비(Zigbee), NFC(Near Field Communication), RFID(Radio-frequency identification), PLC(Power Line communication), 또는 3G(3rd Generation), 4G(4th Generation), LTE(Long Term Evolution), 5G(5th Generation) 등 이동 통신망(mobile cellular network)에 접속 가능한 모뎀 통신 인터페이스 등을 포함할 수 있다. The first electronic device 1200 and the second electronic device 1400 may be connected to each other through a wired or wireless communication interface. The wireless communication interface is a wireless local area network (WLAN) such as Wi-Fi (Wireless Fidelity), a wireless personal area network (WPAN) such as Bluetooth, and a wireless USB (Wireless Universal Serial Bus). ), Zigbee, NFC (Near Field Communication), RFID (Radio-frequency identification), PLC (Power Line communication), or 3G (3rd Generation), 4G (4th Generation), LTE (Long Term Evolution), 5G It may include a modem communication interface connectable to a mobile cellular network, such as (5th Generation).

제1전자 장치(1200)와 제2전자 장치(1400) 각각은 프로세서, 메모리, 및 통신 회로를 포함할 수 있다. 프로세서는, 중앙 처리 장치(CPU), 마이크로프로세서(Microprocessor), GPU(Graphic Processing Unit), DSP(Digital Signal Processor) 또는 MCU(Micro Controller Unit)를 포함할 수 있다. 메모리는 동적 랜덤 액세스 메모리(DRAM), 정적 랜덤 액세스 메모리(SRAM)와 같은 휘발성 메모리, 플래시 메모리, ROM(Read Only Memory), PRAM(Phase-change Random Access Memory), MRAM(Magnetic Random Access Memory), ReRAM(Resistive Random Access Memory), 및 FRAM(Ferroelectrics Random Access Memory)과 같은 비휘발성 메모리를 포함할 수 있다. 예를 들어, 제1전자 장치(1200)는 CPU 와 메모리를 탑재할 수 있고, 제2전자 장치(1400)는 마이크로프로세서와 메모리를 탑재할 수 있다.Each of the first electronic device 1200 and the second electronic device 1400 may include a processor, a memory, and a communication circuit. The processor may include a central processing unit (CPU), a microprocessor, a graphic processing unit (GPU), a digital signal processor (DSP), or a micro controller unit (MCU). Memory includes dynamic random access memory (DRAM), volatile memory such as static random access memory (SRAM), flash memory, read only memory (ROM), phase-change random access memory (PRAM), magnetic random access memory (MRAM), non-volatile memory such as resistive random access memory (ReRAM), and ferroelectrics random access memory (FRAM). For example, the first electronic device 1200 may mount a CPU and a memory, and the second electronic device 1400 may mount a microprocessor and a memory.

일반적인 연구 개발 환경에서, 복잡도가 높은 알고리즘(예를 들어, 빅데이터의 처리, 인공지능 기술을 활용한 알고리즘)은 파이선(Python), 자바(Java), 매트랩(Matlab)과 같은 프로그래밍 언어로 개발되고 테스트된다. 상기 알고리즘(또는, PC용 오픈소스 프로그램)을 소형 전자 장치인 제2전자 장치(1400)에서 수행 가능하도록 하기 위해서는 제2전자 장치(1400)에서 직접 컴파일 가능한 언어(예를 들어, 임베디드 C(Embedded C))로 변환시키는 작업이 필요하다. 제2전자 장치(1400)는 메모리의 용량이 크지 않고 저성능 프로세서가 탑재되기 때문에 외부 환경에서 개발된 알고리즘을 그대로 수행하기 쉽지 않기 때문이다.In a general R&D environment, algorithms with high complexity (eg, big data processing, algorithms using artificial intelligence technology) are developed in programming languages such as Python, Java, and Matlab. are tested In order to enable the algorithm (or open source program for PC) to be executed by the second electronic device 1400 that is a small electronic device, a language that can be directly compiled by the second electronic device 1400 (eg, embedded C (Embedded C)). C)), it is necessary to convert it to This is because the second electronic device 1400 does not have a large memory capacity and is equipped with a low-performance processor, so it is not easy to execute an algorithm developed in an external environment as it is.

특히, 인공지능이나 빅데이터 최신 연구 오픈소스 코드는 대부분 텐서플로우(Tensorflow) 나 파이토치(PyTorch)같은 파이선 코드 기반의 딥러닝 프레임워크(Deeplearning Framework)로 구현되어 있으므로 개발자는 빠른 구현을 위해 파이선 코드로 자신의 아이디어나 알고리즘을 구현하고 테스트할 수 밖에 없다. 그러나, 소형 전자 장치인 제2전자 장치(1400)는 고성능 컴퓨팅 장치를 사용하지 않기 때문에 파이선 기반의 딥러닝 프레임워크의 사용이 불가능하고, 제2전자 장치(1400)에서 기 구현된 알고리즘을 수행하기 위해서는 임베디드 C 언어 또는 어셈블리어(Assembly) 언어로 알고리즘이 다시 구현될 필요가 있다. In particular, since most of the open source codes for the latest research on artificial intelligence or big data are implemented with Python code-based Deep Learning Frameworks such as Tensorflow or PyTorch, developers can use Python codes for quick implementation. You have no choice but to implement and test your own ideas or algorithms. However, since the second electronic device 1400, which is a small electronic device, does not use a high-performance computing device, it is impossible to use a Python-based deep learning framework, and the second electronic device 1400 is unable to use a previously implemented algorithm. For this, the algorithm needs to be re-implemented in the embedded C language or assembly language.

예를 들어, 제2전자 장치(1400)가 차량 데이터를 수집하여 가공하고 인공 지능 기술을 활용한 알고리즘을 이용해 운전자의 습관, 차량의 상태, 또는 자율 주행에 필요한 각종 정보를 출력하는 장치일 경우, 외부 환경에서 파이선 코드로 개발된 알고리즘은 제2전자 장치(1400)에서 구동 가능한 형태로 코드 변환 작업을 거쳐야 한다. 이러한 변환 과정에서 상당한 개발 인력, 비용, 시간이 투입된다. For example, when the second electronic device 1400 is a device that collects and processes vehicle data and outputs various types of information necessary for driver habit, vehicle state, or autonomous driving using an algorithm using artificial intelligence technology, An algorithm developed as a Python code in an external environment needs to undergo a code conversion operation into a form operable by the second electronic device 1400 . Significant development manpower, cost, and time are invested in this transformation process.

제2전자 장치(1400)에서 소정의 알고리즘(외부에서 기 구현된 알고리즘)을 수행하기 위해, 제2전자 장치(1400)에는 인공 신경망(1420)이 저장될 수 있다(인공 신경망(1420)은 제2전자 장치(1400)의 메모리에 저장될 수 있다). 인공 신경망(1420)은 함수 변환기로서 기능할 수 있으며 외부에서 기 구현된 소정의 알고리즘을 대체하여 수행할 수 있다. 인공 신경망(1420)의 비선형 활성화 함수(Step, Sigmoid, ReLu 등)는 입력과 출력 사이의 관계를 밝혀낼 수 있고, 여러 개의 비선형 변환들이 복수의 레이어들을 통해 연결됨으로써 인공 신경망(1420)의 유연성과 표현력은 크게 향상될 수 있다. 이는 비선형 활성화 함수와 히든 레이어를 갖는 인공 신경망은 임의의 입력과 출력 사이의 매핑을 표현하는 것이 가능하며, 소정의 알고리즘에 대한 임의의 입력 데이터와 임의의 출력 데이터 사이의 관계도 표현 가능함을 의미한다.In order to perform a predetermined algorithm (an algorithm previously implemented externally) in the second electronic device 1400 , the artificial neural network 1420 may be stored in the second electronic device 1400 (the artificial neural network 1420 may be 2 may be stored in the memory of the electronic device 1400). The artificial neural network 1420 may function as a function converter and may be performed by replacing a predetermined algorithm previously implemented externally. The non-linear activation function (Step, Sigmoid, ReLu, etc.) of the artificial neural network 1420 can reveal the relationship between the input and the output, and several non-linear transformations are connected through a plurality of layers, thereby increasing the flexibility of the artificial neural network 1420 and Expressive power can be greatly improved. This means that an artificial neural network with a nonlinear activation function and a hidden layer can express a mapping between an arbitrary input and an output, and can also express a relationship between arbitrary input data and arbitrary output data for a given algorithm. .

이하, 알고리즘은 파이선(Python), C언어, 자바(Java), 매트랩(Matlab)과 같은 프로그래밍 코드로 개발되고 테스트된 소정의 함수, API(Application Programming Interface), 라이브러리, 모듈 등을 의미하고, 알고리즘의 입력 데이터와 출력 데이터 각각은 상기 함수, API, 라이브러리, 또는 모듈에 대한 입력 값과 출력 값을 의미할 수 있다. 입력 값과 출력 값은 각각 임의의 데이터 타입을 가질 수 있다.Hereinafter, an algorithm means a predetermined function, API (Application Programming Interface), library, module, etc. developed and tested with programming code such as Python, C language, Java, and Matlab, and the algorithm Each of the input data and output data of , may mean an input value and an output value for the function, API, library, or module. An input value and an output value may each have an arbitrary data type.

인공 신경망(1420)은 임의의 알고리즘 입력 데이터에 대해 가중치 값들과 노드들의 연산자 또는 피연산자를 통해 연산을 수행함으로써 출력 데이터를 획득할 수 있다. 입력 데이터 I에 대해 인공 신경망(1420)에 의해 정의된 연산을 수행함으로써 출력 데이터 O를 획득하는 과정은 입력 데이터 I에 대해 파이선으로 구현된 소정의 알고리즘을 실제로 수행하여 출력 데이터 O를 획득하는 과정을 대체할 수 있다. 즉, 인공 신경망(1420)에 의해 정의된 연산은 소정의 알고리즘과 실질적으로 동일한 기능을 수행하는 것으로서, 입력 데이터 I에 대해 인공 신경망(1420)을 이용해 연산을 수행함으로써 출력 데이터 O를 획득하는 것은 입력 데이터 I에 대해 소정의 알고리즘을 수행하는 것과 동일한 효과를 가질 수 있다. 이러한 실시 예에서, 파이선과 같은 프로그래밍 언어로 기 구현된 소정의 알고리즘을 제2전자 장치(1400)에서 수행하기 위해 제2전자 장치(1400)에서 실행 가능한 언어로 변환할 필요 없이, 제2전자 장치(1400)가 기 구현된 소정의 알고리즘을 대체하는 인공 신경망(1420)을 이용하여 입력 데이터 I에 대한 연산을 수행하고 출력 데이터 O를 획득함으로써 소정의 알고리즘을 수행할 수 있다. The artificial neural network 1420 may obtain output data by performing an operation on arbitrary algorithm input data through weight values and operators or operands of nodes. The process of obtaining the output data O by performing the operation defined by the artificial neural network 1420 on the input data I is the process of obtaining the output data O by actually performing a predetermined algorithm implemented in Python on the input data I. can be replaced That is, the operation defined by the artificial neural network 1420 performs substantially the same function as a predetermined algorithm, and obtaining output data O by performing an operation on the input data I using the artificial neural network 1420 is an input It can have the same effect as performing a predetermined algorithm on data I. In this embodiment, there is no need to convert a predetermined algorithm previously implemented in a programming language such as Python into a language executable by the second electronic device 1400 to execute the second electronic device 1400, and the second electronic device The predetermined algorithm may be performed by performing an operation on the input data I and obtaining the output data O using the artificial neural network 1420 , which replaces the predetermined algorithm 1400 has already implemented.

도2를 참조하면, 인공 신경망(1420)은 입력 레이어(I-1 내지 I-n), 히든 레이어(La-1 내지 La-n, Lk-1 내지 Lk-n), 및 출력 레이어(RI)를 포함할 수 있다. 히든 레이어(La-1 내지 La-n, Lk-1 내지 Lk-n)는 n개의 노드들을 각각 포함하는 k개의 레이어들로 형성될 수 있다. 인공 신경망(1420)의 노드들은 가중치를 갖는 시냅스들로 연결될 수 있다. 인공 신경망(1420)의 노드들 중 적어도 하나는 비선형 활성화 함수가 정의될 수 있다. 제2전자 장치(1420)는 입력 데이터 I에 대해 인공 신경망(1420)의 가중치 값들과 노드의 연산자/피연산자를 이용하여 연산을 수행하고 출력 데이터 O를 획득할 수 있다. 인공 신경망(1420)가 입력 데이터 I에 대해 연산을 수행하고 출력 데이터 O를 획득하는 과정은 당업자에게 자명하므로 상세한 내용은 생략한다.Referring to FIG. 2 , the artificial neural network 1420 includes an input layer (I-1 to In), hidden layers (La-1 to La-n, Lk-1 to Lk-n), and an output layer (RI). can do. The hidden layers La-1 to La-n and Lk-1 to Lk-n may be formed of k layers each including n nodes. Nodes of the artificial neural network 1420 may be connected by weighted synapses. At least one of the nodes of the artificial neural network 1420 may have a nonlinear activation function defined. The second electronic device 1420 may perform an operation on the input data I by using the weight values of the artificial neural network 1420 and the operator/operand of the node to obtain the output data O. A process in which the artificial neural network 1420 performs an operation on the input data I and obtains the output data O is apparent to those skilled in the art, and thus the detailed description thereof will be omitted.

도3은 일 실시 예에 따라, 인공 신경망으로 구현될 수 있는 파이선 코드를 나타낸다.3 illustrates a Python code that may be implemented as an artificial neural network, according to an embodiment.

도3을 참조하면, 함수 fun1는 리스트 형태의 데이터 타입을 갖는 input_list로부터 리스트 형태의 데이터 타입을 갖는 output_list를 출력하는 알고리즘을 수행할 수 있다. 보다 구체적으로, 함수 fun1는 input_list의 각 인덱스에 저장된 값에 1이 더해진 리스트를 output_list 로서 출력할 수 있다. 예를 들어, input_list 가 {1, 2, 3, 4}라면 output_list는 {2, 3, 4, 5}가 된다. 인공 신경망(1420)은 학습을 통해 임의의 입력 input_list 로부터 output_list를 출력하도록 설계되고, 인공 신경망(1420)의 연산은 파이선 코드로 정의된 함수 fun1의 수행을 대체할 수 있다. 이에 따라, 인공 신경망(1420)은 입력 데이터 {1, 2, 3, 4}에 대해 연산을 수행하여 {2, 3, 4, 5}를 출력하고, 입력 데이터 {20, 30, 40, 50}에 대해 연산을 수행하여 {21, 31, 41, 51}를 출력하도록 학습될 수 있다.Referring to FIG. 3 , the function fun1 may perform an algorithm for outputting an output_list having a list data type from an input_list having a list data type. More specifically, the function fun1 may output a list in which 1 is added to the value stored at each index of the input_list as output_list . For example, if input_list is {1, 2, 3, 4}, output_list becomes {2, 3, 4, 5}. The artificial neural network 1420 is designed to output an output_list from an arbitrary input input_list through learning, and the operation of the artificial neural network 1420 may replace the execution of the function fun1 defined in the Python code. Accordingly, the artificial neural network 1420 performs an operation on the input data {1, 2, 3, 4} to output {2, 3, 4, 5}, and the input data {20, 30, 40, 50} It can be learned to output {21, 31, 41, 51} by performing an operation on .

다시 도1을 참조하면, 일 실시 예에 따라, 인공 신경망(1420)은 순환 신경망(Recurrent Neural Network)일 수 있다. 순환 신경망은 튜링 완전성(Turing-Completeness)이 있으며, 어떠한 소프트웨어 코드도 표현 가능하기 때문이다. 다만, 인공 신경망(1420)은 제2전자 장치(1400)에 의해 저장되고 연산되므로, 제2전자 장치(1400)의 성능과 용량에 따라 인공 신경망(1420)의 크기와 구조가 결정될 수 있다. 예를 들어, 인공 신경망(1420)은 100MB 이하의 메모리에 저장되고 입력 데이터I 로부터 출력 데이터O를 연산하기까지 100ms 이내로 출력이 획득되도록 설계될 수 있다.Referring back to FIG. 1 , according to an embodiment, the artificial neural network 1420 may be a recurrent neural network. This is because recurrent neural networks have Turing-Completeness, and any software code can be expressed. However, since the artificial neural network 1420 is stored and calculated by the second electronic device 1400 , the size and structure of the artificial neural network 1420 may be determined according to the performance and capacity of the second electronic device 1400 . For example, the artificial neural network 1420 may be designed to be stored in a memory of 100 MB or less and to obtain an output within 100 ms from the input data I to the output data O operation.

인공 신경망(1420)의 성능을 나타내는 로스(loss)는 입력 데이터에 인공 신경망(1420)에 의해 정의된 연산을 수행하여 획득된 출력 데이터가 입력 데이터에 기 구현된 소정의 알고리즘(예를 들어, 파이선 코드)을 실제로 적용했을 때 획득되는 출력 데이터와 동일할수록 작게 결정될 수 있으며, 로스가 작을수록 인공 신경망(1420)의 성능은 좋은 것으로 판단될 수 있다. 인공 신경망(1420)의 성능을 결정하는 가중치 값들은 학습을 통해 결정되고, 인공 신경망(1420)에 대한 학습은 입력 데이터를 인공 신경망(1420)을 이용하여 연산한 결과가 입력 데이터에 기 구현된 소정의 알고리즘을 실제로 수행하여 획득된 결과와 동일해지도록 수행될 수 있다.A loss representing the performance of the artificial neural network 1420 is output data obtained by performing an operation defined by the artificial neural network 1420 on input data by a predetermined algorithm (eg, Python) implemented in the input data. code) may be determined to be smaller as the output data obtained when the code is actually applied, and as the loss is smaller, the performance of the artificial neural network 1420 may be determined to be good. Weight values that determine the performance of the artificial neural network 1420 are determined through learning, and in the learning of the artificial neural network 1420, a predetermined result of calculating input data using the artificial neural network 1420 is previously implemented in the input data. It can be performed to be the same as the result obtained by actually performing the algorithm of .

일 실시 예에 따라, 인공 신경망(1420)의 학습은 제2전자 장치(1400)에서 수행되지 않고, 제1전자 장치(1200)에서 인공 신경망(1420)과 동일한 인공 신경망(1220)에 대한 학습을 수행하고 제1전자 장치(1200)에서 학습을 통해 결정된 가중치 값들을 제2전자 장치(1400)로 전송하도록 구성될 수 있다. 소형 전자 장치인 제2전자 장치(1400)는 인공 신경망(1420)에 대한 학습을 수행하기에는 성능이 부족하므로, 제2전자 장치(1400)에 비해 고성능의 프로세서와 메모리가 탑재된 제1전자 장치(1200)에서 인공 신경망(1220)에 대한 학습을 수행하여 인공 신경망(1220)의 가중치 값들을 결정하고 결정된 가중치 값들을 유선 또는 무선 통신 인터페이스를 통해 제2전자 장치(1400)로 전송할 수 있다. According to an embodiment, the learning of the artificial neural network 1420 is not performed in the second electronic device 1400 , but the learning of the artificial neural network 1220 identical to the artificial neural network 1420 is performed in the first electronic device 1200 . and may be configured to transmit weight values determined through learning in the first electronic device 1200 to the second electronic device 1400 . Since the second electronic device 1400, which is a small electronic device, has insufficient performance to perform learning on the artificial neural network 1420, the first electronic device ( The artificial neural network 1220 may be trained in 1200 to determine weight values of the artificial neural network 1220 , and the determined weight values may be transmitted to the second electronic device 1400 through a wired or wireless communication interface.

이를 위해, 제1전자 장치(1200)에는 인공 신경망(1420)과 동일한 구조를 갖는 인공 신경망(1220)이 저장될 수 있다. 인공 신경망(1220)은 인공 신경망(1420)의 복사본으로서, 인공 신경망(1220)과 인공 신경망(1420)은 노드 개수, 레이어 개수, 노드에서 정의되는 연산자/피연산자, 노드 사이의 간선은 모두 동일하다. To this end, the artificial neural network 1220 having the same structure as the artificial neural network 1420 may be stored in the first electronic device 1200 . The artificial neural network 1220 is a copy of the artificial neural network 1420, and the artificial neural network 1220 and the artificial neural network 1420 have the same number of nodes, number of layers, operators/operators defined in nodes, and edges between nodes.

인공 신경망(1220)에 대한 학습은, 소정의 알고리즘의 입력 데이터와 입력 데이터에 소정의 알고리즘을 적용함으로써 실제로 획득되는 출력 데이터를 각각 인공 신경망(1220)의 입력과 출력으로 적용함으로써 수행될 수 있다. 예를 들어, 도3의 함수 fun1로 표현되는 소정의 알고리즘의 수행을 대체하는 인공 신경망(1220)은 아래 [표 1]의 데이터셋을 이용하여 학습될 수 있다. Learning of the artificial neural network 1220 may be performed by applying input data of a predetermined algorithm and output data actually obtained by applying the predetermined algorithm to the input data as the input and output of the artificial neural network 1220 , respectively. For example, the artificial neural network 1220 that replaces the execution of a predetermined algorithm expressed by the function fun1 of FIG. 3 may be trained using the dataset shown in [Table 1] below.

입력 데이터input data 출력 데이터output data {1, 2, 3, 4}{1, 2, 3, 4} {2, 3, 4, 5}{2, 3, 4, 5} {20, 30, 40, 50}{20, 30, 40, 50} {21, 31, 41, 51}{21, 31, 41, 51} {10, 100, 20, 30}{10, 100, 20, 30} {11, 101, 21, 31}{11, 101, 21, 31} {1}{One} {2}{2} {11, 12, 13, 14, 15, 16}{11, 12, 13, 14, 15, 16} {12, 13, 14, 15, 16, 17}{12, 13, 14, 15, 16, 17} {100, 200, 300, 400, 500, 600, 700, 800}{100, 200, 300, 400, 500, 600, 700, 800} {101, 201, 301, 401, 501, 601, 701, 801}{101, 201, 301, 401, 501, 601, 701, 801}

인공 신경망(1220)의 학습은 로스(loss)를 감소시키기 위해 시냅스 가중치 값들을 업데이트하는 역 전파(Back Propagation) 알고리즘을 사용하여 수행될 수 있다. 학습을 통해 결정된 가중치 값들은 유선 또는 무선 통신 인터페이스를 통해 제2전자 장치(1400)로 전송되고 제2전자 장치(1400)는 인공 신경망(1420)에 수신된 가중치 값들을 적용해 인공 신경망(1420)의 연산을 수행함으로써 알고리즘을 수행하게 된다. Learning of the artificial neural network 1220 may be performed using a back propagation algorithm that updates synaptic weight values to reduce loss. The weight values determined through learning are transmitted to the second electronic device 1400 through a wired or wireless communication interface, and the second electronic device 1400 applies the weight values received to the artificial neural network 1420 to the artificial neural network 1420 . The algorithm is executed by performing the operation of

일 실시 예에 따라, 제2전자 장치(1400)에는 인공 신경망(1420)의 연산을 수행하기 위한 실행 파일이 저장되고, 제2전자 장치(1400)는 실행 파일을 이용하여 소정의 알고리즘을 수행할 수 있다. 예를 들어, 제2전자 장치(1400)가 차량 데이터를 수집하고 수집된 차량 데이터에 소정의 알고리즘을 수행하기 위한 단말기인 경우, 제2전자 장치(1400)는 외부에 위치한 서버 컴퓨터인 제1전자 장치(1200)로부터 가중치 값들을 수신하고, 실행 파일을 이용하여 차량 데이터에 소정의 알고리즘을 수행할 수 있다.According to an embodiment, an executable file for performing an operation of the artificial neural network 1420 is stored in the second electronic device 1400 , and the second electronic device 1400 performs a predetermined algorithm using the executable file. can For example, when the second electronic device 1400 is a terminal for collecting vehicle data and performing a predetermined algorithm on the collected vehicle data, the second electronic device 1400 is a first electronic device that is an externally located server computer. Weight values may be received from the device 1200 and a predetermined algorithm may be performed on vehicle data using an executable file.

도4는 일 실시 예에 따라, 고급 언어로 구현되는 소정의 알고리즘을 소형 전자 장치에서 수행 가능하도록 하기 위해 필요한 정보를 획득하기 위한 장치의 블록도를 나타낸다.4 is a block diagram of a device for acquiring information necessary to enable a small electronic device to execute a predetermined algorithm implemented in a high-level language, according to an embodiment.

도4를 참조하면, 장치(4000)는 프로세서(4200), 메모리(4400), 및 통신 회로(4600)를 포함할 수 있다. 장치(4000)는 도1의 제1전자 장치(1200)와 대응될 수 있다. 소형 전자 장치는 도1의 제2전자 장치(1400)와 대응될 수 있다.Referring to FIG. 4 , a device 4000 may include a processor 4200 , a memory 4400 , and a communication circuit 4600 . The device 4000 may correspond to the first electronic device 1200 of FIG. 1 . The small electronic device may correspond to the second electronic device 1400 of FIG. 1 .

메모리(4200)는 입력 데이터에 연산을 수행하여 출력 데이터를 획득하기 위한 순환 인공 신경망을 저장할 수 있다. 순환 인공 신경망은 입력 데이터에 순환 인공 신경망에 의해 정의되는 연산을 수행하여 획득되는 출력 데이터가 동일한 입력 데이터에 소정의 알고리즘을 실제로 수행했을 때 획득되는 출력 데이터와 동일하도록 설계될 수 있다. 순환 인공 신경망의 구조는 소형 전자 장치의 성능과 용량에 따라 결정될 수 있다. 예를 들어, 순환 인공 신경망은 100MB 이하의 메모리에 저장되고 입력 데이터로부터 출력 데이터를 연산하는 시간이 100ms 이내가 되도록 설계될 수 있다.The memory 4200 may store a cyclic artificial neural network for obtaining output data by performing an operation on input data. The recurrent neural network may be designed such that output data obtained by performing an operation defined by the recurrent neural network on input data is the same as output data obtained when a predetermined algorithm is actually performed on the same input data. The structure of the recurrent artificial neural network may be determined according to the performance and capacity of the small electronic device. For example, the recurrent artificial neural network may be stored in a memory of 100 MB or less and designed so that the time to calculate output data from input data is within 100 ms.

프로세서(4400)는 입력 데이터에 순환 인공 신경망에 의해 정의되는 연산을 수행하여 획득되는 출력 데이터가 동일한 입력 데이터에 소정의 알고리즘을 실제로 수행했을 때 획득되는 출력 데이터와 동일해지도록 순환 인공 신경망에 대한 학습을 수행할 수 있다. 프로세서(4400)는 소정의 알고리즘의 입력 데이터와 입력 데이터에 소정의 알고리즘을 실제로 수행했을 때 획득되는 출력 데이터를 각각 순환 인공 신경망의 입력과 출력으로 적용하여 순환 인공 신경망에 대한 학습을 수행함으로써 순환 인공 신경망의 가중치 값들을 결정할 수 있다. The processor 4400 learns about the recurrent neural network so that output data obtained by performing an operation defined by the recurrent neural network on input data becomes the same as output data obtained when a predetermined algorithm is actually performed on the same input data. can be performed. The processor 4400 applies the input data of the predetermined algorithm and the output data obtained when the predetermined algorithm is actually performed to the input data as the input and output of the recurrent artificial neural network, respectively, and performs learning on the recurrent artificial neural network. It is possible to determine the weight values of the neural network.

통신회로(4600)는 프로세서(4400)에서 결정된 가중치 값들을 외부 또는 소형 전자 장치로 전송할 수 있다. 이로써, 장치(4000)는 소정의 알고리즘이 개발되고 테스트되는 컴퓨팅 장치와 소형 전자 장치 사이의 미들웨어(middleware)로서의 역할을 수행하고, 소형 전자 장치는 수신한 가중치 값들을 이용하여 장치(4000)의 메모리(4200)에 저장된 순환 인공 신경망과 동일한 순환 인공 신경망의 연산을 수행함으로써 소정의 알고리즘을 수행할 수 있다.The communication circuit 4600 may transmit the weight values determined by the processor 4400 to an external or small electronic device. Accordingly, the device 4000 serves as a middleware between the computing device and the small electronic device in which a predetermined algorithm is developed and tested, and the small electronic device uses the received weight values in the memory of the device 4000 . A predetermined algorithm may be performed by performing the same calculation of the recurrent artificial neural network stored in 4200 .

설명들은 본 발명을 구현하기 위한 예시적인 구성들 및 동작들을 제공하도록 의도된다. 본 발명의 기술 사상은 위에서 설명된 실시 예들뿐만 아니라, 위 실시 예들을 단순하게 변경하거나 수정하여 얻어질 수 있는 구현들도 포함할 것이다. 또한, 본 발명의 기술 사상은 위에서 설명된 실시 예들을 앞으로 용이하게 변경하거나 수정하여 달성될 수 있는 구현들도 포함할 것이다.The descriptions are intended to provide exemplary configurations and acts for implementing the present invention. The technical spirit of the present invention will include not only the embodiments described above, but also implementations that can be obtained by simply changing or modifying the above embodiments. In addition, the technical spirit of the present invention will include implementations that can be achieved by easily changing or modifying the embodiments described above in the future.

Claims (5)

제1인공 신경망을 저장하는 제1전자 장치; 및
소정의 알고리즘을 대체 수행하기 위한 제2인공 신경망을 저장하는 제2전자 장치를 포함하고,
상기 제2전자 장치는 상기 제1전자 장치보다 메모리 용량이 작고,
상기 제1인공 신경망은 상기 제2인공 신경망과 동일한 구조로서, 상기 제1인공 신경망과 상기 제2인공 신경망의 구조는 상기 제2전자 장치의 메모리 용량에 따라 결정되고,
상기 제1전자 장치는, 상기 소정의 알고리즘의 제1입력 데이터와 상기 제1입력 데이터에 대한 상기 소정의 알고리즘의 제1출력 데이터를 각각 제1인공 신경망의 입력과 출력으로 적용하여 상기 제1인공 신경망에 대한 학습을 수행함으로써 상기 제1인공 신경망의 가중치 값들을 결정하고, 유선 또는 무선 통신 인터페이스를 통해 상기 결정된 가중치 값들을 상기 제2전자 장치로 전달하고,
상기 제2전자 장치는, 상기 제2전자 장치로 입력되는 제2입력 데이터에 대해 상기 가중치 값들에 기반한 상기 제2인공 신경망의 연산을 수행하여 제2출력 데이터를 획득함으로써 상기 제2입력 데이터에 상기 소정의 알고리즘을 대체 수행하고,
상기 제1입력 데이터와 상기 제1출력 데이터 각각은, 상기 소정의 알고리즘을 수행하도록 프로그래밍 코드로 구현된 함수, API, 라이브러리, 또는 모듈에 대한 입력 값과 출력 값인 시스템.
a first electronic device for storing a first artificial neural network; and
A second electronic device for storing a second artificial neural network for substituting a predetermined algorithm,
The second electronic device has a smaller memory capacity than the first electronic device,
The first artificial neural network has the same structure as the second artificial neural network, and the structures of the first artificial neural network and the second artificial neural network are determined according to the memory capacity of the second electronic device;
The first electronic device applies first input data of the predetermined algorithm and first output data of the predetermined algorithm to the first input data as inputs and outputs of a first artificial neural network, respectively, to apply the first artificial determining the weight values of the first artificial neural network by performing learning on the neural network, and transmitting the determined weight values to the second electronic device through a wired or wireless communication interface;
The second electronic device is configured to perform an operation of the second artificial neural network based on the weight values on second input data input to the second electronic device to obtain second output data, thereby adding the second input data to the second input data. Substitute a predetermined algorithm,
Each of the first input data and the first output data is an input value and an output value for a function, API, library, or module implemented as programming code to perform the predetermined algorithm.
제1항에 있어서,
상기 제2전자 장치는 임베디드 소프트웨어가 설치된 장치이고,
상기 제1전자 장치는 상기 제2전자 장치의 외부에 위치하는 서버 컴퓨터인 시스템.
According to claim 1,
The second electronic device is a device in which embedded software is installed,
The first electronic device is a server computer located outside the second electronic device.
제2항에 있어서,
상기 제2전자 장치에는 상기 제2입력 데이터에 대한 상기 제2인공 신경망의 상기 제2출력 데이터를 연산하기 위한 실행 파일이 저장되고,
상기 제2입력 데이터는 차량 데이터를 포함하고,
상기 제2전자 장치는 상기 실행 파일을 이용하여 상기 차량 데이터에 상기 소정의 알고리즘을 수행하는 시스템.
3. The method of claim 2,
an executable file for calculating the second output data of the second artificial neural network with respect to the second input data is stored in the second electronic device;
The second input data includes vehicle data,
and the second electronic device performs the predetermined algorithm on the vehicle data using the executable file.
삭제delete 삭제delete
KR1020200077800A 2020-06-25 2020-06-25 Method and system for executing open-source programs written for personal computer on low-powered devices using artificial neural network KR102324889B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020200077800A KR102324889B1 (en) 2020-06-25 2020-06-25 Method and system for executing open-source programs written for personal computer on low-powered devices using artificial neural network

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020200077800A KR102324889B1 (en) 2020-06-25 2020-06-25 Method and system for executing open-source programs written for personal computer on low-powered devices using artificial neural network

Publications (1)

Publication Number Publication Date
KR102324889B1 true KR102324889B1 (en) 2021-11-11

Family

ID=78516286

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020200077800A KR102324889B1 (en) 2020-06-25 2020-06-25 Method and system for executing open-source programs written for personal computer on low-powered devices using artificial neural network

Country Status (1)

Country Link
KR (1) KR102324889B1 (en)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190089628A (en) * 2018-01-23 2019-07-31 삼성전자주식회사 Method and system for processing Neural network model using a plurality of electronic devices

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190089628A (en) * 2018-01-23 2019-07-31 삼성전자주식회사 Method and system for processing Neural network model using a plurality of electronic devices

Similar Documents

Publication Publication Date Title
Jo et al. Smart livestock farms using digital twin: Feasibility study
KR102521054B1 (en) Method of controlling computing operations based on early-stop in deep neural network
CN116909985A (en) Dynamic ordering of data partitions
CN103777920A (en) Data processing system with data characteristics based identification of corresponding instructions
US20210350233A1 (en) System and Method for Automated Precision Configuration for Deep Neural Networks
US20190028545A1 (en) Declarative machine-to-machine application programming
CN112148570A (en) Method and apparatus for improving runtime performance of software executing on heterogeneous systems
CN112734040A (en) Embedded artificial intelligence computing framework and application method
US20220128980A1 (en) Automation code generator for interoperability across industrial ecosystems
EP3525119A1 (en) Deep learning fpga converter
Ryabinin et al. Ontology-driven edge computing
US20200151579A1 (en) System for managing calculation processing graph of artificial neural network and method of managing calculation processing graph by using the same
CN112764893B (en) Data processing method and data processing system
US20110167405A1 (en) Application building system, method and computer-readable medium
Moin et al. Supporting AI engineering on the IoT edge through model-driven TinyML
KR102324889B1 (en) Method and system for executing open-source programs written for personal computer on low-powered devices using artificial neural network
Mohamed et al. IoT physical layer: Sensors, actuators, controllers and programming
CN112099882B (en) Service processing method, device and equipment
Gaur Bringing context awareness to IoT-based wireless sensor networks
CN116739154A (en) Fault prediction method and related equipment thereof
CN108376283B (en) Pooling device and pooling method for neural network
KR20230126630A (en) Method, device, and system for optimizing a neural network model to be executed on imbedded device
KR20230126631A (en) Method, device, and system for optimizing a neural network model to be executed on imbedded device
CN106951288B (en) Development and application method and device of hot upgrade resource
CN108564170B (en) Reconfigurable neural network operation method and circuit based on NOC

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant