Tumgik
#@hawks: please retire and become a full time model. thank you
centerxiaoting · 2 years
Text
horikoshi said he doesn’t know how to draw pretty boys but then he goes and makes hawks look straight out of a magazine in the middle of a damn fight against all for one
0 notes
rosezure · 3 years
Text
Songbird 2 - New Beginnings
Songbird - Chapter 2
A/N:  This chapter focuses more on certain BNHA characters, but there's still some Asa thrown in there.
Disclaimer: I do not own the rights to the BNHA/MHA universe, nor its characters. This work is intended for entertainment purposes only. My own characters are, however, of my creation.
Content warning: mentions of jumping from planes, talk about character deaths, !spoilers for the manga!, some AU stuff cause what is cannon if not a suggestion, tattoos, talk about physiotherapy and injuries, swearing/language. If I forget anything, please let me know so I can correct/add it!
Summary | Chapter 1
Tumblr media
If Keigo knew anything, it was that he hated the Hero Commission more than he hated Endeavor. And that was saying something, considering his longtime idol was a child abuser. He hated that they made him into a monster. They took an innocent child and distorted his reality. 
Keigo decidedly hated a lot of things. 
But he couldn't hate Aizawa. Not after everything that's happened. Not ever, actually. The man was every bit the hero Keigo once thought Endeavor was. Yet, he couldn't help but feel like the teacher had ulterior motives. The two sat across from each other on a small wooden table in a secluded pub. It was just on the outskirts of Musutafu, which made it the perfect place for this kind of encounter.
"I want you to teach at the UA."
There it was. The ulterior motive the hero Hawks was trained to identify. Keigo cursed in his mind. He really didn't want to find a reason to be suspicious of Aizawa of all people.
The man had literally sacrificed an eye and a leg for others, for fuck's sake!
"Shota... I don't think I can. What could I possibly teach? I'm a monster... These kids need an actual role model. Not some bastard murderer with a hero title." Keigo's voice was small and quiet. He was miles from the great Hawks he was supposed to be.
"We've all done things we're not proud of, no matter how big or small. You did what you thought you had to do. In the heat of the moment, it was your only option." The older hero sighed.
Aizawa looked at the young man in front of him. He looked so broken and fragile. But he understood. Killing Twice, someone so vulnerable yet dangerous, weighed more than Keigo let on. The Winged Hero Hawks died then and there in Keigo's mind. And Aizawa knew it was taking a long time to heal from that loss.
"Look," Keigo looked up from the table, "Killing Twice-" He visibly flinched, but Aizawa pressed on, "That wasn't the best thing you could do. The man could've been helped. Maybe he could've become a great hero or teacher even." 
Keigo was about ready to stand up and leave at that. He wasn't going to sit and listen to yet another person throw his wrongdoings in his face. He didn't need it. His mind was cruel enough.
"You're right in feeling like shit. But I'd be more worried if you weren't. You're still a hero, Keigo. You saved lives that day, even if you took a drastic measure. Even if your decision was a horrible one." Aizawa took a deep breath. "You know it was wrong. You know it was cruel. But you had good intentions-"
"Hell is full of good intentions, Aizawa." Keigo gritted, hitting a fist on the table and standing up. 
Aizawa stood up as well. "Then teach those kids to not make that mistake. Teach them about good intentions and good actions combined."
With that, the older male went to the cashier to pay for their drinks. Neither of them had taken one stingy sip, but Shota still thought ordering drinks was the polite thing to do. 
The two left together. Being grounded was new to Keigo. Sure he walked every once in a while, but he'd be flying to his penthouse by now. He'd be soaring through the skies. The thought of the wind blowing through his feathers made Keigo look up to the sky. He longed for the day his wings grew back, then he'd flee and never return.
"I know that look," Aizawa's voice snapped him back to reality.
"The day I have my wings back..." The blonde whispered, "I'm leaving and never coming back, Shota. I'll be free."
"Will you?" 
"Will I what?"
"Will you actually be able to leave?"
Keigo stopped in his tracks, making Aizawa pause as well. Would he really be able to run away? Would he be able to just take flight and never look back? Keigo wondered if he'd have the guts to do that. 
"I don't know," He admitted with a sigh before starting to walk again.
"But I'd sure love to have the chance to find out."
On the other side of the world, Asa was packing her bags. She had very little time to prepare, and she wondered why the Queen and Santos hadn't informed her of this mission weeks ago. From Asa gather through the reports and files she read, the confrontation between heroes and villains in Japan was months ago. So why was she only being sent now?
She'd have to go through the other files Santos gave her. Maybe then Asa would know what was really going on.
"Asa!" Caique's voice rang from behind her door. Asa smiled softly.
"Come in, punk!" She shot back.
"Can you believe it? I'm Commander! I went from Captain to Commander!" He looked like a puppy that's just been given a new toy.
"Oh, shut up!" Asa laughed at his happiness. 
"So, my subordinate," Caique sauntered over to Asa, putting an arm on her shoulder, "My first order is that you let me kick your ass once." He grinned cheekily.
Asa rolled her eyes and pushed his arm off her. "No way in hell, babe. I've got a rep to keep, you know?" She winked over her shoulder as she walked to her closet to gather more items.
"Hey!" Caique pouted. Asa giggled at his face, shaking her head.
"Don't pout," She scolded playfully, "It makes you look five."
"Right, and you hate children," He added teasingly.
"I do not!" Asa shot back laughing, "It's them that hate little ol' me." She shrugged.
"That's not true," Caique huffed and took a seat on her king-sized bed. "By the way, I never really understood why I got the position and not one of the generals."
"Cause I've been preparing you for the position for three years now. I was gonna retire right before the summer festivities."
"Retire?! Girl, you're like 23! The fuck you mean retire?"
"I've been at this for almost 16 years, Caique. And I'm unhappy."
Her words silenced Caique. He knew very little about his Commander. Asa was strong, intelligent, agile, cunning, and charming (if she wanted to be). She was 23 years old, soon turning 24, and she was quite attractive. But that's all he knew about her.
"You never really told me how a 7-year-old became a soldier."
"And I don't think I can ever tell you. I can't remember it myself without having a breakdown!" Asa tried to play it off as a joke, but they both knew this was a sensitive topic.
"So, are you done packing?" Caique quickly changed the subject. It was her last day here, and he didn't want Asa to be tackled by ugly memories.
"Almost. Most of my things are already on the plane." Asa gave him a small smile. "I slept a total of zero hours last night. Santos was adamant that everything needed to be loaded onto the plane before sunrise. And I mean everything!"
"That man is wound up way too tight," Caique shivered. "Is there a way I don't have to deal with him directly?"
"Sorry, but that stick in the mud is your issue now." Asa bit her lip to stop herself from laughing at Caique's disdainful expression. 
"Thanks, that's really encouraging," His sarcasm made her lose her composure and laugh, "What's the mission anyway?" He looked at her attentively.
"You know I can't tell you that..." Asa trailed off, unsure how to keep her promise to the Queen without shutting Caique out. 
"Ah, you're right. If the Queen asked you to keep it a secret, then you must," Caique offered Asa a small smile.
Ever since they met six years ago, Caique and Asa were joined at the hip. Neither went into battle without the other. It was common knowledge among the guards and soldiers that one should never mess with either of them. Now they were being separated, and it already felt like they were miles apart.
A few more minutes pass as the two make jokes and chat. Asa began to think about how she could remember her last moments in Pindorama forever. She needed something to look at or touch every day. Asa never dealt well with homesickness. As Caique helped her fold some clothes, an idea hit her. She grabbed his hands, inspecting the many drawings inked into his skin.
"What's up? Why are you suddenly so interested in my tattoos?" Caique chuckled as he let Asa twist and twist and turn his arms around. 
"Let's get a tattoo together."
"What?! Now?!"
"Yes, right now. Call the artist!"
Keigo couldn't believe this was happening. He took Aizawa's offer and applied to a position in the UA High School. However, he didn't think they'd actually accept him. And he was even more surprised to learn the Commission authorized it. Had everyone gone insane?
The world really did turn upside down...
But here he was: sitting in Nezu's office and listening to him drone on about the rules, the teaching plans, and other things Keigo wasn't paying attention to. Shit, he actually got in. Now what?
"If you have any questions, feel free to ask Aizawa. I've put him in charge of your training. Please be prepared to start in April next year." Nezu smiled at Keigo, standing up to shake the blonde's hand.
After that, Keigo left the headmaster's office in a daze. The last six months were hell: grieving the loss of fellow heroes, dealing with his demons, going back and forth from the hospital and his residence... Keigo couldn't remember a time in which he felt carefree and at ease. And now he's shaking whatever peace he still had.
"What have I gotten myself into?"
"Probably your greatest challenge yet." Aizawa lazily lifted the corners of his mouth as he limped towards Keigo. 
"Oh, I don't doubt it..." He muttered to himself.
"Follow me. I'll give you a short tour, then we can head out for some coffee." Shota offered as he pointed his chin to the hall he came from.
"A tour would be nice, I guess..." Keigo shrugged his shoulders and followed the older man. 
Aizawa could be surprisingly chatty, it seemed. He showed him as many classes as he could. He took Keigo to see the event arenas and other facilities. Last but not least, he took him to the teachers' room.
"We prepare our classes here," The hero explained, "Over there, we have the cabinets with students' tests and reports. Next to that, we have the teachers' lockers. You can keep some personal items in there." 
Keigo walked over to the lockers, tracing the names of the heroes that taught at the UA. He recognized some of them. These lockers had belonged to some of the fallen heroes. Keigo's back ached with phantom pain. Seeing those names triggered the torturous memories from six months ago.
"They haven't had the heart to remove the names," Aizawa explained.
"They shouldn't." Keigo placed his fingers over Midnight's name tag, "She'd want us to remember her."
"Other teachers survived and will be returning."
"They won't be the same."
"No one's the same."
"Nothing's the same. Everything and everyone is different," Keigo sighed, "And different is bad."
"Different allows growth."
"So it seems." Keigo scoffed at his own words. 
Was he even still capable of that? Growth was such a foreign concept for someone who was fabricated. Oh, the irony. He was built from scratch, molded to the Commission's wishes. He "grew" under their supervision. Would he have grown at all if they hadn't taken him in?
"How about that coffee?"
"I think I'll pass. I want to start working on the material I'm gonna present in class."
"I suggest a more hands-on approach. Depending on which class you're assigned to, theory won't get you anywhere. I speak from experience." Aizawa thought of the many setbacks a specific class had due to the students' tempers.
"Right. Still, I'd like to-"
"Form a strategy? Make a plan? You're not patrolling, and you're definitely not in an undercover mission. This is teaching," Aizawa paused, trying to think of the right words, "You need a base, but you're gonna have to improvise from time to time. And these are teenagers, not villains. The most they can do is piss you off." He smirked teasingly.
"Got it," Keigo answered simply, already flipping through a book on teaching methods he found lying about.
Aizawa rubbed his face, watching the ex-hero with something akin to pity. The boy had never been a real teenager. How was he supposed to deal with so many of them at once? He'd need a lot of support, that's for sure.
The two sat at the table near the pantry. Keigo was reading aloud some parts of the book he found, asking Aizawa for his input. Whenever the older hero gave a tip, Keigo immediately recorded it on his phone's note app. Halfway through the fourth chapter, Principal Nezu walked in.
"Aizawa, I just received great news from Tokyo!" His ears twitched in excitement.
"What news?" Aizawa raised an eyebrow.
"The Prime Minister has successfully contacted Pindorama. They're sending the hero we discussed last week. She'll be arriving next week!" Nezu informed with a smile.
"You mean the one with the practically extinct quirk?"
"Yes, exactly."
"I heard she was trouble."
"Oh, I doubt she'll be a burden to us."
"Sorry to interrupt," Keigo lifted his head from the book, now curious about the person they were talking about, "Who are you talking about?"
"Oh! Hawks!" Keigo stiffened at the use of his hero name, "I forgot to mention it to you earlier, but you won't be the only newbie. A special guest is coming from another country to help with things around here. She has a very rare quirk, which will greatly help us as a country bounce back from the events of March." Nezu beamed, folding his paws in front of his chest.
"What kind of quirk?" Keigo squinted his eyes.
"It's of a healing nature, but no one is sure of how it works," Aizawa explained, "There's not much written about this quirk. The only group of people that knew everything about it are all gone." He slumped in his seat, feeling sleepy already.
"So, there are no records on it? How can we trust this stranger?" Keigo frowned. 
"That's a reasonable question," Nezu lifted himself onto one of the vacant chairs and looked at Keigo, "But there's no need to worry. She's a show of the alliance between the two countries. If anything goes wrong, it'll be a war declaration."
"That just makes her even more dangerous. I don't think we should let someone so-" Aizawa interrupted Keigo by clearing his throat.
"Rest assured, Keigo, that she won't be a problem to any of us," Nezu added. He smiled widely once more before hopping off the chair and bidding the two heroes goodbye.
A few minutes passed as Keigo continued to read the book and ask Aizawa questions. Meanwhile, the raven-haired man was fighting to stay awake and help the young man understand the methods and concepts. But he had drained himself during his physiotherapy session that morning. He needed a nap, or he'd pass out right there.
Sensing the older man's tiredness, Keigo decided to excuse himself. He told Aizawa he'd continue reading at home and that he'd take notes of any doubts that might surface. After packing his things, Keigo bid the teacher goodbye and left.
The next time the two men met, Keigo was at the school to look for more teaching supplies. They greeted each other at the gates with a quiet nod each. Aizawa seemed better, stronger, Keigo noted. Maybe his physiotherapy sessions had been paying off. Eri's contribution probably helped too.
Aizawa had once told him that Eri wanted to heal him and give him his wings back. But Keigo had refused. He didn't want them back, not like this. Hawks died, and if Keigo had any say in it, he'd stay dead. So, if his wings grew back, he wanted to earn them and start anew.
For days, he and Aizawa would sit together near the pantry in the teacher's room. Keigo would read excerpts from teaching books or bring teaching plans and ask for Aizawa's input. Day in and day out, the older man would reassure the blonde that the material was suitable. And day in and day out, Keigo would create different versions on the same plan. He swore they were only backups in case he forgot to prepare for a class or something. But Shota Aizawa knew very well that the young man was scared of messing up.
After what happened in March, Class 1-A was going to need a lot of support. So Aizawa often found himself praying to a whatever higher energy that they'd be okay. That every student and teacher would find solace in being a hero and saving lives. He prayed for everyone to find a way to cope.
These prayers always startled Shota. He wasn't religious at all! He never cared about gods or spirits or ancestors. But he sure as fuck hoped that something was watching over them and that things would be fixed. He knew better than anyone how naive thinking like this was. But he also knew it was better than wallowing in self-pity.
Yet, Aizawa felt like Keigo would be the one getting support from the students.
Aizawa just wished Keigo would accept any form of support.
"Ready when you are, Siren!" The pilot yelled over the radio system of the plane, "We are one minute away from the drop-off point!"
"Roger that, Captain!" Asa shot back, preparing her equipment and adjusting her suit.
Her first mission was to infiltrate the HPSC building and bug the president's office. If she had time, Asa was going to try and bug any other high-ranked offices too. She had to be precise and fast. One slipup and the whole mission could be compromised. 
Once they reached the drop-off point, Asa removed her protective headset and put on her goggles. She waited for the crew to open the plane's doors while she made sure everything was ready. The plane's doors opened, and Asa saluted the soldiers behind her before throwing herself out of the plane.
Asa had missed the exhilaration of jumping into the night. She forgot how thrilling it was and how powerful she felt. The dropping point had been 14000 feet (around 4267 meters) high, so Asa had about a minute of free-falling before she could open her wings. Having done this many times before, Asa successfully landed on top of a building south of the HPSC headquarters. 
She retracted her wings, thankful for her suit being backless, and prepared to jump onto the next building. They dropped her off a little away from the premises to not alert any busybodies. 
Asa wasted no time getting to work. In just under 10 minutes, she had made it onto one of the windows on the 14th floor of the HPSC's building's south side. And in less than 20 minutes, Asa had located the president's office.
Asa managed to open one of the smaller windows and slithered in. She placed a bug on one of the far corners of the giant window behind the desk. She also placed another under the desk table and one behind a few books. Asa put the fourth and last bug under the clock that hung over the entrance door. After that, as quickly as she got in, Asa was out. She checked her watch. Asa had some time left before a helicopter picked her up at the designated rendezvous point. So, she decided to find the vice-president's office, or maybe a lab of some sort. 
Flying around the building, Asa used her enhanced vision goggles to see if she could locate any useful information. On the west side, she found a lab with the words "authorized personnel only" printed on the door. Squinting, Asa flew closer and found a way in. Smirking at her findings, she bugged the lab as thoroughly as she could.
Once she was outside again, Asa dropped onto a nearby building and sprinted to the rendezvous point.
"This is Siren speaking," Asa's voice was barely above a whisper, "Heading to the pick-up point." 
Asa dropped down from a building, disappearing into the night.
Chapter 3
3 notes · View notes
chaj · 5 years
Link
via www.pyimagesearch.com
Earlier this week I shared a tutorial on using OpenCV to stream live video over a network via ImageZMQ — and today I’m pleased to share an interview with Jeff Bass, the creator of ImageZMQ!
Jeff has over 40 years experience hacking with computers and electronics — and now he’s applying computer vision + Raspberry Pis to his permaculture farm for:
Data collection
Wildlife monitoring
Water meter and temperature reading
Jeff is truly one of my favorite people that I’ve ever had the honor to meet. Over his 40 year career he’s amassed an incredible amount of knowledge over computer science, electronics, statistics, and more.
He also spent 20 years doing statistics and data analysis at a large biotech company. The advice he gives is practical, to the point, and always very well said. It’s a privilege to have him here today.
On a personal note, Jeff was also one of the original PyImageSearch Gurus course members. He’s been a long-time reader and supporter — and he’s truly helped make this blog possible.
It’s a wonderful pleasure to have Jeff here today, and whether you’re looking for unique, practical applications of computer vision and OpenCV, or simply looking for advice on how to build your portfolio for a career in computer science, look no further than this interview!
An interview with Jeff Bass, creator of ImageZMQ
Adrian: Hey Jeff! Thank you for being here today. It’s wonderful to have you here on the PyImageSearch blog. For people who do not know you, who are you and what do you do?
Jeff: I’m a lifelong learner who’s been playing with electronics and computers for over 40 years. I studied econometrics, statistics and computer science in grad school. I developed a statistical software package for PCs back when PCs were a new thing. I spent 20 years doing statistics and data analysis at a big biotech company.
Now I’m retired from income producing endeavors and building a small permaculture farm in Southern California. I’m using computer vision, sensors and Raspberry Pis as tools to observe and manage the farm. I speak at garden clubs and conferences occasionally. I really enjoyed being a speaker at PyImageConf 2018.
Adrian: How did you first become interested in computer vision and deep learning?
Jeff: I got a Raspberry Pi and a Pi Camera module in 2013 when they first became available. I wanted to use them to observe and catalog wildlife activity as I got started with the farm. I was already very familiar with Linux and C, but the best Pi Camera interface was the “Picamera” module in Python. I started “web wandering” to learn more about Python programming and computer vision. I ran across your tutorial blogs and bought your Practical Python and OpenCV book. Once I’d worked through the examples in your book, I was hooked.
Figure 1: Jeff Bass runs Ying Yang Ranch, a permaculture farm designed to grow food with long term sustainability.
Adrian: Can you tell us a bit more about your farm? What is permaculture farming? Why is it important and how is it different than “traditional” farming?
Jeff: I call the farm Yin Yang Ranch. It is a small 2 acre “science project” in a suburban area. I started learning about permaculture at the same time I started learning about Raspberry Pis.
Permaculture is a collection of practices and design principles to grow food with long term sustainability as the primary goal. It starts with creating deep living soil with diverse microbiology, emulating an old growth forest. Permaculture design choices prioritize sustainability over efficiency. It is science based, emphasizing a cycle of careful observation, repeatable experiments and open sharing of best practices.
Permaculture farms are generally small and include many different kinds of plants growing together rather than rows of similar crops. Food plants are grown in the same space with native plants. I am growing figs, pears, pomegranates, plums, grapes, avocados, oranges, mulberries, blackberries and other edibles. But they are interplanted with native California Coast Live Oaks and Sycamore Trees. It doesn’t look much like a traditional farm. Traditional agriculture is efficient, but degrades soil and water resources. Permaculture is trying to change that.
Figure 2: Jeff uses Raspberry Pis + computer vision around his farm. An example of such is automatic water meter reading using OpenCV.
Adrian: How can Raspberry Pis and computer vision be helpful on your farm?
Jeff: We are in Southern California about 10 miles from the Malibu coast. Drought and limited rainfall are the toughest climate issues. Monitoring and observation are important, so I built a Raspberry Pi Camera system to read the water meter and monitor temperatures to optimize irrigation.
That led more questions and lots of fun ways to gather and analyze data:
How many gallons did it take to water the mulberries today?
When did the coyotes last run behind the barn?
What is the temperature and soil moisture under the avocado trees?
What is the temperature and moisture content of the 5 compost piles?
How is it changing over time?
How much solar electricity did we generate today?
How full are the rain barrels?
How do the birds, butterflies and other critter movements change with the seasons and with whatever is blooming or putting on fruit?
The Raspberry Pis are also keeping track of stuff like the opening and closing of garage and barn doors. And they can let me know when a package is delivered.
Adrian: You created a library called imagezmq. What is it and what does it do?
Jeff: The imagezmq library implements a simple and fast network of Raspberry Pis (clients) and servers.
Early on, I decided on a distributed design using Raspberry Pis for capturing images and using Macs for analyzing the images. The goal was to have Raspberry Pis do image capture and motion detection (is the water meter spinning?) and programmatically decide on a small subset of images to pass along to the Mac.
I spent a year trying different ways of sending images from multiple Raspberry Pis to a Mac. I settled on the open source ZMQ library and its PyZMQ python wrappers. My imagezmq library uses ZMQ to send images and event messages from a dozen Raspberry Pis to a Mac hub. ZMQ is fast, small, simple to use and doesn’t need a message broker.
Here are a pair of code snippets showing how to use imagezmq to continuously send images from a Raspberry Pi to a Mac. First the code running on each Raspberry Pi:
# run this program on each RPi to send a labelled image stream import socket import time from imutils.video import VideoStream import imagezmq sender = imagezmq.ImageSender(connect_to='tcp://jeff-macbook:5555') rpi_name = socket.gethostname() # send RPi hostname with each image picam = VideoStream(usePiCamera=True).start() time.sleep(2.0) # allow camera sensor to warm up while True: # send images as stream until Ctrl-C image = picam.read() sender.send_image(rpi_name, image)
Then the code running on the Mac (server):
# run this program on the Mac to display image streams from multiple RPis import cv2 import imagezmq image_hub = imagezmq.ImageHub() while True: # show streamed images until Ctrl-C rpi_name, image = image_hub.recv_image() cv2.imshow(rpi_name, image) # 1 window for each RPi cv2.waitKey(1) image_hub.send_reply(b'OK')
The hostname of each Raspberry Pi allows the Mac to put the image stream from that Raspberry Pi in a separate, labelled
cv2.imshow()
  window. I have a photo in my imagezmq github repository showing 8 Raspberry Pi camera feeds being displayed simultaneously on a single Mac:
Figure 3: Live streaming video from 8 Raspberry Pis to a central hub using Python, OpenCV, and ImageZMQ.
It uses 12 lines of Python code on each Raspberry Pi and 8 lines of Python on the Mac. One Mac can keep up with 8 to 10 Raspberry Pis at 10 FPS. ZMQ is fast.
imagezmq enables a computer vision pipeline to be easily distributed over multiple Raspberry Pis and Macs. The Raspberry Pi captures images at 16 FPS. It detects motion caused by the spinning of the water meter needle. It sends only the images where the needle starts moving or stops moving, which is only a small fraction of the images it captures. Then, the Mac uses more advanced computer vision techniques to read the “digital digits” portion of the water meter images and determine how much water is being used. Each computer is able to do the portion of the computer vision pipeline for which it is best suited. imagezmq enables that.
Adrian: What is your favorite computer vision + Raspberry Pi project that you’ve deployed on Yin Yang Ranch?
Jeff: I’ve mounted a Raspberry Pi on the back wall of my barn with an infrared floodlight. It tracks motion and sends images when the motion is “critter like”. I’ve captured images of coyotes, raccoons, possums, bats, hawks, squirrels and rabbits. I’m still working on the deep learning models to classify them correctly. It’s been a lot of fun for me and my neighbors to learn more about the wildlife around us.
Figure 4: A selection of Raspberry Pi components and cameras, including (left to right) Waveshare Combo IR lens and dual IR floodlights, PiNoir IR Camera with IR “Ring Light” floodlight, RPi Zero with PiCamera in white light “Ring Light” with DS18B20 temperature probe, RPi Zero with “Spy Cam” and longer range WiFi, and RPi Zero with older model (and half price) PiCamera.
Adrian: Raspberry Pis, while cheap, are by no means as powerful as a standard laptop/desktop. What are some of the lessons learned while using Raspberry Pis around the farm?
Jeff: Raspberry Pis are great at image capture. The Pi Camera module is very controllable in Python for changing things like exposure mode. A USB or laptop webcam is usually not controllable at all. Controlling exposure and other camera settings can be very helpful in wildlife tracking and even reading a water meter.
The Raspberry Pi GPIO pins can gather readings from temperature sensors, moisture sensors and others. The GPIO pins can be used to control lights like the lights that illuminate my water meter and my barn area. Laptops and desktops don’t do those things easily.
On the other hand, Raspberry Pis lack a high speed disk drive — the SD card is not suitable for writing lots of binary image files. In my system, the Raspberry Pis send the image files over the network rather than storing them locally. Laptops and desktops have fast disk storage and lots of RAM memory allowing more elaborate image processing. I try to have my Raspberry Pis do what they excel at and have the Macs do what they are good at.
Most of my Raspberry Pis are Raspberry Pi 3’s, but I also use the cheaper, smaller Raspberry Pi Zero for Pi Cameras that only need to do simple motion detection, like my driveway cam. When there is no need for additional image processing, even the smaller memory and less powerful processor of the Pi Zero is adequate.
Adrian: What types of hardware, cameras, and Raspberry Pi accessories do you use around the farm? How do you keep your Pis safe from getting wet and destroyed?
Jeff: I use Raspberry Pis with Pi Cameras at many places around the farm. They often have temperature, moisture and other sensors. I build multiple kinds of enclosures to protect the Raspberry Pis.
One of my favorites is to convert a existing outdoor light fixture into a waterproof Raspberry Pi container. You remove the light bulb, screw in a simple AC socket adapter and you have an easy rainproof enclosure that holds the Raspberry Pi and the Pi Camera module. A GPIO temperature probe fits as well. It is easy to add a Raspberry Pi controlled LED light so that the light fixture still provides light like it did before:
Figure 5: Converting an outdoor light fixture into a waterproof Raspberry Pi container.
Another enclosure is a simple glass mason jar with a plastic lid. It fits a Raspberry Pi and is waterproof. Power and camera cables can be routed through holes in the plastic lid. That’s how my water meter Pi Camera is built and it has been working well through all kinds of weather for over 2 years:
Figure 6: A simple Raspberry Pi enclosure using a simple mason jar.
For infrared applications like the night time critter camera behind my barn, I put the Raspberry Pi inside the barn. The camera and temperature sensor cables run through small holes in the barn wall. The Pi NoIR camera module is protected under a simple overhang of old shingles. Infrared light doesn’t pass through glass, so the Pi NoIR camera module cannot be in a glass enclosure. The shingle overhang over an otherwise unprotected PiNoIR module has been very effective:
Figure 7: A simple wooden overhang to protect the Raspberry Pi.
A closer view can be seen below:
Figure 8: A closer up view of the overhang (you can see the red light from the Raspberry Pi camera if you look closely).
I have also found that inexpensive (about $5) “Fake Security Cam” enclosures work really well as waterproof Raspberry Pi and Pi Camera enclosures. They easily hold a Raspberry Pi and they have a tripod-like angle adjuster:
Figure 9: The shell of a fake security security camera can easily house a Raspberry Pi + camera module.
Once put together the “fake” security camera becomes a real security camera:
Figure 10: Adding the Raspberry Pi + camera components to the security camera shell.
For power, I tend to run longer power lines (over 20 feet long) at 12 volts, then convert to 5 volts at the Raspberry Pi. I use 12 volt power adapters like those that are used to charge cell phones in cars. Cheap and effective. Most of my Raspberry Pis are networked with WiFi, but I have ethernet in my barn and at various places around the house, so some of my Raspberry Pis are using ethernet to send images.
Adrian: During your PyImageConf 2018 talk you discussed how projects like these can actually help people build their computer vision and deep learning resumes. Can you elaborate on what you mean there?
Jeff: During my 30 years of managing programming and data analysis teams, I found it very helpful when job candidates came to the interview with a specific project in their portfolio that showed their strengths. A computer vision project — even a hobby project like my Raspberry Pi water meter cam — can really help demonstrate practical skills and ability.
A well documented project demonstrates practical experience and problem solving. It shows the ability to complete large projects fully (80% solutions are good but 100% solutions demonstrate an ability to finish). A portfolio project can demonstrate other specific skills, such as using multiple computer vision libraries, the ability to write effective documentation, facility with Git / GitHub as a collaboration tool and technical communication skills. It is important to be able to tell a short, compelling project story — the “elevator speech” about your portfolio project.
Adrian: How as the PyImageSearch blog, the PyImageSearch Gurus course, and the books/courses helped you make this project a success?
Jeff: When I started learning about computer vision, I found that a lot of the material on the web was either too theoretical or gave simplistic code snippets without any fleshed out examples or complete code.
When I found your PyImageSearch blog, I found your tutorial projects to be very complete and helpful. You provided an understandable story line for each problem being solved. Your explanations were clear and complete with fully functioning code. Running some of the programs in your blog led me to buy your Practical Python and OpenCV book.
I took your PyImageSearch Gurus course and learned to code many specific computer vision techniques. I had previously read about many of these techniques, but your specific code examples provided the “how-to” I needed to write computer vision code for my own projects.
The license plate number reading section of your Gurus course was the basis for the first draft of my water meter digits reading program. Your deep learning book is helping me to write the next version of my object recognition software for tagging critters around the farm (racoon or possum?).
Adrian: Would you recommend PyImageSearch and the books/courses to other developers, researchers, and students trying to learn computer vision + deep learning?
Jeff: I would definitely recommend your PyImageSearch blog, books and courses to those trying to learn about this rapidly evolving field. You are very good at explaining complex techniques with a helpful mix of code and narrative discussion. Your books and courses provided a jump start to my understanding of the theory and practice of modern computer vision algorithms.
I had not programmed in Python before, and some of its idioms felt a bit odd to my C conditioned brain. Your practical examples helped me use the best features of Python in “Pythonic” ways. Your Gurus course is well structured with a good flow that builds on simple examples that are expanded lesson by lesson into fully developed programs that solve complex problems. Your coverage of the many different computer vision and deep learning techniques is broad and comprehensive. Your books and courses are a good value for what you charge for them. Highly recommended.
Adrian: What are your next steps for Yin Yang Ranch and your current computer vision/deep learning projects?
Jeff: I would like to do more wildlife identification and counting. The farm is next to an open space that is a wildlife corridor through a suburban area. I’m going to use more advanced deep learning techniques to identify different animals by species. When do specific animals come and go? What birds and butterflies show up in which part of the season? How are their numbers related to seasonal rainfall? I would like to use deep learning to identify specific individuals in a coyote pack. How long is a specific coyote staying in our area? I can recognize specific individuals when I look at captured images. I’d like to use deep learning to do that with software.
Adrian: Is there anything else you would like to share?
Jeff: Building stuff with software and hardware can be a lot of fun. If someone is reading this and wondering how to get started, I would suggest they start with something they are passionate about. There is likely to be some way that computer vision and deep learning can help with a project in their area of interest. I wanted to do some permaculture farm science and my computer vision projects are helping me do that. I’m learning a lot, giving some talks and farm tours to help others learn…and I’m having a lot of fun.
Adrian: If a PyImageSearch reader wants to chat, what is the best place to connect with you?
Jeff: Folks can read more and see more project pictures at my Yin Yang Ranch repository on GitHub:
https://github.com/jeffbass/yin-yang-ranch
Or they can send me an email at jeff [at] yin-yang-ranch.com.
Summary
In this blog post, we interviewed Jeff Bass, the creator of the ImageZMQ library (which we used in last weeks’s tutorial), used to facilitate live video streaming from a Raspberry Pi to a central server/hub using Python + OpenCV.
Jeff was motivated to create the ImageZMQ library to help around his permaculture farm. Using ImageZMQ and a set of Raspberry Pis, Jeff can apply computer vision and data science techniques to gather and analyze temperature readings, water meter flow, electricity usage, and more!
Please take a second to thank Jeff for taking the time to do the interview.
To be notified when future blog posts and interviews are published here on PyImageSearch, just be sure to enter your email address in the form below, and I’ll be sure to keep you in the loop.
The post An interview with Jeff Bass, creator of ImageZMQ appeared first on PyImageSearch.
0 notes