Ataata o te Kaipupuri Ahanoa Kapua i runga i te Raspberry Pi
Prologue
Kei te huri haere tetahi ataata i runga i te Ipurangi e whakaatu ana me pehea te kite a te autopilot a Tesla i te huarahi.
Kua roa ahau e hikaka ana ki te whakapaoho i te riipene whakaata kua whakarangatirahia me te kaitahuri, me te waa tonu.
Ko te raru ko te hiahia ahau ki te haapurorohia te ataata mai i te Raspberry, a ko te mahi a te kaitoi whatunga neural kei runga ka nui te hiahia.
Rakau Rorohiko Intel Neural
I whakaarohia e ahau etahi otinga rereke.
В Tuhinga whakamutunga i whakamatauria me Intel Neural Computer Stick. He kaha te taputapu, engari me hiahia tana ake whakatakotoranga whatunga.
Ahakoa e whakarato ana a Intel i nga kaitahuri mo nga anga nui, he maha nga mahanga.
Hei tauira, kaore pea i te hototahi te whakatakotoranga o te whatunga e hiahiatia ana, a, ki te mea he hototahi, ka kore pea e tautokohia etahi paparanga i runga i te taputapu, a, ki te tautokohia, ka puta he hapa i te wa o te huringa o te huringa, na reira. ka whiwhi tatou i etahi mea ke i te putanga.
I te nuinga o te waa, ki te hiahia koe ki tetahi momo whatunga neural noa, kare pea e mahi me te NCS. Na reira, i whakatau ahau ki te ngana ki te whakaoti rapanga ma te whakamahi i nga taputapu whanui me te waatea.
Te kapua
Ko te huarahi rereke ki te otinga taputapu o te rohe ko te haere ki te kapua.
Ko nga whiringa kua reri - e rere mohoao ana oku kanohi.
Ko te whiriwhiri i roto i tenei momo ehara i te mea ngawari.
Na ka whakatau ahau kia kaua e whiriwhiri, engari ki te takai i te kaupapa mahi tawhito pai i runga i OpenCV i Docker ka whakahaere i roto i te kapua.
Ko te painga o tenei huarahi ko te ngawari me te mana whakahaere - ka taea e koe te whakarereke i te whatunga neural, te manaaki, te tūmau - i te nuinga, ahakoa te hiahia.
Tūmau
Me timata ma te tauira o te rohe.
I nga wa o mua ka whakamahi ahau i te Flask mo te REST API, OpenCV me te whatunga MobileSSD.
I muri i te whakauru i nga putanga o naianei ki Docker, ka kitea e au kaore a OpenCV 4.1.2 e mahi me te Mobile SSD v1_coco_2018_01_28, a me hoki au ki te 11/06_2017 kua whakamatauria.
I te timatanga o te ratonga, ka utaina e matou nga ingoa akomanga me te whatunga:
Ano kaweake tenei mahi ma te Flask(Ko te whakauru he pikitia, ko te putanga ko nga hua o te kaitirotiro i roto i te json).
He whiringa kee, he nui ake nga mahi ka nekehia ki te kaimau: ko ia ano ka porowhita i nga mea kua kitea ka whakahokia mai te ahua kua oti.
He pai tenei whiringa kaore matou e pai ki te toia te opencv ki te tūmau.
Docker
Ka kohia e matou te ahua.
Ka heru te waehere ka whakairia ki runga Github, ka haria totika mai i reira e docker.
Hei papaahi, ka mau tatou i te Debian Stretch rite i runga i te Raspberry - e kore tatou e kotiti ke i te puranga hangarau kua whakamatauria.
Me whakauru e koe te ipu, protobuf, tono, opencv_python, tango Mobile SSD, waehere tūmau mai i Github ka timata te tūmau.
FROM python:3.7-stretch
RUN pip3 install flask
RUN pip3 install protobuf
RUN pip3 install requests
RUN pip3 install opencv_python
ADD http://download.tensorflow.org/models/object_detection/ssd_mobilenet_v1_coco_11_06_2017.tar.gz /
RUN tar -xvf /ssd_mobilenet_v1_coco_11_06_2017.tar.gz
ADD https://github.com/tprlab/docker-detect/archive/master.zip /
RUN unzip /master.zip
EXPOSE 80
CMD ["python3", "/docker-detect-master/detect-app/app.py"]
Ko nga rehita Docker kei te piki haere i te tere kaore i te iti ake i nga kaitirotiro kapua.
Kia kore ai e whakararuraru, ka haere tonu tatou DockerHub.
Rehita
Takiuru: takiuru docker
Kia puta mai he ingoa whai kiko: tohu docker opencv-kitea tprlab/opencv-detect-ssd
Tukuake te atahanga ki te tūmau: pana te docker tprlab/opencv-detect-ssd
Ka whakarewahia e matou i te kapua
Ko te kowhiringa o te waahi hei whakahaere i te ipu he tino whanui ano.
Ko nga kaitakaro nui katoa (Google, Microsoft, Amazon) ka tuku he tauira moroiti mo te kore utu mo te tau tuatahi.
Whai muri i taku whakamatautau ki a Microsoft Azure me Google Cloud, ka whakatauhia e au nga mea o muri na te mea ka tere ake.
Kaore au i tuhi i nga tohutohu ki konei, na te mea he tino motuhake tenei waahanga mo te kaiwhakarato kua tohua.
I whakamatauria e au etahi momo taputapu taputapu,
Nga taumata iti (tiritiri me te whakatapua) - 0.4 - 0.5 hēkona.
Nga waka kaha ake - 0.25 - 0.3.
Ae, ahakoa i roto i nga ahuatanga kino rawa atu, ko nga toa e toru nga wa, ka taea e koe te whakamatau.
Ataata
Ka whakarewahia e matou he riipene ataata OpenCV ngawari i runga i te Raspberry, ka kitea ma te Google Cloud.
Mo te whakamatautau, i whakamahia he konae ataata i whakaahuahia i tetahi wa i te waahi matapōkere.
Ma te kairapu karekau e neke ake i te toru nga papa mo ia hekona, he tino puhoi nga mea katoa.
Mena ka tango koe i tetahi miihini kaha ki roto i te GCloud, ka taea e koe te kite i nga papa 4-5 mo ia hēkona, engari ko te rereketanga ka tata kore e kitea e te kanohi, he puhoi tonu.
Ko nga utu o te kapua me te kawe waka kaore he mea e pa ana ki a ia; ka rere te kaitirotiro i runga i nga taputapu auau me te mahi i taua tere.
Rakau Rorohiko Neural
Kaore i taea e au te tu atu me te whakahaere i te tohu tohu mo NCS.
Ko te tere o te kaitirotiro he iti ake i te 0.1 hēkona, ahakoa he 2-3 nga wa tere atu i te kapua i runga i te miihini ngoikore, ara, 8-9 nga papa mo ia hekona.
Ko te rereketanga o nga hua ka whakamaramahia e te NCS kei te whakahaere i te putanga SSD Mobile 2018_01_28.
P.S. I tua atu, kua whakaatuhia e nga whakamatautau he miihini papamahi tino kaha me te tukatuka I7 e whakaatu ana i nga hua pai ake ka puta ka taea te kohi i nga papa 10 mo ia hekona.
Kapu
I haere tonu te whakamatautau ka whakauruhia e ahau te kaitirotiro ki nga waahanga e rima i Google Kubernetes.
He ngoikore nga pona, a, kaore e taea e ia o ratou te tukatuka neke atu i te 2 papa mo ia hekona.
Engari ki te whakahaere koe i tetahi kapopu me nga pona N me te poroporo i nga papa ki roto i nga miro N, ka taea e koe te whakatutuki i nga papa 5 e hiahiatia ana mo ia hekona.
def generate():
while True:
rc, frame = vs.read()
if frame is not None:
future = executor.submit(handle_frame, (frame.copy()))
Q.append(future)
keep_polling = len(Q) > 0
while(keep_polling):
top = Q[0]
if top.done():
outFrame = top.result()
Q.popleft()
if outFrame:
yield(b'--framern' b'Content-Type: image/jpegrnrn' + bytearray(outFrame) + b'rn')
keep_polling = len(Q) > 0
else:
keep_polling = len(Q) >= M
Anei te mea i tupu:
He iti ake te tere atu i te NCS, engari he kaha ake i te awa kotahi.
Ko te hua, ko te tikanga, ehara i te raina - he whakakikorua mo te tukutahi me te kape hohonu o nga whakaahua opencv.
mutunga
I te katoa, ka taea e te whakamatautau te whakatau mena ka ngana koe, ka taea e koe te mawhiti me te kapua ngawari.
Engari he papamahi kaha, he taputapu rohe ranei ka taea e koe te whakatutuki i nga hua pai ake, me te kore he tinihanga.