OpenVINO hackathon: lees paub lub suab thiab kev xav ntawm Raspberry Pi

Kaum Ib Hlis 30 - Kaum Ob Hlis 1 hauv Nizhny Novgorod tau tuav OpenVINO hackathon. Cov neeg koom nrog raug nug kom tsim ib qho qauv ntawm cov khoom siv daws teeb meem siv Intel OpenVINO toolkit. Cov koom haum tau npaj cov npe ntawm cov ncauj lus kwv yees uas tuaj yeem coj los ntawm thaum xaiv txoj haujlwm, tab sis qhov kev txiav txim zaum kawg tseem nyob nrog pab pawg. Tsis tas li ntawd, kev siv cov qauv uas tsis suav nrog hauv cov khoom tau txhawb nqa.

OpenVINO hackathon: lees paub lub suab thiab kev xav ntawm Raspberry Pi

Hauv tsab xov xwm no peb yuav qhia koj txog yuav ua li cas peb tsim peb tus qauv ntawm cov khoom, uas peb thiaj li tau ua thawj qhov chaw.

Ntau tshaj 10 pawg tau koom nrog hauv hackathon. Nws yog qhov zoo uas lawv ib txhia tuaj ntawm lwm cheeb tsam. Qhov chaw rau lub hackathon yog lub "Kremlinsky on Pochain" complex, qhov twg cov duab qub ntawm Nizhny Novgorod tau dai rau hauv, nyob rau hauv ib tug entourage! (Kuv nco ntsoov koj tias tam sim no lub chaw haujlwm nruab nrab ntawm Intel nyob hauv Nizhny Novgorod). Cov neeg tuaj koom tau muab 26 teev los sau cov lej, thiab thaum kawg lawv yuav tsum tau nthuav tawm lawv cov kev daws teeb meem. Ib qho txiaj ntsig sib txawv yog qhov muaj kev sib tham demo kom paub tseeb tias txhua yam kev npaj tau ua tiav thiab tsis nyob hauv cov tswv yim hauv kev nthuav qhia. Khoom noj txom ncauj, khoom noj, txhua yam nyob ntawd ib yam nkaus!

Ntxiv rau, Intel xaiv tau muab cov koob yees duab, Raspberry PI, Neural Compute Stick 2.

Kev xaiv ua haujlwm

Ib qho nyuaj tshaj plaws ntawm kev npaj rau ib daim ntawv dawb-dawb hackathon yog xaiv qhov kev sib tw. Peb tam sim ntawd txiav txim siab los txog ib yam dab tsi uas tseem tsis tau muaj nyob rau hauv cov khoom, txij li thaum cov lus tshaj tawm hais tias qhov no yog heev txais tos.

Muaj kev txheeb xyuas qauv, uas muaj nyob rau hauv cov khoom nyob rau hauv qhov kev tso tawm tam sim no, peb tuaj mus rau qhov xaus hais tias lawv feem ntau daws tau ntau yam teeb meem tsis pom kev hauv computer. Ntxiv mus, nws yog ib qho nyuaj heev los mus nrog ib tug teeb meem nyob rau hauv lub teb ntawm lub computer tsis pom kev uas yuav daws tsis tau siv OpenVINO, thiab txawm yog ib tug yuav invented, nws yog ib qhov nyuaj rau nrhiav tau pre-kev kawm ua qauv nyob rau hauv pej xeem sau. Peb txiav txim siab khawb mus rau lwm qhov kev taw qhia - ntawm kev hais lus thiab kev tshuaj xyuas. Cia peb xav txog ib txoj haujlwm nthuav txog kev paub txog kev xav ntawm kev hais lus. Nws yuav tsum tau hais tias OpenVINO twb muaj tus qauv uas txiav txim siab tus neeg lub siab xav raws li lawv lub ntsej muag, tab sis:

  • Hauv txoj kev xav, nws muaj peev xwm tsim tau ib qho kev sib xyaw ua ke uas yuav ua haujlwm ntawm ob lub suab thiab duab, uas yuav tsum tau ua kom muaj qhov tseeb.
  • Cov koob yees duab feem ntau muaj qhov pom nqaim; ntau dua ib lub koob yees duab yuav tsum tau npog thaj tsam loj; suab tsis muaj qhov txwv.

Cia peb tsim lub tswv yim: cia peb coj lub tswv yim rau cov khw muag khoom raws li lub hauv paus. Koj tuaj yeem ntsuas cov neeg siv khoom txaus siab ntawm lub khw muag khoom. Yog tias ib tus ntawm cov neeg siv khoom tsis txaus siab rau qhov kev pabcuam thiab pib tsa lawv lub suab, koj tuaj yeem hu rau tus thawj tswj hwm tam sim ntawd kom pab.
Hauv qhov no, peb yuav tsum ntxiv tib neeg lub suab lees paub, qhov no yuav ua rau peb paub qhov txawv ntawm cov neeg ua haujlwm hauv khw los ntawm cov neeg siv khoom thiab muab kev tshuaj ntsuam xyuas rau txhua tus neeg. Zoo, ntxiv rau, nws yuav muaj peev xwm txheeb xyuas tus cwj pwm ntawm cov neeg ua haujlwm hauv khw lawv tus kheej, ntsuas qhov cua hauv pab pawg, suab zoo!

Peb tsim cov kev cai rau peb cov kev daws teeb meem:

  • Me me ntawm lub hom phiaj ntaus ntawv
  • Lub sijhawm ua haujlwm tiag tiag
  • Tus nqi qis
  • Yooj yim scalability

Yog li ntawd, peb xaiv Raspberry Pi 3 c ua lub hom phiaj ntaus ntawv Intel NCS 2.

Ntawm no nws yog ib qho tseem ceeb uas yuav tsum nco ntsoov ib qho tseem ceeb ntawm NCS - nws ua haujlwm zoo tshaj plaws nrog cov qauv CNN architectures, tab sis yog tias koj xav tau khiav ib tus qauv nrog cov txheej txheem kev cai ntawm nws, ces cia siab tias yuav ua kom zoo dua qib qis.

Tsuas muaj ib qho me me xwb: koj yuav tsum tau txais lub microphone. USB microphone li niaj zaus yuav ua, tab sis nws yuav tsis zoo ua ke nrog RPI. Tab sis txawm nyob ntawm no qhov kev daws teeb meem "nyob ze." Txhawm rau sau lub suab, peb txiav txim siab siv lub Rooj Tswjhwm Saib Lub Suab Bonnet los ntawm cov khoom siv Google AIY Voice Kit, nyob rau hauv uas muaj ib tug wired stereo microphone.

Download Raspbian los ntawm AIY project repository thiab xa nws mus rau lub flash drive, sim tias lub microphone ua haujlwm siv cov lus txib hauv qab no (nws yuav kaw suab 5 vib nas this ntev thiab khaws cia rau hauv cov ntaub ntawv):

arecord -d 5 -r 16000 test.wav

Kuv yuav tsum nco ntsoov tam sim ntawd tias lub microphone yog qhov rhiab heev thiab khaws cov suab nrov zoo. Txhawm rau txhim kho qhov no, cia peb mus rau alsamixer, xaiv Capture li thiab txo cov teeb liab tawm tswv yim rau 50-60%.

OpenVINO hackathon: lees paub lub suab thiab kev xav ntawm Raspberry Pi
Peb hloov kho lub cev nrog cov ntaub ntawv thiab txhua yam haum, koj tuaj yeem kaw nws nrog lub hau

Ntxiv qhov taw qhia khawm

Thaum noj AIY Voice Kit sib nrug, peb nco ntsoov tias muaj lub pob RGB, lub teeb rov qab uas tuaj yeem tswj tau los ntawm software. Peb nrhiav "Google AIY Led" thiab nrhiav cov ntaub ntawv: https://aiyprojects.readthedocs.io/en/latest/aiy.leds.html
Vim li cas ho tsis siv lub pob no los tso saib qhov kev xav paub, peb tsuas muaj 7 chav kawm, thiab lub pob muaj 8 xim, txaus!

Peb txuas lub pob ntawm GPIO rau Lub Suab Bonnet, thauj cov tsev qiv ntawv tsim nyog (lawv twb tau teeb tsa hauv cov khoom siv faib khoom los ntawm AIY cov haujlwm)

from aiy.leds import Leds, Color
from aiy.leds import RgbLeds

Cia peb tsim ib qho kev txiav txim siab uas txhua qhov kev xav yuav muaj xim sib xws hauv daim ntawv ntawm RGB Tuple thiab ib qho khoom ntawm chav kawm aiy.leds.Leds, los ntawm qhov peb yuav hloov kho xim:

led_dict = {'neutral': (255, 255, 255), 'happy': (0, 255, 0), 'sad': (0, 255, 255), 'angry': (255, 0, 0), 'fearful': (0, 0, 0), 'disgusted':  (255, 0, 255), 'surprised':  (255, 255, 0)} 
leds = Leds()

Thiab thaum kawg, tom qab txhua qhov kev kwv yees tshiab ntawm kev xav, peb yuav hloov kho cov xim ntawm lub pob raws li nws (los ntawm qhov tseem ceeb).

leds.update(Leds.rgb_on(led_dict.get(classes[prediction])))

OpenVINO hackathon: lees paub lub suab thiab kev xav ntawm Raspberry Pi
Khawm, hlawv!

Ua haujlwm nrog lub suab

Peb yuav siv pyaudio los ntes cov kwj ntawm lub microphone thiab webrtcvad los lim suab nrov thiab ntes lub suab. Tsis tas li ntawd, peb yuav tsim ib kab uas peb yuav asynchronously ntxiv thiab tshem tawm lub suab excerpts.

Txij li thaum webrtcvad muaj qhov txwv ntawm qhov loj ntawm cov khoom tawg - nws yuav tsum sib npaug rau 10/20/30ms, thiab kev cob qhia ntawm tus qauv rau kev paub txog kev xav (raws li peb yuav kawm tom qab) tau ua tiav ntawm 48kHz dataset, peb yuav ntes chunks loj 48000 Γ— 20ms / 1000 Γ— 1 (mono) = 960 bytes. Webrtcvad yuav rov qab qhov tseeb / False rau txhua qhov ntawm cov chunks, uas sib haum mus rau qhov muaj lossis tsis muaj kev pov npav hauv cov chunk.

Cia peb ua raws li nram no logic:

  • Peb yuav ntxiv rau daim ntawv teev cov chunks qhov twg muaj kev pov npav; yog tias tsis muaj kev pov npav, ces peb yuav nce lub txee ntawm qhov khoob.
  • Yog hais tias lub txee ntawm khoob chunks yog> = 30 (600 ms), ces peb saib qhov loj ntawm daim ntawv teev cov chunks sau; yog hais tias nws yog> 250, ces peb ntxiv rau cov kab; yog tsis yog, peb xav tias qhov ntev. ntawm cov ntaub ntawv tsis txaus los pub rau tus qauv los txheeb xyuas tus neeg hais lus.
  • Yog hais tias lub txee ntawm khoob chunks tseem <30, thiab qhov loj ntawm daim ntawv teev cov chunks ntau tshaj 300, ces peb yuav ntxiv cov fragment rau cov kab rau ib tug ntau dua kev twv ua ntej. (vim txoj kev xav yuav hloov raws sij hawm)

 def to_queue(frames):
    d = np.frombuffer(b''.join(frames), dtype=np.int16)
    return d

framesQueue = queue.Queue()
def framesThreadBody():
    CHUNK = 960
    FORMAT = pyaudio.paInt16
    CHANNELS = 1
    RATE = 48000

    p = pyaudio.PyAudio()
    vad = webrtcvad.Vad()
    vad.set_mode(2)
    stream = p.open(format=FORMAT,
                channels=CHANNELS,
                rate=RATE,
                input=True,
                frames_per_buffer=CHUNK)
    false_counter = 0
    audio_frame = []
    while process:
        data = stream.read(CHUNK)
        if not vad.is_speech(data, RATE):
            false_counter += 1
            if false_counter >= 30:
                if len(audio_frame) > 250:              
                    framesQueue.put(to_queue(audio_frame,timestamp_start))
                    audio_frame = []
                    false_counter = 0

        if vad.is_speech(data, RATE):
            false_counter = 0
            audio_frame.append(data)
            if len(audio_frame) > 300:                
                    framesQueue.put(to_queue(audio_frame,timestamp_start))
                    audio_frame = []

Nws yog lub sijhawm los nrhiav cov qauv kev cob qhia ua ntej hauv cov pej xeem sau npe, mus rau github, Google, tab sis nco ntsoov tias peb muaj kev txwv ntawm cov qauv siv. Qhov no yog ib qho nyuaj heev, vim hais tias koj yuav tsum sim cov qauv ntawm koj cov ntaub ntawv tawm tswv yim, thiab ntxiv rau, hloov lawv mus rau OpenVINO's sab hauv hom - IR (Intermediate Representation). Peb tau sim txog 5-7 qhov kev daws teeb meem sib txawv los ntawm github, thiab yog tias tus qauv rau kev paub txog kev xav tau ua haujlwm tam sim ntawd, nrog rau kev lees paub lub suab peb yuav tsum tau tos ntev dua - lawv siv ntau cov qauv tsim.

Peb tsom rau cov hauv qab no:

  • Kev xav ntawm lub suab - https://github.com/alexmuhr/Voice_Emotion
    Nws ua haujlwm raws li lub hauv paus ntsiab lus hauv qab no: lub suab raug txiav mus rau hauv nqe lus ntawm ib qho me me, rau txhua nqe lus uas peb xaiv MFCC thiab tom qab ntawd xa lawv raws li cov tswv yim rau CNN
  • Lub suab paub - https://github.com/linhdvu14/vggvox-speaker-identification
    Ntawm no, es tsis txhob MFCC, peb ua hauj lwm nrog ib tug spectrogram, tom qab FFT peb pub lub teeb liab rau CNN, qhov twg ntawm cov zis peb tau ib tug vector sawv cev ntawm lub suab.

Tom ntej no peb yuav tham txog kev hloov cov qauv, pib nrog kev xav. OpenVINO suav nrog ntau lub modules:

  • Qhib Model Zoo, cov qauv uas tuaj yeem siv thiab suav nrog koj cov khoom
  • Model Optimzer, ua tsaug rau qhov koj tuaj yeem hloov tus qauv los ntawm ntau hom qauv (Tensorflow, ONNX thiab lwm yam) rau hauv Intermediate Representation format, uas peb yuav ua haujlwm ntxiv.
  • Inference Cav tso cai rau koj khiav cov qauv hauv IR hom ntawm Intel processors, Myriad chips thiab Neural Compute Stick accelerators
  • Qhov ua tau zoo tshaj plaws ntawm OpenCV (nrog Inference Cav txhawb nqa)
    Txhua tus qauv hauv IR hom tau piav qhia los ntawm ob cov ntaub ntawv: .xml thiab .bin.
    Cov qauv raug hloov mus rau IR hom ntawm Model Optimizer raws li hauv qab no:

    python /opt/intel/openvino/deployment_tools/model_optimizer/mo_tf.py --input_model speaker.hdf5.pb --data_type=FP16 --input_shape [1,512,1000,1]

    --data_type tso cai rau koj xaiv cov ntaub ntawv hom uas tus qauv yuav ua haujlwm. FP32, FP16, INT8 tau txais kev txhawb nqa. Xaiv cov ntaub ntawv zoo tshaj plaws tuaj yeem ua rau muaj txiaj ntsig zoo.
    --input_shape qhia qhov loj me ntawm cov ntaub ntawv nkag. Lub peev xwm hloov pauv hloov pauv nws zoo li tam sim no nyob rau hauv C ++ API, tab sis peb tsis tau khawb qhov deb thiab tsuas kho nws rau ib qho ntawm cov qauv.
    Tom ntej no, cia peb sim thauj cov qauv uas twb hloov lawm hauv IR hom ntawm DNN module rau hauv OpenCV thiab xa mus rau nws.

    import cv2 as cv
    emotionsNet = cv.dnn.readNet('emotions_model.bin',
                              'emotions_model.xml')
    emotionsNet.setPreferableTarget(cv.dnn.DNN_TARGET_MYRIAD)

    Cov kab kawg hauv qhov no tso cai rau koj hloov pauv kev suav mus rau Neural Compute Stick, cov kev suav yooj yim tau ua ntawm lub processor, tab sis nyob rau hauv rooj plaub ntawm Raspberry Pi qhov no yuav tsis ua haujlwm, koj yuav xav tau ib lub pas.

    Tom ntej no, lub logic yog raws li nram no: peb faib peb lub suab rau hauv lub qhov rais ntawm ib tug tej yam me me (rau peb nws yog 0.4 s), peb hloov txhua lub qhov rais rau hauv MFCC, uas peb ces pub rau hauv daim phiaj:

    emotionsNet.setInput(MFCC_from_window)
    result = emotionsNet.forward()

    Tom ntej no, cia peb coj cov chav kawm ntau tshaj plaws rau txhua qhov rais. Ib qho kev daws teeb meem yooj yim, tab sis rau hackathon koj tsis tas yuav tuaj nrog qee yam tsis meej, tsuas yog koj muaj sijhawm. Peb tseem muaj ntau txoj haujlwm ua, yog li cia peb mus ntxiv - peb yuav ua nrog lub suab lees paub. Nws yog ib qho tsim nyog los tsim qee yam ntawm cov ntaub ntawv nyob rau hauv uas spectrograms ntawm cov suab kaw ua ntej yuav muab khaws cia. Txij li tsis muaj sij hawm tsawg, peb yuav daws qhov teeb meem no raws li qhov peb ua tau.

    Namely, peb tsim ib tsab ntawv sau ib lub suab excerpt (nws ua haujlwm tib yam li tau piav qhia saum toj no, tsuas yog thaum cuam tshuam los ntawm cov keyboard nws yuav txuag lub suab rau hauv cov ntaub ntawv).

    Wb sim:

    python3 voice_db/record_voice.py test.wav

    Peb kaw cov suab ntawm ob peb tus neeg (hauv peb rooj plaub, peb pawg neeg ua haujlwm)
    Tom ntej no, rau txhua lub suab kaw peb ua ib qho kev hloov pauv sai dua, tau txais ib qho spectrogram thiab txuag nws ua numpy array (.npy):

    for file in glob.glob("voice_db/*.wav"):
            spec = get_fft_spectrum(file)
            np.save(file[:-4] + '.npy', spec)

    Xav paub ntau ntxiv hauv cov ntaub ntawv create_base.py
    Yog li ntawd, thaum peb khiav cov ntawv tseem ceeb, peb yuav tau txais embeddings los ntawm cov spectrograms thaum pib:

    for file in glob.glob("voice_db/*.npy"):
        spec = np.load(file)
        spec = spec.astype('float32')
        spec_reshaped = spec.reshape(1, 1, spec.shape[0], spec.shape[1])
        srNet.setInput(spec_reshaped)
        pred = srNet.forward()
        emb = np.squeeze(pred)

    Tom qab tau txais cov embedding los ntawm cov suab nrov ntu, peb yuav muaj peev xwm txiav txim siab seb nws yog leej twg los ntawm kev noj cov cosine deb ntawm qhov kev mus rau tag nrho cov suab hauv cov ntaub ntawv (qhov me dua, qhov ntau dua) - rau qhov demo peb teeb tsa qhov pib. rau 0.3):

            dist_list = cdist(emb, enroll_embs, metric="cosine")
            distances = pd.DataFrame(dist_list, columns = df.speaker)

    Thaum kawg, kuv xav kom nco ntsoov tias qhov kev xav tau nrawm nrawm thiab ua rau nws muaj peev xwm ntxiv 1-2 tus qauv ntxiv (rau cov qauv 7 vib nas this ntev nws siv 2.5 rau inference). Peb tsis muaj sijhawm ntxiv cov qauv tshiab thiab tsom mus rau kev sau cov qauv ntawm daim ntawv thov lub vev xaib.

    Web thov

    Lub ntsiab lus tseem ceeb: peb nqa lub router nrog peb hauv tsev thiab teeb tsa peb lub network hauv zos, nws pab txuas lub cuab yeej thiab laptops hauv lub network.

    Lub backend yog qhov kawg-rau-kawg xov channel ntawm pem hauv ntej thiab Raspberry Pi, raws li websocket technology (http dhau tcp raws tu qauv).

    Thawj theem yog kom tau txais cov ntaub ntawv ua tiav los ntawm raspberry, uas yog, cov neeg twv twv tau ntim rau hauv json, uas tau txais kev cawmdim hauv cov ntaub ntawv ib nrab ntawm lawv txoj kev taug kev kom cov txheeb cais tuaj yeem tsim tawm txog tus neeg siv lub siab xav tom qab lub sijhawm. Cov pob ntawv no ces xa mus rau pem hauv ntej, uas siv kev tso npe thiab tau txais cov pob ntawv los ntawm qhov kawg ntawm lub vev xaib. Tag nrho cov txheej txheem backend yog tsim los ntawm cov lus golang; nws raug xaiv vim nws zoo haum rau cov haujlwm asynchronous, uas goroutines ua haujlwm zoo.
    Thaum nkag mus rau qhov kawg, tus neeg siv tau sau npe thiab nkag mus rau hauv cov qauv, ces nws cov lus tau txais. Ob tus neeg siv thiab cov lus tau nkag mus rau hauv ib lub hub, los ntawm cov lus uas twb tau xa mus ntxiv (mus rau pem hauv ntej), thiab yog tias tus neeg siv kaw qhov kev sib txuas (raspberry lossis pem hauv ntej), ces nws qhov kev tso npe raug tso tseg thiab nws raug tshem tawm ntawm lub hub.

    OpenVINO hackathon: lees paub lub suab thiab kev xav ntawm Raspberry Pi
    Peb tab tom tos kev sib txuas los ntawm sab nraub qaum

    Pem hauv ntej-kawg yog ib daim ntawv thov web sau rau hauv JavaScript siv lub tsev qiv ntawv React kom nrawm thiab ua kom yooj yim rau txoj kev txhim kho. Lub hom phiaj ntawm daim ntawv thov no yog kom pom cov ntaub ntawv tau txais los ntawm kev siv algorithms khiav ntawm sab nraub qaum thiab ncaj qha rau ntawm Raspberry Pi. Cov nplooj ntawv muaj cov txheej txheem kev ua haujlwm tau siv los ntawm react-router, tab sis nplooj ntawv tseem ceeb ntawm kev txaus siab yog nplooj ntawv tseem ceeb, qhov twg cov ntaub ntawv txuas mus ntxiv tau txais nyob rau lub sijhawm ntawm lub server siv WebSocket thev naus laus zis. Raspberry Pi kuaj pom lub suab, txiav txim siab seb nws puas yog ib tus neeg tshwj xeeb los ntawm cov ntaub ntawv sau npe, thiab xa cov npe yuav tshwm sim rau tus neeg siv khoom. Tus neeg siv khoom nthuav tawm cov ntaub ntawv tshiab tshaj plaws, qhia tus avatar ntawm tus neeg uas feem ntau yuav hais lus rau hauv lub microphone, nrog rau kev xav uas nws hais cov lus.

    OpenVINO hackathon: lees paub lub suab thiab kev xav ntawm Raspberry Pi
    Nplooj ntawv tshiab nrog kev twv ua ntej

    xaus

    Nws tsis tuaj yeem ua kom tiav txhua yam raws li tau npaj tseg, peb tsuas tsis muaj sijhawm, yog li qhov kev cia siab tseem ceeb yog nyob rau hauv demo, tias txhua yam yuav ua haujlwm. Hauv kev nthuav qhia lawv tau tham txog yuav ua li cas txhua yam ua haujlwm, cov qauv twg lawv coj, lawv ntsib teeb meem dab tsi. Tom ntej no yog qhov demo - cov kws tshaj lij tau taug kev nyob ib ncig ntawm chav tsev hauv qhov kev txiav txim siab tsis sib xws thiab mus cuag txhua pab pawg los saib cov qauv ua haujlwm. Lawv nug peb cov lus nug ib yam nkaus, txhua tus neeg teb lawv txoj haujlwm, lawv tawm hauv lub vev xaib ntawm lub laptop, thiab txhua yam ua haujlwm tiag tiag raws li qhov xav tau.

    Cia kuv nco ntsoov tias tag nrho cov nqi ntawm peb cov tshuaj yog $150:

    • Raspberry Pi 3 ~ $35
    • Google AIY Voice Bonnet (koj tuaj yeem them tus nqi hais lus) ~ 15$
    • Intel NCS 2 ~ 100$

    Yuav ua li cas txhim kho:

    • Siv cov ntawv sau npe los ntawm tus neeg siv khoom - nug kom nyeem cov ntawv nyeem uas yog tsim los ntawm random
    • Ntxiv ob peb tus qauv ntxiv: koj tuaj yeem txiav txim siab poj niam txiv neej thiab hnub nyoog los ntawm lub suab
    • Sib cais ib txhij lub suab nrov (diarization)

    Repository: https://github.com/vladimirwest/OpenEMO

    OpenVINO hackathon: lees paub lub suab thiab kev xav ntawm Raspberry Pi
    Ntxim tab sis peb zoo siab

    Hauv kev xaus, kuv xav hais ua tsaug rau cov koom haum thiab cov neeg koom. Ntawm cov haujlwm ntawm lwm pab pawg, peb tus kheej nyiam qhov kev daws teeb meem rau kev saib xyuas qhov chaw nres tsheb dawb. Rau peb, nws yog qhov kev paub zoo heev ntawm kev nkag mus rau hauv cov khoom thiab kev loj hlob. Kuv vam tias yuav muaj cov xwm txheej nthuav dav ntxiv nyob rau hauv cheeb tsam, suav nrog cov ncauj lus AI.

Tau qhov twg los: www.hab.com

Ntxiv ib saib