목록Advanced/Maixbot Project (11)
Written by coh at home
Face detection, Object detection, Hand classification. face detection 과 object detection은 yolo2 모델을 사용 line tracking은 hough transform을 이용한다. (ROI를 가져오고 gray scale, blur, canny edge, hough transform을 적용) hand classification은 classifier를 이용해 모델을 하나 만들고 이용한다. 그중에서도 나는 hand classifier를 통한 가위바위보 제스쳐 인식 project를 진행했다. 모델을 학습시키기 위한 데이터를 얻기 위해 https://teachablemachine.withgoogle.com/train/image 에서 가위바위보..
K210 chip의 storage구조를 살펴보자 0 ~ 0x300000 까지는 기본적인 firmware 데이터로 ADC, PWM, Timer, LCD 등등의 기능이 들어있다. ~0xD00000까지는 딥러닝 모델을 넣을 수 있는 공간 ~0xffffff 까지는 custom memory로 컴퓨터로 따지면 heap 영역으로 생각하면 될거 같다. 여기까지가 flash 메모리로 non-volitile 하다. 이후 딥러닝 모델을 삽입하는 방법은 k-flash를 사용하여 이루어진다. 이미 만들어진 딥러닝 모델을 임베디드 시스템에 올려서 실습해보자. 1. Mnist import sensor,lcd,image import KPU as kpu lcd.init() sensor.reset() sensor.set_pixforma..
import sensor, image, time, lcd lcd.init(freq=15000000) sensor.reset() # Reset and initialize the sensor. It will # run automatically, call sensor.run(0) to stop sensor.set_pixformat(sensor.RGB565) # Set pixel format to RGB565 (or GRAYSCALE) sensor.set_framesize(sensor.QVGA) # Set frame size to QVGA (320x240) sensor.skip_frames(time = 2000) # Wait for settings take effect. clock = time.clock() #..
우리는 디지털 디바이스인데.. 아날로그 데이터 출력은 어떻게 할 수 있을까? 바로 PWN(pulse width modulation)을 통해서 할 수 있다. 음.. duty cycle을 이용하여 우리는 출력의 세기를 결정할 수 있다. 입력도 우리는 analog data를 ADC를 통해 12bit 해상도로 입력받았다. 마찬가지로 출력도 digital로 출력하는데 PWM을 통해 아날로그와 비슷하게 출력하는 것이다. 아두이노는 PWM출력 핀이 정해져있지만 Maixduino는 PWM핀으로 모두 사용가능하다. (ADC핀 제외) LED밝기를 조절하는 코드이다. 보면 frequency = 5 * 10^5 이다. T = 1 / freq이므로 (1 * 10^6) / (5 * 10^5) = 2us이다. PWM의 밝기 조절은..
digital과 analog의 차이는 continuous한 신호의 차이라고 말할 수 있다. 예컨데 LED를 끄고 키는 것은 digital. LED의 밝기는 analog로 표현할 수 있을 것이다. Maixduino는 6channel의 12bit resolution의 ADC가 포함되어있다. 6channel은 A0~A5의 6개pin으로 센서 입력값을 받을 수 있다는 뜻이고 12bit 해상도는 이떤 입력의 크기를 0 ~ 2^12 - 1 value로 표현 가능하다는 뜻이다. 3.3V / 4096 = 0.8mV 의 전압값을 인식 가능하고 2^12 -1 은 3.3v로 mapping된다. 음.. 근데 maixduino의 ADC는 K210 칩에 있는 게 아니라 ESP32 칩에 있기 때문에 이걸 통신으로 전달해줘야한다. ..
AI, ML, Deep Learning은 무슨 차이일까. 집합으로 나타낸다면 ML은 AI의 부분집합이고 DL은 ML의 부분집합이다. AI는 가장 큰 범주로서 그냥 쉽게 모든 AI 기술이다. 자율주행차를 보고 AI기술이 사용되었다고 말하는 것과 같다. 근데 이런 AI를 구현하기 위한 많은 방법들이 존재하고 ML과 DL이 이에 해당한다. ML은 코드로 명시되지 않은 동작을 학습하여 수행하는 알고리즘을 작성하는 방법이고 DL은 ML의 일부분인 인공신경망을 활용하여 많은 데이터를 학습하고 성능을 뽑아내는 방법이다. 일반적인 ML과 DL의 차이는.. 사진에 대한 classifier를 만드는 경우를 생각해보면 ML은 사람이 인식할 수 있는 feature를 뽑아서 학습을 시킨다. 반면에 딥러닝은 컴퓨터가 인식하는 f..
Tact switch사용해서 input 확인하는 예제 from fpioa_manager import fm from Maix import GPIO import utime button = 15 fm.register(button, fm.fpioa.GPIO1) button = GPIO(GPIO.GPIO1, GPIO.IN) while 1: var = button.value() print(var) 단순히 이렇게 하면 button의 전압 level이 floating 상태인 것을 확인할 수 있다. 따라서 pull up 저항을 달거나 pull down저항을 달아서 해결해야 하는데 Maixduino에서는 이를 지원해준다. Pull down -> GND로 끌어내린다. 초기값 0으로 세팅. Pull up은 그 반대. from..
FPIOA = Field Programmable Input and Output Array. from fpioa_manager import fm fm.register(11, fm.fpioa.GPIO0) ``` code block ``` fm.unregister(11) GPIO = General Purpose Input and Output from fpioa_manager import fm from Maix import GPIO import utime # k210 chip pin number is used. #LED =[32, 15] #j = 0 #for i in LED: #fm.register(i, fm.fpioa.GPIO) #j += 1 LED1 = 32 LED2 = 15 fm.register(LED2,..